From: yomguy Date: Tue, 7 Feb 2012 16:09:45 +0000 (+0100) Subject: begin resource queryset, add parent links to resource details X-Git-Tag: 1.3.10~16 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=d96232238bf282c04910209d4af789c6a4b586a3;p=telemeta.git begin resource queryset, add parent links to resource details --- diff --git a/telemeta/models/query.py b/telemeta/models/query.py index 2c8fe22e..00162d39 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -416,3 +416,28 @@ class LocationManager(CoreManager): return self.get_query_set().flatname_map(*args, **kwargs) flatname_map.__doc__ = LocationQuerySet.flatname_map.__doc__ + +class MediaResourceQuerySet(CoreQuerySet): + "Base class for all media resource query sets" + + def quick_search(self, pattern): + "Perform a quick search on code, title and description" + pattern = pattern.strip() + + q = ( Q(code__contains=pattern) | + word_search_q('title', pattern) | + word_search_q('description', pattern)) + + return self.filter(q) + + +class MediaResourceManager(CoreManager): + "Manage media resource queries" + + def get_query_set(self): + "Return media query sets" + return MediaItemQuerySet(self.model) + + def quick_search(self, *args, **kwargs): + return self.get_query_set().quick_search(*args, **kwargs) + quick_search.__doc__ = MediaResourceQuerySet.quick_search.__doc__ diff --git a/telemeta/templates/telemeta/collection_detail.html b/telemeta/templates/telemeta/collection_detail.html index d366290f..1fd7e72e 100644 --- a/telemeta/templates/telemeta/collection_detail.html +++ b/telemeta/templates/telemeta/collection_detail.html @@ -95,6 +95,10 @@
{% trans "Recording period" %}
{% if collection.recorded_from_year %}{{ collection.recorded_from_year }}{% endif %}{% if collection.recorded_from_year and collection.recorded_to_year %} - {% endif %}{% if collection.recorded_to_year %}{{ collection.recorded_to_year}}{% endif %}
{% dl_field collection "year_published" placeholder %} + {% for parent in parents %} +
{% trans parent.element_type|capitalize %}
+
{{ parent.title }}
+ {% endfor %} {% endblock general_info %} diff --git a/telemeta/templates/telemeta/resource_detail.html b/telemeta/templates/telemeta/resource_detail.html index 5f07ab7a..73e92246 100644 --- a/telemeta/templates/telemeta/resource_detail.html +++ b/telemeta/templates/telemeta/resource_detail.html @@ -42,7 +42,11 @@ {% else %} {% dl_field resource field.name %} {% endif %} - {% endfor %} + {% endfor %} + {% for parent in parents %} +
{% trans parent.element_type|capitalize %}
+
{{ parent.title }}
+ {% endfor %} {% endblock general_info %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 24c3420e..7d0c4096 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -73,7 +73,7 @@ export_extensions = "|".join(item_view.list_export_extensions()) htdocs = os.path.dirname(__file__) + '/htdocs' urlpatterns = patterns('', - url(r'^$', general_view.index, name="telemeta-home"), + url(r'^$', general_view.home, name="telemeta-home"), # items url(r'^archives/items/$', 'django.views.generic.list_detail.object_list', @@ -295,7 +295,7 @@ urlpatterns = patterns('', # Desk url(r'^desk/lists/$', general_view.lists, name="telemeta-desk-lists"), url(r'^desk/profile/(?P[A-Za-z0-9._-]+)/$', profile_view.profile_detail, name="telemeta-desk-profile"), - url(r'^desk/home/$', general_view.index, name="telemeta-desk-home"), + url(r'^desk/home/$', general_view.home, name="telemeta-desk-home"), # Profiles url(r'^users/(?P[A-Za-z0-9._-]+)/profile/$', profile_view.profile_detail, name="telemeta-profile-detail"), diff --git a/telemeta/views/base.py b/telemeta/views/base.py index 61cf44dc..20d4d641 100644 --- a/telemeta/views/base.py +++ b/telemeta/views/base.py @@ -216,7 +216,7 @@ def auto_code(resources, base_code): class GeneralView(object): """Provide general web UI methods""" - def index(self, request): + def home(self, request): """Render the index page""" template = loader.get_template('telemeta/home.html') @@ -419,8 +419,9 @@ class CollectionView(object): related_media = MediaCollectionRelated.objects.filter(collection=collection) check_related_media(related_media) + parents = MediaCorpus.objects.filter(children=collection) - return render(request, template, {'collection': collection, 'playlists': playlists, 'public_access': public_access, 'items': items, 'related_media': related_media}) + return render(request, template, {'collection': collection, 'playlists': playlists, 'public_access': public_access, 'items': items, 'related_media': related_media, 'parents': parents }) @method_decorator(permission_required('telemeta.change_mediacollection')) def collection_edit(self, request, public_id, template='telemeta/collection_edit.html'): @@ -1414,13 +1415,15 @@ class ResourceView(object): {'model': MediaCorpus, 'form' : MediaCorpusForm, 'related': MediaCorpusRelated, - 'related_form': MediaCorpusRelatedForm + 'related_form': MediaCorpusRelatedForm, + 'parent': MediaFonds, }, 'fonds': {'model': MediaFonds, 'form' : MediaFondsForm, 'related': MediaFondsRelated, - 'related_form': MediaFondsRelatedForm + 'related_form': MediaFondsRelatedForm, + 'parent': None, } } @@ -1429,6 +1432,7 @@ class ResourceView(object): self.form = self.types[type]['form'] self.related = self.types[type]['related'] self.related_form = self.types[type]['related_form'] + self.parent = self.types[type]['parent'] self.type = type def detail(self, request, type, public_id, template='telemeta/resource_detail.html'): @@ -1438,8 +1442,12 @@ class ResourceView(object): children = children.order_by('code') related_media = self.related.objects.filter(resource=resource) check_related_media(related_media) + if self.parent: + parents = self.parent.objects.filter(children=resource) + else: + parents = [] - return render(request, template, {'resource': resource, 'type': type, 'children': children, 'related_media': related_media}) + return render(request, template, {'resource': resource, 'type': type, 'children': children, 'related_media': related_media, 'parents': parents }) @jsonrpc_method('telemeta.change_fonds') @jsonrpc_method('telemeta.change_corpus')