diff --git a/home/models/__init__.py b/home/models/__init__.py new file mode 100644 index 0000000..3039e07 --- /dev/null +++ b/home/models/__init__.py @@ -0,0 +1,23 @@ +from .pages import ( + EmptyPage, + HomePage, + CoursePage, + CourseModulePage, + ModuleLessonPage, + EventPage, +) + +from .event_occurrence import EventOccurrence + +# from .message + + +__all__ = [ + "HomePage", + "EmptyPage", + "CoursePage", + "CourseModulePage", + "ModuleLessonPage", + "EventPage", + "EventOccurrence", +] diff --git a/home/models/event_occurrence.py b/home/models/event_occurrence.py new file mode 100644 index 0000000..c889689 --- /dev/null +++ b/home/models/event_occurrence.py @@ -0,0 +1,38 @@ +from django.contrib.auth.models import User +from django.db import models +from django.utils import timezone +from modelcluster.fields import ParentalKey + +from .pages import EventPage + + +class EventOccurrence(models.Model): + event = ParentalKey(EventPage, related_name="occurrences", on_delete=models.CASCADE) + start = models.DateTimeField() + end = models.DateTimeField() + signed_up_users = models.ManyToManyField( + User, + related_name="event_occurrences_signed_up", + blank=True, + help_text="Users who have signed up for this occurrence.", + ) + + class Meta: + ordering = ["start"] + + def __str__(self): + return f"{self.event.title} ({self.start} - {self.end})" + + @property + def attendees_count(self): + return self.signed_up_users.count() + + @property + def is_past(self): + + return self.end < timezone.now() + + def user_signed_up(self, user): + if not user.is_authenticated: + return False + return self.signed_up_users.filter(id=user.id).exists() diff --git a/home/models.py b/home/models/pages.py similarity index 89% rename from home/models.py rename to home/models/pages.py index d75e0f1..ed5613c 100644 --- a/home/models.py +++ b/home/models/pages.py @@ -1,6 +1,5 @@ -from datetime import date, datetime, timedelta +from datetime import datetime, timedelta -from django import forms from django.contrib.auth.models import Group, User from django.db import models from django.forms import CheckboxSelectMultiple @@ -9,7 +8,7 @@ from modelcluster.contrib.taggit import ClusterTaggableManager from modelcluster.fields import ParentalKey from taggit.models import TaggedItemBase from wagtail.admin.panels import FieldPanel -from wagtail.fields import RichTextField, StreamField +from wagtail.fields import RichTextField from wagtail.models import Page from wagtail.models.copying import ParentalManyToManyField from wagtail_color_panel.edit_handlers import NativeColorPanel @@ -260,36 +259,3 @@ class EventPage(Page): FieldPanel("recurrence_repeat_until"), FieldPanel("recurrence_endless"), ] - - -class EventOccurrence(models.Model): - event = ParentalKey(EventPage, related_name="occurrences", on_delete=models.CASCADE) - start = models.DateTimeField() - end = models.DateTimeField() - signed_up_users = models.ManyToManyField( - User, - related_name="event_occurrences_signed_up", - blank=True, - help_text="Users who have signed up for this occurrence.", - ) - - class Meta: - ordering = ["start"] - - def __str__(self): - return f"{self.event.title} ({self.start} - {self.end})" - - @property - def attendees_count(self): - return self.signed_up_users.count() - - @property - def is_past(self): - from django.utils import timezone - - return self.end < timezone.now() - - def user_signed_up(self, user): - if not user.is_authenticated: - return False - return self.signed_up_users.filter(id=user.id).exists()