From fa96b75e9fae48c10e4e02a1a79849c4acbac0c0 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Wed, 14 Feb 2018 18:13:22 +0100 Subject: [PATCH] Add Student.supervisor and mentor --- stages/admin.py | 10 ++++++++- .../0006_student_supervisor_mentor.py | 21 +++++++++++++++++++ stages/models.py | 4 ++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 stages/migrations/0006_student_supervisor_mentor.py diff --git a/stages/admin.py b/stages/admin.py index ab92432..532929f 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -95,6 +95,7 @@ class StudentAdmin(admin.ModelAdmin): ordering = ('last_name', 'first_name') list_filter = (('archived', ArchivedListFilter), ('klass', KlassRelatedListFilter)) search_fields = ('last_name', 'first_name', 'pcode', 'city', 'klass__name') + autocomplete_fields = ('corporation', 'instructor', 'supervisor', 'mentor') readonly_fields = ('report_sem1_sent', 'report_sem2_sent') fields = (('last_name', 'first_name', 'ext_id'), ('street', 'pcode', 'city', 'district'), ('email', 'tel', 'mobile'), ('gender', 'avs', 'birth_date'), @@ -102,7 +103,7 @@ class StudentAdmin(admin.ModelAdmin): ('klass', 'option_ase'), ('report_sem1', 'report_sem1_sent'), ('report_sem2', 'report_sem2_sent'), - ('corporation', 'instructor')) + ('corporation', 'instructor', 'supervisor', 'mentor')) actions = ['archive'] def archive(self, request, queryset): @@ -130,6 +131,9 @@ class CorpContactAdmin(admin.ModelAdmin): form.base_fields['sections'].widget.can_add_related = False return form + def get_search_results(self, request, qs, term): + qs, distinct = super().get_search_results(request, qs, term) + return qs.exclude(archived=True), distinct class ContactInline(admin.StackedInline): model = CorpContact @@ -152,6 +156,10 @@ class CorporationAdmin(admin.ModelAdmin): 'street', ('pcode', 'city'), ('tel', 'email'), 'web', 'archived') inlines = [ContactInline] + def get_search_results(self, request, qs, term): + qs, distinct = super().get_search_results(request, qs, term) + return qs.exclude(archived=True), distinct + class AvailabilityAdminForm(forms.ModelForm): """ diff --git a/stages/migrations/0006_student_supervisor_mentor.py b/stages/migrations/0006_student_supervisor_mentor.py new file mode 100644 index 0000000..6713f5a --- /dev/null +++ b/stages/migrations/0006_student_supervisor_mentor.py @@ -0,0 +1,21 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stages', '0005_extend_student_avs'), + ] + + operations = [ + migrations.AddField( + model_name='student', + name='mentor', + field=models.ForeignKey(blank=True, null=True, on_delete=models.deletion.SET_NULL, related_name='rel_mentor', to='stages.CorpContact', verbose_name='Mentor'), + ), + migrations.AddField( + model_name='student', + name='supervisor', + field=models.ForeignKey(blank=True, null=True, on_delete=models.deletion.SET_NULL, related_name='rel_supervisor', to='stages.CorpContact', verbose_name='Superviseur'), + ), + ] diff --git a/stages/models.py b/stages/models.py index 61d884c..97cff7d 100644 --- a/stages/models.py +++ b/stages/models.py @@ -178,6 +178,10 @@ class Student(models.Model): on_delete=models.SET_NULL, verbose_name='Employeur') instructor = models.ForeignKey('CorpContact', null=True, blank=True, on_delete=models.SET_NULL, verbose_name='FEE/FPP') + supervisor = models.ForeignKey('CorpContact', related_name='rel_supervisor', verbose_name='Superviseur', + null=True, blank=True, on_delete=models.SET_NULL) + mentor = models.ForeignKey('CorpContact', related_name='rel_mentor', verbose_name='Mentor', + null=True, blank=True, on_delete=models.SET_NULL) klass = models.ForeignKey(Klass, verbose_name='Classe', blank=True, null=True, on_delete=models.PROTECT) report_sem1 = models.FileField('Bulletin 1er sem.', null=True, blank=True, upload_to='bulletins')