Skip to content

Commit a545fbd

Browse files
committed
add consequences and workinghours to API
1 parent 9b22c56 commit a545fbd

3 files changed

Lines changed: 44 additions & 1 deletion

File tree

ephios/api/serializers.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
from ephios.api.fields import ChoiceDisplayField
1313
from ephios.core.models import (
1414
AbstractParticipation,
15+
Consequence,
1516
Event,
1617
EventType,
1718
Qualification,
1819
Shift,
1920
UserProfile,
21+
WorkingHours,
2022
)
2123
from ephios.core.services.qualification import collect_all_included_qualifications
2224
from ephios.core.templatetags.settings_extras import make_absolute
@@ -200,3 +202,15 @@ class ParticipationSerializer(UserinfoParticipationSerializer):
200202
def __init__(self, *args, **kwargs):
201203
super().__init__(*args, **kwargs)
202204
del self.fields["comment"]
205+
206+
207+
class WorkingHoursSerializer(ModelSerializer):
208+
class Meta:
209+
model = WorkingHours
210+
fields = ["user", "hours", "reason", "date"]
211+
212+
213+
class ConsequenceSerializer(ModelSerializer):
214+
class Meta:
215+
model = Consequence
216+
fields = ["slug", "user", "state", "data"]

ephios/api/urls.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020
UserinfoParticipationViewSet,
2121
)
2222
from ephios.api.views.users import (
23+
ConsequenceViewSet,
2324
OwnParticipationsViewSet,
2425
UserByMailView,
2526
UserParticipationView,
2627
UserProfileMeView,
2728
UserViewSet,
29+
WorkingHoursViewSet,
2830
)
2931
from ephios.extra.permissions import staff_required
3032

@@ -41,6 +43,8 @@
4143
router.register(
4244
r"users/(?P<user>[\d]+)/participations", UserParticipationView, basename="user-participations"
4345
)
46+
router.register(r"workinghours", WorkingHoursViewSet)
47+
router.register(r"consequences", ConsequenceViewSet)
4448

4549
app_name = "api"
4650
urlpatterns = [

ephios/api/views/users.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,19 @@
1818
ViewUserModelObjectPermissions,
1919
)
2020
from ephios.api.serializers import (
21+
ConsequenceSerializer,
2122
ParticipationSerializer,
2223
UserinfoParticipationSerializer,
2324
UserProfileSerializer,
25+
WorkingHoursSerializer,
26+
)
27+
from ephios.core.models import (
28+
AbstractParticipation,
29+
Consequence,
30+
LocalParticipation,
31+
UserProfile,
32+
WorkingHours,
2433
)
25-
from ephios.core.models import AbstractParticipation, LocalParticipation, UserProfile
2634

2735

2836
class UserProfileMeView(RetrieveAPIView):
@@ -84,3 +92,20 @@ def get_queryset(self):
8492
return AbstractParticipation.objects.filter(
8593
localparticipation__user=self.kwargs.get("user")
8694
).select_related("shift", "shift__event", "shift__event__type")
95+
96+
97+
class WorkingHoursViewSet(viewsets.ReadOnlyModelViewSet):
98+
serializer_class = WorkingHoursSerializer
99+
permission_classes = [IsAuthenticatedOrTokenHasScope, ViewObjectPermissions]
100+
filter_backends = [DjangoFilterBackend]
101+
filterset_fields = ["user", "date"]
102+
required_scopes = ["CONFIDENTIAL_READ"]
103+
queryset = WorkingHours.objects.all()
104+
105+
106+
class ConsequenceViewSet(viewsets.ModelViewSet):
107+
serializer_class = ConsequenceSerializer
108+
permission_classes = [IsAuthenticatedOrTokenHasScope, ViewObjectPermissions]
109+
filter_backends = [DjangoFilterBackend]
110+
required_scopes = ["CONFIDENTIAL_WRITE"]
111+
queryset = Consequence.objects.all()

0 commit comments

Comments
 (0)