1
+ # ruff: noqa: SLF001
1
2
# pylint: disable=too-many-lines
2
3
"""Admin serializers for Joanie Core app."""
3
4
8
9
from rest_framework .generics import get_object_or_404
9
10
10
11
from joanie .core import models
11
- from joanie .core .enums import ALL_LANGUAGES
12
12
from joanie .core .serializers .fields import (
13
13
ImageDetailField ,
14
14
ISO8601DurationField ,
@@ -21,6 +21,12 @@ class AdminContractDefinitionSerializer(serializers.ModelSerializer):
21
21
"""Serializer for ContractDefinition model."""
22
22
23
23
title = serializers .CharField ()
24
+ name = serializers .ChoiceField (
25
+ required = False ,
26
+ choices = models .ContractDefinition ._meta .get_field ("name" ).choices ,
27
+ default = models .ContractDefinition ._meta .get_field ("name" ).default ,
28
+ label = models .ContractDefinition ._meta .get_field ("name" ).verbose_name ,
29
+ )
24
30
25
31
class Meta :
26
32
model = models .ContractDefinition
@@ -53,7 +59,22 @@ class AdminCourseRunLightSerializer(serializers.ModelSerializer):
53
59
"""Serializer for CourseRun model."""
54
60
55
61
title = serializers .CharField ()
56
- languages = serializers .MultipleChoiceField (choices = ALL_LANGUAGES )
62
+ languages = serializers .MultipleChoiceField (
63
+ choices = models .CourseRun ._meta .get_field ("languages" ).choices
64
+ )
65
+ is_gradable = serializers .BooleanField (
66
+ required = False ,
67
+ # default=False,
68
+ # label=_("Is gradable")
69
+ default = models .CourseRun ._meta .get_field ("is_gradable" ).default ,
70
+ label = models .CourseRun ._meta .get_field ("is_gradable" ).verbose_name ,
71
+ )
72
+ is_listed = serializers .BooleanField (
73
+ required = False ,
74
+ default = models .CourseRun ._meta .get_field ("is_listed" ).default ,
75
+ label = models .CourseRun ._meta .get_field ("is_listed" ).verbose_name ,
76
+ help_text = models .CourseRun ._meta .get_field ("is_listed" ).help_text ,
77
+ )
57
78
58
79
class Meta :
59
80
model = models .CourseRun
@@ -125,6 +146,11 @@ class AdminOrganizationAccessSerializer(serializers.ModelSerializer):
125
146
"""Serializer for OrganizationAccess model."""
126
147
127
148
user = AdminUserSerializer (read_only = True )
149
+ role = serializers .ChoiceField (
150
+ required = False ,
151
+ choices = models .OrganizationAccess ._meta .get_field ("role" ).choices ,
152
+ default = models .OrganizationAccess ._meta .get_field ("role" ).default ,
153
+ )
128
154
129
155
class Meta :
130
156
model = models .OrganizationAccess
@@ -169,6 +195,17 @@ def validate(self, attrs):
169
195
class AdminOrganizationAddressSerializer (serializers .ModelSerializer ):
170
196
"""Serializer for the Address model for an organization"""
171
197
198
+ is_main = serializers .BooleanField (
199
+ required = False ,
200
+ default = models .Address ._meta .get_field ("is_main" ).default ,
201
+ label = models .Address ._meta .get_field ("is_main" ).verbose_name ,
202
+ )
203
+ is_reusable = serializers .BooleanField (
204
+ required = False ,
205
+ default = models .Address ._meta .get_field ("is_reusable" ).default ,
206
+ label = models .Address ._meta .get_field ("is_reusable" ).verbose_name ,
207
+ )
208
+
172
209
class Meta :
173
210
model = models .Address
174
211
fields = [
@@ -246,6 +283,12 @@ class AdminOrganizationSerializer(serializers.ModelSerializer):
246
283
signature = ImageDetailField (required = False )
247
284
accesses = AdminOrganizationAccessSerializer (many = True , read_only = True )
248
285
addresses = AdminOrganizationAddressSerializer (many = True , read_only = True )
286
+ country = serializers .ChoiceField (
287
+ required = False ,
288
+ choices = models .Organization ._meta .get_field ("country" ).choices ,
289
+ default = models .Organization ._meta .get_field ("country" ).default ,
290
+ help_text = models .Organization ._meta .get_field ("country" ).help_text ,
291
+ )
249
292
250
293
class Meta :
251
294
model = models .Organization
@@ -355,6 +398,22 @@ class AdminOrderGroupSerializer(serializers.ModelSerializer):
355
398
Admin Serializer for OrderGroup model
356
399
"""
357
400
401
+ nb_seats = serializers .IntegerField (
402
+ required = False ,
403
+ label = models .OrderGroup ._meta .get_field ("nb_seats" ).verbose_name ,
404
+ help_text = models .OrderGroup ._meta .get_field ("nb_seats" ).help_text ,
405
+ default = models .OrderGroup ._meta .get_field ("nb_seats" ).default ,
406
+ min_value = models .OrderGroup ._meta .get_field ("nb_seats" )
407
+ .validators [0 ]
408
+ .limit_value ,
409
+ max_value = models .OrderGroup ._meta .get_field ("nb_seats" )
410
+ .validators [1 ]
411
+ .limit_value ,
412
+ )
413
+ is_active = serializers .BooleanField (
414
+ required = False ,
415
+ default = models .OrderGroup ._meta .get_field ("is_active" ).default ,
416
+ )
358
417
nb_available_seats = serializers .SerializerMethodField (read_only = True )
359
418
360
419
class Meta :
@@ -522,6 +581,13 @@ class AdminCourseAccessSerializer(serializers.ModelSerializer):
522
581
"""Serializer for CourseAccess model."""
523
582
524
583
user = AdminUserSerializer (read_only = True )
584
+ role = serializers .ChoiceField (
585
+ required = False ,
586
+ # choices=models.CourseAccess.ROLE_CHOICES,
587
+ # default=enums.INSTRUCTOR,
588
+ choices = models .CourseAccess ._meta .get_field ("role" ).choices ,
589
+ default = models .CourseAccess ._meta .get_field ("role" ).default ,
590
+ )
525
591
526
592
class Meta :
527
593
model = models .CourseAccess
@@ -665,31 +731,14 @@ def update(self, instance, validated_data):
665
731
return super ().update (instance , validated_data )
666
732
667
733
668
- class AdminCourseRunSerializer (serializers . ModelSerializer ):
734
+ class AdminCourseRunSerializer (AdminCourseRunLightSerializer ):
669
735
"""Serializer for CourseRun model."""
670
736
671
- title = serializers .CharField ()
672
737
course = AdminCourseLightSerializer (read_only = True )
673
- languages = serializers .MultipleChoiceField (choices = ALL_LANGUAGES )
674
738
675
739
class Meta :
676
- model = models .CourseRun
677
- fields = [
678
- "id" ,
679
- "course" ,
680
- "resource_link" ,
681
- "title" ,
682
- "is_gradable" ,
683
- "is_listed" ,
684
- "languages" ,
685
- "start" ,
686
- "end" ,
687
- "enrollment_start" ,
688
- "enrollment_end" ,
689
- "uri" ,
690
- "state" ,
691
- ]
692
- read_only_fields = ["id" , "uri" , "state" ]
740
+ model = AdminCourseRunLightSerializer .Meta .model
741
+ fields = AdminCourseRunLightSerializer .Meta .fields + ["course" ]
693
742
694
743
def validate (self , attrs ):
695
744
"""
@@ -827,6 +876,30 @@ class AdminProductTargetCourseRelationSerializer(serializers.ModelSerializer):
827
876
Serializer for ProductTargetCourseRelation model
828
877
"""
829
878
879
+ is_graded = serializers .BooleanField (
880
+ required = False ,
881
+ default = models .ProductTargetCourseRelation ._meta .get_field ("is_graded" ).default ,
882
+ label = models .ProductTargetCourseRelation ._meta .get_field (
883
+ "is_graded"
884
+ ).verbose_name ,
885
+ help_text = models .ProductTargetCourseRelation ._meta .get_field (
886
+ "is_graded"
887
+ ).help_text ,
888
+ )
889
+ position = serializers .IntegerField (
890
+ required = False ,
891
+ default = models .ProductTargetCourseRelation ._meta .get_field ("position" ).default ,
892
+ label = models .ProductTargetCourseRelation ._meta .get_field (
893
+ "position"
894
+ ).verbose_name ,
895
+ min_value = models .ProductTargetCourseRelation ._meta .get_field ("position" )
896
+ .validators [0 ]
897
+ .limit_value ,
898
+ max_value = models .ProductTargetCourseRelation ._meta .get_field ("position" )
899
+ .validators [1 ]
900
+ .limit_value ,
901
+ )
902
+
830
903
class Meta :
831
904
model = models .ProductTargetCourseRelation
832
905
fields = ["id" , "course" , "product" , "is_graded" , "position" , "course_runs" ]
0 commit comments