From: yomguy Date: Tue, 2 Oct 2012 09:17:41 +0000 (+0200) Subject: fix view name X-Git-Tag: 1.4.5~59^2~3 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=c9cb270ea48d5859b820fcd59642c24c47176584;p=telemeta.git fix view name --- diff --git a/telemeta/views/__init__.py b/telemeta/views/__init__.py index 23673e76..4a57ae37 100644 --- a/telemeta/views/__init__.py +++ b/telemeta/views/__init__.py @@ -42,5 +42,5 @@ from telemeta.views.marker import * from telemeta.views.playlist import * from telemeta.views.profile import * from telemeta.views.feed import * -from telemeta.views.ressource import * +from telemeta.views.resource import * diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py new file mode 100644 index 00000000..6ed26120 --- /dev/null +++ b/telemeta/views/resource.py @@ -0,0 +1,187 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2010 Samalyse SARL +# Copyright (C) 2010-2012 Parisson SARL + +# This software is a computer program whose purpose is to backup, analyse, +# transcode and stream any audio content with its metadata over a web frontend. + +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". + +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. + +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. + +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. + +# Authors: Olivier Guilyardi +# Guillaume Pellerin + + +from telemeta.views.core import * + + +class ResourceView(object): + """Provide Resource web UI methods""" + + types = {'corpus': + {'model': MediaCorpus, + 'form' : MediaCorpusForm, + 'related': MediaCorpusRelated, + 'related_form': MediaCorpusRelatedForm, + 'parent': MediaFonds, + }, + 'fonds': + {'model': MediaFonds, + 'form' : MediaFondsForm, + 'related': MediaFondsRelated, + 'related_form': MediaFondsRelatedForm, + 'parent': None, + } + } + + def setup(self, type): + self.model = self.types[type]['model'] + self.form = self.types[type]['form'] + self.related = self.types[type]['related'] + self.related_form = self.types[type]['related_form'] + self.parent = self.types[type]['parent'] + self.type = type + + def detail(self, request, type, public_id, template='telemeta/resource_detail.html'): + self.setup(type) + resource = self.model.objects.get(code=public_id) + children = resource.children.all() + children = children.order_by('code') + related_media = self.related.objects.filter(resource=resource) + check_related_media(related_media) + playlists = get_playlists(request) + revisions = Revision.objects.filter(element_type=type, element_id=resource.id).order_by('-time') + if revisions: + last_revision = revisions[0] + else: + last_revision = None + if self.parent: + parents = self.parent.objects.filter(children=resource) + else: + parents = [] + + return render(request, template, {'resource': resource, 'type': type, 'children': children, + 'related_media': related_media, 'parents': parents, 'playlists': playlists, + 'last_revision': last_revision }) + + @jsonrpc_method('telemeta.change_fonds') + @jsonrpc_method('telemeta.change_corpus') + def edit(self, request, type, public_id, template='telemeta/resource_edit.html'): + self.setup(type) + resource = self.model.objects.get(code=public_id) + if request.method == 'POST': + form = self.form(data=request.POST, files=request.FILES, instance=resource) + if form.is_valid(): + code = form.cleaned_data['code'] + if not code: + code = public_id + form.save() + resource.set_revision(request.user) + return redirect('telemeta-resource-detail', self.type, code) + else: + form = self.form(instance=resource) + return render(request, template, {'resource': resource, 'type': type, 'form': form,}) + + @jsonrpc_method('telemeta.add_fonds') + @jsonrpc_method('telemeta.add_corpus') + def add(self, request, type, template='telemeta/resource_add.html'): + self.setup(type) + resource = self.model() + if request.method == 'POST': + form = self.form(data=request.POST, files=request.FILES, instance=resource) + if form.is_valid(): + code = form.cleaned_data['code'] + if not code: + code = public_id + form.save() + resource.set_revision(request.user) + return redirect('telemeta-resource-detail', self.type, code) + else: + form = self.form(instance=resource) + return render(request, template, {'resource': resource, 'type': type, 'form': form,}) + + @jsonrpc_method('telemeta.add_fonds') + @jsonrpc_method('telemeta.add_corpus') + def copy(self, request, type, public_id, template='telemeta/resource_edit.html'): + self.setup(type) + if request.method == 'POST': + resource = self.model() + form = self.form(data=request.POST, files=request.FILES, instance=resource) + if form.is_valid(): + code = form.cleaned_data['code'] + if not code: + code = public_id + resource.save() + resource.set_revision(request.user) + return redirect('telemeta-resource-detail', self.type, code) + else: + resource = self.model.objects.get(code=public_id) + form = self.form(instance=resource) + return render(request, template, {'resource': resource, 'type': type, "form": form,}) + + def playlist(self, request, type, public_id, template, mimetype): + self.setup(type) + try: + resource = self.model.objects.get(code=public_id) + except ObjectDoesNotExist: + raise Http404 + + template = loader.get_template(template) + context = RequestContext(request, {'resource': resource, 'host': request.META['HTTP_HOST']}) + return HttpResponse(template.render(context), mimetype=mimetype) + + @jsonrpc_method('telemeta.del_fonds') + @jsonrpc_method('telemeta.del_corpus') + def delete(self, request, type, public_id): + self.setup(type) + resource = self.model.objects.get(code=public_id) + resource.delete() + return HttpResponseRedirect('/archives/'+self.type+'/') + + def related_stream(self, request, type, public_id, media_id): + self.setup(type) + resource = self.model.objects.get(code=public_id) + media = self.related.objects.get(resource=resource, id=media_id) + response = HttpResponse(stream_from_file(media.file.path), mimetype=media.mime_type) + return response + + @jsonrpc_method('telemeta.add_fonds_related_media') + @jsonrpc_method('telemeta.add_corpus_related_media') + def related_edit(self, request, type, public_id, template): + self.setup(type) + resource = self.model.objects.get(code=public_id) + ResourceRelatedFormSet = inlineformset_factory(self.model, self.related, form=self.related_form) + if request.method == 'POST': + formset = ResourceRelatedFormSet(data=request.POST, files=request.FILES, instance=resource) + if formset.is_valid(): + formset.save() + resource.set_revision(request.user) + return redirect('telemeta-resource-edit', self.type, public_id) + else: + formset = ResourceRelatedFormSet(instance=resource) + return render(request, template, {'resource': resource, 'type': type, 'formset': formset,}) + + diff --git a/telemeta/views/ressource.py b/telemeta/views/ressource.py deleted file mode 100644 index 6ed26120..00000000 --- a/telemeta/views/ressource.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2010 Samalyse SARL -# Copyright (C) 2010-2012 Parisson SARL - -# This software is a computer program whose purpose is to backup, analyse, -# transcode and stream any audio content with its metadata over a web frontend. - -# This software is governed by the CeCILL license under French law and -# abiding by the rules of distribution of free software. You can use, -# modify and/ or redistribute the software under the terms of the CeCILL -# license as circulated by CEA, CNRS and INRIA at the following URL -# "http://www.cecill.info". - -# As a counterpart to the access to the source code and rights to copy, -# modify and redistribute granted by the license, users are provided only -# with a limited warranty and the software's author, the holder of the -# economic rights, and the successive licensors have only limited -# liability. - -# In this respect, the user's attention is drawn to the risks associated -# with loading, using, modifying and/or developing or reproducing the -# software by the user in light of its specific status of free software, -# that may mean that it is complicated to manipulate, and that also -# therefore means that it is reserved for developers and experienced -# professionals having in-depth computer knowledge. Users are therefore -# encouraged to load and test the software's suitability as regards their -# requirements in conditions enabling the security of their systems and/or -# data to be ensured and, more generally, to use and operate it in the -# same conditions as regards security. - -# The fact that you are presently reading this means that you have had -# knowledge of the CeCILL license and that you accept its terms. - -# Authors: Olivier Guilyardi -# Guillaume Pellerin - - -from telemeta.views.core import * - - -class ResourceView(object): - """Provide Resource web UI methods""" - - types = {'corpus': - {'model': MediaCorpus, - 'form' : MediaCorpusForm, - 'related': MediaCorpusRelated, - 'related_form': MediaCorpusRelatedForm, - 'parent': MediaFonds, - }, - 'fonds': - {'model': MediaFonds, - 'form' : MediaFondsForm, - 'related': MediaFondsRelated, - 'related_form': MediaFondsRelatedForm, - 'parent': None, - } - } - - def setup(self, type): - self.model = self.types[type]['model'] - self.form = self.types[type]['form'] - self.related = self.types[type]['related'] - self.related_form = self.types[type]['related_form'] - self.parent = self.types[type]['parent'] - self.type = type - - def detail(self, request, type, public_id, template='telemeta/resource_detail.html'): - self.setup(type) - resource = self.model.objects.get(code=public_id) - children = resource.children.all() - children = children.order_by('code') - related_media = self.related.objects.filter(resource=resource) - check_related_media(related_media) - playlists = get_playlists(request) - revisions = Revision.objects.filter(element_type=type, element_id=resource.id).order_by('-time') - if revisions: - last_revision = revisions[0] - else: - last_revision = None - if self.parent: - parents = self.parent.objects.filter(children=resource) - else: - parents = [] - - return render(request, template, {'resource': resource, 'type': type, 'children': children, - 'related_media': related_media, 'parents': parents, 'playlists': playlists, - 'last_revision': last_revision }) - - @jsonrpc_method('telemeta.change_fonds') - @jsonrpc_method('telemeta.change_corpus') - def edit(self, request, type, public_id, template='telemeta/resource_edit.html'): - self.setup(type) - resource = self.model.objects.get(code=public_id) - if request.method == 'POST': - form = self.form(data=request.POST, files=request.FILES, instance=resource) - if form.is_valid(): - code = form.cleaned_data['code'] - if not code: - code = public_id - form.save() - resource.set_revision(request.user) - return redirect('telemeta-resource-detail', self.type, code) - else: - form = self.form(instance=resource) - return render(request, template, {'resource': resource, 'type': type, 'form': form,}) - - @jsonrpc_method('telemeta.add_fonds') - @jsonrpc_method('telemeta.add_corpus') - def add(self, request, type, template='telemeta/resource_add.html'): - self.setup(type) - resource = self.model() - if request.method == 'POST': - form = self.form(data=request.POST, files=request.FILES, instance=resource) - if form.is_valid(): - code = form.cleaned_data['code'] - if not code: - code = public_id - form.save() - resource.set_revision(request.user) - return redirect('telemeta-resource-detail', self.type, code) - else: - form = self.form(instance=resource) - return render(request, template, {'resource': resource, 'type': type, 'form': form,}) - - @jsonrpc_method('telemeta.add_fonds') - @jsonrpc_method('telemeta.add_corpus') - def copy(self, request, type, public_id, template='telemeta/resource_edit.html'): - self.setup(type) - if request.method == 'POST': - resource = self.model() - form = self.form(data=request.POST, files=request.FILES, instance=resource) - if form.is_valid(): - code = form.cleaned_data['code'] - if not code: - code = public_id - resource.save() - resource.set_revision(request.user) - return redirect('telemeta-resource-detail', self.type, code) - else: - resource = self.model.objects.get(code=public_id) - form = self.form(instance=resource) - return render(request, template, {'resource': resource, 'type': type, "form": form,}) - - def playlist(self, request, type, public_id, template, mimetype): - self.setup(type) - try: - resource = self.model.objects.get(code=public_id) - except ObjectDoesNotExist: - raise Http404 - - template = loader.get_template(template) - context = RequestContext(request, {'resource': resource, 'host': request.META['HTTP_HOST']}) - return HttpResponse(template.render(context), mimetype=mimetype) - - @jsonrpc_method('telemeta.del_fonds') - @jsonrpc_method('telemeta.del_corpus') - def delete(self, request, type, public_id): - self.setup(type) - resource = self.model.objects.get(code=public_id) - resource.delete() - return HttpResponseRedirect('/archives/'+self.type+'/') - - def related_stream(self, request, type, public_id, media_id): - self.setup(type) - resource = self.model.objects.get(code=public_id) - media = self.related.objects.get(resource=resource, id=media_id) - response = HttpResponse(stream_from_file(media.file.path), mimetype=media.mime_type) - return response - - @jsonrpc_method('telemeta.add_fonds_related_media') - @jsonrpc_method('telemeta.add_corpus_related_media') - def related_edit(self, request, type, public_id, template): - self.setup(type) - resource = self.model.objects.get(code=public_id) - ResourceRelatedFormSet = inlineformset_factory(self.model, self.related, form=self.related_form) - if request.method == 'POST': - formset = ResourceRelatedFormSet(data=request.POST, files=request.FILES, instance=resource) - if formset.is_valid(): - formset.save() - resource.set_revision(request.user) - return redirect('telemeta-resource-edit', self.type, public_id) - else: - formset = ResourceRelatedFormSet(instance=resource) - return render(request, template, {'resource': resource, 'type': type, 'formset': formset,}) - -