From 466ec40b8963862d65c3a5f5362791a4b930935d Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 24 Nov 2014 00:25:48 +0100 Subject: [PATCH] cleanup old related forms --- .../templates/telemeta/collection_edit.html | 6 +-- telemeta/urls.py | 15 +++---- telemeta/views/collection.py | 6 +++ telemeta/views/item.py | 41 ++++++++++++++++++- telemeta/views/resource.py | 19 +-------- 5 files changed, 55 insertions(+), 32 deletions(-) diff --git a/telemeta/templates/telemeta/collection_edit.html b/telemeta/templates/telemeta/collection_edit.html index 1ea79a6e..453aec42 100644 --- a/telemeta/templates/telemeta/collection_edit.html +++ b/telemeta/templates/telemeta/collection_edit.html @@ -4,14 +4,14 @@ {% load bootstrap3 %} {% block title %} - Collection : {{ object.title }} + Collection : {{ collection.title }} {% endblock %} {% block title_buttons %}
{% block cancel %} - + @@ -63,7 +63,7 @@
{% block cancel2 %} - + diff --git a/telemeta/urls.py b/telemeta/urls.py index 30146639..19fb437e 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -83,16 +83,13 @@ urlpatterns = patterns('', url(r'^archives/items/(?P[A-Za-z0-9._-]+)/item_xspf.xml$', item_view.item_playlist, dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-item-xspf"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/edit/$', ItemEditView.as_view(), name="telemeta-item-edit"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/copy/$', ItemEditView.as_view(), name="telemeta-item-copy"), - url(r'^archives/item_new/add/$', ItemAddView.as_view(), name="telemeta-item-add"), + url(r'^archives/items_add/$', ItemAddView.as_view(), name="telemeta-item-add"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/$', item_view.item_detail, dict(template='telemeta/mediaitem_player.html'), name="telemeta-item-player"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/simple/$', item_view.item_detail, dict(template='telemeta/mediaitem_player_simple.html'), name="telemeta-item-player-simple"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/countour/$', item_view.item_detail, dict(template='telemeta/mediaitem_player_contour.html'), name="telemeta-item-player-contour"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/performances/$', item_view.item_performances_edit, dict(template='telemeta/mediaitem_performances_edit.html'), name="telemeta-item-performances_edit"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/keywords/$', item_view.item_keywords_edit, dict(template='telemeta/mediaitem_keywords_edit.html'), name="telemeta-item-keywords_edit"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/delete/$', item_view.item_delete, name="telemeta-item-delete"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', item_view.related_media_item_stream, name="telemeta-item-related"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', item_view.related_media_item_download, name="telemeta-item-related-download"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related_edit/$', item_view.related_media_edit, dict(template='telemeta/mediaitem_related_edit.html'), name="telemeta-item-related_edit"), # Markers url(r'^archives/markers/(?P[A-Za-z0-9]+)/$', item_view.item_detail, name="telemeta-item-detail-marker"), @@ -107,16 +104,15 @@ urlpatterns = patterns('', url(r'^archives/collections_sound/$', CollectionSoundListView.as_view(), name="telemeta-collections-sound"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/$', CollectionDetailView.as_view(), name="telemeta-collection-detail"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/dc/$', CollectionDetailViewDC.as_view(), name="telemeta-collection-dublincore"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection_xspf.xml$', collection_view.collection_playlist, dict(template="telemeta/collection_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-collection-xspf"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection.m3u$', collection_view.collection_playlist, dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"), name="telemeta-collection-m3u"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/edit/$', CollectionEditView.as_view(), name="telemeta-collection-edit"), + # url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection_xspf.xml$', collection_view.collection_playlist, dict(template="telemeta/collection_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-collection-xspf"), + # url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection.m3u$', collection_view.collection_playlist, dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"), name="telemeta-collection-m3u"), + # url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/edit/$', CollectionEditView.as_view(), name="telemeta-collection-edit"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/copy/$', CollectionCopyView.as_view(), name="telemeta-collection-copy"), - url(r'^archives/collection_new/add/$', CollectionAddView.as_view(), name="telemeta-collection-add"), + url(r'^archives/collections_add//$', CollectionAddView.as_view(), name="telemeta-collection-add"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/add_item/$', ItemAddView.as_view(), name="telemeta-collection-additem"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/delete/$', collection_view.collection_delete, name="telemeta-collection-delete"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', collection_view.related_media_collection_stream, name="telemeta-collection-related"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', collection_view.related_media_collection_download, name="telemeta-collection-related-download"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related_edit/$', collection_view.related_media_edit, dict(template='telemeta/collection_related_edit.html'), name="telemeta-collection-related_edit"), # FIXME: need all paths url(r'^collections/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(), {'url': '/archives/collections/%(path)s/', 'permanent': False}, name="telemeta-collection-redir"), @@ -133,7 +129,6 @@ urlpatterns = patterns('', url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/delete/$', ResourceDeleteView.as_view(), name="telemeta-resource-delete"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', resource_view.related_stream, name="telemeta-resource-related"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related_edit/$', resource_view.related_edit, dict(template='telemeta/resource_related_edit.html'), name="telemeta-resource-related_edit"), # search # url(r'^archives/$', home_view.search, name="telemeta-archives"), diff --git a/telemeta/views/collection.py b/telemeta/views/collection.py index e1878f77..0ee2793e 100644 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@ -331,3 +331,9 @@ class CollectionCopyView(CollectionAddView): def get_success_url(self): return reverse_lazy('telemeta-collection-detail', kwargs={'public_id':self.object.code}) + + def get_context_data(self, **kwargs): + context = super(CollectionCopyView, self).get_context_data(**kwargs) + collection = self.get_object() + context['collection'] = collection + return context \ No newline at end of file diff --git a/telemeta/views/item.py b/telemeta/views/item.py index af1230a2..f5763eba 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -777,8 +777,47 @@ class ItemCopyView(ItemAddView): def get_initial(self): return model_to_dict(self.get_object()) + def form_valid(self, form): + item = MediaItem() + if self.request.FILES: + item_form = MediaItemForm(data=self.request.POST, files=self.request.FILES, instance=item, prefix='item') + else: + item_form = MediaItemForm(data=self.request.POST, instance=item, prefix='item') + + if item_form.is_valid(): + item_form.save() + if not self.request.FILES: + item.file = source_item.file + item.save() + + code = item_form.cleaned_data['code'] + if not code: + code = str(item.id) + if format_form.is_valid(): + format.item = item + format_form.save() + + performances = MediaItemPerformance.objects.filter(media_item=source_item) + for performance in performances: + performance.pk = None + performance.id = None + performance.media_item = item + performance.save() + + keywords = MediaItemKeyword.objects.filter(item=source_item) + for keyword in keywords: + keyword.pk = None + keyword.id = None + keyword.item = item + keyword.save() + + item.set_revision(self.request.user) + + self.code = form.cleaned_data['code'] + return super(ItemCopyView, self).form_valid(form) + def get_success_url(self): - return reverse_lazy('telemeta-item-detail', kwargs={'public_id':self.object.code}) + return reverse_lazy('telemeta-item-detail', kwargs={'public_id':self.code}) class ItemDetailView(ItemViewMixin, DetailView): diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py index 77077d9d..7598cf3d 100644 --- a/telemeta/views/resource.py +++ b/telemeta/views/resource.py @@ -59,7 +59,6 @@ class ResourceView(object): 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 @@ -167,22 +166,6 @@ class ResourceView(object): response['Content-Disposition'] = 'attachment; ' + 'filename=' + filename 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,}) - class ResourceMixin(View): @@ -207,7 +190,6 @@ class ResourceMixin(View): self.form = self.types[type]['form'] self.form_class = 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.inlines = self.types[type]['inlines'] self.type = type @@ -292,6 +274,7 @@ class ResourceListView(ResourceMixin, ListView): context['count'] = self.object_list.count() return context + class ResourceDetailView(ResourceSingleMixin, DetailView): template_name = "telemeta/resource_detail.html" -- 2.39.5