Skip to content
Snippets Groups Projects
Commit 7fc180b4 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Merge branch 'fix/school-structure-group-types' into 'master'

Improve handling of group types for school structure

See merge request AlekSIS/onboarding/AlekSIS-App-Cursus!34
parents 13388d72 64fbf85b
No related branches found
No related tags found
1 merge request!34Improve handling of group types for school structure
Pipeline #176474 passed with warnings
......@@ -11,3 +11,12 @@ class DefaultConfig(AppConfig):
}
licence = "EUPL-1.2+"
copyright_info = (([2023], "Jonathan Weth", "dev@jonathanweth.de"),)
def _maintain_default_data(self):
super()._maintain_default_data()
# Ensure that default group types for school structure exist
from .util.group_types import get_school_class_group_type, get_school_grade_group_type
get_school_grade_group_type()
get_school_class_group_type()
from django.apps import apps
from django.core.exceptions import PermissionDenied
from django.db.models import Q
......@@ -11,7 +10,12 @@ from graphene_django_cud.mutations import (
)
from guardian.shortcuts import get_objects_for_user
from aleksis.core.models import Group, GroupType, Person
from aleksis.apps.cursus.settings import SCHOOL_CLASS_GROUP_TYPE_NAME, SCHOOL_GRADE_GROUP_TYPE_NAME
from aleksis.apps.cursus.util.group_types import (
get_school_class_group_type,
get_school_grade_group_type,
)
from aleksis.core.models import Group, Person
from aleksis.core.schema.base import (
DjangoFilterMixin,
FilterOrderList,
......@@ -25,8 +29,6 @@ from aleksis.core.util.core_helpers import has_person
from .models import Course, Subject
SCHOOL_GRADE_GROUP_TYPE_NAME = "School grade"
class SubjectType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType):
class Meta:
......@@ -185,10 +187,7 @@ class CreateSchoolClassMutation(DjangoBatchCreateMutation):
@classmethod
def before_mutate(cls, root, info, input): # noqa
app_label = apps.get_containing_app_config(cls.__module__).label
group_type, __ = GroupType.objects.managed_by_app(app_label).get_or_create(
name="School class", managed_by_app_label=app_label
)
group_type = get_school_class_group_type()
for school_class in input:
school_class["group_type"] = group_type.pk
return input
......@@ -202,10 +201,7 @@ class CreateSchoolGradeMutation(DjangoBatchCreateMutation):
@classmethod
def before_mutate(cls, root, info, input): # noqa
app_label = apps.get_containing_app_config(cls.__module__).label
group_type, __ = GroupType.objects.managed_by_app(app_label).get_or_create(
name=SCHOOL_GRADE_GROUP_TYPE_NAME, managed_by_app_label=app_label
)
group_type = get_school_grade_group_type()
for school_grade in input:
school_grade["group_type"] = group_type.pk
return input
......@@ -235,7 +231,7 @@ class Query(graphene.ObjectType):
return get_objects_for_user(
info.context.user,
"core.view_group",
Group.objects.filter(group_type__name="School class"),
Group.objects.filter(group_type__name=SCHOOL_CLASS_GROUP_TYPE_NAME),
)
@staticmethod
......
SCHOOL_GRADE_GROUP_TYPE_NAME = "School grade"
SCHOOL_CLASS_GROUP_TYPE_NAME = "School class"
from aleksis.core.models import GroupType
from ..settings import SCHOOL_CLASS_GROUP_TYPE_NAME, SCHOOL_GRADE_GROUP_TYPE_NAME
def get_school_grade_group_type():
group_type, __ = GroupType.objects.managed_by_app("cursus").get_or_create(
name=SCHOOL_GRADE_GROUP_TYPE_NAME, managed_by_app_label="cursus"
)
return group_type
def get_school_class_group_type():
group_type, __ = GroupType.objects.managed_by_app("cursus").get_or_create(
name=SCHOOL_CLASS_GROUP_TYPE_NAME, managed_by_app_label="cursus"
)
return group_type
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