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.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()
|
||||
Reference in New Issue
Block a user