2 from django.db import models
4 class Group(models.Model):
5 name = models.CharField(max_length = 80)
6 shortName = models.CharField(max_length = 50, blank = True)
7 website = models.CharField(max_length = 150, blank = True)
10 return self.name + (' (' + self.website + ')' if (self.website != '') else '')
12 class Artist(models.Model):
13 name = models.CharField(max_length = 80)
14 realName = models.CharField(max_length = 80, blank = True)
15 groups = models.ManyToManyField(Group, blank = True)
17 def __unicode__(self):
18 return "%s%s" % (self.name, (" / %s" % (" ^ ".join(g.shortName if (g.shortName != '') else g.name for g in self.groups.all()), )) if (self.groups.all()) else '')
20 class Party(models.Model):
21 name = models.CharField(max_length = 80)
22 website = models.CharField(max_length = 150, blank = True)
24 def __unicode__(self):
27 class Compo(models.Model):
28 name = models.CharField(max_length = 80)
30 def __unicode__(self):
33 class Release(models.Model):
34 party = models.ForeignKey(Party)
35 year = models.IntegerField()
36 compo = models.ForeignKey(Compo)
37 place = models.IntegerField()
38 pouetId = models.IntegerField(blank = True, null = True)
40 def __unicode__(self):
41 return self.compo.__unicode__() + ' @ ' + self.party.__unicode__() + ' ' + '%d' % self.year
43 class TrackArtist(models.Model):
44 track = models.ForeignKey('Track')
45 artist = models.ForeignKey(Artist)
46 order = models.IntegerField()
48 def __unicode__(self):
49 return self.artist.__unicode__()
54 class RemixArtist(models.Model):
55 track = models.ForeignKey('Track')
56 artist = models.ForeignKey(Artist)
57 order = models.IntegerField()
59 def __unicode__(self):
60 return self.artist.__unicode__()
65 class Style(models.Model):
66 name = models.CharField(max_length = 80)
68 def __unicode__(self):
71 class Track(models.Model):
72 name = models.CharField(max_length = 150)
73 artists = models.ManyToManyField(Artist, through = TrackArtist)
74 styles = models.ManyToManyField(Style, blank = True)
75 remix = models.CharField(max_length = 80, blank = True)
76 remixArtists = models.ManyToManyField(Artist, through = RemixArtist, related_name = 'remixTracks')
77 releases = models.ManyToManyField(Release)
78 length = models.IntegerField()
79 soundcloudLink = models.CharField(max_length = 150, blank = True)
81 def __unicode__(self):
82 #return '%s – %s%s' % (' & '.join(self.artists), self.name, (('%s by %s' % (self.remix, ' & '.join(self.remixArtists) + ')')) if (self.remix != '') else ''))
83 return u'{1} – {0}'.format(self.name, ' & '.join(a.artist.__unicode__() for a in self.trackartist_set.all()))
85 class File(models.Model):
86 track = models.ForeignKey(Track)
87 path = models.CharField(max_length = 150)
88 type = models.CharField(max_length = 50)
90 def __unicode__(self):
91 return self.type + ' (' + self.path + ')'