ernestophone.ens.fr/gestion/models.py
2021-04-01 21:27:17 +02:00

120 lines
5.2 KiB
Python

# -*- coding: utf-8 -*-
from django.db import models
from colorful.fields import RGBColorField
from django.contrib.auth.models import User
from django.utils.translation import gettext_lazy as _
from django.core.exceptions import ValidationError
class Photo(models.Model):
PHOTO_PLACEMENT = (
('home_join', _("Rejoignez nous")),
('home_contact', _("Nous Contacter")),
('home_rep', _("Répertoire de l'acceuil")),
('login', _('Connexion')),
('change_membre', _('Modification du profil')),
('inscription_membre', _('Inscription')),
('home', _('Calendrier connecté')),
('liste', _('Agenda public')),
('part', _('Répertoire')),
('instru', _('Instruments')),
('n',_("N'apparait pas"))
)
def validate_image(fieldfile_obj):
filesize = fieldfile_obj.file.size
megabyte_limit = 1.0
if filesize > megabyte_limit*1024*1024:
raise ValidationError("Max file size is %sMB" % str(megabyte_limit))
name = models.CharField(max_length=127)
cat = models.CharField(max_length = 127,choices = PHOTO_PLACEMENT,default='n')
auteur = models.CharField(max_length=127,verbose_name=_("Auteur de l'image"),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')
image = models.ImageField(upload_to='deco',default=None,validators=[validate_image])
def __str__(self):
return self.name
class Meta:
verbose_name = _("Photo")
verbose_name_plural = _("Photos")
class ErnestoUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
is_ernesto = models.BooleanField(_("Membre de l'Ernestophone"), default=True)
is_chef = models.BooleanField(_("Chef Fanfare"), default=False)
phone = models.CharField(_("Téléphone"), max_length=20, blank=True ,help_text= _("seulement visible par les chef·fe·s"))
INSTRU_CHOICES = [
('Clarinette', _('Clarinette')),
('Euphonium', _('Euphonium')),
('Percussion', _('Percussion')),
('Piccolo', _('Piccolo')),
('Saxophone Alto', _('Saxophone Alto')),
('Saxophone Ténor', _('Saxophone Ténor')),
('Saxophone Baryton', _('Saxophone Baryton')),
('Souba', _('Souba')),
('Trombone', _('Trombone')),
('Trompette', _('Trompette')),
('Autre', _('Autre')),
('ne sais pas', _('Je ne sais pas encore')),
]
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')),
]
instru = models.CharField(_("Instrument joué"), max_length=40, blank=False,choices=INSTRU_CHOICES,default='ne sais pas')
instru_autre = models.CharField(_("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(_("Je suis capable de jouer d'un autre instrument en manche :"),default='Non',null=False,max_length=3,choices=[('Non',_('Non')),('Oui',_('Oui'))],help_text= _("Seulement si tu connais les partitions par coeur"))
instru_bonus = models.CharField(_("Le·s·quel·s ?"),null=True,max_length=100,blank=True)
class Meta:
verbose_name = _("Profil Ernestophoniste")
verbose_name_plural = _("Profil Ernestophoniste")
def __str__(self):
return self.user.username
def get_doodlename(self):
if self.doodlename:
return self.doodlename
return self.user.username
class VideoGallery(models.Model):
name = models.CharField(max_length=127)
order = models.IntegerField(verbose_name=_("ordre"))
url = models.URLField()
def __str__(self):
return self.name
class Meta:
verbose_name = _("Video")
verbose_name_plural = _("Videos")