+ 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 self.type + ' (' + self.path + ')'