mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-27 11:48:06 +00:00
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
from django.db import models
|
|
from sorl.thumbnail import get_thumbnail
|
|
from core.utils.url import unique_slugify
|
|
from dss import settings
|
|
from spa.models import BaseModel, UserProfile, Mix
|
|
|
|
|
|
class PlaylistManager(models.Manager):
|
|
pass
|
|
|
|
def get_by_id_or_slug(self, id_or_slug):
|
|
try:
|
|
return super(PlaylistManager, self).get(slug=id_or_slug)
|
|
except Playlist.DoesNotExist:
|
|
return super(PlaylistManager, self).get(id=id_or_slug)
|
|
|
|
|
|
class Playlist(BaseModel):
|
|
name = models.CharField(max_length=255)
|
|
date_created = models.DateTimeField(auto_now_add=True)
|
|
user = models.ForeignKey(UserProfile, related_name='playlists', on_delete=models.CASCADE)
|
|
mixes = models.ManyToManyField(Mix)
|
|
public = models.BooleanField(default=True)
|
|
slug = models.SlugField()
|
|
|
|
objects = PlaylistManager()
|
|
|
|
def __str__(self):
|
|
return self.__unicode__().encode('utf-8')
|
|
|
|
def __unicode__(self):
|
|
return self.name
|
|
|
|
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
|
|
if not self.id:
|
|
self.slug = unique_slugify(self, self.name)
|
|
|
|
super(Playlist, self).save(force_insert, force_update, using, update_fields)
|
|
|
|
def get_image_url(self, size='160x160', default=''):
|
|
if self.mixes.count() != 0:
|
|
image = self.mixes.all()[0].get_image_url()
|
|
try:
|
|
ret = get_thumbnail(image, size, crop='center')
|
|
return "%s/%s" % (settings.MEDIA_URL, ret.name)
|
|
except Exception as ex:
|
|
pass
|
|
|
|
return super(Playlist, self).get_image_url(self.mix_image, settings.STATIC_URL + 'images/default-track-200.png')
|
|
|
|
def get_absolute_url(self):
|
|
return '/playlist/%s' % self.slug |