mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-23 16:32:15 +00:00
Add constraint that training items must have unique reference numbers
This commit is contained in:
@@ -87,15 +87,25 @@ class Command(BaseCommand):
|
|||||||
root = self.parse_xml(self.xml_path('Training Items.xml'))
|
root = self.parse_xml(self.xml_path('Training Items.xml'))
|
||||||
|
|
||||||
for child in root:
|
for child in root:
|
||||||
if child.find('active').text == '0': active = False
|
if child.find('active').text == '0':
|
||||||
else: active = True
|
active = False
|
||||||
obj, created = models.TrainingItem.objects.update_or_create(
|
else:
|
||||||
pk = int(child.find('ID').text),
|
active = True
|
||||||
reference_number = int(child.find('Item_x0020_Number').text),
|
|
||||||
name = child.find('Item_x0020_Name').text,
|
number = int(child.find('Item_x0020_Number').text)
|
||||||
category = models.TrainingCategory.objects.get(pk=int(child.find('Category_x0020_ID').text)),
|
name = child.find('Item_x0020_Name').text
|
||||||
active = active
|
category = models.TrainingCategory.objects.get(pk=int(child.find('Category_x0020_ID').text))
|
||||||
)
|
|
||||||
|
try:
|
||||||
|
obj, created = models.TrainingItem.objects.update_or_create(
|
||||||
|
pk = int(child.find('ID').text),
|
||||||
|
reference_number = number,
|
||||||
|
name = name,
|
||||||
|
category = category,
|
||||||
|
active = active
|
||||||
|
)
|
||||||
|
except IntegrityError:
|
||||||
|
print("Training Item {}.{} {} has a duplicate reference number".format(category.reference_number, number, name))
|
||||||
|
|
||||||
if created:
|
if created:
|
||||||
tally[1] += 1
|
tally[1] += 1
|
||||||
@@ -174,7 +184,7 @@ class Command(BaseCommand):
|
|||||||
depString = None
|
depString = None
|
||||||
|
|
||||||
desc = ""
|
desc = ""
|
||||||
if child.find('Desc'):
|
if child.find('Desc') is not None:
|
||||||
desc = child.find('Desc').text
|
desc = child.find('Desc').text
|
||||||
|
|
||||||
obj, created = models.TrainingLevel.objects.update_or_create(
|
obj, created = models.TrainingLevel.objects.update_or_create(
|
||||||
@@ -232,7 +242,7 @@ class Command(BaseCommand):
|
|||||||
for child in root:
|
for child in root:
|
||||||
try:
|
try:
|
||||||
item = child.find('Item').text.split(".")
|
item = child.find('Item').text.split(".")
|
||||||
obj, created = models.TrainingLevelRequirement.objects.update_or_create(level=models.TrainingLevel.objects.get(pk=int(child.find('Level').text)),item=models.TrainingItem.objects.get(reference_number=item[1], category=models.TrainingCategory.objects.get(reference_number=item[0])), depth=int(child.find('Depth').text))
|
obj, created = models.TrainingLevelRequirement.objects.update_or_create(level=models.TrainingLevel.objects.get(pk=int(child.find('Level').text)),item=models.TrainingItem.objects.get(active=True, reference_number=item[1], category=models.TrainingCategory.objects.get(reference_number=item[0])), depth=int(child.find('Depth').text))
|
||||||
|
|
||||||
if created:
|
if created:
|
||||||
tally[1] += 1
|
tally[1] += 1
|
||||||
|
|||||||
22
training/migrations/0009_auto_20211221_1539.py
Normal file
22
training/migrations/0009_auto_20211221_1539.py
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Generated by Django 3.1.13 on 2021-12-21 15:39
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('training', '0008_trainingitem_active'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='trainingcategory',
|
||||||
|
name='reference_number',
|
||||||
|
field=models.CharField(max_length=3, unique=True),
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='trainingitem',
|
||||||
|
unique_together={('reference_number', 'active', 'category')},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -44,7 +44,7 @@ class Trainee(Profile, RevisionMixin):
|
|||||||
|
|
||||||
|
|
||||||
class TrainingCategory(models.Model):
|
class TrainingCategory(models.Model):
|
||||||
reference_number = models.CharField(max_length=3)
|
reference_number = models.CharField(max_length=3, unique=True)
|
||||||
name = models.CharField(max_length=50)
|
name = models.CharField(max_length=50)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -74,7 +74,7 @@ class TrainingItem(models.Model):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ["reference_number", "name", "category"]
|
unique_together = ["reference_number", "active", "category"]
|
||||||
ordering = ['category__reference_number', 'reference_number']
|
ordering = ['category__reference_number', 'reference_number']
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card mb-3 d-none d-md-block">
|
<div class="card mb-3 d-none d-md-block">
|
||||||
<h4 class="card-header">Users with this level</h4>
|
<h4 class="card-header">Users with this level</h4>
|
||||||
|
<div class="card-body">
|
||||||
<table class="table table-sm">
|
<table class="table table-sm">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -79,6 +80,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h4 class="card-header">Level Requirements</h4>
|
<h4 class="card-header">Level Requirements</h4>
|
||||||
|
|||||||
Reference in New Issue
Block a user