54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
|
from django.db import models
|
||
|
|
||
|
|
||
|
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)
|
||
|
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
|
||
|
|
||
|
class Meta(object):
|
||
|
ordering = ("name",)
|
||
|
|
||
|
|
||
|
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
|
||
|
|
||
|
Release types: full-length (0), EP (1), Split (2), Démo (3)
|
||
|
"""
|
||
|
ident = models.IntegerField()
|
||
|
title = models.CharField(max_length = 256)
|
||
|
contributors = models.ManyToManyField(Artist)
|
||
|
release_type = models.IntegerField(default = 0)
|
||
|
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")
|