62 lines
1.8 KiB
Python
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)
|