]> git.parisson.com Git - telemeta.git/commitdiff
Add more metadata to item CSV export
authorGuillaume Pellerin <yomguy@parisson.com>
Tue, 13 Jan 2015 01:16:51 +0000 (02:16 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Tue, 13 Jan 2015 01:16:51 +0000 (02:16 +0100)
Fix revisions creation for collection and item type

telemeta/models/media.py
telemeta/views/collection.py
telemeta/views/core.py
telemeta/views/item.py

index 93ea45ad4911cff0a0ad77ae959aad2d4e66365c..eb147b91df25f5b4a67e572688361de8adf5bd08 100644 (file)
@@ -353,20 +353,13 @@ class MediaCollection(MediaResource):
         else:
             return ''
 
-    def last_revision(self):
-        revisions = Revision.objects.filter(element_type=self.element_type, element_id = self.id)
-        if revisions:
-            return revisions[0]
-        else:
-            return Revision()
-
     def to_dict_with_more(self):
         metadata = self.to_dict()
         metadata['url'] = get_full_url(reverse('telemeta-collection-detail', kwargs={'public_id':self.pk}))
         metadata['doc_status'] = self.document_status()
         metadata['countries'] = ';'.join([location.name for location in self.main_countries()])
         metadata['ethnic_groups'] = ';'.join([group.value for group in self.ethnic_groups()])
-        metadata['last_modification_date'] = unicode(self.last_revision().time)
+        metadata['last_modification_date'] = unicode(self.get_revision().time)
         metadata['computed_duration'] = unicode(self.computed_duration())
         metadata['computed_size'] = unicode(self.computed_size())
         metadata['number_of_items'] = unicode(self.items.all().count())
@@ -469,7 +462,6 @@ class MediaItem(MediaResource):
 
     def keywords(self):
         return ContextKeyword.objects.filter(item_relations__item = self)
-
     keywords.verbose_name = _('keywords')
 
     @property
@@ -570,9 +562,43 @@ class MediaItem(MediaResource):
 
     def to_dict_with_more(self):
         metadata = self.to_dict()
-        metadata['url'] = reverse_lazy('telemeta-item-detail', kwargs={'public_id':self.pk})
+        metadata['url'] = get_full_url(reverse('telemeta-item-detail', kwargs={'public_id':self.pk}))
+        metadata['last_modification_date'] = unicode(self.get_revision().time)
+        # metadata['computed_duration'] = unicode(self.computed_duration())
+        metadata['computed_size'] = unicode(self.size())
+
+        keywords = []
+        for keyword in self.keywords():
+            keywords.append(keyword.name)
+        metadata['keywords'] = ';'.join(keywords)
+
+        i = 0
+        for media in self.related.all():
+            metadata['related_media_title' + '_' + str(i)] = media.title
+            if media.url:
+                metadata['related_media_url' + '_' + str(i)] = media.url
+            elif media.url:
+                metadata['related_media_url' + '_' + str(i)] = get_full_url(reverse('telemeta-collection-related',
+                                            kwargs={'public_id': self.public_id, 'media_id': media.id}))
+            i += 1
+
+        i = 0
+        for performance in self.performances.all():
+            metadata['instrument_name' + '_' + str(i)] = performance.instrument.name
+            metadata['vernacular_name' + '_' + str(i)] = performance.alias.name
+            metadata['musicians' + '_' + str(i)] = performance.musicians
+            i += 1
+
+        i = 0
+        for indentifier in self.identifiers.all():
+            metadata['identifier' + '_' + str(i)] = identifier.identifier
+            metadata['identifier_type' + '_' + str(i)] = identifier.type
+            metadata['identifier_date_last' + '_' + str(i)] = unicode(identifier.date_last)
+            metadata['identifier_notes' + '_' + str(i)] = identifier.notes
+            i += 1
         return metadata
 
+
 class MediaItemRelated(MediaRelated):
     "Item related media"
 
index 3637efd4b6d42f6e82576e41a54ecc45d1f692a1..1f3ea11bb57a839215600a13c5755b426e400bce 100644 (file)
@@ -311,13 +311,13 @@ class CollectionEditView(CollectionViewMixin, UpdateWithInlinesView):
     template_name = 'telemeta/collection_edit.html'
     inlines = [CollectionRelatedInline, CollectionIdentifierInline]
 
-    def form_valid(self, form):
-        messages.info(self.request, _("You have successfully updated your collection."))
-        return super(CollectionEditView, self).form_valid(form)
+    def forms_valid(self, form, inlines):
+        messages.info(self.request, ugettext_lazy("You have successfully updated your collection."))
+        obj = form.save()
+        obj.set_revision(self.request.user)
+        return super(CollectionEditView, 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-collection-detail', kwargs={'public_id':self.kwargs['public_id']})
 
     def get_context_data(self, **kwargs):
@@ -336,6 +336,12 @@ class CollectionAddView(CollectionViewMixin, CreateWithInlinesView):
     template_name = 'telemeta/collection_add.html'
     inlines = [CollectionRelatedInline, CollectionIdentifierInline]
 
+    def forms_valid(self, form, inlines):
+        messages.info(self.request, ugettext_lazy("You have successfully added your collection."))
+        obj = form.save()
+        obj.set_revision(self.request.user)
+        return super(CollectionAddView, self).forms_valid(form, inlines)
+
     def get_success_url(self):
         return reverse_lazy('telemeta-collection-detail', kwargs={'public_id':self.object.code})
 
@@ -351,9 +357,6 @@ class CollectionCopyView(CollectionAddView):
     def get_initial(self):
         return model_to_dict(self.get_object())
 
-    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()
index a9684f54b9d6c075bbe4fe07b41779a6fcc48984..335191f68e8a68380d3d0db2a30e5118b16758fc 100644 (file)
@@ -72,6 +72,7 @@ from django.core.urlresolvers import reverse, reverse_lazy
 from django.contrib.contenttypes.models import ContentType
 from django.views.decorators.http import condition
 from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ugettext_lazy
 from django.forms.models import model_to_dict
 from django.views.generic.edit import DeletionMixin, BaseDeleteView
 from django.contrib.sites.models import Site
index 6088cbeaea1a2167e0d5349a5afb4b067c7dec1f..b9b1a961d7d6231226b1acfc977c8d5e1bd43095 100644 (file)
@@ -745,11 +745,15 @@ class ItemEditView(ItemViewMixin, UpdateWithInlinesView):
     form_class = MediaItemForm
     template_name = 'telemeta/mediaitem_edit.html'
 
-    def form_valid(self, form):
-        messages.info(self.request, _("You have successfully updated your item."))
-        return super(ItemEditView, self).form_valid(form)
+    def forms_valid(self, form, inlines):
+        messages.info(self.request, ugettext_lazy("You have successfully updated your item."))
+        obj = form.save()
+        obj.set_revision(self.request.user)
+        return super(ItemEditView, 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):
@@ -789,7 +793,15 @@ class ItemAddView(ItemViewMixin, CreateWithInlinesView):
                 item.code = auto_code(collection)
         return model_to_dict(item)
 
+    def forms_valid(self, form, inlines):
+        messages.info(self.request, ugettext_lazy("You have successfully added your item."))
+        obj = form.save()
+        obj.set_revision(self.request.user)
+        return super(ItemAddView, 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})
 
     @method_decorator(permission_required('telemeta.add_mediaitem'))
@@ -806,6 +818,8 @@ class ItemCopyView(ItemAddView):
         return model_to_dict(self.get_object())
 
     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):