Migrate and remove Referent model
This commit is contained in:
parent
5d1afb77ee
commit
aaf29ee225
6 changed files with 56 additions and 32 deletions
|
|
@ -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)
|
||||
|
|
|
|||
31
stages/migrations/0017_migrate_referents.py
Normal file
31
stages/migrations/0017_migrate_referents.py
Normal 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),]
|
||||
18
stages/migrations/0018_removed_referent_model.py
Normal file
18
stages/migrations/0018_removed_referent_model.py
Normal 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',
|
||||
),
|
||||
]
|
||||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue