diff --git a/gestion/migrations/0004_verbose_names.py b/gestion/migrations/0004_verbose_names.py new file mode 100644 index 00000000..a0761c86 --- /dev/null +++ b/gestion/migrations/0004_verbose_names.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11b1 on 2017-06-24 20:08 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('gestion', '0003_events'), + ] + + operations = [ + migrations.AlterModelOptions( + name='event', + options={'verbose_name': 'événement', 'verbose_name_plural': 'événements'}, + ), + migrations.AlterModelOptions( + name='eventcommentfield', + options={'verbose_name': 'champ', 'verbose_name_plural': 'champs'}, + ), + migrations.AlterModelOptions( + name='eventoption', + options={'verbose_name': 'option des événements', 'verbose_name_plural': 'options des événements'}, + ), + migrations.AlterModelOptions( + name='eventoptionchoice', + options={'verbose_name': 'choix', 'verbose_name_plural': 'choix'}, + ), + migrations.AlterModelOptions( + name='eventregistration', + options={'verbose_name': 'inscription', 'verbose_name_plural': 'inscriptions'}, + ), + migrations.AlterModelOptions( + name='profile', + options={'verbose_name': 'profil', 'verbose_name_plural': 'profils'}, + ), + migrations.AddField( + model_name='eventcommentfield', + name='ordering', + field=models.IntegerField(default=0, help_text='plus petit en premier, ordre alphabétique sur le nom si ambiguïté', verbose_name='ordre des champs'), + preserve_default=False, + ), + migrations.AlterField( + model_name='club', + name='cotisation_frequency', + field=models.CharField(blank=True, choices=[('ANN', 'Annuel'), ('SEM', 'Semestriel'), ('COU', 'Au cours')], default='ANN', max_length=3, verbose_name='fréquence de la cotisation'), + ), + migrations.AlterField( + model_name='club', + name='description', + field=models.TextField(blank=True, verbose_name='description'), + ), + migrations.AlterField( + model_name='club', + name='members', + field=models.ManyToManyField(blank=True, related_name='in_clubs', through='gestion.ClubUser', to=settings.AUTH_USER_MODEL, verbose_name='membres du club'), + ), + migrations.AlterField( + model_name='club', + name='name', + field=models.CharField(max_length=200, unique=True, verbose_name='nom'), + ), + migrations.AlterField( + model_name='club', + name='price', + field=models.DecimalField(blank=True, decimal_places=2, default=0, max_digits=5, verbose_name='cotisation (€)'), + ), + migrations.AlterField( + model_name='clubuser', + name='has_paid', + field=models.BooleanField(verbose_name='a payé sa cotisation'), + ), + migrations.AlterField( + model_name='clubuser', + name='is_respo', + field=models.BooleanField(verbose_name='est responsable du club'), + ), + migrations.AlterField( + model_name='event', + name='associations', + field=models.ManyToManyField(related_name='events', to='auth.Group', verbose_name='associations'), + ), + migrations.AlterField( + model_name='event', + name='description', + field=models.TextField(blank=True, verbose_name='description'), + ), + migrations.AlterField( + model_name='event', + name='end_date', + field=models.DateTimeField(blank=True, null=True, verbose_name="fin de l'événement"), + ), + migrations.AlterField( + model_name='event', + name='image', + field=models.ImageField(blank=True, null=True, upload_to='public/imgs/events/', verbose_name='image'), + ), + migrations.AlterField( + model_name='event', + name='location', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='gestion.Location', verbose_name='lieux'), + ), + migrations.AlterField( + model_name='event', + name='old', + field=models.BooleanField(default=False, verbose_name='archiver (événement fini)'), + ), + migrations.AlterField( + model_name='event', + name='registration_open', + field=models.BooleanField(default=True, verbose_name='les inscriptions sont ouvertes'), + ), + migrations.AlterField( + model_name='event', + name='start_date', + field=models.DateTimeField(blank=True, null=True, verbose_name="début de l'événement"), + ), + migrations.AlterField( + model_name='event', + name='title', + field=models.CharField(max_length=200, verbose_name='titre'), + ), + migrations.AlterField( + model_name='eventcommentfield', + name='default', + field=models.TextField(blank=True, verbose_name='valeur par défaut'), + ), + migrations.AlterField( + model_name='eventcommentfield', + name='event', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='commentfields', to='gestion.Event', verbose_name='événement'), + ), + migrations.AlterField( + model_name='eventcommentfield', + name='fieldtype', + field=models.CharField(choices=[('text', 'Texte long'), ('char', 'Texte court')], default='text', max_length=10, verbose_name='type de champ'), + ), + migrations.AlterField( + model_name='eventcommentfield', + name='name', + field=models.CharField(max_length=200, verbose_name='nom du champ'), + ), + migrations.AlterField( + model_name='eventcommentvalue', + name='content', + field=models.TextField(blank=True, verbose_name='contenu'), + ), + migrations.AlterUniqueTogether( + name='eventcommentvalue', + unique_together=set([('commentfield', 'registration')]), + ), + migrations.AlterField( + model_name='eventoption', + name='event', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='options', to='gestion.Event', verbose_name='événement'), + ), + migrations.AlterField( + model_name='eventoption', + name='multi_choices', + field=models.BooleanField(default=False, verbose_name='choix multiples'), + ), + migrations.AlterField( + model_name='eventoption', + name='name', + field=models.CharField(max_length=200, verbose_name='option'), + ), + migrations.AlterField( + model_name='eventoptionchoice', + name='event_option', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='choices', to='gestion.EventOption', verbose_name='événement'), + ), + migrations.AlterField( + model_name='eventregistration', + name='event', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion.Event', verbose_name='événement'), + ), + migrations.AlterField( + model_name='eventregistration', + name='filledcomments', + field=models.ManyToManyField(through='gestion.EventCommentValue', to='gestion.EventCommentField', verbose_name='commentaires'), + ), + migrations.AlterField( + model_name='eventregistration', + name='options', + field=models.ManyToManyField(to='gestion.EventOptionChoice', verbose_name='choix'), + ), + migrations.AlterField( + model_name='eventregistration', + name='paid', + field=models.BooleanField(default=False, verbose_name='a payé'), + ), + migrations.AlterField( + model_name='eventregistration', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='utilisateur'), + ), + migrations.AlterField( + model_name='location', + name='name', + field=models.CharField(max_length=200, verbose_name='nom du lieux'), + ), + migrations.AlterField( + model_name='profile', + name='comments', + field=models.TextField(blank=True, verbose_name="commentaires visibles par l'utilisateur"), + ), + migrations.AlterField( + model_name='profile', + name='departement', + field=models.CharField(blank=True, max_length=50, verbose_name='département'), + ), + migrations.AlterField( + model_name='profile', + name='login_clipper', + field=models.CharField(blank=True, max_length=8, verbose_name='login clipper'), + ), + migrations.AlterField( + model_name='profile', + name='occupation', + field=models.CharField(choices=[('exterieur', 'Extérieur'), ('1A', '1A'), ('2A', '2A'), ('3A', '3A'), ('4A', '4A'), ('archicube', 'Archicube'), ('doctorant', 'Doctorant'), ('CST', 'CST')], default='1A', max_length=9, verbose_name='occupation'), + ), + migrations.AlterField( + model_name='profile', + name='phone', + field=models.CharField(blank=True, max_length=20, verbose_name='téléphone'), + ), + migrations.AlterField( + model_name='profile', + name='user', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL, verbose_name='utilisateur'), + ), + ] diff --git a/gestion/models.py b/gestion/models.py index 8426a89d..8d026006 100644 --- a/gestion/models.py +++ b/gestion/models.py @@ -27,23 +27,29 @@ class Profile(models.Model): user = models.OneToOneField( User, on_delete=models.CASCADE, - related_name="profile" + related_name="profile", + verbose_name=_("utilisateur"), ) - login_clipper = models.CharField("Login clipper", max_length=8, blank=True) - phone = models.CharField("Téléphone", max_length=20, blank=True) - occupation = models.CharField(_("Occupation"), + login_clipper = models.CharField( + _("login clipper"), + max_length=8, + blank=True, + ) + phone = models.CharField(_("téléphone"), max_length=20, blank=True) + occupation = models.CharField(_("occupation"), default="1A", choices=OCCUPATION_CHOICES, max_length=choices_length( OCCUPATION_CHOICES)) - departement = models.CharField(_("Département"), max_length=50, + departement = models.CharField(_("département"), max_length=50, blank=True) comments = models.TextField( - "Commentaires visibles par l'utilisateur", blank=True) + _("commentaires visibles par l'utilisateur"), blank=True + ) class Meta: - verbose_name = "Profil" - verbose_name_plural = "Profils" + verbose_name = _("profil") + verbose_name_plural = _("profils") def __str__(self): return self.user.username @@ -76,23 +82,24 @@ class Club(models.Model): ] associations = models.ManyToManyField(Group, related_name="clubs") - name = models.CharField(_("Nom"), max_length=200, unique=True) - description = models.TextField("Description", blank=True) + name = models.CharField(_("nom"), max_length=200, unique=True) + description = models.TextField("description", blank=True) members = models.ManyToManyField( User, through="ClubUser", related_name="in_clubs", - blank=True + blank=True, + verbose_name=_("membres du club"), ) price = models.DecimalField( - _("Cotisation (€)"), + _("cotisation (€)"), decimal_places=2, max_digits=5, blank=True, default=0 ) cotisation_frequency = models.CharField( - _("Fréquence de la cotisation"), + _("fréquence de la cotisation"), default=ANNUAL, choices=COTISATION_FREQUENCY_CHOICES, max_length=3, @@ -101,17 +108,18 @@ class Club(models.Model): def __str__(self): template = ( - self.price and "{name} ({price}€ / {cotisation_frequency})" - or "{name}" + self.price + and _("%(name)s (%(price).2f€ / %(cotisation_frequency)s)") + or _("%(name)s") ) - return template.format(**vars(self)) + return template % vars(self) class ClubUser(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) club = models.ForeignKey(Club, on_delete=models.CASCADE) - is_respo = models.BooleanField(_("Est responsable du club")) - has_paid = models.BooleanField(_("A payé sa cotisation")) + is_respo = models.BooleanField(_("est responsable du club")) + has_paid = models.BooleanField(_("a payé sa cotisation")) # --- @@ -119,30 +127,51 @@ class ClubUser(models.Model): # --- class Location(models.Model): - name = models.CharField("Lieu", max_length=200) + name = models.CharField(_("nom du lieux"), max_length=200) class Meta: - verbose_name = "lieu" - verbose_name_plural = "lieux" + verbose_name = _("lieu") + verbose_name_plural = _("lieux") + + def __str__(self): + return self.name class Event(models.Model): - associations = models.ManyToManyField(Group, related_name="events") - title = models.CharField("Titre", max_length=200) - location = models.ForeignKey(Location, on_delete=models.PROTECT) - start_date = models.DateTimeField("Date de début", blank=True, null=True) - end_date = models.DateTimeField("Date de fin", blank=True, null=True) - description = models.TextField("Description", blank=True) + associations = models.ManyToManyField( + Group, + related_name="events", + verbose_name=_("associations"), + ) + title = models.CharField(_("titre"), max_length=200) + location = models.ForeignKey( + Location, + on_delete=models.PROTECT, + verbose_name=_("lieux"), + ) + start_date = models.DateTimeField( + _("début de l'événement"), + blank=True, null=True, + ) + end_date = models.DateTimeField( + _("fin de l'événement"), + blank=True, null=True, + ) + description = models.TextField(_("description"), blank=True) image = models.ImageField( - "Image", blank=True, null=True, upload_to="imgs/events/" + _("image"), + blank=True, null=True, + upload_to="public/imgs/events/", ) registration_open = models.BooleanField( - "Inscriptions ouvertes", default=True + _("les inscriptions sont ouvertes"), + default=True ) - old = models.BooleanField("Archiver (événement fini)", default=False) + old = models.BooleanField(_("archiver (événement fini)"), default=False) class Meta: - verbose_name = "Événement" + verbose_name = _("événement") + verbose_name_plural = _("événements") def __str__(self): return self.title @@ -160,16 +189,27 @@ class EventCommentField(models.Model): event = models.ForeignKey( Event, on_delete=models.CASCADE, - related_name="commentfields" + related_name="commentfields", + verbose_name=_("événement"), ) - name = models.CharField("Champ", max_length=200) + name = models.CharField(_("nom du champ"), max_length=200) fieldtype = models.CharField( - "Type", max_length=10, choices=FIELD_TYPE, default=TEXT + _("type de champ"), + max_length=10, + choices=FIELD_TYPE, default=TEXT, + ) + default = models.TextField(_("valeur par défaut"), blank=True) + ordering = models.IntegerField( + _("ordre des champs"), + help_text=_( + "plus petit en premier, ordre alphabétique sur le nom si " + "ambiguïté" + ), ) - default = models.TextField("Valeur par défaut", blank=True) class Meta: - verbose_name = "Champ" + verbose_name = _("champ") + verbose_name_plural = _("champs") def __str__(self): return self.name @@ -186,24 +226,31 @@ class EventCommentValue(models.Model): on_delete=models.CASCADE, related_name="comments" ) - content = models.TextField("Contenu", blank=True, null=True) + content = models.TextField(_("contenu"), blank=True) + + class Meta: + unique_together = ("commentfield", "registration") def __str__(self): - return "Commentaire de {}".format(self.commentfield) + return ( + _("Commentaire de %(field_name)s") + % {"field_name": self.commentfield} + ) class EventOption(models.Model): event = models.ForeignKey( Event, on_delete=models.CASCADE, - related_name="options" + related_name="options", + verbose_name=_("événement"), ) - name = models.CharField("Option", max_length=200) - multi_choices = models.BooleanField("Choix multiples", default=False) + name = models.CharField(_("option"), max_length=200) + multi_choices = models.BooleanField(_("choix multiples"), default=False) class Meta: - verbose_name = "Option des événements" - verbose_name_plural = "Options des événements" + verbose_name = _("option des événements") + verbose_name_plural = _("options des événements") def __str__(self): return self.name @@ -213,13 +260,14 @@ class EventOptionChoice(models.Model): event_option = models.ForeignKey( EventOption, on_delete=models.CASCADE, - related_name="choices" + related_name="choices", + verbose_name=_("événement"), ) value = models.CharField("Valeur", max_length=200) class Meta: - verbose_name = "Choix" - verbose_name_plural = "Choix" + verbose_name = _("choix") + verbose_name_plural = _("choix") def __str__(self): return self.value @@ -228,20 +276,32 @@ class EventOptionChoice(models.Model): class EventRegistration(models.Model): user = models.ForeignKey( User, - on_delete=models.CASCADE + on_delete=models.CASCADE, + verbose_name=_("utilisateur"), ) event = models.ForeignKey( Event, - on_delete=models.CASCADE + on_delete=models.CASCADE, + verbose_name=_("événement"), ) - options = models.ManyToManyField(EventOptionChoice) - filledcomments = models.ManyToManyField(EventCommentField, - through=EventCommentValue) - paid = models.BooleanField("A payé", default=False) + options = models.ManyToManyField( + EventOptionChoice, + verbose_name=_("choix"), + ) + filledcomments = models.ManyToManyField( + EventCommentField, + through=EventCommentValue, + verbose_name=_("commentaires"), + ) + paid = models.BooleanField(_("a payé"), default=False) class Meta: - verbose_name = "Inscription" + verbose_name = _("inscription") + verbose_name_plural = _("inscriptions") unique_together = ("user", "event") def __str__(self): - return "Inscription de {} à {}".format(self.user, self.event.title) + return ( + _("Inscription de %(user)s à %(event)s") + % {"user": self.user, "event": self.event} + )