From: olivier <> Date: Mon, 25 Jan 2010 19:08:13 +0000 (+0000) Subject: begin to couple the web view with new CREM models ; junk some leftovers X-Git-Tag: 1.1~579 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=3310b42e40104de14e3be168a494951f455256a5;p=telemeta.git begin to couple the web view with new CREM models ; junk some leftovers --- diff --git a/telemeta/admin.py b/telemeta/admin.py deleted file mode 100644 index ae8784ab..00000000 --- a/telemeta/admin.py +++ /dev/null @@ -1,33 +0,0 @@ -from django.contrib import admin -from telemeta.models import MediaCollection, MediaItem, MediaPart, MediaCore -from django import forms - -class MediaCoreAdminForm(forms.ModelForm): - def clean(self): - data = forms.ModelForm.clean(self) - id = None - if data.has_key("id"): - id = data["id"] = data["id"].strip() - if not id: - raise forms.ValidationError(u"id field is required") - if not MediaCore.is_well_formed_id(id): - raise forms.ValidationError(u"'%s' is not a well-formed id" % id) - return data - -class MediaCollectionAdminForm(MediaCoreAdminForm): - class Meta: - model = MediaCollection - -class MediaItemAdminForm(MediaCoreAdminForm): - class Meta: - model = MediaItem - -class MediaCollectionAdmin(admin.ModelAdmin): - form = MediaCollectionAdminForm - -class MediaItemAdmin(admin.ModelAdmin): - form = MediaItemAdminForm - -admin.site.register(MediaCollection, MediaCollectionAdmin) -admin.site.register(MediaItem, MediaItemAdmin) -admin.site.register(MediaPart) diff --git a/telemeta/models.py b/telemeta/models.py deleted file mode 100644 index e69de29b..00000000 diff --git a/telemeta/models/crem.py b/telemeta/models/crem.py index 0db0975d..156bea5c 100755 --- a/telemeta/models/crem.py +++ b/telemeta/models/crem.py @@ -131,6 +131,10 @@ class MediaCollection(MediaResource): element_type = 'collection' PUBLIC_ACCESS_CHOICES = (('none', 'none'), ('metadata', 'metadata'), ('metadata', 'full')) + published_code_regex = 'CNRSMH_E_[0-9]{4}(?:_[0-9]{3}){2}' + unpublished_code_regex = 'CNRSMH_I_[0-9]{4}_[0-9]{3}' + code_regex = '(?:%s|%s)' % (published_code_regex, unpublished_code_regex) + reference = models.CharField(unique=True, max_length=250, null=True) physical_format = WeakForeignKey('PhysicalFormat', related_name="collections", null=True) @@ -215,9 +219,9 @@ class MediaCollection(MediaResource): def is_valid_code(self, code): "Check if the collection code is well formed" if self.is_published: - regex = '^CNRSMH_E_[0-9]{4}(_[0-9]{3}){2}$' + regex = '^' + self.published_code_regex + '$' else: - regex = '^CNRSMH_I_[0-9]{4}_[0-9]{3}$' + regex = '^' + self.unpublished_code_regex + '$' if re.match(regex, code): return True @@ -239,6 +243,10 @@ class MediaItem(MediaResource): element_type = 'item' PUBLIC_ACCESS_CHOICES = (('none', 'none'), ('metadata', 'metadata'), ('full', 'full')) + published_code_regex = MediaCollection.published_code_regex + '(?:_[0-9]{2}){1,2}' + unpublished_code_regex = MediaCollection.unpublished_code_regex + '_[0-9]{2,3}(?:_[0-9]{2}){0,2}' + code_regex = '(?:%s|%s)' % (published_code_regex, unpublished_code_regex) + collection = models.ForeignKey('MediaCollection', related_name="items") track = models.CharField(max_length=250, default="") old_code = models.CharField(unique=True, max_length=250, null=True) @@ -281,12 +289,15 @@ class MediaItem(MediaResource): def is_valid_code(self, code): "Check if the item code is well formed" + if not re.match('^' + self.collection.code, self.code): + return false + if self.collection.is_published: - regex = '^' + self.collection.code + '(_[0-9]{2}){1,2}$' + regex = '^' + self.published_code_regex + '$' else: - regex = '^' + self.collection.code + '_[0-9]{2,3}(_[0-9]{2}){0,2}$' + regex = '^' + self.unpublished_code_regex + '$' - if re.match(regex, self.code): + if re.match(regex, code): return True return False diff --git a/telemeta/models/cremquery.py b/telemeta/models/cremquery.py index 8c3477bf..1c72195f 100644 --- a/telemeta/models/cremquery.py +++ b/telemeta/models/cremquery.py @@ -36,6 +36,7 @@ from django.db.models import Manager, Q from telemeta.models.core import EnhancedQuerySet, EnhancedManager import re +from django.core.exceptions import ObjectDoesNotExist class CoreQuerySet(EnhancedQuerySet): "Base class for all query sets" @@ -74,6 +75,21 @@ class CoreManager(EnhancedManager): "" return self.get_query_set().none(*args, **kwargs) + def get(self, **kwargs): + if kwargs.has_key('code_or_id'): + try: + args = kwargs.copy() + args['code'] = kwargs['code_or_id'] + args.pop('code_or_id') + return super(CoreManager, self).get(**args) + except ObjectDoesNotExist: + args = kwargs.copy() + args['id'] = kwargs['code_or_id'] + args.pop('code_or_id') + return super(CoreManager, self).get(**args) + + return super(CoreManager, self).get(**kwargs) + class MediaCollectionQuerySet(CoreQuerySet): def quick_search(self, pattern): @@ -202,6 +218,7 @@ class MediaCollectionManager(CoreManager): return result + class MediaItemQuerySet(CoreQuerySet): "Base class for all media item query sets" diff --git a/telemeta/templates/telemeta/inc/dublincore.html b/telemeta/templates/telemeta/inc/dublincore.html new file mode 100644 index 00000000..2c6134bb --- /dev/null +++ b/telemeta/templates/telemeta/inc/dublincore.html @@ -0,0 +1,2 @@ +{% extends "telemeta_default/inc/dublincore.html" %} + diff --git a/telemeta/templates/telemeta_default/collection.m3u b/telemeta/templates/telemeta_default/collection.m3u index 7bb028e5..259dc4ba 100644 --- a/telemeta/templates/telemeta_default/collection.m3u +++ b/telemeta/templates/telemeta_default/collection.m3u @@ -1,3 +1,3 @@ #EXTM3U{% load telemeta_utils %}{% for item in collection.items.all %} #EXTINF:{{ item.get_duration }},{{ item.title }} -http://{{ host }}{% url telemeta-item-export item.id|urlencode,"mp3" %}{% endfor %} +http://{{ host }}{% url telemeta-item-export item|code_or_id,"mp3" %}{% endfor %} diff --git a/telemeta/templates/telemeta_default/collection_detail.html b/telemeta/templates/telemeta_default/collection_detail.html index b7313314..62399bef 100644 --- a/telemeta/templates/telemeta_default/collection_detail.html +++ b/telemeta/templates/telemeta_default/collection_detail.html @@ -7,28 +7,28 @@ {% endblock %} -{% if object %} +{% if collection %} {% block submenu %} -

Collection: {{ object.title }}

-
Dublin Core
+

Collection: {{ collection.title }}

+
Dublin Core
{% endblock %} {% block content %} -
- {% if object.has_mediafile %} +
+ {% if collection.has_mediafile %}

Listen to this collection - (M3U, - XSPF)

+ (M3U, + XSPF)

{% if 0 %} {# Use 1/0 for alternate player #} + data="{% url telemeta-swf "xspf_player.swf" %}?playlist_url={% url telemeta-collection-xspf collection.code %}"> + value="{% url telemeta-swf "xspf_player.swf" %}?playlist_url={% url telemeta-collection-xspf collection.code %}" /> {% else %} - {% if object.deposant_cnrs %}
deposant cnrs
{{ object.deposant_cnrs }}
{% endif %} - {% if object.fiches %}
fiches
{{ object.fiches }}
{% endif %} - {% if object.is_full_copy %}
is full copy
{{ object.is_full_copy }}
{% endif %} - {% if object.is_original %}
is original
{{ object.is_original }}
{% endif %} - {% if object.numerisation %}
numerisation
{{ object.numerisation }}
{% endif %} - {% if object.physical_items_num %}
physical items num
{{ object.physical_items_num }}
{% endif %} - {% if object.publisher_collection %}
publisher collection
{{ object.publisher_collection }}
{% endif %} - {% if object.publisher_serial_id %}
publisher serial id
{{ object.publisher_serial_id }}
{% endif %} - {% if object.record_author %}
record author
{{ object.record_author }}
{% endif %} - {% if object.record_writer %}
record writer
{{ object.record_writer }}
{% endif %} - {% if object.ref_biblio %}
ref biblio
{{ object.ref_biblio }}
{% endif %} - {% if object.rights %}
rights
{{ object.rights }}
{% endif %} - {% if object.travail %}
travail
{{ object.travail }}
{% endif %} - {% if object.tri_dibm %}
tri dibm
{{ object.tri_dibm }}
{% endif %} + {% if collection.deposant_cnrs %}
deposant cnrs
{{ collection.deposant_cnrs }}
{% endif %} + {% if collection.fiches %}
fiches
{{ collection.fiches }}
{% endif %} + {% if collection.is_full_copy %}
is full copy
{{ collection.is_full_copy }}
{% endif %} + {% if collection.is_original %}
is original
{{ collection.is_original }}
{% endif %} + {% if collection.numerisation %}
numerisation
{{ collection.numerisation }}
{% endif %} + {% if collection.physical_items_num %}
physical items num
{{ collection.physical_items_num }}
{% endif %} + {% if collection.publisher_collection %}
publisher collection
{{ collection.publisher_collection }}
{% endif %} + {% if collection.publisher_serial_id %}
publisher serial id
{{ collection.publisher_serial_id }}
{% endif %} + {% if collection.record_author %}
record author
{{ collection.record_author }}
{% endif %} + {% if collection.record_writer %}
record writer
{{ collection.record_writer }}
{% endif %} + {% if collection.ref_biblio %}
ref biblio
{{ collection.ref_biblio }}
{% endif %} + {% if collection.rights %}
rights
{{ collection.rights }}
{% endif %} + {% if collection.travail %}
travail
{{ collection.travail }}
{% endif %} + {% if collection.tri_dibm %}
tri dibm
{{ collection.tri_dibm }}
{% endif %}
{% endblock document_data %}

Items

- {% with object.ordered_items as items %} + {% with collection.ordered_items as items %} {% include "telemeta/inc/mediaitem_list.html" %} {% endwith %}
diff --git a/telemeta/templates/telemeta_default/collection_detail_dc.html b/telemeta/templates/telemeta_default/collection_detail_dc.html index 0cf3e394..bc86c070 100644 --- a/telemeta/templates/telemeta_default/collection_detail_dc.html +++ b/telemeta/templates/telemeta_default/collection_detail_dc.html @@ -1,26 +1,18 @@ {% extends "telemeta/base.html" %} {% load telemeta_utils %} -{% if object %} +{% if collection %} {% block submenu %} -

Collection: {{ object.title }}

-
Normal View
+

Collection: {{ collection.title }}

+
Normal View
{% endblock %} {% block content %} -

Dublin Core Expression

-
-
ElementRefinement
Value
- {% for element in object.to_dublincore.elements %} - {% if element.value %} -
{{ element.name }}{{ element.refinement|default:" " }}
{% ifequal element.field "collection" %}{{ element.value }}{% else %}{{ element.value }}{% endifequal %}
- {% endif %} - {% endfor %} - {% for item in object.ordered_items %} -
relationhasPart
{{ item.id }}
- {% endfor %} -
+{% with collection|to_dublincore as resource %} +{% include "telemeta/inc/dublincore.html" %} +{% endwith %} + {% endblock %} {% else %}

No such collection

-{% endif %} \ No newline at end of file +{% endif %} diff --git a/telemeta/templates/telemeta_default/collection_xspf.xml b/telemeta/templates/telemeta_default/collection_xspf.xml index 2e8066c0..f7b72e6f 100644 --- a/telemeta/templates/telemeta_default/collection_xspf.xml +++ b/telemeta/templates/telemeta_default/collection_xspf.xml @@ -5,7 +5,7 @@ {% with collection.to_dublincore.flatten as dc %} {{ dc.creator }} {{ dc.title }} - http://{{ host }}{% url telemeta-collection-detail collection.id|urlencode %} + http://{{ host }}{% url telemeta-collection-detail collection.code %} {% endwith %} {% endblock %} @@ -14,9 +14,9 @@ {{ item.title }} mp3 - http://{{ host }}{% url telemeta-item-export item.id|urlencode,"mp3" %} + http://{{ host }}{% url telemeta-item-export item|code_or_id,"mp3" %} {{ item.get_duration|mul:1000 }} - http://{{ host }}{% url telemeta-item-detail item.id|urlencode %} + http://{{ host }}{% url telemeta-item-detail item|code_or_id %} {% endfor %} {% endblock %} diff --git a/telemeta/templates/telemeta_default/inc/collection_list.html b/telemeta/templates/telemeta_default/inc/collection_list.html index 31fbf023..26254382 100644 --- a/telemeta/templates/telemeta_default/inc/collection_list.html +++ b/telemeta/templates/telemeta_default/inc/collection_list.html @@ -9,7 +9,7 @@ {% endif %}