Skip to content
Snippets Groups Projects
Commit cb9dc200 authored by Jonathan Weth's avatar Jonathan Weth :keyboard: Committed by Hangzhi Yu
Browse files

Build Holiday model on top of CalendarEvent

parent fa4600ee
No related branches found
No related tags found
1 merge request!1148Calendar events and iCal feeds
......@@ -8,7 +8,7 @@ from django.db.models.manager import Manager
from calendarweek import CalendarWeek
from django_cte import CTEManager, CTEQuerySet
from polymorphic.managers import PolymorphicManager
from polymorphic.managers import PolymorphicManager, PolymorphicQuerySet
class CurrentSiteManagerWithoutMigrations(_CurrentSiteManager):
......@@ -123,11 +123,11 @@ class InstalledWidgetsDashboardWidgetOrderManager(Manager):
return super().get_queryset().filter(widget_id__in=dashboard_widget_pks)
class PolymorphicCurrentSiteManager(_CurrentSiteManager, PolymorphicManager):
class PolymorphicCurrentSiteManager(CurrentSiteManagerWithoutMigrations, PolymorphicManager):
"""Default manager for extensible, polymorphic models."""
class HolidayQuerySet(QuerySet, DateRangeQuerySetMixin):
class HolidayQuerySet(DateRangeQuerySetMixin, PolymorphicQuerySet):
"""QuerySet with custom query methods for holidays."""
def get_all_days(self) -> list[date]:
......
# Generated by Django 4.1.7 on 2023-02-27 14:32
# Generated by Django 4.1.8 on 2023-04-09 14:09
import aleksis.core.mixins
from django.db import migrations, models
import django.db.models.deletion
......@@ -8,7 +7,7 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("sites", "0002_alter_domain_unique"),
("core", "0050_fix_amends"),
("core", "0051_calendarevent_dates"),
]
operations = [
......@@ -16,31 +15,22 @@ class Migration(migrations.Migration):
name="Holiday",
fields=[
(
"id",
models.BigAutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
("extended_data", models.JSONField(default=dict, editable=False)),
("holiday_name", models.CharField(max_length=255, verbose_name="Name")),
("date_start", models.DateField(verbose_name="Start date")),
("date_end", models.DateField(verbose_name="End date")),
(
"site",
models.ForeignKey(
default=1,
editable=False,
"calendarevent_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="sites.site",
parent_link=True,
primary_key=True,
serialize=False,
to="core.calendarevent",
),
),
("holiday_name", models.CharField(max_length=255, verbose_name="Name")),
],
options={
"verbose_name": "Holiday",
"verbose_name_plural": "Holidays",
"ordering": ["date_start"],
},
bases=(aleksis.core.mixins.CalendarEventMixin, models.Model),
bases=("core.calendarevent",),
),
]
......@@ -70,6 +70,7 @@ from .managers import (
GroupQuerySet,
HolidayQuerySet,
InstalledWidgetsDashboardWidgetOrderManager,
PolymorphicCurrentSiteManager,
SchoolTermQuerySet,
UninstallRenitentPolymorphicManager,
)
......@@ -1588,7 +1589,7 @@ class BirthdayEvent(CalendarEventMixin):
return qs
class Holiday(CalendarEventMixin, ExtensibleModel):
class Holiday(CalendarEvent):
name = "holidays"
verbose_name = _("Holidays")
......@@ -1600,19 +1601,9 @@ class Holiday(CalendarEventMixin, ExtensibleModel):
def value_description(cls, reference_object):
return ""
@classmethod
def value_start_datetime(cls, reference_object):
return reference_object.date_start
@classmethod
def value_end_datetime(cls, reference_object):
return reference_object.date_end + timedelta(days=1)
objects = CurrentSiteManagerWithoutMigrations.from_queryset(HolidayQuerySet)()
objects = PolymorphicCurrentSiteManager.from_queryset(HolidayQuerySet)()
holiday_name = models.CharField(verbose_name=_("Name"), max_length=255)
date_start = models.DateField(verbose_name=_("Start date"))
date_end = models.DateField(verbose_name=_("End date"))
def get_days(self) -> Iterator[date]:
delta = self.date_end - self.date_start
......@@ -1645,14 +1636,9 @@ class Holiday(CalendarEventMixin, ExtensibleModel):
return per_weekday
@classmethod
def get_objects(cls, request):
return cls.objects.all()
def __str__(self) -> str:
return self.holiday_name
class Meta:
ordering = ["date_start"]
verbose_name = _("Holiday")
verbose_name_plural = _("Holidays")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment