diff --git a/.pylintrc b/.pylintrc index 0deca7bc1ce42b9f694aaa973329a5d344013766..ba3c419d02d6332d14dd7e52a9e7bc2ef362ae44 100644 --- a/.pylintrc +++ b/.pylintrc @@ -9,3 +9,4 @@ disable=line-too-long, abstract-method, arguments-differ, invalid-name + no-else-raise diff --git a/unisportomat/quiz/migrations/0007_questionorder.py b/unisportomat/quiz/migrations/0007_questionorder.py index e4b79e3fc8d805ad67f5ada78891224a548ac43a..efaf4db3db59d4818e4a431f621090515e1b38da 100644 --- a/unisportomat/quiz/migrations/0007_questionorder.py +++ b/unisportomat/quiz/migrations/0007_questionorder.py @@ -6,17 +6,35 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('quiz', '0006_auto_20210612_1230'), + ("quiz", "0006_auto_20210612_1230"), ] operations = [ migrations.CreateModel( - name='QuestionOrder', + name="QuestionOrder", fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('order_id', models.IntegerField(null=True)), - ('type_of_slot', models.TextField(choices=[('question', 'question'), ('snack', 'snack'), ('activity', 'activity')], default='snack')), - ('question_id', models.IntegerField(default=-1)), + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("order_id", models.IntegerField(null=True)), + ( + "type_of_slot", + models.TextField( + choices=[ + ("question", "question"), + ("snack", "snack"), + ("activity", "activity"), + ], + default="snack", + ), + ), + ("question_id", models.IntegerField(default=-1)), ], ), ] diff --git a/unisportomat/quiz/models.py b/unisportomat/quiz/models.py index 6e8b988b2ca0580b5ae5fde3ea673c44c9cac9e5..4e6d507f02741ff21b04a0a4dd71f273d03eec8b 100644 --- a/unisportomat/quiz/models.py +++ b/unisportomat/quiz/models.py @@ -189,12 +189,19 @@ class QuestionOrderManager(models.Manager): """ def create_entry_at_end(self, type_of_slot, question_id=None): + """ + Creates a new OrderEntry at the end of the current Order (so the object gets given the highest order_id) + """ if type_of_slot == "question" and question_id is None: raise ValueError( "A Question ID must be given if the Type of the Slot is Question" ) - elif type_of_slot not in ["question", "snack", "activity"]: + elif type_of_slot not in [ + "question", + "snack", + "activity", + ]: raise ValueError( f'{type_of_slot} not in valid choice list ["question", "snack", "activity"]' ) @@ -221,12 +228,14 @@ class QuestionOrderManager(models.Manager): return entry def delete_entry(self, given_order_id): + """ + Delete an Entry in the QuestionOrder Database and decrement every object that had a larger order_id than the one deleted + """ # Delete must be called on an instance, not a queryset - entry = self.get(order_id = given_order_id) + entry = self.get(order_id=given_order_id) entry.delete() - larger_entries = self.filter(order_id__gte=given_order_id) # The Primary Key of an Object cannot be changed, really, instead a new Object is created when the PK changes @@ -237,9 +246,11 @@ class QuestionOrderManager(models.Manager): entry.save() def delete_entry_by_question_id(self, given_question_id): + """ + Delete an Entry in the QuestionOrder DB by the Question_ID + """ - - queryset = self.filter(question_id = given_question_id) + queryset = self.filter(question_id=given_question_id) if queryset.count() == 0: # If the Question doesn't exist in the Order, we don't need to do anything