Skip to content

Commit f76b9ee

Browse files
committed
Event page redesign WIP
1 parent 7fcf9d1 commit f76b9ee

File tree

7 files changed

+382
-137
lines changed

7 files changed

+382
-137
lines changed

website/events/models.py

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
11
from __future__ import annotations
22

3+
import logging
4+
35
from django.db import models
46
from django.db.models import (
57
CharField,
68
DateField,
79
FloatField,
810
IntegerField,
911
JSONField,
10-
Max,
11-
Min,
1212
URLField,
1313
)
1414
from django.utils import timezone
1515
from django.utils.text import slugify
16+
from wagtail.admin.forms import WagtailAdminModelForm
1617
from wagtail.admin.panels import FieldPanel, FieldRowPanel
1718
from wagtail.contrib.routable_page.models import RoutablePageMixin, path
1819
from wagtail.fields import RichTextField
1920
from wagtail.models import Page
2021
from wagtail.snippets.models import register_snippet
22+
from wagtail.snippets.views.snippets import EditView as SnippetEditView
2123
from wagtail.snippets.views.snippets import SnippetViewSet
2224

2325
MAX_LENGTH = 255
2426

27+
logger = logging.getLogger(__name__)
28+
2529

2630
class EventIndexPage(RoutablePageMixin, Page):
2731
introduction = models.CharField(max_length=255, blank=True)
@@ -52,16 +56,17 @@ def events_for_year(self, request, year=None):
5256

5357
events = self.events().filter(start_date__year=year)
5458

55-
# Get min and max years from database
56-
year_range = Event.objects.aggregate(min_year=Min("year"), max_year=Max("year"))
59+
years = (
60+
Event.objects.values_list("year", flat=True).distinct().order_by("-year")
61+
)
5762

5863
return self.render(
5964
request,
6065
context_overrides={
6166
"title": f"{year} Events",
6267
"events": events,
63-
"prev_year": year - 1 if year > year_range["min_year"] else None,
64-
"next_year": year + 1 if year < year_range["max_year"] else None,
68+
"current_year": year,
69+
"years": years,
6570
},
6671
)
6772

@@ -70,13 +75,18 @@ def event_for_key(self, request, key):
7075
"""View function for event looked up by event key."""
7176

7277
event = Event.objects.get(key=key)
78+
years = (
79+
Event.objects.values_list("year", flat=True).distinct().order_by("-year")
80+
)
7381

7482
return self.render(
7583
request,
7684
template="events/event_page.html",
7785
context_overrides={
7886
"event": event,
7987
"week": event.week + 1 if event.week else None,
88+
"current_year": event.year,
89+
"years": years,
8090
},
8191
)
8292

@@ -185,7 +195,6 @@ def save(self, *args, **kwargs):
185195
super().save(*args, **kwargs)
186196

187197
class Meta:
188-
ordering = ["-start_date"]
189198
indexes = [
190199
models.Index(fields=["year"]),
191200
models.Index(fields=["start_date"]),
@@ -195,9 +204,28 @@ def __str__(self):
195204
return self.name
196205

197206

207+
class EventSnippetForm(WagtailAdminModelForm):
208+
def save(self, commit=True):
209+
logger.info(f"Saving {self.instance}")
210+
instance = super().save(commit=False)
211+
instance.edited_on = timezone.now().date()
212+
if commit:
213+
instance.save()
214+
return instance
215+
216+
217+
class EventEditView(SnippetEditView):
218+
def save_instance(self):
219+
instance = super().save_instance()
220+
instance.edited_on = timezone.now().date()
221+
instance.save()
222+
return instance
223+
224+
198225
@register_snippet
199226
class EventViewSet(SnippetViewSet):
200227
model = Event
228+
edit_view_class = EventEditView
201229
icon = "calendar"
202230
list_display = ["name", "year"]
203231
list_filter = ["name", "year"]

0 commit comments

Comments
 (0)