refactor(models): split models.py into submodules
This commit is contained in:
23
home/models/__init__.py
Normal file
23
home/models/__init__.py
Normal file
@@ -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",
|
||||||
|
]
|
||||||
38
home/models/event_occurrence.py
Normal file
38
home/models/event_occurrence.py
Normal file
@@ -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()
|
||||||
@@ -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.contrib.auth.models import Group, User
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.forms import CheckboxSelectMultiple
|
from django.forms import CheckboxSelectMultiple
|
||||||
@@ -9,7 +8,7 @@ from modelcluster.contrib.taggit import ClusterTaggableManager
|
|||||||
from modelcluster.fields import ParentalKey
|
from modelcluster.fields import ParentalKey
|
||||||
from taggit.models import TaggedItemBase
|
from taggit.models import TaggedItemBase
|
||||||
from wagtail.admin.panels import FieldPanel
|
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 import Page
|
||||||
from wagtail.models.copying import ParentalManyToManyField
|
from wagtail.models.copying import ParentalManyToManyField
|
||||||
from wagtail_color_panel.edit_handlers import NativeColorPanel
|
from wagtail_color_panel.edit_handlers import NativeColorPanel
|
||||||
@@ -260,36 +259,3 @@ class EventPage(Page):
|
|||||||
FieldPanel("recurrence_repeat_until"),
|
FieldPanel("recurrence_repeat_until"),
|
||||||
FieldPanel("recurrence_endless"),
|
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()
|
|
||||||
Reference in New Issue
Block a user