From f345ec77b4bc193fa168ecbc15718f75bbdb83f3 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Mon, 9 Dec 2024 11:22:42 +0100 Subject: [PATCH] Ajout champs remarks/accred/accred_from pour Corporation --- stages/admin.py | 28 ++++++++++++------- .../0038_corporation_accred_and_remarks.py | 26 +++++++++++++++++ stages/models.py | 10 +++++++ 3 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 stages/migrations/0038_corporation_accred_and_remarks.py diff --git a/stages/admin.py b/stages/admin.py index 270f462..21b0d43 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -332,7 +332,7 @@ class ContactInline(admin.StackedInline): @admin.register(Corporation) class CorporationAdmin(admin.ModelAdmin): - list_display = ('name', 'short_name', 'pcode', 'city', 'district', 'ext_id') + list_display = ('name', 'short_name', 'pcode', 'city', 'district', 'accred_from', 'ext_id') list_editable = ('short_name',) # Temporarily? list_filter = (('archived', ArchivedListFilter),) search_fields = ('name', 'street', 'pcode', 'city') @@ -345,6 +345,8 @@ class CorporationAdmin(admin.ModelAdmin): ('pcode', 'city', 'district'), ('tel', 'email'), 'web', + ('accred', 'accred_from'), + 'remarks', 'archived', ) inlines = [ContactInline] @@ -358,19 +360,25 @@ class CorporationAdmin(admin.ModelAdmin): """ Export all Corporations in Excel file. """ - export_fields = OrderedDict([ - (getattr(f, 'verbose_name', f.name), f.name) - for f in Corporation._meta.get_fields() if f.name in ( - 'name', 'short_name', 'sector', 'typ', 'street', 'pcode', - 'city', 'district', 'tel', 'email', 'web', 'ext_id', 'archived' - ) - ]) + fields = [ + ('name', 40), ('short_name', 19), ('sector', 11), ('typ', 10), + ('street', 25), ('pcode', 6), ('city', 18), ('district', 8), + ('tel', 14), ('email', 24), ('web', 25), ('accred', 6), ('accred_from', 8), + ('remarks', 30), ('ext_id', 8), ('archived', 6), + ] + export_fields = { + getattr(f, 'verbose_name', f.name): f.name + for f in Corporation._meta.get_fields() if f.name in dict(fields) + } export = OpenXMLExport('Exportation') - export.write_line(export_fields.keys(), bold=True) + export.write_line( + export_fields.keys(), bold=True, + col_widths=[dict(fields)[f] for f in export_fields.values()] + ) for corp in queryset.values_list(*export_fields.values()): values = [] for value, field_name in zip(corp, export_fields.values()): - if field_name == 'archived': + if field_name in ('archived', 'accred'): value = 'Oui' if value else '' values.append(value) export.write_line(values) diff --git a/stages/migrations/0038_corporation_accred_and_remarks.py b/stages/migrations/0038_corporation_accred_and_remarks.py new file mode 100644 index 0000000..ff6be2b --- /dev/null +++ b/stages/migrations/0038_corporation_accred_and_remarks.py @@ -0,0 +1,26 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stages', '0037_student_start_educ'), + ] + + operations = [ + migrations.AddField( + model_name='corporation', + name='accred', + field=models.BooleanField(default=False, verbose_name='Accréditation'), + ), + migrations.AddField( + model_name='corporation', + name='accred_from', + field=models.PositiveSmallIntegerField(blank=True, choices=[(2024, '2024'), (2025, '2025'), (2026, '2026'), (2027, '2027'), (2028, '2028')], null=True, verbose_name='Depuis'), + ), + migrations.AddField( + model_name='corporation', + name='remarks', + field=models.TextField(blank=True, verbose_name='Remarques'), + ), + ] diff --git a/stages/models.py b/stages/models.py index d674775..f4b5408 100644 --- a/stages/models.py +++ b/stages/models.py @@ -446,6 +446,13 @@ class StudentFile(models.Model): class Corporation(models.Model): + YEAR_CHOICES = ( + (2024, "2024"), + (2025, "2025"), + (2026, "2026"), + (2027, "2027"), + (2028, "2028"), + ) ext_id = models.IntegerField(null=True, blank=True, verbose_name='ID externe') name = models.CharField(max_length=100, verbose_name='Nom') short_name = models.CharField(max_length=40, blank=True, verbose_name='Nom court') @@ -460,6 +467,9 @@ class Corporation(models.Model): tel = models.CharField(max_length=20, blank=True, verbose_name='Téléphone') email = models.EmailField(blank=True, verbose_name='Courriel') web = models.URLField(blank=True, verbose_name='Site Web') + accred = models.BooleanField("Accréditation", default=False) + accred_from = models.PositiveSmallIntegerField("Depuis", choices=YEAR_CHOICES, blank=True, null=True) + remarks = models.TextField("Remarques", blank=True) archived = models.BooleanField(default=False, verbose_name='Archivé') class Meta: