From 9fd7478dc4a75948ab9c6fd56e15a413e991e61a Mon Sep 17 00:00:00 2001 From: yomguy Date: Wed, 20 Jun 2012 13:01:38 +0200 Subject: [PATCH] add download buttons & views for media --- .../static/teleforma/images/down_arrow.png | Bin 0 -> 670 bytes .../teleforma/images/download_media.png | Bin 0 -> 1035 bytes .../templates/teleforma/inc/media_list.html | 2 +- teleforma/urls.py | 7 +++++- teleforma/views.py | 21 +++++++++++++++++- 5 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 teleforma/static/teleforma/images/down_arrow.png create mode 100644 teleforma/static/teleforma/images/download_media.png diff --git a/teleforma/static/teleforma/images/down_arrow.png b/teleforma/static/teleforma/images/down_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..50ed1414cec7a0c667170e2e4c0cb9f9112de18b GIT binary patch literal 670 zcmV;P0%84$P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyh} z3L-22ig_vk000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0005`NklGxOKVe66otQ&d+iNL!^MO&R$EK4idq~LTW768rO-)1EJ%HTvw~y)f(~`;$cYmN zK0xqM6&0x&*s9Q|^kJ0JR%7TRVs4t`oU>N{GO513eSqJ-ANB0o1gX|EGq1j92Zr}`r#gL%wy2OotT6K;oA0}D zyKVXLd0Y^zHK>q^CildMr=m0}5^G70jSd6g9vYeC$<@24kgAqTRm9r5(HM)VT25cO z;s7SJyY~bqFW(11jKLb+gop)@NF;&_(AhT%Ld9B()ux_ojYUKN!a)!Op~nBLF&M4u zSZxq10B3-(5)qzXKP#1>Ku^~a?R#Sl$HLP`8~iMH0pJY!3zBM0<45zvlOB!(Vr>nv z#G;yx#3pes|F61^?pmVJx~aNEn}@Z+;zAiEBHTRZ%?}K<9oW?w;eUz1`!{*AL0`=b zaO-0DcmMHZbZ4Ta$-J2P#aynJCHLsC`*(P6KGC|vTbE;lal#P?fVJfk3zU4PGNHHjFl}e>*Q_txi{xUIJ4%Pbp58S&4hi80wWB>pF07*qoM6N<$ Ef~CDG(f|Me literal 0 HcmV?d00001 diff --git a/teleforma/static/teleforma/images/download_media.png b/teleforma/static/teleforma/images/download_media.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ef0b5caaa301de4511b63cadb3013405fdf531 GIT binary patch literal 1035 zcmV+m1oZofP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L05@F#05@F$8GuGz00007bV*G`2iyh} z3MM6dUXdvP00WCjL_t(I%hi-$Xwz2|$G`WNKP}ClHr6!FVz*_AwPK59D%~D7UB-kd zOq^rWBEmrMX%D`QvBAKHZ9=z~O=#za8^{KV8!bLav4u9Z8)aoGYtyu8qcgGm7L_Ky z^!LlXzjO9dOI+G2?8yV?;T|rZd+zz3bAYGK#7e>V*$;R=aZPu)tAk87gyz6or-sD; z0)O9GmD(BG7!5Vm!d3*K2{19n22%R|FZ6~d1#1;AX~GkX_^>YIK``RO`mh(lhz~VB zcd-24z`$TYDRr=?`|O!LyWg08sbly4HNng*twjkYT6QHBY)LRp^R-MSdurFNmw*4{ z<4^U8iNwW&Zyz|Zb!+R!Kp+?^=Q#cgKG5bo8Evljdu!cbCNLAowvkTc@XNUCSS+^Z zl|WrxWNhpvhU25Rl`;oYv&rt>zDwtolDUT*XGL)sB_aYTdpSflfthjPLT`?UZWN38 z;lC!v26bJZ?Ct$o2Ot4(ImWqC;mNjPD^+%8Fflqh+D`ZN{n|4!GIF1p`H98r?>fw( zmRQu53Zx$Og7lz8T>q@|MQ5&9T(tM@-N&u1+j%N6#ZyyB+O};w&(6+@ij4ca4s*zR z4e$c~x*FI@mI(^9wK-5S)5t$4;mVb(!ZLw(4jn9c@*AMt@sGwDSiThJk#30fl@XhEc@v zhs|-7t(i3?mQIGVwz6c~nNSBFd{gYKSlxRaTO{?B~` z8yk_nHNEyeerV4 {{ 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") -- 2.39.5