from django.db import models from django.conf import settings class Song(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, blank=True, null=True, db_index=True) artist = models.CharField(max_length=200, db_index=True, help_text="track artist") title = models.CharField(max_length=200, db_index=True, help_text="track title") hash = models.CharField(max_length=64, help_text="track file's SHA256 hash") duration = models.IntegerField(help_text="track duration in seconds") rg_gain = models.DecimalField( max_digits=9, decimal_places=6, blank=True, null=True, help_text="replaygain gain level" ) rg_peak = models.DecimalField( max_digits=9, decimal_places=6, blank=True, null=True, help_text="replaygain peak level" ) old_id = models.TextField(blank=True, null=True, default=None) deleted = models.BooleanField( verbose_name="unlisted", default=False, db_index=True, help_text="hide this song from the search listings" ) def report(self, user, note): report_note = ReportNote(song=self, user=user, note=note) report_note.save() def __str__(self): return self.artist + " - " + self.title class ReportNote(models.Model): song = models.ForeignKey(Song, on_delete=models.CASCADE, blank=False, null=False, db_index=True) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True, db_index=True) note = models.TextField(verbose_name="reason", blank=True, help_text="reason for edit request") def __str__(self): return "{song.artist} - {song.title}: '{note}'".format(song=self.song, note=self.note)