from django.db import models from django.template.defaultfilters import slugify class Artist(models.Model): """ An Artist of the label. Attributes: name: project / band name image: image file associated with this project """ name = models.CharField(max_length = 64) slug = models.SlugField() image = models.ImageField(upload_to = "artists") url_bandcamp = models.URLField(blank = True) url_soundcloud = models.URLField(blank = True) genre = models.CharField(max_length = 256) description = models.TextField(blank = True) def __str__(self): return self.name def save(self, *args, **kwargs): self.slug = slugify(self.name) super().save(*args, **kwargs) class Meta(object): ordering = ("name",) rel_types_hint = "full-length (0), EP (1), Split (2), Démo (3)" class Release(models.Model): """ A release (album, EP, ...) of the label. Each release has an associated number "ident" to use in the catalog. It has of course a title, several possible artists, and other informations. Attributes: ident: catalog number title: release title contributors: list of Artists who contributed to this release release_type: see below year: year of release cover: image file associated to this release """ ident = models.IntegerField() title = models.CharField(max_length = 256) contributors = models.ManyToManyField(Artist) release_type = models.IntegerField(default = 0, help_text = rel_types_hint) cover = models.ImageField(upload_to = "releases") year = models.IntegerField() embed = models.TextField(blank = True) description = models.TextField(blank = True) def __str__(self): return self.title class Meta(object): ordering = ("ident", "title")