Migrate and remove Referent model

This commit is contained in:
Claude Paroz 2017-07-18 13:02:41 +02:00
parent 5d1afb77ee
commit aaf29ee225
6 changed files with 56 additions and 32 deletions

View file

@ -8,7 +8,7 @@ from django.db import models
from django.http import HttpResponse
from stages.models import (
Teacher, Student, Section, Level, Klass, Referent, Corporation,
Teacher, Student, Section, Level, Klass, Corporation,
CorpContact, Domain, Period, Availability, Training, Course,
)
from stages.pdf import ChargeSheetPDF
@ -64,7 +64,7 @@ class KlassAdmin(admin.ModelAdmin):
class TeacherAdmin(admin.ModelAdmin):
list_display = ('__str__', 'abrev', 'email', 'archived')
list_filter = ('archived',)
list_filter = (('archived', ArchivedListFilter),)
actions = [print_charge_sheet]
@ -92,11 +92,6 @@ class StudentAdmin(admin.ModelAdmin):
'''
class ReferentAdmin(admin.ModelAdmin):
list_display = ('__str__', 'abrev', 'email')
list_filter = (('archived', ArchivedListFilter),)
class CorpContactAdmin(admin.ModelAdmin):
list_display = ('__str__', 'corporation', 'role')
list_filter = (('archived', ArchivedListFilter),)
@ -215,7 +210,6 @@ admin.site.register(Section)
admin.site.register(Level)
admin.site.register(Klass, KlassAdmin)
admin.site.register(Student, StudentAdmin)
admin.site.register(Referent, ReferentAdmin)
admin.site.register(Teacher, TeacherAdmin)
admin.site.register(Course)
admin.site.register(Corporation, CorporationAdmin)

View file

@ -0,0 +1,31 @@
from django.db import migrations
def migrate_referents(apps, schema_editor):
Teacher = apps.get_model("stages", "Teacher")
Training = apps.get_model("stages", "Training")
errors = False
for tr in Training.objects.filter(referent_old__isnull=False):
if tr.referent_old.last_name == 'Liechti Held':
last_name = 'Liechti'
elif tr.referent_old.last_name == 'Haldimann Luethi':
last_name = 'Haldimann'
elif tr.referent_old.last_name == 'Kummer':
last_name = 'Kummer-Invernizzi'
else:
last_name = tr.referent_old.last_name
try:
tr.referent = Teacher.objects.get(first_name=tr.referent_old.first_name.strip(), last_name=last_name)
except Teacher.DoesNotExist:
print("Unable to find referent %s in teachers" % " ".join([tr.referent_old.first_name, tr.referent_old.last_name]))
else:
tr.save()
class Migration(migrations.Migration):
dependencies = [
('stages', '0016_referent_to_teacher'),
]
operations = [migrations.RunPython(migrate_referents, migrations.RunPython.noop),]

View file

@ -0,0 +1,18 @@
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('stages', '0017_migrate_referents'),
]
operations = [
migrations.RemoveField(
model_name='training',
name='referent_old',
),
migrations.DeleteModel(
name='Referent',
),
]

View file

@ -194,23 +194,6 @@ class Student(models.Model):
return student_values
class Referent(models.Model):
first_name = models.CharField(max_length=40, verbose_name='Prénom')
last_name = models.CharField(max_length=40, verbose_name='Nom')
abrev = models.CharField(max_length=10, blank=True, verbose_name='Initiales')
email = models.EmailField(blank=True, verbose_name='Courriel')
archived = models.BooleanField(default=False, verbose_name='Archivé')
support_tabimport = True
class Meta:
verbose_name = "Référent"
ordering = ('last_name', 'first_name')
def __str__(self):
return '%s %s' % (self.last_name, self.first_name)
class Corporation(models.Model):
ext_id = models.IntegerField(null=True, blank=True, verbose_name='ID externe')
name = models.CharField(max_length=100, verbose_name='Nom', unique=True)
@ -337,8 +320,6 @@ class Training(models.Model):
""" Stages """
student = models.ForeignKey(Student, verbose_name='Étudiant', on_delete=models.CASCADE)
availability = models.OneToOneField(Availability, verbose_name='Disponibilité', on_delete=models.CASCADE)
referent_old = models.ForeignKey(Referent, null=True, blank=True, verbose_name='Référent',
on_delete=models.SET_NULL)
referent = models.ForeignKey(Teacher, null=True, blank=True, verbose_name='Référent',
on_delete=models.SET_NULL)
comment = models.TextField(blank=True, verbose_name='Remarques')

View file

@ -9,7 +9,7 @@ from django.utils.html import escape
from .models import (
Level, Domain, Section, Klass, Period, Student, Corporation, Availability,
CorpContact, Referent, Teacher, Training,
CorpContact, Teacher, Training,
)
from .utils import school_year
@ -38,7 +38,7 @@ class StagesTest(TestCase):
Student(first_name="André", last_name="Allemand", birth_date="1994-10-11",
pcode="2314", city="La Sagne", klass=klass2),
])
ref1 = Referent.objects.create(first_name="Julie", last_name="Caux", abrev="JCA")
ref1 = Teacher.objects.create(first_name="Julie", last_name="Caux", abrev="JCA")
corp = Corporation.objects.create(
name="Centre pédagogique XY", typ="Institution", street="Rue des champs 12",
city="Moulineaux", pcode="2500",

View file

@ -17,7 +17,7 @@ from django.views.generic import DetailView, FormView, TemplateView, ListView
from .forms import PeriodForm, StudentImportForm, UploadHPFileForm
from .models import (
Klass, Section, Student, Teacher, Corporation, CorpContact, Course, Period,
Training, Referent, Availability,
Training, Availability,
)
@ -147,7 +147,7 @@ class AttributionView(TemplateView):
def get_context_data(self, **kwargs):
context = super(AttributionView, self).get_context_data(**kwargs)
# Need 2 queries, because referents with no training item would not appear in the second query
referents = Referent.objects.filter(archived=False).order_by('last_name', 'first_name')
referents = Teacher.objects.filter(archived=False).order_by('last_name', 'first_name')
# Populate each referent with the number of referencies done during the current school year
ref_counts = dict([(ref.id, ref.num_refs)
@ -260,7 +260,7 @@ def new_training(request):
ref_key = request.POST.get('referent')
cont_key = request.POST.get('contact')
try:
ref = Referent.objects.get(pk=ref_key) if ref_key else None
ref = Teacher.objects.get(pk=ref_key) if ref_key else None
contact = CorpContact.objects.get(pk=cont_key) if cont_key else None
avail = Availability.objects.get(pk=request.POST.get('avail'))
training = Training.objects.create(