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 %}
+
+ {{ line.description }}: |
+ {{ line.data }} |
+
+ {% endfor %}
+
+
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):