diff --git a/docs/SchemaRelationnel.odg b/docs/SchemaRelationnel.odg index 08fc5a5..65d0777 100644 Binary files a/docs/SchemaRelationnel.odg and b/docs/SchemaRelationnel.odg differ diff --git a/stages/admin.py b/stages/admin.py index d6533f8..bda0f3d 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -12,11 +12,14 @@ class StudentAdmin(admin.ModelAdmin): class CorpContactAdmin(admin.ModelAdmin): - list_display = ('__unicode__', 'corporation') - fields = ('corporation', ('last_name', 'first_name'), ('tel', 'email')) + list_display = ('__unicode__', 'corporation', 'role') + fields = ('corporation', ('title', 'last_name', 'first_name'), + 'role', ('tel', 'email')) -class ContactInline(admin.TabularInline): +class ContactInline(admin.StackedInline): model = CorpContact + fields = (('title', 'last_name', 'first_name'), + ('role', 'tel', 'email')) extra = 1 class CorporationAdmin(admin.ModelAdmin): diff --git a/stages/fixtures/test_fixture.json b/stages/fixtures/test_fixture.json index f481ded..4750377 100644 --- a/stages/fixtures/test_fixture.json +++ b/stages/fixtures/test_fixture.json @@ -101,8 +101,10 @@ "model": "stages.corpcontact", "fields": { "corporation": 1, + "title": "Monsieur", "first_name": "Jean", "last_name": "Horner", + "role": "Responsable formation", "tel": "", "email": "" } diff --git a/stages/models.py b/stages/models.py index cde563f..6101aa6 100644 --- a/stages/models.py +++ b/stages/models.py @@ -54,7 +54,7 @@ class Referent(models.Model): class Corporation(models.Model): name = models.CharField(max_length=100, verbose_name='Nom') - street = models.CharField(max_length=100, verbose_name='Rue') + street = models.CharField(max_length=100, blank=True, verbose_name='Rue') pcode = models.CharField(max_length=4, verbose_name='Code postal') city = models.CharField(max_length=40, verbose_name='Localité') tel = models.CharField(max_length=20, blank=True, verbose_name='Téléphone') @@ -69,8 +69,10 @@ class Corporation(models.Model): class CorpContact(models.Model): corporation = models.ForeignKey(Corporation, verbose_name='Institution') - first_name = models.CharField(max_length=40, verbose_name='Prénom') + title = models.CharField(max_length=40, blank=True, verbose_name='Civilité') + first_name = models.CharField(max_length=40, blank=True, verbose_name='Prénom') last_name = models.CharField(max_length=40, verbose_name='Nom') + role = models.CharField(max_length=40, verbose_name='Fonction') tel = models.CharField(max_length=20, blank=True, verbose_name='Téléphone') email = models.CharField(max_length=40, blank=True, verbose_name='Courriel') @@ -134,7 +136,7 @@ class Training(models.Model): """ Stages """ student = models.ForeignKey(Student, verbose_name='Étudiant') availability = models.OneToOneField(Availability, verbose_name='Disponibilité') - referent = models.ForeignKey(Referent, verbose_name='Référent') + referent = models.ForeignKey(Referent, null=True, blank=True, verbose_name='Référent') comment = models.TextField(blank=True, verbose_name='Remarques') class Meta: diff --git a/stages/views.py b/stages/views.py index c18f9cd..e42c687 100644 --- a/stages/views.py +++ b/stages/views.py @@ -76,11 +76,13 @@ def period_availabilities(request, pk): def new_training(request): if request.method != 'POST': return HttpResponseNotAllowed() + ref_key = request.POST.get('referent') try: + ref = Referent.objects.get(pk=ref_key) if ref_key else None training = Training.objects.create( student=Student.objects.get(pk=request.POST.get('student')), availability=Availability.objects.get(pk=request.POST.get('avail')), - referent=Referent.objects.get(pk=request.POST.get('referent')), + referent=ref, ) except Exception as exc: return HttpResponse(str(exc)) diff --git a/templates/attribution.html b/templates/attribution.html index 92ae812..ebf673e 100644 --- a/templates/attribution.html +++ b/templates/attribution.html @@ -23,6 +23,8 @@ input#valid_training { display: none; } div#trainings { clear: both; padding-top: 1em; } + + .missing { font-style: italic; color: red; } {% endblock %} diff --git a/templates/trainings_list.html b/templates/trainings_list.html index 6ef8486..b123511 100644 --- a/templates/trainings_list.html +++ b/templates/trainings_list.html @@ -1,3 +1,5 @@ {% for obj in trainings %} -