From: Guillaume Pellerin Date: Mon, 16 Sep 2013 11:03:18 +0000 (+0200) Subject: add XsSharing middleware (external JSON call), add media listing RPC X-Git-Tag: 1.1~525 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=af32fa0d16e5b9ae4ac78e63365658d1295feb8c;p=teleforma.git add XsSharing middleware (external JSON call), add media listing RPC --- diff --git a/teleforma/middleware.py b/teleforma/middleware.py index 628eff30..143cf928 100644 --- a/teleforma/middleware.py +++ b/teleforma/middleware.py @@ -40,3 +40,51 @@ class ItemExportSecurity(object): else: return None +import re + +from django.utils.text import compress_string +from django.utils.cache import patch_vary_headers + +from django import http + +try: + import settings + XS_SHARING_ALLOWED_ORIGINS = settings.XS_SHARING_ALLOWED_ORIGINS + XS_SHARING_ALLOWED_METHODS = settings.XS_SHARING_ALLOWED_METHODS + XS_SHARING_ALLOWED_HEADERS = settings.XS_SHARING_ALLOWED_HEADERS +except: + XS_SHARING_ALLOWED_ORIGINS = '*' + XS_SHARING_ALLOWED_METHODS = ['POST','GET','OPTIONS', 'PUT', 'DELETE'] + XS_SHARING_ALLOWED_HEADERS = ['Origin', 'Content-Type', 'Accept'] + + +class XsSharing(object): + """ + This middleware allows cross-domain XHR using the html5 postMessage API. + + + Access-Control-Allow-Origin: http://foo.example + Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE + """ + def process_request(self, request): + + if 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' in request.META: + response = http.HttpResponse() + response['Access-Control-Allow-Origin'] = XS_SHARING_ALLOWED_ORIGINS + response['Access-Control-Allow-Methods'] = ",".join( XS_SHARING_ALLOWED_METHODS ) + response['Access-Control-Allow-Headers'] = ",".join( XS_SHARING_ALLOWED_HEADERS ) + + return response + + return None + + def process_response(self, request, response): + # Avoid unnecessary work + if response.has_header('Access-Control-Allow-Origin'): + return response + + response['Access-Control-Allow-Origin'] = XS_SHARING_ALLOWED_ORIGINS + response['Access-Control-Allow-Methods'] = ",".join( XS_SHARING_ALLOWED_METHODS ) + response['Access-Control-Allow-Headers'] = ",".join( XS_SHARING_ALLOWED_HEADERS ) + + return response diff --git a/teleforma/views/core.py b/teleforma/views/core.py index 791dac5a..029e43b1 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -293,6 +293,17 @@ class CourseView(CourseAccessMixin, DetailView): def dispatch(self, *args, **kwargs): return super(CourseView, self).dispatch(*args, **kwargs) + @jsonrpc_method('teleforma.get_course_media_urls') + def get_course_media_urls(request, id): + course = Course.objects.get(public_id=id) + media_list = [] + for media in course.media.all(): + urls = [ {'url': settings.MEDIA_URL + unicode(media.item.file), 'mime_type': media.mime_type} ] + for transcoded in media.item.transcoded.all(): + urls.append({'url':settings.MEDIA_URL + unicode(transcoded.file), 'mime_type': media.mime_type}) + media_list.append({'session': media.conference.session, 'urls': urls}) + return media_list + class MediaView(CourseAccessMixin, DetailView):