import os from django.contrib.auth.models import User from django.db import models from django.utils.translation import gettext_lazy as _ INSTRUMENTS = ( ("TR", _("Trumpet")), ("TRB", _("Trombone")), ("HRN", _("Horn")), ("TUBA", _("Tuba")), ) def musicianPictureName(musician, originalName): fileExtension = os.path.splitext(originalName)[1] return "user_images/" + musician.user.username + fileExtension def musicianSmallPictureName(musician, originalName): fileExtension = os.path.splitext(originalName)[1] return "user_images/" + musician.user.username + "_thumb" + fileExtension class Musician(models.Model): # Link to user object, contains first name and last name user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name=_("user")) image = models.ImageField( upload_to=musicianPictureName, verbose_name=_("image"), blank=True, null=True, ) small_image = models.ImageField( upload_to=musicianSmallPictureName, verbose_name=_("circular thumbnail"), blank=True, null=True, ) # Properties instrument = models.CharField( max_length=4, choices=INSTRUMENTS, blank=True, verbose_name=_("instrument") ) birthday = models.DateField(null=True, blank=True, verbose_name=_("birthday")) street = models.CharField(max_length=80, blank=True, verbose_name=_("street")) city = models.CharField(max_length=40, blank=True, verbose_name=_("city")) zip_code = models.IntegerField(null=True, blank=True, verbose_name=_("zip_code")) phone_home = models.CharField( max_length=18, blank=True, verbose_name=_("phone_home") ) phone_mobile = models.CharField( max_length=18, blank=True, verbose_name=_("phone_mobile") ) phone_work = models.CharField( max_length=18, blank=True, verbose_name=_("phone_work") ) position = models.IntegerField(null=True, blank=True, verbose_name=_("Position")) public_description = models.TextField( blank=True, verbose_name=_("public_description") ) class Meta: ordering = ["position", "user__username"] @property def isDeepBrass(self): return self.instrument in ("TRB", "EUPH", "TUBA", "HRN") @property def isHighBrass(self): return self.instrument == "TR" def __str__(self): return self.user.username