diff --git a/core/realtime/notification.py b/core/realtime/notification.py index 8959748..49c6d51 100644 --- a/core/realtime/notification.py +++ b/core/realtime/notification.py @@ -13,6 +13,7 @@ logger = logging.getLogger('spa') def post_notification(user, message): + pass try: r = redis.StrictRedis(host='localhost', port=6379, db=0) r.publish('realtime', user.username + ': ' + message) diff --git a/spa/api/v1/PlaylistResource.py b/spa/api/v1/PlaylistResource.py index ccf5dff..9b28fce 100644 --- a/spa/api/v1/PlaylistResource.py +++ b/spa/api/v1/PlaylistResource.py @@ -47,15 +47,13 @@ class PlaylistResource(BackboneCompatibleResource): return bundle def dehydrate(self, bundle): - try: - bundle.data['playlist_image'] = bundle.obj.mixes.objects.all()[0].get_image_url() - except: - bundle.data['playlist_image'] = UserProfile.get_default_avatar_image() - + bundle.data['playlist_image'] = bundle.obj.get_image_url() bundle.data['item_url'] = '/playlist/%s' % bundle.obj.slug return bundle def obj_update(self, bundle, skip_errors=False, **kwargs): + if 'playlist_image' in kwargs: del kwargs['playlist_image'] + if 'item_url' in kwargs: del kwargs['item_url'] mixes = bundle.data['mixes'] bundle.data.pop('mixes') result = super(PlaylistResource, self).obj_update(bundle, **kwargs) diff --git a/spa/models/playlist.py b/spa/models/playlist.py index eeb21d4..744f7ec 100644 --- a/spa/models/playlist.py +++ b/spa/models/playlist.py @@ -1,5 +1,7 @@ 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 @@ -27,4 +29,18 @@ class Playlist(BaseModel): if not self.id: self.slug = unique_slugify(self, self.name) - super(Playlist, self).save(force_insert, force_update, using, update_fields) \ No newline at end of file + 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, ex: + pass + + return super(Playlist, self).get_image_url(self.mix_image, settings.STATIC_URL + 'img/default-track.png') + + def get_absolute_url(self): + return '/playlist/%s' % self.slug \ No newline at end of file diff --git a/spa/social/urls.py b/spa/social/urls.py index 2772064..abd803a 100755 --- a/spa/social/urls.py +++ b/spa/social/urls.py @@ -6,6 +6,7 @@ urlpatterns = patterns( url(r'^redirect/mix/(?P[\w\d_.-]+)/$', 'spa.social.views.mix', name='social_redirect_mix_slug'), url(r'^mix/(?P\d+)/$', 'spa.social.views.mix', name='social_mix'), url(r'^mix/(?P[\w\d_.-]+)/$', 'spa.social.views.mix', name='social_mix_slug'), + url(r'^playlist/(?P[\w\d_.-]+)/$', 'spa.social.views.playlist', name='social_playlist_slug'), url(r'^user/(?P\w+)/$', 'spa.social.views.user', name='social_user'), url(r'^like/(?P\d+)/$', 'spa.social.views.post_like', name='social_like'), url(r'^$', 'spa.social.views.index', name='social_index') diff --git a/spa/social/views.py b/spa/social/views.py index d69850a..c7b2695 100755 --- a/spa/social/views.py +++ b/spa/social/views.py @@ -12,6 +12,7 @@ from allauth.socialaccount.models import SocialToken from core.utils.url import wrap_full from dss import settings +from spa.models import Playlist from spa.models.mix import Mix from spa.models.userprofile import UserProfile @@ -22,6 +23,7 @@ logger = logging.getLogger(__name__) Handles callbacks from facebook and twitter """ + def _getPayload(request): return { "app_id": settings.FACEBOOK_APP_ID, @@ -59,6 +61,31 @@ def mix(request, args): return response +def playlist(request, args): + try: + playlist = Playlist.objects.get(slug=args['slug']) + except Playlist.DoesNotExist: + raise Http404 + + image = playlist.get_image_url('400x400') + playlist_url = playlist.get_absolute_url() + default = _getPayload(request) + extras = { + "description": "Deep South Sounds Playlist by %s" % playlist.user.get_nice_name(), + "title": playlist.name, + "image_url": image, + "playlist_url": 'http://%s%s' % (Site.objects.get_current().domain, playlist_url) + } + payload = dict(default.items() + extras.items()) + response = render_to_response( + 'inc/facebook/playlist.html', + payload, + context_instance=RequestContext(request) + ) + print response.content + return response + + def user(request, args): try: user = UserProfile.objects.get(slug=args['user_id']) diff --git a/static/js/dss/templates/mixitemview.jst b/static/js/dss/templates/mixitemview.jst index dac95d4..2c9b04b 100644 --- a/static/js/dss/templates/mixitemview.jst +++ b/static/js/dss/templates/mixitemview.jst @@ -92,18 +92,14 @@ id="like-<%= id %>" data-id="<%= id %>"> Like - <% if (liked) { %> - d - <% } %> + <% if (liked) { %>d<% } %> <% } %> diff --git a/templates/inc/facebook/playlist.html b/templates/inc/facebook/playlist.html new file mode 100644 index 0000000..345f2b6 --- /dev/null +++ b/templates/inc/facebook/playlist.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + +