Draft: Ajout commentaires #36

Open
mdebray wants to merge 3 commits from ajout_commentaires into master

View file

@ -8,6 +8,7 @@ from django.utils.translation import gettext_lazy as _
import os import os
from django.conf import settings from django.conf import settings
# Variable globale représentant les pupitres de la fanf
INSTRU_CHOICES = [ INSTRU_CHOICES = [
("Clarinette", _("Clarinette")), ("Clarinette", _("Clarinette")),
("Euphonium", _("Euphonium")), ("Euphonium", _("Euphonium")),
@ -22,7 +23,14 @@ INSTRU_CHOICES = [
("Autre", _("Autre")), ("Autre", _("Autre")),
("ne sais pas", _("Je ne sais pas encore")), ("ne sais pas", _("Je ne sais pas encore")),
] ]
class Photo(models.Model): class Photo(models.Model):
"""
Modèle qui représente les photos du site
"""
PHOTO_PLACEMENT = ( PHOTO_PLACEMENT = (
("home_join", _("Rejoignez nous")), ("home_join", _("Rejoignez nous")),
("home_contact", _("Nous Contacter")), ("home_contact", _("Nous Contacter")),
@ -36,34 +44,47 @@ class Photo(models.Model):
("instru", _("Instruments")), ("instru", _("Instruments")),
("n", _("N'apparait pas")), ("n", _("N'apparait pas")),
) )
"""Endroits du site où l'on peut mettre des photos"""
def validate_image(fieldfile_obj): def validate_image(fieldfile_obj):
"""
Fonction qui vérifie si l'image est suffisament petite (probablement pour ne pas surcharger le serveur)
"""
filesize = fieldfile_obj.file.size filesize = fieldfile_obj.file.size
mb_limit = 1.0 mb_limit = 1.0
if filesize > mb_limit * 1024 * 1024: if filesize > mb_limit * 1024 * 1024:
raise ValidationError("La taille max est %sMB" % str(mb_limit)) raise ValidationError("La taille max est %sMB" % str(mb_limit))
name = models.CharField(max_length=127) name = models.CharField(max_length=127)
"""Nom de la photo"""
cat = models.CharField(max_length=127, choices=PHOTO_PLACEMENT, default="n") cat = models.CharField(max_length=127, choices=PHOTO_PLACEMENT, default="n")
auteur = models.CharField( """Memorise l'emplacement de la photo"""
max_length=127, verbose_name=_("Auteur de l'image"), null=True, blank=True
) auteur = models.CharField( max_length=127, verbose_name=_("Auteur de l'image"), null=True, blank=True)
url = models.URLField( """Nom de l'auteur"""
verbose_name=_("Lien vers le site de l'auteur"), null=True, blank=True
) url = models.URLField(verbose_name=_("Lien vers le site de l'auteur"), null=True, blank=True)
color = RGBColorField(_("Couleur du nom de l'auteur"), default="#ffffff") color = RGBColorField(_("Couleur du nom de l'auteur"), default="#ffffff")
image = models.ImageField( """Couleur pour que le copyright ressorte bien"""
upload_to="trombonoscope/deco", default=None, validators=[validate_image]
) image = models.ImageField(upload_to="trombonoscope/deco", default=None, validators=[validate_image])
"""L'image en elle-même"""
def __str__(self): def __str__(self):
return self.name return self.name
def delete(self): def delete(self):
os.remove(self.image.path) os.remove(self.image.path)
# Pour supprimer une instance du modèle, il faut appeler la méthode delete du parent. Il me semble que les arguments de super ne servent pas et compliquent un éventuel rennomage de classe
return super(Photo, self).delete() return super(Photo, self).delete()
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
"""
Permet d'enregistrer une photo. Si il s'agit d'un update, on remet à jour le chemin de la dossier MEDIA/trombonoscope/doc. Si ce n'est pas un update, il suffit d'enregistrer
Pour comprendre bien le processus d'update, regarder la vue associée.
"""
try: try:
this = Photo.objects.get(id=self.id) this = Photo.objects.get(id=self.id)
if this.image.path != self.image.path: if this.image.path != self.image.path:
@ -73,17 +94,31 @@ class Photo(models.Model):
super(Photo, self).save(*args, **kwargs) super(Photo, self).save(*args, **kwargs)
class Meta: class Meta:
"""
Classe de Metadonnées (cf la doc)
"""
verbose_name = _("Photo") verbose_name = _("Photo")
verbose_name_plural = _("Photos") verbose_name_plural = _("Photos")
class ErnestoUser(models.Model): class ErnestoUser(models.Model):
"""
Modèle représentant un fanfaron, il est lié par un `OneToOneField` au modèle d'utilisateur de `django.contrib.auth`
"""
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile") user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
"""Lien avec les utilisateurs de `django.contrib.auth`"""
is_ernesto = models.BooleanField(_("Membre de l'Ernestophone"), default=True) is_ernesto = models.BooleanField(_("Membre de l'Ernestophone"), default=True)
is_chef = models.BooleanField(_("Chef Fanfare"), default=False) is_chef = models.BooleanField(_("Chef Fanfare"), default=False)
is_chef_event = models.BooleanField(_("Respo événements"), default=False) is_chef_event = models.BooleanField(_("Respo événements"), default=False)
is_chef_com = models.BooleanField(_("Respo com"), default=False) is_chef_com = models.BooleanField(_("Respo com"), default=False)
is_chef_instru = models.BooleanField(_("Respo instruments"), default=False) is_chef_instru = models.BooleanField(_("Respo instruments"), default=False)
phone = models.CharField( phone = models.CharField(
_("Téléphone"), _("Téléphone"),
max_length=20, max_length=20,
@ -92,16 +127,7 @@ class ErnestoUser(models.Model):
) )
COLORS_CHOICES = [ #Instruments du fanfaron
("#e4522f#ffffff", _("Orange et Blanc")),
("#ffffff#000000", _("Blanc et Noir")),
("#A8107C#000000", _("Rose et Noir")),
("#10A4A8#ffffff", _("Bleu et Blanc")),
("#26A810#000000", _("Vert et Noir")),
("#A81026#ffffff", _("Rouge et Blanc")),
("#E3E54C#000000", _("Jaune et Noir")),
("autre", _("Autre")),
]
instru = models.CharField( instru = models.CharField(
_("Instrument joué"), _("Instrument joué"),
@ -110,43 +136,10 @@ class ErnestoUser(models.Model):
choices=INSTRU_CHOICES, choices=INSTRU_CHOICES,
default="ne sais pas", default="ne sais pas",
) )
instru_autre = models.CharField( instru_autre = models.CharField(
_("Lequel ?"), null=True, max_length=100, blank=True _("Lequel ?"), null=True, max_length=100, blank=True
) )
slug = models.CharField(max_length=7, editable=False, unique=True)
doodlename = models.CharField(_("Nom pour le doodle"), max_length=30, blank=True)
trombonoscope = models.CharField(
_("Je souhaite apparaitre dans le trombonoscope:"),
max_length=3,
blank=False,
null=True,
choices=[
("non", _("Non")),
("o_a", _("Oui en tant que fanfaron actuel")),
("o_v", _("Oui en tant que vie·ille·ux")),
],
default="non",
)
instru_trombonoscope = models.CharField(
_("Instrument affiché sur le trombonoscope"), max_length=30, blank=True
)
nom_trombonoscope = models.CharField(
_("Nom affiché sur le trombonoscope"), max_length=30, blank=True
)
trombonoscope_colors = models.CharField(
_("Couleur du profil"),
max_length=40,
blank=False,
choices=COLORS_CHOICES,
default="OrangeBlanc",
)
trombonoscope_fond = RGBColorField(
_("Couleur de fond du profil"), default="#e4522f"
)
trombonoscope_texte = RGBColorField(
_("Couleur du texte du profil"), default="#ffffff"
)
multi_instrumentiste = models.CharField( multi_instrumentiste = models.CharField(
_("Je suis capable de jouer d'un autre instrument en manche :"), _("Je suis capable de jouer d'un autre instrument en manche :"),
@ -160,7 +153,64 @@ class ErnestoUser(models.Model):
_("Le·s·quel·s ?"), null=True, max_length=100, blank=True _("Le·s·quel·s ?"), null=True, max_length=100, blank=True
) )
slug = models.CharField(max_length=7, editable=False, unique=True)
doodlename = models.CharField(_("Nom pour le doodle"), max_length=30, blank=True)
#Paramètres pour le trombonoscope
COLORS_CHOICES = [
("#e4522f#ffffff", _("Orange et Blanc")),
("#ffffff#000000", _("Blanc et Noir")),
("#A8107C#000000", _("Rose et Noir")),
("#10A4A8#ffffff", _("Bleu et Blanc")),
("#26A810#000000", _("Vert et Noir")),
("#A81026#ffffff", _("Rouge et Blanc")),
("#E3E54C#000000", _("Jaune et Noir")),
("autre", _("Autre")),
]
trombonoscope = models.CharField(
_("Je souhaite apparaitre dans le trombonoscope:"),
max_length=3,
blank=False,
null=True,
choices=[
("non", _("Non")),
("o_a", _("Oui en tant que fanfaron actuel")),
("o_v", _("Oui en tant que vie·ille·ux")),
],
default="non",
)
instru_trombonoscope = models.CharField(
_("Instrument affiché sur le trombonoscope"), max_length=30, blank=True
)
nom_trombonoscope = models.CharField(
_("Nom affiché sur le trombonoscope"), max_length=30, blank=True
)
trombonoscope_colors = models.CharField(
_("Couleur du profil"),
max_length=40,
blank=False,
choices=COLORS_CHOICES,
default="OrangeBlanc",
)
trombonoscope_fond = RGBColorField(
_("Couleur de fond du profil"), default="#e4522f"
)
"""Prend la valeur associée au champs `trombonoscope_colors`"""
trombonoscope_texte = RGBColorField(
_("Couleur du texte du profil"), default="#ffffff"
)
"""Prend la valeur associée au champs `trombonoscope_colors`"""
class Meta: class Meta:
"""Matadonnées"""
verbose_name = _("Profil Ernestophoniste") verbose_name = _("Profil Ernestophoniste")
verbose_name_plural = _("Profil Ernestophoniste") verbose_name_plural = _("Profil Ernestophoniste")
@ -174,6 +224,7 @@ class ErnestoUser(models.Model):
class VideoGallery(models.Model): class VideoGallery(models.Model):
"""Objet représentant une vidéo pour le caroussel de la page publique. Le site n'héberge pas de vidéos. On ne stocke que des urls d'iframe."""
name = models.CharField(max_length=127) name = models.CharField(max_length=127)
order = models.IntegerField(verbose_name=_("ordre")) order = models.IntegerField(verbose_name=_("ordre"))
url = models.URLField() url = models.URLField()