Creacion de admin panel para lists

This commit is contained in:
Daniel Cortes
2020-07-14 15:03:47 -04:00
parent ce76f76dfb
commit c0ee9f06a2
2 changed files with 65 additions and 6 deletions

34
lists/admin.py Normal file
View File

@@ -0,0 +1,34 @@
from django.contrib import admin
from lists.models import Tag, Entity, ListItem, OpinionHelpful
@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
pass
@admin.register(Entity)
class EntityAdmin(admin.ModelAdmin):
pass
@admin.register(ListItem)
class ListItemAdmin(admin.ModelAdmin):
list_display = ('pk', 'username', 'entity_mbid', 'stars')
list_filter = ('stars',)
filter_horizontal = ('tags', )
search_fields = ['pk', 'user__username', 'entity__mbid', 'stars']
@staticmethod
def entity_mbid(obj):
return str(obj.entity.mbid)
@staticmethod
def username(obj):
return str(obj.user.username)
@admin.register(OpinionHelpful)
class OpinionHelpfulAdmin(admin.ModelAdmin):
pass

View File

@@ -13,35 +13,57 @@ class Entity(Model):
Pueden ser: artist, release-group, release o recording Pueden ser: artist, release-group, release o recording
""" """
class Meta:
verbose_name = 'Entidad'
verbose_name_plural = 'Entidades'
ENTITY_TYPES = [ ENTITY_TYPES = [
('artist', 'Artista'), ('artist', 'Artista'),
('release-group', 'Grupo de Lanzamientos'), ('release-group', 'Grupo de Lanzamientos'),
('release', 'Lanzamiento'), ('release', 'Lanzamiento'),
('recording', 'Grabación') ('recording', 'Grabación')
] ]
mbid = CharField(max_length=36, primary_key=True) mbid = CharField('mbid', max_length=36, primary_key=True)
entity_type = CharField(max_length=25, choices=ENTITY_TYPES) entity_type = CharField('tipo', max_length=25, choices=ENTITY_TYPES)
def __str__(self):
return self.mbid
class Tag(Model): class Tag(Model):
"""Tag creada por un usuario""" """Tag creada por un usuario"""
user = ForeignKey(User, on_delete=CASCADE, related_name='tags') user = ForeignKey(User, on_delete=CASCADE, related_name='tags')
name = CharField(max_length=50) name = CharField('nombre', max_length=50)
def __str__(self):
return self.name
class ListItem(Model): class ListItem(Model):
"""Item de la lista de un usuario""" """Item de la lista de un usuario"""
class Meta:
verbose_name = 'item de lista'
verbose_name_plural = 'items de la lista'
stars_validators = [MinValueValidator(0), MaxValueValidator(5)] stars_validators = [MinValueValidator(0), MaxValueValidator(5)]
user = ForeignKey(User, on_delete=CASCADE, related_name='list') user = ForeignKey(User, on_delete=CASCADE, related_name='list')
entity = ForeignKey(Entity, on_delete=CASCADE) entity = ForeignKey(Entity, on_delete=CASCADE)
stars = IntegerField(default=0, validators=stars_validators, blank=True) stars = IntegerField('estrellas', default=0, validators=stars_validators, blank=True)
opinion = TextField(default='', blank=True) opinion = TextField('opinion', default='', blank=True)
tags = ManyToManyField(Tag, related_name='list', blank=True) tags = ManyToManyField(Tag, related_name='list', blank=True)
def __str__(self):
return f'{self.user.username}:{self.entity.mbid}'
class OpinionHelpful(Model): class OpinionHelpful(Model):
"""Voto sobre una opinion""" """Voto sobre una opinion"""
class Meta:
verbose_name = 'valoración de opinion'
verbose_name_plural = 'valoraciones de opinion'
VOTES = [ VOTES = [
('Y', 'Si'), ('Y', 'Si'),
('N', 'No'), ('N', 'No'),
@@ -50,4 +72,7 @@ class OpinionHelpful(Model):
user = ForeignKey(User, on_delete=CASCADE) user = ForeignKey(User, on_delete=CASCADE)
opinion = ForeignKey(ListItem, on_delete=CASCADE) opinion = ForeignKey(ListItem, on_delete=CASCADE)
vote = CharField(max_length=1, choices=VOTES) vote = CharField('voto', max_length=1, choices=VOTES)
def __str__(self):
return f'{self.vote}'