Files
musiclist-server/lists/models.py
2020-07-04 00:39:36 -04:00

62 lines
1.8 KiB
Python

"""Definición de los modelos que utilizara la aplicación Lists"""
from users.models import User
from django.db.models import CharField, TextField, IntegerField
from django.db.models import ForeignKey, ManyToManyField
from django.db.models import CASCADE
from django.db.models import Model
class Entity(Model):
"""Entidad la cual representa una entidad de musicbrainz
Pueden ser: artist, release-group, release o recording
"""
ENTITY_TYPES = [
('artist', 'Artista'),
('release-group', 'Grupo de Lanzamientos'),
('release', 'Lanzamiento'),
('recording', 'Grabación')
]
mbid = CharField(max_length=36, primary_key=True)
entity_type = CharField(max_length=25, choices=ENTITY_TYPES)
class Tag(Model):
"""Tag creada por un usuario"""
user = ForeignKey(User, on_delete=CASCADE, related_name='tags')
name = CharField(max_length=50)
class ListItem(Model):
"""Item de la lista de un usuario"""
user = ForeignKey(User, on_delete=CASCADE, related_name='list')
entity = ForeignKey(Entity, on_delete=CASCADE)
tags = ManyToManyField(Tag)
class Stars(Model):
"""Estrellas que un usuario le asigno a una entidad"""
user = ForeignKey(User, on_delete=CASCADE)
entity = ForeignKey(ListItem, on_delete=CASCADE)
quantity = IntegerField()
class Opinion(Model):
"""Opinion de un usuario sobre una entidad"""
user = ForeignKey(User, on_delete=CASCADE)
entity = ForeignKey(ListItem, on_delete=CASCADE)
opinion_text = TextField()
class OpinionHelpful(Model):
"""Voto sobre una opinion"""
VOTES = [
('Y', 'Si'),
('N', 'No'),
('F', 'Divertida')
]
user = ForeignKey(User, on_delete=CASCADE)
opinion = ForeignKey(Opinion, on_delete=CASCADE)
vote = CharField(max_length=1, choices=VOTES)