diff --git a/dss/urls.py b/dss/urls.py index 8b876f4..5ea88d2 100644 --- a/dss/urls.py +++ b/dss/urls.py @@ -11,19 +11,19 @@ admin.autodiscover() # admin.autodiscover() urlpatterns = patterns('', - url(r'^admin/', include(admin.site.urls)), - #(r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/img/favicon.ico'}), - (r'^channel\.html$', TemplateView.as_view(template_name='boiler/fb_channel.html')), - (r'^privacy\.html$', TemplateView.as_view(template_name='boiler/privacy.html')), - (r'^robots\.txt', TemplateView.as_view(template_name='boiler/robots.txt')), - (r'^tos\.html$', TemplateView.as_view(template_name='boiler/tos.html')), - (r'^test\.html$', TemplateView.as_view(template_name='boiler/test.html')), - (r'^500', 'django.views.defaults.server_error'), - (r'^grappelli/', include('grappelli.urls')), - url(r'^accounts/', include('allauth.urls')), - (r'^avatar/', include('avatar.urls')), - (r'^tinymce/', include('tinymce.urls')), - url(r'^', include('spa.urls')), + url(r'^admin/', include(admin.site.urls)), + #(r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/img/favicon.ico'}), + (r'^channel\.html$', TemplateView.as_view(template_name='boiler/fb_channel.html')), + (r'^privacy\.html$', TemplateView.as_view(template_name='boiler/privacy.html')), + (r'^robots\.txt', TemplateView.as_view(template_name='boiler/robots.txt')), + (r'^tos\.html$', TemplateView.as_view(template_name='boiler/tos.html')), + (r'^test\.html$', TemplateView.as_view(template_name='boiler/test.html')), + (r'^500', 'django.views.defaults.server_error'), + (r'^grappelli/', include('grappelli.urls')), + url(r'^accounts/', include('allauth.urls')), + (r'^avatar/', include('avatar.urls')), + (r'^tinymce/', include('tinymce.urls')), + url(r'^', include('spa.urls')), ) if settings.DEBUG: @@ -32,8 +32,9 @@ if settings.DEBUG: _media_url = settings.MEDIA_URL if _media_url.startswith('/'): _media_url = _media_url[1:] - urlpatterns += patterns('', + urlpatterns += patterns( + '', (r'^%s(?P.*)$' % _media_url, serve, - {'document_root': settings.MEDIA_ROOT})) - del(_media_url, serve) + {'document_root': settings.MEDIA_ROOT})) + del (_media_url, serve) diff --git a/spa/audio.py b/spa/audio.py index 1872c49..3c9921d 100644 --- a/spa/audio.py +++ b/spa/audio.py @@ -1,14 +1,18 @@ +import os +import logging + from django.conf.urls import url from django.http import Http404 -import os from sendfile import sendfile + from dss import settings from spa.models.Mix import Mix from utils import here -import logging + logger = logging.getLogger('spa') + class AudioHandler(object): @property def urls(self): @@ -19,6 +23,7 @@ class AudioHandler(object): return pattern_list + def download(request, mix_id): try: mix = Mix.objects.get(pk=mix_id) @@ -34,6 +39,7 @@ def download(request, mix_id): raise Http404("Mix not found") + def start_streaming(request, mix_id): logger.debug('Start streaming called: %s' % mix_id) try: diff --git a/spa/social/urls.py b/spa/social/urls.py new file mode 100644 index 0000000..2772064 --- /dev/null +++ b/spa/social/urls.py @@ -0,0 +1,12 @@ +from django.conf.urls import patterns, url + +urlpatterns = patterns( + '', + url(r'^redirect/mix/(?P\d+)/$', 'spa.social.views.mix', name='social_redirect_mix'), + 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'^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') +) \ No newline at end of file diff --git a/spa/social.py b/spa/social/views.py similarity index 77% rename from spa/social.py rename to spa/social/views.py index 8cffc0d..46bdb63 100644 --- a/spa/social.py +++ b/spa/social/views.py @@ -1,52 +1,25 @@ import urllib2 +import logging + from django.conf.urls import url from django.contrib.sites.models import Site from django.core.urlresolvers import resolve -from django.http import Http404 +from django.http import Http404 from django.shortcuts import render_to_response from django.template.context import RequestContext import requests -from dss import settings +from allauth.socialaccount.models import SocialToken + +from dss import settings from spa.models.Mix import Mix from spa.models.UserProfile import UserProfile -from allauth.socialaccount.models import SocialToken -import logging + + logger = logging.getLogger(__name__) """ Handles callbacks from facebook and twitter """ -class SocialHandler(object): - - def __init__(self, api_name="v1"): - self.api_name = api_name - - @property - def urls(self): - pattern_list = [ - url( - r'^redirect/mix/(?P\d+)/$', - 'spa.social.mix', - name='social_redirect'), - url( - r'^mix/(?P\d+)/$', - 'spa.social.mix', - name='social_mix'), - url( - r'^user/(?P\w+)/$', - 'spa.social.user', - name='social_user'), - url( - r'^like/(?P\d+)/$', - 'spa.social.post_like', - name='social_like'), - url( - r'^$', - 'spa.social.index', - name='social_index'), - ] - return pattern_list - def _getPayload(request): return { @@ -58,7 +31,10 @@ def _getPayload(request): def mix(request, args): try: - mix = Mix.objects.get(pk=args['mix_id']) + if 'mix_id' in args: + mix = Mix.objects.get(pk=args['mix_id']) + else: + mix = Mix.objects.get(slug=args['slug']) except Mix.DoesNotExist: raise Http404 @@ -80,6 +56,7 @@ def mix(request, args): ) return response + def user(request, args): try: user = UserProfile.objects.get(slug=args['user_id']) @@ -103,7 +80,6 @@ def user(request, args): return response - def index(request): response = render_to_response( "inc/facebook/index.html", @@ -116,7 +92,7 @@ def social_redirect(request): try: resolver = resolve('/social' + request.path) if resolver is not None: - logger.debug("Resolver succesfully resolved") + logger.debug("Resolver successfully resolved") return resolver.func(request, resolver.kwargs) else: logger.debug("No resolver found for: $%s" % request.path) @@ -127,6 +103,7 @@ def social_redirect(request): logger.debug("Unhandled exception in social_redirect: $%s" % ex) return index(request) + def post_like(request, mix): try: tokens = SocialToken.objects.filter( diff --git a/spa/urls.py b/spa/urls.py index dec2eb2..83605ca 100644 --- a/spa/urls.py +++ b/spa/urls.py @@ -10,7 +10,6 @@ from spa.api.v1.ReleaseAudioResource import ReleaseAudioResource from spa.api.v1.ReleaseResource import ReleaseResource from spa.api.v1.UserResource import UserResource from spa.api.v1.ActivityResource import ActivityResource -from spa.social import SocialHandler v1_api = Api(api_name='v1') v1_api.register(CommentResource()) @@ -23,9 +22,8 @@ v1_api.register(ActivityResource()) ajax = AjaxHandler() audio = AudioHandler() -social = SocialHandler() -urlpatterns = django.conf.urls.patterns( +urlpatterns = patterns( '', url(r'^$', 'spa.views.app', name='home'), url(r'^tpl/(?P\w+)/$', 'spa.templates.get_template'), @@ -34,7 +32,7 @@ urlpatterns = django.conf.urls.patterns( url(r'^podcast\.xml', 'spa.podcast.get_default_podcast'), url(r'^podcast', 'spa.podcast.get_default_podcast'), url(r'^podcasts', 'spa.podcast.get_default_podcast'), - url(r'^social/', include(social.urls)), + url(r'^social/', include('spa.social.urls')), url(r'^ajax/', include(ajax.urls)), url(r'^audio/', include(audio.urls)), url(r'^api/', include(v1_api.urls)), diff --git a/spa/views.py b/spa/views.py index 9de8355..f9dbede 100644 --- a/spa/views.py +++ b/spa/views.py @@ -1,10 +1,8 @@ import logging - from django.shortcuts import render_to_response, redirect from django.template.context import RequestContext - from core.utils.string import lreplace, rreplace -from spa.social import social_redirect +from spa.social.views import social_redirect logger = logging.getLogger('spa')