From fac4a3b0db2f89ccb1dd9747e0ce5ecbea73e8c1 Mon Sep 17 00:00:00 2001 From: yomguy Date: Tue, 7 Jun 2011 11:24:41 +0200 Subject: [PATCH] Add MediaItemAnalysis object to store TimeSide analysis (controller to come) DC URI of an element is now its URL. Need 2 MORE settings : TELEMETA_OAI_HOST = the default host name to provide dublin core identifier through the OAI data provider TELEMETA_OAI_REPOSITORY_NAME = the description of the OAI data provider --- INSTALL.rst | 3 +++ telemeta/interop/oai.py | 6 +++--- telemeta/models/dublincore.py | 14 ++++++-------- telemeta/models/media.py | 16 +++++++++++++++- telemeta/web/base.py | 2 +- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/INSTALL.rst b/INSTALL.rst index fe3f402e..bb28cbfc 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -155,6 +155,9 @@ Add the following variables: EMAIL_HOST = your default SMTP server DEFAULT_FROM_EMAIL = the default sending email address + TELEMETA_OAI_HOST = the default host name to provide dublin core identifier through the OAI data provider + TELEMETA_OAI_REPOSITORY_NAME = the description of the OAI data provider + Just paste the lines below:: LOGIN_URL = '/login' diff --git a/telemeta/interop/oai.py b/telemeta/interop/oai.py index 3316e92d..90e464e5 100644 --- a/telemeta/interop/oai.py +++ b/telemeta/interop/oai.py @@ -400,9 +400,9 @@ class Response(object): dc_id, dc = self.parse_dc(dc) if dc_id == None: raise Exception("DataSource.get_record() didn't provide an 'identifier' dublin core element") - elif dc_id != id: - raise Exception("DataSource.get_record() returned an 'identifier' dublin core element " - "which is different from the requested identifier") +# elif dc_id != id: +# raise Exception("DataSource.get_record() returned an 'identifier' dublin core element " +# "which is different from the requested identifier") self.set_attributes(self.request, {'identifier': id, 'metadataPrefix': 'oai_dc'}) container = self.root.appendChild(self.doc.createElement(self.verb)) diff --git a/telemeta/models/dublincore.py b/telemeta/models/dublincore.py index 439e7c41..5fd723ef 100644 --- a/telemeta/models/dublincore.py +++ b/telemeta/models/dublincore.py @@ -118,9 +118,11 @@ class Date(Element): def __init__(self, start, end=None, refinement=None): value = '' if start: - value = str(start) - if end and start != end: - value = 'start=' + value + '; end=' + unicode(end) + ';' + value = unicode(start) + elif end: + value = unicode(end) + else: + value = '' super(Date, self).__init__('date', value, refinement) def media_access_rights(media): @@ -131,11 +133,7 @@ def media_access_rights(media): return 'private' def media_identifier(media): - if media.code: - return media.element_type + ':' + media.code - elif media.old_code: - return media.element_type + ':' + media.old_code - return None + return 'http://' + settings.TELEMETA_OAI_HOST + '/' + media.element_type + 's/' + unicode(media.id) def express_collection(collection): "Express a collection as a Dublin Core resource" diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 09ae77d3..ad922f35 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -362,6 +362,20 @@ class MediaItemPerformanceForm(ModelForm): super(MediaItemPerformanceForm, self).__init__(*args, **kwds) self.fields['instrument'].queryset = Instrument.objects.order_by('name') self.fields['alias'].queryset = InstrumentAlias.objects.order_by('name') + +class MediaItemAnalysis(ModelCore): + "Item analysis result computed by TimeSide" + + element_type = 'analysis' + item = ForeignKey('MediaItem', related_name="analysis", verbose_name=_('item')) + analyzer_id = CharField(_('id'), required=True) + analyzer_name = CharField(_('name')) + analyzer_value = CharField(_('value')) + analyzer_unit = CharField(_('unit')) + + class Meta(MetaCore): + db_table = 'media_analysis' + class MediaPart(MediaResource): "Describe an item part" @@ -378,7 +392,7 @@ class MediaPart(MediaResource): return self.title class Playlist(ModelCore): - "Item or collection playlist" + "Item, collection or marker playlist" element_type = 'playlist' public_id = CharField(_('public_id'), required=True) author = ForeignKey(User, related_name="playlists", db_column="author") diff --git a/telemeta/web/base.py b/telemeta/web/base.py index b744c832..6e5a8f60 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -864,7 +864,7 @@ class WebView(object): url = 'http://' + request.META['HTTP_HOST'] + request.path datasource = TelemetaOAIDataSource() admin = settings.ADMINS[0][1] - provider = oai.DataProvider(datasource, "Telemeta", url, admin) + provider = oai.DataProvider(datasource, settings.TELEMETA_OAI_REPOSITORY_NAME, url, admin) args = request.GET.copy() args.update(request.POST) return HttpResponse(provider.handle(args), mimetype='text/xml') -- 2.39.5