diff --git a/training/management/commands/generateSampleTrainingData.py b/training/management/commands/generateSampleTrainingData.py index fb1c62fd..a95240cf 100644 --- a/training/management/commands/generateSampleTrainingData.py +++ b/training/management/commands/generateSampleTrainingData.py @@ -35,15 +35,15 @@ class Command(BaseCommand): def setup_categories(self): names = [(1, "Basic"), (2, "Sound"), (3, "Lighting"), (4, "Rigging"), (5, "Power"), (6, "Haulage")] - + for i, name in names: category = models.TrainingCategory.objects.create(reference_number=i, name=name) category.save() self.categories.append(category) def setup_items(self): - names = ["Motorised Power Towers", "Catering", "Forgetting Cables", "Gazebo Construction", "Balanced Audio", "Unbalanced Audio", "BBQ/Bin Interactions", "Pushing Boxes", "How Not To Die", "Setting up projectors", "Basketing truss", "First Aid", "Digging Trenches", "Avoiding Bin Lorries", "Getting cherry pickers stuck in mud", "Crashing the Van"] - + names = ["Motorised Power Towers", "Catering", "Forgetting Cables", "Gazebo Construction", "Balanced Audio", "Unbalanced Audio", "BBQ/Bin Interactions", "Pushing Boxes", "How Not To Die", "Setting up projectors", "Basketing truss", "First Aid", "Digging Trenches", "Avoiding Bin Lorries", "Getting cherry pickers stuck in mud", "Crashing the Van", "Getting pigs to fly", "Basketing picnics", "Python programming", "Building Cables", "Unbuilding Cables", "Cat Herding", "Pancake making", "Tidying up", "Reading Manuals", "Bikeshedding"] + for i,name in enumerate(names): item = models.TrainingItem.objects.create(category=random.choice(self.categories), reference_number=random.randint(0, 100), name=name) self.items.append(item) @@ -54,10 +54,15 @@ class Command(BaseCommand): technician = models.TrainingLevel.objects.create(level=models.TrainingLevel.TECHNICIAN, department=i, description="Moral pinnacle derive ultimate war dead. Strong fearful joy contradict battle christian faithful enlightenment prejudice zarathustra moral.") supervisor = models.TrainingLevel.objects.create(level=models.TrainingLevel.SUPERVISOR, department=i, description="Spirit holiest merciful mountains inexpedient reason value. Suicide ultimate hope.") supervisor.prerequisite_levels.add(technician) + items = self.items.copy() for i in range(0, 30): + if len(items) == 0: + break + item = random.choice(items) + items.remove(item) if i % 3 == 0: - models.TrainingLevelRequirement.objects.create(level=technician, item=random.choice(self.items), depth=random.choice(models.TrainingItemQualification.CHOICES)[0]) + models.TrainingLevelRequirement.objects.create(level=technician, item=item, depth=random.choice(models.TrainingItemQualification.CHOICES)[0]) else: - models.TrainingLevelRequirement.objects.create(level=supervisor, item=random.choice(self.items), depth=random.choice(models.TrainingItemQualification.CHOICES)[0]) + models.TrainingLevelRequirement.objects.create(level=supervisor, item=item, depth=random.choice(models.TrainingItemQualification.CHOICES)[0]) self.levels.append(technician) self.levels.append(supervisor) diff --git a/training/migrations/0005_auto_20210819_1833.py b/training/migrations/0005_auto_20210819_1833.py new file mode 100644 index 00000000..088c7558 --- /dev/null +++ b/training/migrations/0005_auto_20210819_1833.py @@ -0,0 +1,17 @@ +# Generated by Django 3.1.7 on 2021-08-19 17:33 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('training', '0004_auto_20210819_1808'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='traininglevelrequirement', + unique_together={('level', 'item')}, + ), + ] diff --git a/training/models.py b/training/models.py index 6307d61a..9d87419e 100644 --- a/training/models.py +++ b/training/models.py @@ -147,6 +147,9 @@ class TrainingLevelRequirement(models.Model): def __str__(self): return "{} in {}".format(TrainingItemQualification.CHOICES[self.depth][1], self.item) + class Meta: + unique_together = ["level", "item"] + class TrainingLevelQualification(models.Model): trainee = models.ForeignKey('Trainee', related_name='levels', on_delete=models.RESTRICT) diff --git a/training/views.py b/training/views.py index c05b7079..e3aab330 100644 --- a/training/views.py +++ b/training/views.py @@ -98,7 +98,7 @@ class AddLevelRequirement(generic.CreateView): return kwargs def get_success_url(self): - return reverse_lazy('trainee_detail') + return reverse_lazy('level_detail', kwargs={"pk": self.kwargs['pk']}) @transaction.atomic() @reversion.create_revision()