Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • AlekSIS/official/AlekSIS-App-Chronos
  • sunweaver/AlekSIS-App-Chronos
  • sggua/AlekSIS-App-Chronos
  • tincmeKdenka/AlekSIS-App-Chronos
  • ligquamacti/AlekSIS-App-Chronos
  • 1crotatilhe/AlekSIS-App-Chronos
  • 1compluningi/AlekSIS-App-Chronos
  • starwardcarfi/AlekSIS-App-Chronos
  • ceohecholeg/AlekSIS-App-Chronos
  • 7quecontranchi/AlekSIS-App-Chronos
  • 8evsubcesza/AlekSIS-App-Chronos
  • unscinKibdzu/AlekSIS-App-Chronos
  • delucPchondmu/AlekSIS-App-Chronos
13 results
Show changes
Commits on Source (6)
...@@ -9,13 +9,13 @@ from django.db.models.fields import DateField ...@@ -9,13 +9,13 @@ from django.db.models.fields import DateField
from django.db.models.functions import Concat from django.db.models.functions import Concat
from calendarweek import CalendarWeek from calendarweek import CalendarWeek
from polymorphic.managers import PolymorphicQuerySet
from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date
from aleksis.apps.cursus.models import Course from aleksis.apps.cursus.models import Course
from aleksis.core.managers import ( from aleksis.core.managers import (
AlekSISBaseManagerWithoutMigrations, AlekSISBaseManagerWithoutMigrations,
DateRangeQuerySetMixin, DateRangeQuerySetMixin,
RecurrencePolymorphicQuerySet,
SchoolTermRelatedQuerySet, SchoolTermRelatedQuerySet,
) )
from aleksis.core.models import Group, Person, Room from aleksis.core.models import Group, Person, Room
...@@ -866,7 +866,7 @@ class RoomPropertiesMixin: ...@@ -866,7 +866,7 @@ class RoomPropertiesMixin:
return sep.join([room.short_name for room in self.get_rooms()]) return sep.join([room.short_name for room in self.get_rooms()])
class LessonEventQuerySet(PolymorphicQuerySet): class LessonEventQuerySet(RecurrencePolymorphicQuerySet):
"""Queryset with special query methods for lesson events.""" """Queryset with special query methods for lesson events."""
def for_teacher(self, teacher: Union[int, Person]) -> "LessonEventQuerySet": def for_teacher(self, teacher: Union[int, Person]) -> "LessonEventQuerySet":
......
# Generated by Django 5.0.7 on 2024-07-26 19:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('chronos', '0016_lessonevent'),
]
operations = [
migrations.AddField(
model_name='lessonevent',
name='slot_number_end',
field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='End slot number'),
),
migrations.AddField(
model_name='lessonevent',
name='slot_number_start',
field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='Start slot number'),
),
]
...@@ -59,7 +59,10 @@ from aleksis.apps.chronos.util.format import format_m2m ...@@ -59,7 +59,10 @@ from aleksis.apps.chronos.util.format import format_m2m
from aleksis.apps.cursus import models as cursus_models from aleksis.apps.cursus import models as cursus_models
from aleksis.apps.cursus.models import Course from aleksis.apps.cursus.models import Course
from aleksis.apps.resint.models import LiveDocument from aleksis.apps.resint.models import LiveDocument
from aleksis.core.managers import AlekSISBaseManagerWithoutMigrations, PolymorphicBaseManager from aleksis.core.managers import (
AlekSISBaseManagerWithoutMigrations,
RecurrencePolymorphicManager,
)
from aleksis.core.mixins import ( from aleksis.core.mixins import (
ExtensibleModel, ExtensibleModel,
GlobalPermissionModel, GlobalPermissionModel,
...@@ -1290,10 +1293,17 @@ class LessonEvent(CalendarEvent): ...@@ -1290,10 +1293,17 @@ class LessonEvent(CalendarEvent):
name = "lesson" name = "lesson"
verbose_name = _("Lessons") verbose_name = _("Lessons")
objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)() objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)()
title = models.CharField(verbose_name=_("Name"), max_length=255, blank=True) title = models.CharField(verbose_name=_("Name"), max_length=255, blank=True)
slot_number_start = models.PositiveSmallIntegerField(
verbose_name=_("Start slot number"), blank=True, null=True
)
slot_number_end = models.PositiveSmallIntegerField(
verbose_name=_("End slot number"), blank=True, null=True
)
course = models.ForeignKey( course = models.ForeignKey(
Course, on_delete=models.CASCADE, verbose_name=_("Course"), null=True, blank=True Course, on_delete=models.CASCADE, verbose_name=_("Course"), null=True, blank=True
) )
...@@ -1490,6 +1500,8 @@ class LessonEvent(CalendarEvent): ...@@ -1490,6 +1500,8 @@ class LessonEvent(CalendarEvent):
if reference_object.amends if reference_object.amends
else None, else None,
"title": reference_object.title, "title": reference_object.title,
"slot_number_start": reference_object.slot_number_start,
"slot_number_end": reference_object.slot_number_end,
"teachers": [ "teachers": [
{ {
"id": t.pk, "id": t.pk,
...@@ -1525,12 +1537,12 @@ class LessonEvent(CalendarEvent): ...@@ -1525,12 +1537,12 @@ class LessonEvent(CalendarEvent):
@classmethod @classmethod
def get_objects( def get_objects(
cls, request: HttpRequest | None = None, params: dict[str, any] | None = None cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs
) -> Iterable: ) -> Iterable:
"""Return all objects that should be included in the calendar.""" """Return all objects that should be included in the calendar."""
objs = ( objs = (
super() super()
.get_objects(request, params) .get_objects(request, params, **kwargs)
.not_instance_of(SupervisionEvent) .not_instance_of(SupervisionEvent)
.select_related("subject", "course") .select_related("subject", "course")
.prefetch_related("groups", "teachers", "rooms", "groups__members") .prefetch_related("groups", "teachers", "rooms", "groups__members")
...@@ -1587,7 +1599,7 @@ class SupervisionEvent(LessonEvent): ...@@ -1587,7 +1599,7 @@ class SupervisionEvent(LessonEvent):
name = "supervision" name = "supervision"
verbose_name = _("Supervisions") verbose_name = _("Supervisions")
objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)() objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)()
@classmethod @classmethod
def value_title(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str: def value_title(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str:
...@@ -1609,10 +1621,10 @@ class SupervisionEvent(LessonEvent): ...@@ -1609,10 +1621,10 @@ class SupervisionEvent(LessonEvent):
@classmethod @classmethod
def get_objects( def get_objects(
cls, request: HttpRequest | None = None, params: dict[str, any] | None = None cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs
) -> Iterable: ) -> Iterable:
"""Return all objects that should be included in the calendar.""" """Return all objects that should be included in the calendar."""
objs = cls.objects.instance_of(cls) objs = super().get_objects(request, params, **kwargs).instance_of(cls)
if params: if params:
obj_id = int(params.get("id", 0)) obj_id = int(params.get("id", 0))
type_ = params.get("type", None) type_ = params.get("type", None)
......
...@@ -40,6 +40,9 @@ class LessonEventType(DjangoObjectType): ...@@ -40,6 +40,9 @@ class LessonEventType(DjangoObjectType):
model = LessonEvent model = LessonEvent
fields = ( fields = (
"id", "id",
"title",
"slot_number_start",
"slot_number_end",
"amends", "amends",
"datetime_start", "datetime_start",
"datetime_end", "datetime_end",
......