diff --git a/api/serializers.py b/api/serializers.py index dde88fe..c555694 100755 --- a/api/serializers.py +++ b/api/serializers.py @@ -321,6 +321,7 @@ class UserProfileSerializer(serializers.ModelSerializer): 'profile_image_medium', 'profile_image_header', 'slug', + 'uid', 'likes', 'mix_count', 'isme', diff --git a/dss/urls.py b/dss/urls.py index cd09b5d..2e9a6f5 100755 --- a/dss/urls.py +++ b/dss/urls.py @@ -14,6 +14,7 @@ urlpatterns = patterns( (r'^_embed/', include('spa.embedding.urls')), (r'^__redir/blog/', include('spa.blog.urls')), (r'^__redir/social/', include('spa.social.urls')), + (r'^podcasts/', include('spa.podcast.urls')), (r'^podcast/', include('spa.podcast.urls')), url(r'', include('user_sessions.urls', 'user_sessions')), url(r'^', include('api.urls')), diff --git a/spa/podcast/urls.py b/spa/podcast/urls.py index b2e7bdc..1081ba9 100644 --- a/spa/podcast/urls.py +++ b/spa/podcast/urls.py @@ -3,4 +3,7 @@ from django.conf.urls import patterns, url urlpatterns = patterns( '', url(r'^(?P[\w\d_.-]+)/favourites/?$', 'spa.podcast.views.favourites', name='podast_favourites_slug'), + url(r'^(?P[\w\d_.-]+)/following/?$', 'spa.podcast.views.following', name='podast_following_slug'), + url(r'^(?P[\w\d_.-]+)/?$', 'spa.podcast.views.user', name='podast_user_slug'), + url(r'^/?$', 'spa.podcast.views.featured', name='podast_featured_slug'), ) diff --git a/spa/podcast/views.py b/spa/podcast/views.py index 7eff5cd..7ff1aac 100644 --- a/spa/podcast/views.py +++ b/spa/podcast/views.py @@ -3,28 +3,56 @@ from django.http import HttpResponse from django.shortcuts import render_to_response from django.template import RequestContext -from spa.models import UserProfile +from spa.models import UserProfile, Mix -def favourites(request, uid): +def _get_user(uid): try: user = UserProfile.objects.order_by('-id').get(uid=uid) except UserProfile.DoesNotExist: raise Http404("User does not exist") - - fav_list = user.favourites.all() - return _render_podcast(request, user, fav_list) + return user -def _render_podcast(request, user, list): +def featured(request): + podcast_list = Mix.objects.order_by('-id').filter(is_private=False, is_featured=True) + return _render_podcast(request, 'Deep South Sounds', 'DSS Favourites', + 'All your favourites on Deep South Sounds', podcast_list) + + +def user(request, slug): + user = UserProfile.objects.get(slug=slug) + podcast_list = Mix.objects.order_by('-id').filter(is_private=False, user__slug=slug) + return _render_podcast(request, user.first_name, 'DSS {0}'.format(user.display_name), + 'All of {0}\'s mixes on Deep South Sounds'.format(user.display_name), podcast_list, + image=user.get_sized_avatar_image(1400, 1400)) + + +def favourites(request, uid): + user = _get_user(uid) + podcast_list = user.favourites.all() + return _render_podcast(request, user.first_name, 'DSS Favourites', + 'All your favourites on Deep South Sounds', podcast_list) + + +def following(request, uid): + user = _get_user(uid) + podcast_list = Mix.objects.order_by('-id').filter(is_private=False, user__in=user.following.all()) + return _render_podcast(request, user.first_name, 'DSS Following', + 'Mixes from people you follow on Deep South Sounds', podcast_list) + + +def _render_podcast(request, user, title, description, podcast_list, + image='https://dsscdn2.blob.core.windows.net/static/podcast_logo.png'): context = { - 'title': 'DSS Favourites', - 'description': 'All your favourites on Deep South Sounds', + 'title': title, + 'description': description, 'link': 'https://deepsouthsounds.com/', - 'user': user.first_name, + 'image': image, + 'user': user, 'summary': 'Deep South Sounds is a collective of like minded house heads from Ireland"s Deep South', - 'last_build_date': list[0].upload_date, - 'objects': list, + 'last_build_date': podcast_list[0].upload_date, + 'objects': podcast_list, } response = render_to_response( 'podcast/feed.xml', diff --git a/templates/podcast/feed.xml b/templates/podcast/feed.xml index 61095a6..5ca841e 100644 --- a/templates/podcast/feed.xml +++ b/templates/podcast/feed.xml @@ -24,7 +24,7 @@ No - +