From 714e702af70e7eda0161de64fa5a645df16ddae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Fri, 11 Aug 2017 14:56:41 +0100 Subject: [PATCH] Use natural foreign keys to refer associations --- gestion/fixtures/events.json | 4 ++-- gestion/migrations/0003_association_and_events.py | 2 +- gestion/models.py | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gestion/fixtures/events.json b/gestion/fixtures/events.json index bbf49cf2..4a9383bd 100644 --- a/gestion/fixtures/events.json +++ b/gestion/fixtures/events.json @@ -26,7 +26,7 @@ "registration_open": true, "old": false, "associations": [ - "COF" + ["COF"] ] } }, @@ -43,7 +43,7 @@ "registration_open": true, "old": false, "associations": [ - "BDS" + ["BDS"] ] } }, diff --git a/gestion/migrations/0003_association_and_events.py b/gestion/migrations/0003_association_and_events.py index 158dc151..12f5732a 100644 --- a/gestion/migrations/0003_association_and_events.py +++ b/gestion/migrations/0003_association_and_events.py @@ -86,7 +86,7 @@ class Migration(migrations.Migration): name='Association', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30, verbose_name="nom de l'association")), + ('name', models.CharField(max_length=30, unique=True, verbose_name="nom de l'association")), ('members_group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='member_group_of', to='auth.Group', verbose_name='groupe des membres')), ('staff_group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='staff_group_of', to='auth.Group', verbose_name='groupe des membres du bureau')), ], diff --git a/gestion/models.py b/gestion/models.py index 67757744..bdf2aa1c 100644 --- a/gestion/models.py +++ b/gestion/models.py @@ -66,9 +66,17 @@ def post_delete_user(sender, instance, *args, **kwargs): instance.user.delete() +class AssociationManager(models.Manager): + def get_by_natural_key(self, name): + return self.get(name=name) + + class Association(models.Model): + objects = AssociationManager() + name = models.CharField( _("nom de l'association"), + unique=True, max_length=30 ) staff_group = models.ForeignKey( @@ -86,6 +94,9 @@ class Association(models.Model): verbose_name=_("groupe des membres"), ) + def natural_key(self): + return self.name + class Meta: verbose_name = _("association") verbose_name_plural = _("associations")