186 lines
6.1 KiB
Python
186 lines
6.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from colorful.fields import RGBColorField
|
|
from django.contrib.auth.models import User
|
|
from django.core.exceptions import ValidationError
|
|
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
import os
|
|
from django.conf import settings
|
|
|
|
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")),
|
|
]
|
|
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
|
|
mb_limit = 1.0
|
|
if filesize > mb_limit * 1024 * 1024:
|
|
raise ValidationError("La taille max est %sMB" % str(mb_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="trombonoscope/deco", default=None, validators=[validate_image]
|
|
)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
def delete(self):
|
|
os.remove(self.image.path)
|
|
return super(Photo, self).delete()
|
|
|
|
def save(self, *args, **kwargs):
|
|
try:
|
|
this = Photo.objects.get(id=self.id)
|
|
if this.image.path != self.image.path:
|
|
os.remove(this.image.path)
|
|
except Photo.DoesNotExist:
|
|
pass
|
|
super(Photo, self).save(*args, **kwargs)
|
|
|
|
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)
|
|
is_chef_event = models.BooleanField(_("Respo événements"), default=False)
|
|
is_chef_com = models.BooleanField(_("Respo com"), default=False)
|
|
is_chef_instru = models.BooleanField(_("Respo instruments"), default=False)
|
|
phone = models.CharField(
|
|
_("Téléphone"),
|
|
max_length=20,
|
|
blank=True,
|
|
help_text=_("seulement visible par les chef·fe·s"),
|
|
)
|
|
|
|
|
|
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")
|