From 074db421e702cb7b13496c532656296f2684295f Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Thu, 12 Feb 2015 16:47:15 +0100 Subject: [PATCH] Fix performance and keywords copy during item copy --- telemeta/models/item.py | 1 - .../templates/telemeta/mediaitem_detail.html | 2 +- telemeta/views/item.py | 23 +++++++++++++++---- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/telemeta/models/item.py b/telemeta/models/item.py index db2417af..832f17f7 100644 --- a/telemeta/models/item.py +++ b/telemeta/models/item.py @@ -475,7 +475,6 @@ class MediaItemIdentifier(Identifier): unique_together = ('identifier', 'item') - class MediaPart(MediaResource): "Describe an item part" element_type = 'part' diff --git a/telemeta/templates/telemeta/mediaitem_detail.html b/telemeta/templates/telemeta/mediaitem_detail.html index 312c2214..4e2d3d20 100644 --- a/telemeta/templates/telemeta/mediaitem_detail.html +++ b/telemeta/templates/telemeta/mediaitem_detail.html @@ -216,7 +216,7 @@ {% else %} -
+
{% trans "You don't have access to the media of this item." %} {% trans "Please contact the administrators to get more rights." %} {% trans "Click here" %}
diff --git a/telemeta/views/item.py b/telemeta/views/item.py index 444c6ee8..cfa5432e 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -815,11 +815,27 @@ class ItemCopyView(ItemAddView): template_name = 'telemeta/mediaitem_edit.html' def get_initial(self): - return model_to_dict(self.get_object()) + return model_to_dict(self.get_object()) + + def forms_valid(self, form, inlines): + messages.info(self.request, ugettext_lazy("You have successfully updated your item.")) + item = form.save() + item.set_revision(self.request.user) + if not MediaItemPerformance.objects.filter(media_item=item): + for performance in MediaItemPerformance.objects.filter(media_item=self.get_object()): + performance.pk = None + performance.id = None + performance.media_item = item + performance.save() + if not MediaItemKeyword.objects.filter(item=item): + for keyword in MediaItemKeyword.objects.filter(item=self.get_object()): + keyword.pk = None + keyword.id = None + keyword.item = item + keyword.save() + return super(ItemCopyView, self).forms_valid(form, inlines) def get_success_url(self): - #FIXME should be in form_valid but doesn't work with extra_views - self.get_object().set_revision(self.request.user) return reverse_lazy('telemeta-item-detail', kwargs={'public_id':self.object.code}) def get_context_data(self, **kwargs): @@ -1059,7 +1075,6 @@ class DublinCoreToFormatMetadata(object): return metadata - class ItemMarkerJsonView(View): model = MediaItem -- 2.39.5