82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
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
|