From f88baa3e29b72050b3e4899adf2db046ff734d41 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Wed, 5 Feb 2020 14:00:44 +0100 Subject: [PATCH] Added some Information for audio userview, stringtools integrated --- templates/pygal/audio.html | 20 ++++++++++++----- templates/pygal/infoview.html | 2 ++ views/__init__.py | 2 ++ views/infoviews.py | 9 ++++---- views/userviews.py | 42 ++++++++++++++--------------------- 5 files changed, 40 insertions(+), 35 deletions(-) diff --git a/templates/pygal/audio.html b/templates/pygal/audio.html index c344cbc..e4a0a35 100644 --- a/templates/pygal/audio.html +++ b/templates/pygal/audio.html @@ -13,11 +13,21 @@
{% with bar=item.tagbar slim=True %}{% include 'themes/'|add:settings.page_theme|add:'/menubar.html' %}{% endwith %}
-

{{ item.heading }}

- +

{{ item.heading }}

+ + + + {% for line in item.audio_information %} + + + + + {% endfor %} + +
{{ line.description }}:{{ line.data }}
diff --git a/templates/pygal/infoview.html b/templates/pygal/infoview.html index 3ca3a64..6caf6bc 100644 --- a/templates/pygal/infoview.html +++ b/templates/pygal/infoview.html @@ -12,6 +12,7 @@ {% endfor %} + {% if item.item_information|length > 0 %}

{{ heading.information }}

@@ -23,6 +24,7 @@ {% endfor %}
+ {% endif %} {% if item.database_information|length > 0 %}

{{ heading.database }}

diff --git a/views/__init__.py b/views/__init__.py index fab3948..38f40c6 100644 --- a/views/__init__.py +++ b/views/__init__.py @@ -106,6 +106,8 @@ def pygal_download(request, datatype, rel_path): # Create the Archive from fp_list # flat = pygal.is_flat(request) + if not os.path.exists(settings.TEMP_ROOT): + fstools.mkdir(settings.TEMP_ROOT) temp = tempfile.TemporaryFile(dir=settings.TEMP_ROOT) archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_STORED) for fp in fp_list: diff --git a/views/infoviews.py b/views/infoviews.py index 323f6f3..7202105 100644 --- a/views/infoviews.py +++ b/views/infoviews.py @@ -1,7 +1,7 @@ from django.utils.translation import gettext as _ -import fractions import geo from ..models import get_item_type, TYPE_AUDIO, TYPE_FOLDER, TYPE_IMAGE, TYPE_VIDEO +import stringtools from .userviews import base_view as base_userview @@ -82,8 +82,7 @@ class image_view(base_view): c = geo.gps.coordinate(**gps_data) rv.append({'description': _('GPS'), 'data': str(c), 'url': geo.osm.landmark_link(c)}) rv.append({'description': _('Exposure Program'), 'data': self.item.item_data.exposure_program, 'url': None}) - f = fractions.Fraction(self.item.item_data.exposure_time).limit_denominator() - rv.append({'description': _('Exposure Time'), 'data': '%d/%d s' % (f.numerator, f.denominator), 'url': None}) + rv.append({'description': _('Exposure Time'), 'data': '%ss' % (stringtools.frac_repr(self.item.item_data.exposure_time)), 'url': None}) rv.append({'description': _('ISO'), 'data': self.item.item_data.iso, 'url': None}) rv.append({'description': _('Focal Length'), 'data': self.item.item_data.focal_length, 'url': None}) rv.append({'description': _('Apeture'), 'data': self.item.item_data.f_number, 'url': None}) @@ -117,7 +116,7 @@ class audio_view(base_view): rv.append({'description': _('Year'), 'data': self.item.item_data.year, 'url': None}) rv.append({'description': _('Title'), 'data': self.item.item_data.title, 'url': None}) rv.append({'description': _('Track'), 'data': self.item.item_data.track, 'url': None}) - rv.append({'description': _('Duration'), 'data': self.__duration_txt__(self.item.item_data.duration), 'url': None}) + rv.append({'description': _('Duration'), 'data': stringtools.time_repr(self.item.item_data.duration), 'url': None}) rv.append({'description': _('Genre'), 'data': self.item.item_data.genre, 'url': None}) - rv.append({'description': _('Bitrate'), 'data': self.__size_txt__(self.item.item_data.bitrate), 'url': None}) + rv.append({'description': _('Bitrate'), 'data': stringtools.physical_value_repr(self.item.item_data.bitrate), 'url': None}) return rv diff --git a/views/userviews.py b/views/userviews.py index 6174081..1b4545b 100644 --- a/views/userviews.py +++ b/views/userviews.py @@ -7,8 +7,8 @@ import os import pygal from ..queries import search_result_query import random +import stringtools import themes -import time ADDTAG_ENTRY = 'addtag-main' INFOVIEW_ENTRY = 'infoview-main' @@ -85,7 +85,7 @@ class base_view(object): rv.append({'description': _('Name'), 'data': os.path.basename(full_path), 'url': None}) rv.append({'description': _('Creation Time'), 'data': self.item.item_data.formatted_datetime, 'url': None}) rv.append({'description': _('Path'), 'data': os.path.dirname(full_path), 'url': None}) - rv.append({'description': _('Size'), 'data': self.__size_txt__(self.item.item_data.size) + 'B', 'url': None}) + rv.append({'description': _('Size'), 'data': stringtools.physical_value_repr(self.item.item_data.size, 'B'), 'url': None}) rv.append({'description': _('UID'), 'data': self.item.current_uid(), 'url': None}) return rv @@ -241,29 +241,6 @@ class base_view(object): def date_txt(self): return self.item.item_data.formatted_datetime - def __size_txt__(self, size): - unit = { - 0: '', - 1: 'k', - 2: 'M', - 3: 'G', - 4: 'T', - } - u = 0 - while u < 4 and size > 1000.: - u += 1 - size /= 1000. - if size < 100.: - return '%.2f %s' % (size, unit.get(u, '?')) - else: - return '%.1f %s' % (size, unit.get(u, '?')) - - def __duration_txt__(self, duration): - if duration >= 3600: - return time.strftime('%H:%M:%S', time.gmtime(duration)) - else: - return time.strftime('%M:%S', time.gmtime(duration)) - def __parent__(self): if pygal.is_searchview(self.request): return query_view(self.request, search_result_query(self.request)) @@ -528,6 +505,21 @@ class audio_view(base_view): def heading(self): return '%02d - %s' % (self.item.item_data.track, self.item.item_data.title) + @property + def audio_information(self): + rv = [] + entries = ( + (_('Artist'), self.item.artist_c), + (_('Album'), self.item.album_c), + (_('Year'), self.item.year_c), + (_('Title'), self.item.title_c), + (_('Duration'), stringtools.time_repr(self.item.duration_c)), + ) + for description, data in entries: + if data is not None: + rv.append({'description': description, 'data': data, 'url': None}) + return rv + class other_view(base_view): def __init__(self, *args, **kwargs):