From: yomguy Date: Wed, 20 Jun 2012 11:01:38 +0000 (+0200) Subject: add download buttons & views for media X-Git-Tag: 0.6~1^2 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=9fd7478dc4a75948ab9c6fd56e15a413e991e61a;p=teleforma.git add download buttons & views for media --- diff --git a/teleforma/static/teleforma/images/down_arrow.png b/teleforma/static/teleforma/images/down_arrow.png new file mode 100644 index 00000000..50ed1414 Binary files /dev/null and b/teleforma/static/teleforma/images/down_arrow.png differ diff --git a/teleforma/static/teleforma/images/download_media.png b/teleforma/static/teleforma/images/download_media.png new file mode 100644 index 00000000..e4ef0b5c Binary files /dev/null and b/teleforma/static/teleforma/images/download_media.png differ diff --git a/teleforma/templates/teleforma/inc/media_list.html b/teleforma/templates/teleforma/inc/media_list.html index 6fc2200c..dced86bf 100644 --- a/teleforma/templates/teleforma/inc/media_list.html +++ b/teleforma/templates/teleforma/inc/media_list.html @@ -14,7 +14,7 @@ {{ media.title }} - {{ media.conference.session }} {% if media.conference.professor.user %}{{ media.conference.professor }}{% endif %} {% if media.conference.date_begin %}{{ media.conference.date_begin }}{% endif %} - + {% if media.item.file %}{% endif %} {% endif %} {% endfor %} diff --git a/teleforma/urls.py b/teleforma/urls.py index 86af5fbd..05885299 100644 --- a/teleforma/urls.py +++ b/teleforma/urls.py @@ -45,6 +45,7 @@ htdocs_forma = os.path.dirname(__file__) + '/static/teleforma/' user_export = UsersXLSExport() profile_view = ProfileView() document = DocumentView() +media = MediaView() urlpatterns = patterns('', # url(r'^$', HomeView.as_view(), name='teleforma-home'), @@ -57,7 +58,10 @@ urlpatterns = patterns('', # Desk url(r'^desk/$', CoursesView.as_view(), name="teleforma-desk"), url(r'^desk/courses/(?P.*)/$', CourseView.as_view(), name="teleforma-course-detail"), - url(r'^desk/medias/(?P.*)/$', MediaView.as_view(), name="teleforma-media-detail"), + + url(r'^desk/medias/(?P.*)/detail/$', MediaView.as_view(), name="teleforma-media-detail"), + url(r'^desk/medias/(?P.*)/download/$', media.download, name="teleforma-media-download"), + url(r'^desk/documents/(?P.*)/detail/$', DocumentView.as_view(), name="teleforma-document-detail"), url(r'^desk/documents/(?P.*)/download/$', document.download, @@ -65,6 +69,7 @@ urlpatterns = patterns('', url(r'^desk/documents/(?P.*)/view/$', document.view, name="teleforma-document-view"), # url(r'^desk/documents/(?P.*)/view/$', document_view, name="teleforma-document-view"), + url(r'^desk/conferences/(?P.*)/$', ConferenceView.as_view(), name="teleforma-conference-detail"), diff --git a/teleforma/views.py b/teleforma/views.py index 2766d762..0c357580 100755 --- a/teleforma/views.py +++ b/teleforma/views.py @@ -223,6 +223,26 @@ class MediaView(DetailView): def dispatch(self, *args, **kwargs): return super(MediaView, self).dispatch(*args, **kwargs) + def download(self, request, pk): + courses = get_courses(request.user) + media = Media.objects.get(id=pk) + if get_access(media, courses): + path = media.item.file.path + filename, ext = os.path.splitext(path) + filename = filename.split(os.sep)[-1] + fsock = open(media.item.file.path, 'r') + view = ItemView() + mimetype = view.item_analyze(media.item) + extension = mimetypes.guess_extension(mimetype) + if not extension: + extension = ext + response = HttpResponse(fsock, mimetype=mimetype) + + response['Content-Disposition'] = "attachment; filename=%s%s" % \ + (filename.encode('utf8'), extension) + return response + else: + return redirect('teleforma-media-detail', media.id) class DocumentView(DetailView): @@ -235,7 +255,6 @@ class DocumentView(DetailView): all_courses = get_courses(self.request.user) context['all_courses'] = all_courses document = self.get_object() -# context['mime_type'] = view.item_analyze(media.item) context['course'] = document.course context['notes'] = document.notes.all().filter(author=self.request.user) content_type = ContentType.objects.get(app_label="teleforma", model="document")