From 5bf08b0b2e3d6d7665656ff120284e6bf444e145 Mon Sep 17 00:00:00 2001 From: olivier <> Date: Thu, 11 Feb 2010 16:44:17 +0000 Subject: [PATCH] various fixes related to new models and Django compatibility --- telemeta/models/core.py | 12 ++++++++++++ telemeta/models/media.py | 6 ++---- .../templates/telemeta_default/collection_xspf.xml | 4 ++-- .../telemeta_default/inc/collection_list.html | 2 +- .../templates/telemeta_default/mediaitem_detail.html | 2 +- telemeta/web/base.py | 3 ++- 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/telemeta/models/core.py b/telemeta/models/core.py index f558e2da..fef47ce6 100644 --- a/telemeta/models/core.py +++ b/telemeta/models/core.py @@ -298,6 +298,12 @@ class DateTimeField(models.DateTimeField): 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()""" @@ -316,6 +322,12 @@ class DateField(models.DateField): 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 diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 2e28493b..3796b623 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -223,7 +223,7 @@ class MediaItem(MediaResource): 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", @@ -274,9 +274,7 @@ class MediaItem(MediaResource): 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) diff --git a/telemeta/templates/telemeta_default/collection_xspf.xml b/telemeta/templates/telemeta_default/collection_xspf.xml index 09ad5867..317284b7 100644 --- a/telemeta/templates/telemeta_default/collection_xspf.xml +++ b/telemeta/templates/telemeta_default/collection_xspf.xml @@ -10,12 +10,12 @@ {% endblock %} {% block tracklist %} -{% for item in collection.ordered_items %} +{% for item in collection.items.all %} {{ item }} mp3 http://{{ host }}{% url telemeta-item-export item.public_id,"mp3" %} - {{ item.get_duration|mul:1000 }} + {{ item.computed_duration.as_seconds|mul:1000 }} http://{{ host }}{% url telemeta-item-detail item.public_id %} {% endfor %} diff --git a/telemeta/templates/telemeta_default/inc/collection_list.html b/telemeta/templates/telemeta_default/inc/collection_list.html index 11995907..a245cd9b 100644 --- a/telemeta/templates/telemeta_default/inc/collection_list.html +++ b/telemeta/templates/telemeta_default/inc/collection_list.html @@ -26,7 +26,7 @@ {% 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 %} diff --git a/telemeta/templates/telemeta_default/mediaitem_detail.html b/telemeta/templates/telemeta_default/mediaitem_detail.html index 1fc6cdfb..0a884e16 100644 --- a/telemeta/templates/telemeta_default/mediaitem_detail.html +++ b/telemeta/templates/telemeta_default/mediaitem_detail.html @@ -20,7 +20,7 @@ soundManager.url = '{% url telemeta-swf "./" %}'; soundManager.flashVersion = 9; soundManager.debugMode = false; set_player_image_url('{% url telemeta-item-visualize item.public_id,visualizer_id,"WIDTH","HEIGHT" %}'); -load_player({{ item.get_duration }}); +load_player({{ item.computed_duration.as_seconds }}); {% endblock %} diff --git a/telemeta/web/base.py b/telemeta/web/base.py index fbf76bc1..f6ace5e3 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -46,6 +46,7 @@ from django.conf import settings 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 * @@ -153,7 +154,7 @@ class WebView(Component): 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) -- 2.39.5