diff --git a/apiserver/apiserver/api/views.py b/apiserver/apiserver/api/views.py index 6bd3249..72cd3f4 100644 --- a/apiserver/apiserver/api/views.py +++ b/apiserver/apiserver/api/views.py @@ -182,15 +182,27 @@ class TrainingViewSet(Base, Retrieve, Create, Update): else: return serializers.StudentTrainingSerializer + # TODO: turn these into @actions def perform_create(self, serializer): session_id = self.request.data['session'] + status = self.request.data['attendance_status'] session = get_object_or_404(models.Session, id=session_id) training = models.Training.objects.filter(user=self.request.user, session=session) if training.exists(): raise exceptions.ValidationError('You have already registered') if self.request.user == session.instructor: raise exceptions.ValidationError('You are teaching this session') - serializer.save(user=self.request.user) + if status == 'waiting for payment' and session.cost == 0: + status = 'confirmed' + serializer.save(user=self.request.user, attendance_status=status) + + def perform_update(self, serializer): + session_id = self.request.data['session'] + status = self.request.data['attendance_status'] + session = get_object_or_404(models.Session, id=session_id) + if status == 'waiting for payment' and session.cost == 0: + status = 'confirmed' + serializer.save(attendance_status=status) class TransactionViewSet(Base, List, Create, Retrieve, Update):