]> git.parisson.com Git - telemeta.git/commitdiff
Merge branch 'dev' into crem2
authorGuillaume Pellerin <yomguy@parisson.com>
Wed, 10 Dec 2014 17:06:57 +0000 (18:06 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Wed, 10 Dec 2014 17:06:57 +0000 (18:06 +0100)
1  2 
telemeta/locale/de/LC_MESSAGES/django.po
telemeta/templates/telemeta/base.html
telemeta/views/core.py
telemeta/views/item.py

index 43f615220d7b3a159fe254a477797031caf32935,0a7b45478773eeef92f23f2ede12c7e64237bcca..29b9bf62c4ca253e49cd04972365925d4b9f4915
@@@ -191,10 -203,13 +203,14 @@@ msgstr "Aufnahmesystem
  msgid "tape thickness (um)"
  msgstr "Banddicke (um)"
  
+ #: models/format.py:82
+ msgid "tape vendor"
+ msgstr "Bandmarke"
  #: models/format.py:83
 +#, fuzzy
  msgid "tape reference"
 -msgstr "Bandreferenz"
 +msgstr "publizierte Referenzen"
  
  #: models/format.py:84
  msgid "sticker presence"
@@@ -627,19 -611,11 +612,11 @@@ msgstr "Auswahl von SammlerIn
  msgid "collector as in collection"
  msgstr "SammlerIn gleich wie bei Sammlung"
  
- #: models/media.py:408
- msgid "digitization date"
- msgstr "Datum der Digitalisierung"
- #: models/media.py:409
- msgid "publishing date"
- msgstr "Datum der Publikation"
- #: models/media.py:410
+ #: models/media.py:392
  msgid "creator reference"
 -msgstr "Referenz von ErzeugerIn"
 +msgstr "Referenz"
  
- #: models/media.py:411
+ #: models/media.py:393
  msgid "published references"
  msgstr "publizierte Referenzen"
  
@@@ -1114,13 -1131,14 +1132,14 @@@ msgid "Administration
  msgstr "Verwaltung"
  
  #: templates/telemeta/admin.html:14 templates/telemeta/admin_general.html:5
- #: templates/telemeta/base.html:130 templates/telemeta/collection_edit.html:20
- #: templates/telemeta/mediaitem_edit.html:21
+ #: templates/telemeta/collection_edit.html:36
+ #: templates/telemeta/mediaitem_edit.html:87
+ #: templates/telemeta/resource_edit.html:38
  msgid "General"
 -msgstr "allgemein"
 +msgstr "Allgemein"
  
  #: templates/telemeta/admin_enumerations.html:6
- #: templates/telemeta/base.html:131 templates/telemeta/enumeration_edit.html:7
+ #: templates/telemeta/base.html:120 templates/telemeta/enumeration_edit.html:7
  msgid "Enumerations"
  msgstr "Aufzählung"
  
index 02b89a0c2f92cf88d0f51951a0692311fb41f238,9510f5fb9055d5b9476b5caf7f9c90922d7b7e0b..7f518ae05f2f89f8d1233bd0a805220eba01be1a
  
  <div id="auth_info">
  {% if user.is_authenticated %}
-   <img src="{{ STATIC_URL }}telemeta/images/user.png" alt="user" style="vertical-align:middle" />
-   {% trans "Welcome" %},
+ <img src="{{ STATIC_URL }}telemeta/images/user.png" alt="user" style="vertical-align:middle" />
+ {% trans "Welcome" %},
+ <a href="{% url "telemeta-profile-detail" user.username %}">
  {% if user.first_name or user.last_name %}
-   {{ user.first_name }} {{ user.last_name }}
+ {{ user.first_name }} {{ user.last_name }}</a> |
  {% else %}
 -{{ user.username }} |
 +  {{ user.username }}
 +{% endif %}
 +{% if perms.telemeta.can_view_users_and_profiles %}
 + | <a href="{% url telemeta-profile-detail user.username %}">{% trans "Profile" %}</a>
  {% endif %}
- {% if not perms.telemeta.can_not_view_users_and_profiles %}
- <a href="{% url "telemeta-profile-detail" user.username %}">{% trans "Profile" %}</a> |
- {% endif %}
  <a href="{% url "telemeta-flatpage" "help" %}">{% trans "Help" %}</a> |
  <a href="{% url "telemeta-logout" %}">{% trans "Sign out" %}
  <img src="{{ STATIC_URL }}telemeta/images/logout.png" alt="logout" style="vertical-align:middle" /></a>
index 82fe1f75a5428ccf76810286861a7001a51764ad,6979598a0b41061175fb911c1878b2b38ed74c80..58911bc70aab277eacc24aa4d58e98dc49ce324f
@@@ -290,3 -278,9 +289,9 @@@ def get_room(content_type=None, id=None
          room = rooms[0]
      return room
  
 -        return None
+ def get_kwargs_or_none(key, kwargs):
+     if key in kwargs.keys():
+         return kwargs[key]
+     else:
++        return None
index a5acc696c760dd7de865191ede133e0febebf625,6c5d69db1e20272b0acc333e581c4a4c075a1dd4..82816baa24538e98692898e788f8a2481bbe456e
@@@ -754,14 -776,174 +779,174 @@@ class ItemAddView(ItemViewMixin, Create
  class ItemCopyView(ItemAddView):
  
      form_class = MediaItemForm
-     template_name = 'telemeta/mediaitem_add.html'
-     inlines = [ItemRelatedInline, ItemPerformanceInline, ItemKeywordInline,
-                 ItemFormatInline, ItemIdentifierInline]
+     template_name = 'telemeta/mediaitem_edit.html'
  
      def get_initial(self):
-         resource = self.model.objects.get(code=self.kwargs['public_id'])
-         return model_to_dict(resource)
+         return model_to_dict(self.get_object())
  
      def get_success_url(self):
-         return reverse_lazy('telemeta-items')
+         return reverse_lazy('telemeta-item-detail', kwargs={'public_id':self.object.code})
+     def get_context_data(self, **kwargs):
+         context = super(ItemCopyView, self).get_context_data(**kwargs)
+         item = self.get_object()
+         context['item'] = item
+         context['access'] = get_item_access(item, self.request.user)
+         context['previous'], context['next'] = self.item_previous_next(item)
+         #FIXME
+         context['mime_type'] = 'audio/mp3'
+         context['export_formats'] = self.get_export_formats()
+         context['visualizers'] = self.get_graphers()
+         context['audio_export_enabled'] = self.export_enabled
+         context['auto_zoom'] = True
+         return context
+ class ItemDetailView(ItemViewMixin, DetailView):
+     template_name = 'telemeta/mediaitem_detail.html'
+     def item_analyze(self, item):
+         analyses = item.analysis.all()
+         mime_type = ''
+         if analyses:
+             for analysis in analyses:
+                 if not item.approx_duration and analysis.analyzer_id == 'duration':
+                     value = analysis.value
+                     time = value.split(':')
+                     time[2] = time[2].split('.')[0]
+                     time = ':'.join(time)
+                     item.approx_duration = time
+                     item.save()
+                 if analysis.analyzer_id == 'mime_type':
+                     mime_type = analysis.value
+         else:
+             analyzers = []
+             analyzers_sub = []
+             graphers_sub = []
+             source = item.get_source()
+             if source:
+                 decoder  = timeside.decoder.file.FileDecoder(source)
+                 pipe = decoder
+                 for analyzer in self.value_analyzers:
+                     subpipe = analyzer()
+                     analyzers_sub.append(subpipe)
+                     pipe = pipe | subpipe
+                 default_grapher = self.get_grapher(self.default_grapher_id)
+                 for size in self.default_grapher_sizes:
+                     width = size.split('x')[0]
+                     height = size.split('x')[1]
+                     image_file = '.'.join([item.public_id, self.default_grapher_id, size.replace('x', '_'), 'png'])
+                     path = self.cache_data.dir + os.sep + image_file
+                     graph = default_grapher(width = int(width), height = int(height))
+                     graphers_sub.append({'graph' : graph, 'path': path})
+                     pipe = pipe | graph
+                 pipe.run()
+                 for grapher in graphers_sub:
+                     grapher['graph'].watermark('timeside', opacity=.6, margin=(5,5))
+                     f = open(grapher['path'], 'w')
+                     grapher['graph'].render(grapher['path'])
+                     f.close()
+                 mime_type = mimetypes.guess_type(source)[0]
+                 analysis = MediaItemAnalysis(item=item, name='MIME type',
+                                              analyzer_id='mime_type', unit='', value=mime_type)
+                 analysis.save()
+                 analysis = MediaItemAnalysis(item=item, name='Channels',
+                                              analyzer_id='channels',
+                                              unit='', value=decoder.input_channels)
+                 analysis.save()
+                 analysis = MediaItemAnalysis(item=item, name='Samplerate',
+                                              analyzer_id='samplerate', unit='Hz',
+                                              value=unicode(decoder.input_samplerate))
+                 analysis.save()
+                 analysis = MediaItemAnalysis(item=item, name='Resolution',
+                                              analyzer_id='resolution', unit='bits',
+                                              value=unicode(decoder.input_width))
+                 analysis.save()
+                 analysis = MediaItemAnalysis(item=item, name='Duration',
+                                              analyzer_id='duration', unit='s',
+                                              value=unicode(datetime.timedelta(0,decoder.input_duration)))
+                 analysis.save()
+                 analysis = MediaItemAnalysis(item=item, name='Size',
+                                              analyzer_id='size', unit='', value=item.size())
+                 analysis.save()
+                 for analyzer in analyzers_sub:
+                     for key in analyzer.results.keys():
+                         result = analyzer.results[key]
+                         value = result.data_object.value
+                         if value.shape[0] == 1:
+                             value = value[0]
+                         analysis = MediaItemAnalysis(item=item, name=result.name,
+                                 analyzer_id=result.id, unit=result.unit, value = unicode(value))
+                         analysis.save()
+ #                FIXME: parse tags on first load
+ #                tags = decoder.tags
+         self.mime_type = mime_type
  
 -        return context
+     def get_context_data(self, **kwargs):
+         context = super(ItemDetailView, self).get_context_data(**kwargs)
+         public_id = get_kwargs_or_none('public_id', self.kwargs)
+         marker_id = get_kwargs_or_none('marker_id', self.kwargs)
+         width = get_kwargs_or_none('width', self.kwargs)
+         height = get_kwargs_or_none('height', self.kwargs)
+         # get item with one of its given marker_id
+         if not public_id and marker_id:
+             marker = MediaItemMarker.objects.get(public_id=marker_id)
+             item_id = marker.item_id
+             item = MediaItem.objects.get(id=item_id)
+         else:
+             item = self.get_object()
+         access = get_item_access(item, self.request.user)
+         previous, next = self.item_previous_next(item)
+         self.item_analyze(item)
+         #FIXME: use mimetypes.guess_type
+         if 'quicktime' in self.mime_type:
+             self.mime_type = 'video/mp4'
+         playlists = get_playlists_names(self.request)
+         related_media = MediaItemRelated.objects.filter(item=item)
+         check_related_media(related_media)
+         revisions = Revision.objects.filter(element_type='item', element_id=item.id).order_by('-time')
+         if revisions:
+             last_revision = revisions[0]
+         else:
+             last_revision = None
+         format = ''
+         if Format.objects.filter(item=item):
+             format = item.format.get()
+         context['item'] = item
+         context['export_formats'] = self.get_export_formats()
+         context['visualizers'] = self.get_graphers()
+         context['auto_zoom'] = self.auto_zoom
+         context['audio_export_enabled'] = self.export_enabled
+         context['previous'] = previous
+         context['next'] = next
+         context['marker'] = marker_id
+         context['playlists'] = playlists
+         context['access'] = access
+         context['width'] = width
+         context['height'] = height
+         context['related_media'] = related_media
+         context['mime_type'] = self.mime_type
+         context['last_revision'] = last_revision
+         context['format'] = format
++        return context