"""Definición de los modelos que utilizara la aplicación Lists""" from django.contrib.auth.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) name = CharField(max_length=50) class ListItem(Model): """Item de la lista de un usuario""" user = ForeignKey(User, on_delete=CASCADE) entity = ForeignKey(Entity, on_delete=CASCADE) tags = ManyToManyField(Tag, on_delete=CASCADE) 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)