diff --git a/unisportomat/quiz/migrations/0009_auto_20210627_2140.py b/unisportomat/quiz/migrations/0009_auto_20210627_2140.py index e493b5473d895eecd43647b8fe92aa5b5c24c645..0b343be6fbfb9dfaa165a3b1bfdc75ccc80b2eeb 100644 --- a/unisportomat/quiz/migrations/0009_auto_20210627_2140.py +++ b/unisportomat/quiz/migrations/0009_auto_20210627_2140.py @@ -7,19 +7,27 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ('quiz', '0008_auto_20210627_1812'), + ("quiz", "0008_auto_20210627_1812"), ] operations = [ migrations.AddField( - model_name='question', - name='id', - field=models.BigAutoField(auto_created=True, default=1, primary_key=True, serialize=False, verbose_name='ID'), + model_name="question", + name="id", + field=models.BigAutoField( + auto_created=True, + default=1, + primary_key=True, + serialize=False, + verbose_name="ID", + ), preserve_default=False, ), migrations.AlterField( - model_name='question', - name='criterion', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='quiz.criterion'), + model_name="question", + name="criterion", + field=models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, to="quiz.criterion" + ), ), ] diff --git a/unisportomat/quiz/migrations/0010_auto_20210627_2218.py b/unisportomat/quiz/migrations/0010_auto_20210627_2218.py index ccce8083cec70498cbea79ddc86588b1a110cbb7..9b36c041bce25327d1e514e3e9aa8a29fee153d6 100644 --- a/unisportomat/quiz/migrations/0010_auto_20210627_2218.py +++ b/unisportomat/quiz/migrations/0010_auto_20210627_2218.py @@ -7,17 +7,22 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ('quiz', '0009_auto_20210627_2140'), + ("quiz", "0009_auto_20210627_2140"), ] operations = [ migrations.RemoveField( - model_name='question', - name='id', + model_name="question", + name="id", ), migrations.AlterField( - model_name='question', - name='criterion', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='quiz.criterion'), + model_name="question", + name="criterion", + field=models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + primary_key=True, + serialize=False, + to="quiz.criterion", + ), ), ] diff --git a/unisportomat/quiz/models.py b/unisportomat/quiz/models.py index 6350edd1c71710994dccbb2a399dd2825b2e4f8b..35cfa7d9fb1168289213e26aed44d1046a3c3667 100644 --- a/unisportomat/quiz/models.py +++ b/unisportomat/quiz/models.py @@ -178,6 +178,9 @@ class QuestionManager(models.Manager): """ def delete_question(self, pk): + """ + Deletes a Question and the Criterion connected to it + """ question = self.get(pk=pk) question.criterion.delete() diff --git a/unisportomat/quiz/serializers.py b/unisportomat/quiz/serializers.py index b8610d46fa2a3767457e614085130b1618b1d2c7..d478d76f9350a89689fe2d6254ec23b699205d56 100644 --- a/unisportomat/quiz/serializers.py +++ b/unisportomat/quiz/serializers.py @@ -202,7 +202,14 @@ class CriteriaSerializer(serializers.BaseSerializer): class SmallQuestionListSerializer(serializers.BaseSerializer): + """ + Serializer for a List of Questions + """ + def to_representation(self, questions): + """ + Takes a List of Question Objects and JSONifies them, including id, Text in both languages, and Criterion name + """ question_list = [] @@ -220,7 +227,14 @@ class SmallQuestionListSerializer(serializers.BaseSerializer): class SingleQuestionSerializer(serializers.BaseSerializer): + """ + Serializer for Single Questions + """ + def to_representation(self, question): + """ + Take a Question and JSONify it and its Criterion + """ number_of_sports_active, sum_of_weights = question.criterion.get_active_sum() @@ -236,6 +250,9 @@ class SingleQuestionSerializer(serializers.BaseSerializer): return question_dict def to_internal_value(self, data): + """ + Take a Single Question JSON and Validate its Contents + """ validated_data = {} @@ -253,7 +270,14 @@ class SingleQuestionSerializer(serializers.BaseSerializer): class QuestionOrderSerializer(serializers.BaseSerializer): + """ + Serializer for Question Order Lists + """ + def to_representation(self, question_order_list): + """ + Take an ordered Set of QuestionOrderEntry Objects and represent them in JSON + """ json_list = [] diff --git a/unisportomat/quiz/views.py b/unisportomat/quiz/views.py index 73b713533b1d5c5b3e19d399c3d9060e63b749e9..d290d1ec8b585e0c74e2e3d6f615d55216d1a5b7 100644 --- a/unisportomat/quiz/views.py +++ b/unisportomat/quiz/views.py @@ -348,7 +348,11 @@ class SmallQuestionListView(viewsets.ViewSet): question = get_object_or_404(Question, pk=pk) - try: + if ( + "text_de" in new_question_data.keys() + and "text_em" in new_question_data.keys() + and "criterion" in new_question_data.keys() + ): # Check if another Criterion with the wanted name already exists queryset = Criterion.objects.filter( name=new_question_data["criterion"] @@ -366,7 +370,7 @@ class SmallQuestionListView(viewsets.ViewSet): question.text_de = new_question_data["text_de"] question.text_en = new_question_data["text_en"] - except: + else: return Response(status=400) question.save()