Skip to content
Snippets Groups Projects
Verified Commit 0faf8d8c authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add custom query for Alsijil absence reasons

parent 6578adf5
No related branches found
No related tags found
1 merge request!382Resolve "Only use a subset of absence reasons in class register"
Pipeline #191872 failed
...@@ -19,3 +19,16 @@ class AlsijilConfig(AppConfig): ...@@ -19,3 +19,16 @@ class AlsijilConfig(AppConfig):
([2021], "Lloyd Meins", "meinsll@katharineum.de"), ([2021], "Lloyd Meins", "meinsll@katharineum.de"),
([2024], "Michael Bauer", "michael-bauer@posteo.de"), ([2024], "Michael Bauer", "michael-bauer@posteo.de"),
) )
def post_migrate(
self,
app_config: AppConfig,
verbosity: int,
interactive: bool,
using: str,
**kwargs,
) -> None:
super().post_migrate(app_config, verbosity, interactive, using, **kwargs)
from .util.alsijil_helpers import get_absence_reason_tag
get_absence_reason_tag()
query absenceReasons($orderBy: [String], $filters: JSONString) { query absenceReasons($orderBy: [String], $filters: JSONString) {
items: absenceReasons(orderBy: $orderBy, filters: $filters) { items: coursebookAbsenceReasons(orderBy: $orderBy, filters: $filters) {
id id
shortName shortName
name name
......
...@@ -8,6 +8,8 @@ import graphene ...@@ -8,6 +8,8 @@ import graphene
from aleksis.apps.chronos.models import LessonEvent from aleksis.apps.chronos.models import LessonEvent
from aleksis.apps.cursus.models import Course from aleksis.apps.cursus.models import Course
from aleksis.apps.cursus.schema import CourseType from aleksis.apps.cursus.schema import CourseType
from aleksis.apps.kolego.models import AbsenceReason
from aleksis.apps.kolego.schema.absence import AbsenceReasonType
from aleksis.core.models import Group, Person from aleksis.core.models import Group, Person
from aleksis.core.schema.base import FilterOrderList from aleksis.core.schema.base import FilterOrderList
from aleksis.core.schema.group import GroupType from aleksis.core.schema.group import GroupType
...@@ -67,6 +69,8 @@ class Query(graphene.ObjectType): ...@@ -67,6 +69,8 @@ class Query(graphene.ObjectType):
extra_marks = FilterOrderList(ExtraMarkType) extra_marks = FilterOrderList(ExtraMarkType)
coursebook_absence_reasons = FilterOrderList(AbsenceReasonType)
def resolve_documentations_by_course_id(root, info, course_id, **kwargs): def resolve_documentations_by_course_id(root, info, course_id, **kwargs):
documentations = Documentation.objects.filter( documentations = Documentation.objects.filter(
Q(course__pk=course_id) | Q(amends__course__pk=course_id) Q(course__pk=course_id) | Q(amends__course__pk=course_id)
...@@ -210,6 +214,12 @@ class Query(graphene.ObjectType): ...@@ -210,6 +214,12 @@ class Query(graphene.ObjectType):
return lessons_for_person return lessons_for_person
@staticmethod
def resolve_coursebook_absence_reasons(root, info, **kwargs):
if not info.context.user.has_perm("kolego.fetch_absencereasons_rule"):
return []
return AbsenceReason.objects.filter(tags__short_name="class_register")
class Mutation(graphene.ObjectType): class Mutation(graphene.ObjectType):
create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field() create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field()
......
...@@ -15,6 +15,7 @@ from aleksis.apps.alsijil.forms import FilterRegisterObjectForm ...@@ -15,6 +15,7 @@ from aleksis.apps.alsijil.forms import FilterRegisterObjectForm
from aleksis.apps.alsijil.models import LessonDocumentation from aleksis.apps.alsijil.models import LessonDocumentation
from aleksis.apps.chronos.models import Event, ExtraLesson, Holiday, LessonPeriod from aleksis.apps.chronos.models import Event, ExtraLesson, Holiday, LessonPeriod
from aleksis.apps.chronos.util.chronos_helpers import get_el_by_pk from aleksis.apps.chronos.util.chronos_helpers import get_el_by_pk
from aleksis.apps.kolego.models import AbsenceReasonTag
from aleksis.core.models import Group from aleksis.core.models import Group
from aleksis.core.util.core_helpers import get_site_preferences from aleksis.core.util.core_helpers import get_site_preferences
...@@ -401,3 +402,11 @@ def generate_list_of_all_register_objects(filter_dict: Dict[str, Any]) -> List[D ...@@ -401,3 +402,11 @@ def generate_list_of_all_register_objects(filter_dict: Dict[str, Any]) -> List[D
register_objects = sorted(register_objects, key=itemgetter("date_sort", "period_sort")) register_objects = sorted(register_objects, key=itemgetter("date_sort", "period_sort"))
return register_objects return register_objects
return [] return []
def get_absence_reason_tag():
return AbsenceReasonTag.objects.managed_by_app("alsijil").get_or_create(
managed_by_app_label="alsijil",
short_name="class_register",
defaults={"name": "Class Register"},
)
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