music.service.backend/portfolio/album/models.py

78 lines
2.2 KiB
Python

from django.db import models
from portfolio.account.models import Account
class OneToManyModel(models.Model):
def fromDict(self, dict):
self.__dict__.update(dict)
def create(self, dict):
new_object = self()
new_object.fromDict(dict)
new_object.save()
return new_object
def update(self, dict):
self.fromDict(dict)
self.save()
return self
class Meta:
abstract = True
class Album(OneToManyModel):
title = models.CharField(max_length=255)
description = models.CharField(max_length=255)
image = models.TextField()
url_code = models.CharField(max_length=255)
user = models.ForeignKey(Account, on_delete=models.DO_NOTHING)
class Track(OneToManyModel):
title = models.CharField(max_length=255)
description = models.CharField(max_length=1000)
text = models.TextField()
image = models.TextField()
audio = models.TextField()
url_code = models.CharField(max_length=255)
album = models.ForeignKey(Album, on_delete=models.CASCADE)
user = models.ForeignKey(Account, on_delete=models.CASCADE)
class TrackRow(OneToManyModel):
row_number = models.IntegerField()
group = models.BooleanField()
leader = models.BooleanField()
link = models.IntegerField(default=None)
text = models.TextField(default=None)
description = models.TextField(default=None)
image = models.TextField(default=None)
track = models.ForeignKey(Track, on_delete=models.CASCADE)
def toDict(self):
if self.link is not None:
return {
self.row_number: {
'group': self.gruop,
'leader': self.leader,
'link': self.link,
'text': self.text,
'description': None,
'image': None
}
}
else:
return {
self.row_number: {
'group': self.gruop,
'leader': self.leader,
'link': None,
'text': None,
'description': self.description,
'image': self.image
}
}