diff --git a/stages/admin.py b/stages/admin.py index e0ab113..a469522 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -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) diff --git a/stages/migrations/0017_migrate_referents.py b/stages/migrations/0017_migrate_referents.py new file mode 100644 index 0000000..3752d3d --- /dev/null +++ b/stages/migrations/0017_migrate_referents.py @@ -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),] diff --git a/stages/migrations/0018_removed_referent_model.py b/stages/migrations/0018_removed_referent_model.py new file mode 100644 index 0000000..4459755 --- /dev/null +++ b/stages/migrations/0018_removed_referent_model.py @@ -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', + ), + ] diff --git a/stages/models.py b/stages/models.py index 58f1292..79dd209 100644 --- a/stages/models.py +++ b/stages/models.py @@ -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') diff --git a/stages/tests.py b/stages/tests.py index 797158f..1c03dee 100644 --- a/stages/tests.py +++ b/stages/tests.py @@ -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", diff --git a/stages/views.py b/stages/views.py index 0b5fce7..9f495d6 100644 --- a/stages/views.py +++ b/stages/views.py @@ -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(