X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=data%2Fmodels.py;h=11bdc59aae60d0dda35445ef7bae0b694c1687a2;hb=8e8d2a6c4e4beb9487e9e168d5e43706eea3da1d;hp=95e69eb4340065a15256548a43a8974dc9b0ac8b;hpb=a6373925ac4f10fc66743d0d0cc3b94324b789d5;p=demoscenemusic.git diff --git a/data/models.py b/data/models.py index 95e69eb..11bdc59 100644 --- a/data/models.py +++ b/data/models.py @@ -1,7 +1,84 @@ +# encoding: utf-8 from django.db import models +class Group(models.Model): + name = models.CharField(max_length = 80) + shortName = models.CharField(max_length = 50, blank = True) + website = models.CharField(max_length = 150, blank = True) + + def __unicode__(self): + return self.name + (' (' + self.website + ')' if (self.website != '') else '') + class Artist(models.Model): name = models.CharField(max_length = 80) + realName = models.CharField(max_length = 80, blank = True) + groups = models.ManyToManyField(Group) + + def __unicode__(self): + return "%s%s" % (self.name, (" / %s" % (" ^ ".join(g.shortName if (g.shortName != '') else g.name for g in self.groups.all()), ))) + +class Party(models.Model): + name = models.CharField(max_length = 80) + website = models.CharField(max_length = 150, blank = True) + + def __unicode__(self): + return self.name + +class Compo(models.Model): + name = models.CharField(max_length = 80) + + def __unicode__(self): + return self.name; + +class Release(models.Model): + party = models.ForeignKey(Party) + year = models.IntegerField() + compo = models.ForeignKey(Compo) + place = models.IntegerField() + pouetId = models.IntegerField(blank = True, null = True) + + def __unicode__(self): + return self.compo.__unicode__() + ' @ ' + self.party.__unicode__() + ' ' + '%d' % self.year + +class TrackArtist(models.Model): + track = models.ForeignKey('Track') + artist = models.ForeignKey(Artist) + order = models.IntegerField() + + def __unicode__(self): + return self.artist.__unicode__() + + class Meta: + ordering = ['order'] + +class RemixArtist(models.Model): + track = models.ForeignKey('Track') + artist = models.ForeignKey(Artist) + order = models.IntegerField() + + def __unicode__(self): + return self.artist.__unicode__() + + class Meta: + ordering = ['order'] + +class Track(models.Model): + name = models.CharField(max_length = 150) + artists = models.ManyToManyField(Artist, through = TrackArtist) + remix = models.CharField(max_length = 80, blank = True) + remixArtists = models.ManyToManyField(Artist, through = RemixArtist, related_name = 'remixTracks') + releases = models.ManyToManyField(Release) + length = models.IntegerField() + soundcloudLink = models.CharField(max_length = 150, blank = True) + + def __unicode__(self): + #return '%s – %s%s' % (' & '.join(self.artists), self.name, (('%s by %s' % (self.remix, ' & '.join(self.remixArtists) + ')')) if (self.remix != '') else '')) + return u'{1} – {0}'.format(self.name, ' & '.join(a.artist.__unicode__() for a in self.trackartist_set.all())) + +class File(models.Model): + track = models.ForeignKey(Track) + path = models.CharField(max_length = 150) + type = models.CharField(max_length = 50) def __unicode__(self): - return name + return self.type + ' (' + self.path + ')'