def __init__(self, *args, **kwargs):
super(DateTimeField, self).__init__(*args, **normalize_field(kwargs, '0000-00-00 00:00'))
+ def get_db_prep_value(self, value):
+ if value is None and not self.null:
+ return '0000-00-00 00:00'
+
+ return super(DateTimeField, self).get_db_prep_value(value)
+
class FileField(models.FileField):
"""FileField normalized with normalize_field()"""
def __init__(self, *args, **kwargs):
super(DateField, self).__init__(*args, **normalize_field(kwargs, '0000-00-00'))
+ def get_db_prep_value(self, value):
+ if value is None and not self.null:
+ return '0000-00-00'
+
+ return super(DateField, self).get_db_prep_value(value)
+
class RequiredFieldError(Exception):
def __init__(self, model, field):
self.model = model
location_comment = CharField(_('location details'))
ethnic_group = WeakForeignKey('EthnicGroup', related_name="items",
verbose_name=_('population / social group'))
- title = CharField(_('title'), required=True)
+ title = CharField(_('title'))
alt_title = CharField(_('original title / translation'))
author = CharField(_('author'))
vernacular_style = WeakForeignKey('VernacularStyle', related_name="items",
return False
def save(self, force_insert=False, force_update=False):
- if not self.code:
- raise RequiredFieldError(self, self._meta.get_field('code'))
- if not self.is_valid_code(self.code):
+ if self.code and not self.is_valid_code(self.code):
raise MediaInvalidCodeError("%s is not a valid item code for collection %s"
% (self.code, self.collection.code))
super(MediaItem, self).save(force_insert, force_update)
{% endblock %}
{% block tracklist %}
-{% for item in collection.ordered_items %}
+{% for item in collection.items.all %}
<track>
<title>{{ item }}</title>
<meta rel="type">mp3</meta>
<location>http://{{ host }}{% url telemeta-item-export item.public_id,"mp3" %}</location>
- <duration>{{ item.get_duration|mul:1000 }}</duration>
+ <duration>{{ item.computed_duration.as_seconds|mul:1000 }}</duration>
<info>http://{{ host }}{% url telemeta-item-detail item.public_id %}</info>
</track>
{% endfor %}
<td>
{% if collection.recorded_from_year %}
{{ collection.recorded_from_year }}
- {% if collection.recorded_to_year and collection.recorded_to_year != collection.recorded_from_year %}
+ {% if collection.recorded_to_year and not collection.recorded_to_year|equals:collection.recorded_from_year %}
- {{ collection.recorded_to_year }}
{% endif %}
{% endif %}
soundManager.flashVersion = 9;\r
soundManager.debugMode = false;\r
set_player_image_url('{% url telemeta-item-visualize item.public_id,visualizer_id,"WIDTH","HEIGHT" %}');\r
-load_player({{ item.get_duration }});\r
+load_player({{ item.computed_duration.as_seconds }});\r
</script>\r
\r
{% endblock %}\r
import telemeta
from telemeta.models import MediaItem, Location, MediaCollection
+from telemeta.models import dublincore
from telemeta.core import Component, ExtensionPoint
from telemeta.export import *
from telemeta.visualization import *
item = MediaItem.objects.get(public_id=public_id)
infile = item.file.path
- metadata = item.to_dublincore().flatten()
+ metadata = dublincore.express_item(item).flatten()
stream = exporter.process(item.id, infile, metadata)
response = HttpResponse(stream, mimetype = mime_type)