diff --git a/api/auth.py b/api/auth.py index 0403173..df3d5b7 100644 --- a/api/auth.py +++ b/api/auth.py @@ -26,7 +26,7 @@ def auth_by_token(request, backend): return user if user else None -class FacebookView(APIView): +class SocialLoginHandler(APIView): permission_classes = (permissions.AllowAny,) def post(self, request, format=None): @@ -57,7 +57,8 @@ class FacebookView(APIView): ) response_data = { - 'token': jwt_encode_handler(payload) + 'token': jwt_encode_handler(payload), + 'session': user.userprofile.get_session_id() } return Response(response_data) diff --git a/api/urls.py b/api/urls.py index edd15f8..75701bf 100755 --- a/api/urls.py +++ b/api/urls.py @@ -6,9 +6,10 @@ from rest_framework.views import APIView from rest_framework_jwt.authentication import JSONWebTokenAuthentication from api import views, auth, helpers -from api.auth import FacebookView +from api.auth import SocialLoginHandler from rest_framework.views import status from rest_framework.response import Response +from core.realtime import activity router = DefaultRouter() # trailing_slash=True) @@ -27,6 +28,11 @@ class DebugView(APIView): authentication_classes = (JSONWebTokenAuthentication, ) def post(self, request, format=None): + try: + activity.post_activity('user:message', request.user.userprofile.get_session_id(), 'Hello Sailor') + except Exception, ex: + print ex.message + return Response({ 'status': request.user.first_name, 'message': 'Sailor' @@ -43,7 +49,7 @@ urlpatterns = patterns( url(r'_search/$', views.SearchResultsView.as_view()), url(r'^', include(router.urls)), - url(r'^_login/', FacebookView.as_view()), + url(r'^_login/', SocialLoginHandler.as_view()), url(r'^token-refresh/', 'rest_framework_jwt.views.refresh_jwt_token'), # url(r'^_tr/', RefreshToken.as_view()), diff --git a/core/realtime/activity.py b/core/realtime/activity.py index 1ed2ef0..3af0813 100755 --- a/core/realtime/activity.py +++ b/core/realtime/activity.py @@ -1,9 +1,10 @@ import redis import json +from dss import settings def post_activity(channel, session, message): - r = redis.StrictRedis(host='localhost', port=6379, db=0) + r = redis.StrictRedis(host=settings.REDIS_HOST, port=6379, db=0) response = r.publish(channel, json.dumps({'session': session, 'message': message})) print "Message sent: {0}".format(response) diff --git a/core/utils/cdn.py b/core/utils/cdn.py index 5852349..5e51b1b 100755 --- a/core/utils/cdn.py +++ b/core/utils/cdn.py @@ -31,13 +31,13 @@ def upload_stream_to_azure(iterator, file_name, container_name=settings.AZURE_CO return obj -def set_azure_details(blob_name, download_name): +def set_azure_details(blob_name, download_name, container_name=AZURE_CONTAINER): try: blob_service = BlobService(AZURE_ACCOUNT_NAME, AZURE_ACCOUNT_KEY) - blob = blob_service.get_blob(AZURE_CONTAINER, blob_name) + blob = blob_service.get_blob(container_name, blob_name) if blob: blob_service.set_blob_properties( - AZURE_CONTAINER, + container_name, blob_name, x_ms_blob_content_type='application/octet-stream', x_ms_blob_content_disposition='attachment;filename="{0}"'.format(download_name) diff --git a/dss/settings.py b/dss/settings.py index f651b78..3caa6ea 100755 --- a/dss/settings.py +++ b/dss/settings.py @@ -74,7 +74,7 @@ TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + ( MIDDLEWARE_CLASSES = ( 'django.middleware.gzip.GZipMiddleware', 'django.middleware.common.CommonMiddleware', - 'user_sessions.middleware.SessionMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', @@ -96,7 +96,7 @@ INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', - 'user_sessions', + 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', @@ -149,7 +149,7 @@ TASTYPIE_ALLOW_MISSING_SLASH = True SENDFILE_ROOT = os.path.join(MEDIA_ROOT, 'mixes') SENDFILE_URL = '/media/mixes' -SESSION_ENGINE = 'user_sessions.backends.db' +#SESSION_ENGINE = 'user_sessions.backends.db' mimetypes.add_type("text/xml", ".plist", False) diff --git a/dss/urls.py b/dss/urls.py index 99d9603..78fdc2f 100755 --- a/dss/urls.py +++ b/dss/urls.py @@ -13,6 +13,7 @@ urlpatterns = patterns( (r'^grappelli/', include('grappelli.urls')), (r'^social/', include('spa.social.urls')), (r'^arges/', include('spa.social.urls')), + url(r'', include('user_sessions.urls', 'user_sessions')), url(r'^', include('api.urls')), ) diff --git a/spa/management/commands/azure_util.py b/spa/management/commands/azure_util.py index aa66717..c310264 100755 --- a/spa/management/commands/azure_util.py +++ b/spa/management/commands/azure_util.py @@ -5,16 +5,21 @@ from core.utils import cdn from spa.models import Mix +def _update_azure_headers(): + ms = Mix.objects.all() + for m in ms: + cdn.set_azure_details('{0}.mp3'.format(m.uid), 'Deep South Sounds - {0}'.format(m.title), 'mixes') + def _check_missing_mixes(): ms = Mix.objects.all() found = 0 for m in ms: url = m.get_download_url() if not cdn.file_exists(url): - file = '/mnt/dev/deepsouthsounds.com/media/mixes/{0}.mp3'.format(m.uid) + file = '/mnt/dev/working/Dropbox/Development/deepsouthsounds.com/media/mixes/{0}.mp3'.format(m.uid) if os.path.isfile(file): print '* {0}'.format(file) - cdn.upload_file_to_azure(file, '{0}.mp3'.format(m.uid), 'mixes') + #cdn.upload_file_to_azure(file, '{0}.mp3'.format(m.uid), 'mixes') found += 1 else: found += 1 @@ -49,5 +54,7 @@ class Command(BaseCommand): print "Commands are \n\t_check_missing_mixes" elif args[0] == 'check_missing_mix': _check_missing_mixes() + elif args[0] == 'update_azure_headers': + _update_azure_headers() else: print "Commands are \n\tcheck_missing_mix" diff --git a/spa/models/userprofile.py b/spa/models/userprofile.py index f3f2aa5..79b9d14 100755 --- a/spa/models/userprofile.py +++ b/spa/models/userprofile.py @@ -139,6 +139,9 @@ class UserProfile(BaseModel): except Exception, e: self.logger.error("Unable to create profile slug: %s", e.message) + def get_session_id(self): + return str(self.id) + def toggle_favourite(self, mix, value): try: if value: