@@ -48,7 +48,7 @@ def validate_enrolment(child, occurrence):
4848 )
4949 if child .occurrences .filter (event = occurrence .event ).exists ():
5050 raise ChildAlreadyJoinedEventError ("Child already joined this event" )
51- if occurrence .enrolments .count () >= occurrence .event . capacity_per_occurrence :
51+ if occurrence .enrolments .count () >= occurrence .get_capacity () :
5252 raise OccurrenceIsFullError ("Maximum enrolments created" )
5353 if occurrence .time < timezone .now ():
5454 raise PastOccurrenceError ("Cannot join occurrence in the past" )
@@ -116,6 +116,7 @@ class OccurrenceNode(DjangoObjectType):
116116 remaining_capacity = graphene .Int ()
117117 occurrence_language = LanguageEnum (required = True )
118118 enrolment_count = graphene .Int (required = True )
119+ capacity = graphene .Int ()
119120
120121 @classmethod
121122 @login_required
@@ -132,15 +133,33 @@ def get_node(cls, info, id):
132133 return super ().get_node (info , id )
133134
134135 def resolve_remaining_capacity (self , info , ** kwargs ):
135- return self .event . capacity_per_occurrence - self .get_enrolment_count ()
136+ return max ( self .get_capacity () - self .get_enrolment_count (), 0 )
136137
137138 def resolve_enrolment_count (self , info , ** kwargs ):
138139 return self .get_enrolment_count ()
139140
141+ def resolve_capacity (self , info , ** kwargs ):
142+ return self .get_capacity ()
143+
140144 class Meta :
141145 model = Occurrence
142146 interfaces = (relay .Node ,)
143147 filterset_class = OccurrenceFilter
148+ fields = (
149+ "id" ,
150+ "created_at" ,
151+ "updated_at" ,
152+ "time" ,
153+ "event" ,
154+ "venue" ,
155+ "children" ,
156+ "occurrence_language" ,
157+ "enrolments" ,
158+ "capacity" ,
159+ "capacity_override" ,
160+ "remaining_capacity" ,
161+ "enrolment_count" ,
162+ )
144163
145164
146165class EnrolmentNode (DjangoObjectType ):
@@ -347,6 +366,7 @@ class Input:
347366 event_id = graphene .GlobalID ()
348367 venue_id = graphene .GlobalID ()
349368 occurrence_language = LanguageEnum ()
369+ capacity_override = graphene .Int ()
350370
351371 occurrence = graphene .Field (OccurrenceNode )
352372
@@ -381,6 +401,7 @@ class Input:
381401 event_id = graphene .GlobalID (required = False )
382402 venue_id = graphene .GlobalID (required = False )
383403 occurrence_language = LanguageEnum ()
404+ capacity_override = graphene .Int ()
384405
385406 occurrence = graphene .Field (OccurrenceNode )
386407
0 commit comments