Skip to content

Commit 7053aaa

Browse files
authored
Merge pull request #176 from springload/fix/event-urls
make events url include year and month
2 parents 62cf444 + 773c105 commit 7053aaa

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

cdhweb/events/models.py

+27-20
Original file line numberDiff line numberDiff line change
@@ -300,24 +300,31 @@ def clean(self):
300300
if not self.type:
301301
raise ValidationError("Event must specify a type.")
302302

303-
# def get_url_parts(self, *args, **kwargs):
304-
# """Custom event page URLs of the form /events/2014/03/my-event."""
305-
# url_parts = super().get_url_parts(*args, **kwargs)
306-
# # NOTE evidently this can sometimes be None; unclear why – perhaps it
307-
# # gets called in a context where the request is unavailable? Only
308-
# # happens in QA, not locally.
309-
# if url_parts:
310-
# site_id, root_url, _ = url_parts
311-
# page_path = reverse(
312-
# "events:detail",
313-
# kwargs={
314-
# "year": self.start_time.year,
315-
# # force two-digit month
316-
# "month": "%02d" % self.start_time.month,
317-
# "slug": self.slug,
318-
# },
319-
# )
320-
# return site_id, root_url, page_path
303+
def get_url_parts(self, request, *args, **kwargs):
304+
"""Custom event page URLs of the form /events/2014/03/my-event."""
305+
url_parts = super().get_url_parts(request, *args, **kwargs)
306+
# NOTE evidently this can sometimes be None; unclear why – perhaps it
307+
# gets called in a context where the request is unavailable? Only
308+
# happens in QA, not locally.
309+
if url_parts:
310+
site_id, root_url, _remainder = url_parts
311+
parent = self.get_parent().specific
312+
313+
# If for some reason we don't have a eventlanding-style parent, just
314+
# use `super()`
315+
if not hasattr(parent, "reverse_subpage"):
316+
return url_parts
317+
318+
page_path = parent.reverse_subpage(
319+
"dated_child",
320+
kwargs={
321+
"year": self.start_time.year,
322+
# force two-digit month
323+
"month": "%02d" % self.start_time.month,
324+
"slug": self.slug,
325+
},
326+
)
327+
return site_id, root_url, parent.get_url(request) + page_path
321328

322329
def get_ical_url(self):
323330
"""URL to download this event as a .ics (iCal) file."""
@@ -466,7 +473,7 @@ def get_upcoming_events_for_semester(self, semester, year):
466473
else:
467474
raise ValueError(f"Invalid semester: {semester}")
468475

469-
child_pages = self.get_children().live().type(Event)
476+
child_pages = self.get_children().live().specific().type(Event)
470477
# Filter events based on start_time within the semester range
471478
return child_pages.filter(
472479
event__start_time__gte=start_date, event__start_time__lte=end_date
@@ -475,7 +482,7 @@ def get_upcoming_events_for_semester(self, semester, year):
475482
def get_upcoming_events(self):
476483
current_datetime = timezone.now()
477484

478-
child_pages = self.get_children().live().type(Event)
485+
child_pages = self.get_children().live().specific().type(Event)
479486

480487
# Fetch upcoming events among the child pages
481488
return child_pages.filter(event__start_time__gte=current_datetime).order_by(

0 commit comments

Comments
 (0)