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
from django.db.models.functions import Concat
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.cursus.models import Course
from aleksis.core.managers import (
AlekSISBaseManagerWithoutMigrations,
DateRangeQuerySetMixin,
RecurrencePolymorphicQuerySet,
SchoolTermRelatedQuerySet,
)
from aleksis.core.models import Group, Person, Room
......@@ -866,7 +866,7 @@ class RoomPropertiesMixin:
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."""
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
from aleksis.apps.cursus import models as cursus_models
from aleksis.apps.cursus.models import Course
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 (
ExtensibleModel,
GlobalPermissionModel,
......@@ -1290,10 +1293,17 @@ class LessonEvent(CalendarEvent):
name = "lesson"
verbose_name = _("Lessons")
objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)()
objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)()
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, on_delete=models.CASCADE, verbose_name=_("Course"), null=True, blank=True
)
......@@ -1490,6 +1500,8 @@ class LessonEvent(CalendarEvent):
if reference_object.amends
else None,
"title": reference_object.title,
"slot_number_start": reference_object.slot_number_start,
"slot_number_end": reference_object.slot_number_end,
"teachers": [
{
"id": t.pk,
......@@ -1525,12 +1537,12 @@ class LessonEvent(CalendarEvent):
@classmethod
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:
"""Return all objects that should be included in the calendar."""
objs = (
super()
.get_objects(request, params)
.get_objects(request, params, **kwargs)
.not_instance_of(SupervisionEvent)
.select_related("subject", "course")
.prefetch_related("groups", "teachers", "rooms", "groups__members")
......@@ -1587,7 +1599,7 @@ class SupervisionEvent(LessonEvent):
name = "supervision"
verbose_name = _("Supervisions")
objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)()
objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)()
@classmethod
def value_title(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str:
......@@ -1609,10 +1621,10 @@ class SupervisionEvent(LessonEvent):
@classmethod
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:
"""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:
obj_id = int(params.get("id", 0))
type_ = params.get("type", None)
......
......@@ -40,6 +40,9 @@ class LessonEventType(DjangoObjectType):
model = LessonEvent
fields = (
"id",
"title",
"slot_number_start",
"slot_number_end",
"amends",
"datetime_start",
"datetime_end",
......