Add Certification Version model, moving existing data to it
This commit is contained in:
parent
da8417c12b
commit
a586688653
@ -2,12 +2,24 @@ from django.contrib import admin
|
||||
|
||||
from .models import (CmsRedRiverVeteransScholarship,
|
||||
CertificationDefinition, Certification,
|
||||
CertificationVersion,
|
||||
InstructorOrVendor, SpecialProgram, Waiver)
|
||||
|
||||
|
||||
class CertificationVersionInline(admin.TabularInline):
|
||||
model = CertificationVersion
|
||||
extra = 1
|
||||
|
||||
|
||||
@admin.register(CertificationVersion)
|
||||
class CertificationVersionAdmin(admin.ModelAdmin):
|
||||
search_fields = ['definition__certification_name', 'version']
|
||||
|
||||
|
||||
@admin.register(CertificationDefinition)
|
||||
class CertificationDefinitionAdmin(admin.ModelAdmin):
|
||||
search_fields = ['certification_name', 'department']
|
||||
inlines = [CertificationVersionInline]
|
||||
|
||||
|
||||
@admin.register(Certification)
|
||||
|
60
paperwork/migrations/0002_add_certification_version_model.py
Normal file
60
paperwork/migrations/0002_add_certification_version_model.py
Normal file
@ -0,0 +1,60 @@
|
||||
# (Partially) Generated by Django 4.0.2 on 2022-02-04 18:01
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
def migrate_certification_version_forward(apps, schema_editor):
|
||||
db_alias = schema_editor.connection.alias
|
||||
|
||||
Certification = apps.get_model("paperwork", "Certification")
|
||||
CertificationVersion = apps.get_model("paperwork", "CertificationVersion")
|
||||
|
||||
for certification in Certification.objects.using(db_alias).all():
|
||||
(version, _) = CertificationVersion.objects.using(db_alias).get_or_create(
|
||||
definition=certification.certification, version=certification.version
|
||||
)
|
||||
certification.certification_version = version
|
||||
certification.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('membershipworks', '0001_initial'),
|
||||
('paperwork', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CertificationVersion',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('version', models.CharField(blank=True, db_column='Version', max_length=255, null=True)),
|
||||
('definition', models.ForeignKey(db_column='Certification', on_delete=django.db.models.deletion.PROTECT, to='paperwork.certificationdefinition')),
|
||||
],
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name='certificationversion',
|
||||
constraint=models.UniqueConstraint(fields=('definition', 'version'), name='unique_certification_version'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='certification',
|
||||
name='certification_version',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='paperwork.certificationversion', null=True),
|
||||
),
|
||||
migrations.RunPython(migrate_certification_version_forward),
|
||||
migrations.AlterField(
|
||||
model_name='certification',
|
||||
name='certification_version',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='paperwork.certificationversion'),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='certification',
|
||||
name='certification',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='certification',
|
||||
name='version',
|
||||
),
|
||||
]
|
@ -35,18 +35,32 @@ class CertificationDefinition(models.Model):
|
||||
ordering = ('certification_name', 'department')
|
||||
|
||||
|
||||
class CertificationVersion(models.Model):
|
||||
definition = models.ForeignKey(CertificationDefinition, on_delete=models.PROTECT, db_column='Certification')
|
||||
version = models.CharField(db_column='Version', max_length=255, blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.definition} [{self.version}]"
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=["definition", "version"], name="unique_certification_version"
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
class Certification(models.Model):
|
||||
number = models.AutoField(db_column='Number', primary_key=True)
|
||||
certification = models.ForeignKey(CertificationDefinition, on_delete=models.PROTECT, db_column='Certification')
|
||||
certification_version = models.ForeignKey(CertificationVersion, on_delete=models.PROTECT)
|
||||
name = models.CharField(db_column='Name', max_length=255)
|
||||
member = models.ForeignKey(Member, on_delete=models.PROTECT, to_field='uid', db_column='uid', blank=True, null=True, db_constraint=False)
|
||||
certified_by = models.CharField(db_column='Certified_By', max_length=255, blank=True, null=True)
|
||||
date = models.DateField(db_column='Date', blank=True, null=True)
|
||||
version = models.CharField(db_column='Version', max_length=255, blank=True, null=True)
|
||||
shop_lead_notified = models.DateTimeField(db_column='Shop Lead Notified', blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name} - {self.certification} [{self.version}]"
|
||||
return f"{self.name} - {self.certification_version}"
|
||||
|
||||
class Meta:
|
||||
db_table = 'Certifications'
|
||||
|
Loading…
Reference in New Issue
Block a user