From 69e2e489fcd82043b01145dab08c66bc8b15ae34 Mon Sep 17 00:00:00 2001 From: nicolas neto Date: Wed, 5 Jul 2017 11:19:15 +0200 Subject: [PATCH] add vocabulary tab --- telemeta/templates/telemeta/base.html | 34 +++-- telemeta/templates/telemeta/enumeration.html | 48 +++++++ telemeta/templates/telemeta/enumerations.html | 27 ++++ .../templates/telemeta/instrument_alias.html | 34 +++++ telemeta/templates/telemeta/instruments.html | 32 +++++ telemeta/urls.py | 14 +- telemeta/views/enum.py | 98 +++++++++++++ telemeta/views/instrument.py | 11 ++ telemeta/views/item.py | 134 ++++++++++-------- 9 files changed, 360 insertions(+), 72 deletions(-) create mode 100644 telemeta/templates/telemeta/enumeration.html create mode 100644 telemeta/templates/telemeta/enumerations.html create mode 100644 telemeta/templates/telemeta/instrument_alias.html create mode 100644 telemeta/templates/telemeta/instruments.html create mode 100644 telemeta/views/enum.py diff --git a/telemeta/templates/telemeta/base.html b/telemeta/templates/telemeta/base.html index ffa10471..6a6d8102 100644 --- a/telemeta/templates/telemeta/base.html +++ b/telemeta/templates/telemeta/base.html @@ -137,16 +137,10 @@
  • {% trans "Advanced search" %}
  • - {% if user.is_authenticated %} - {% if user.is_staff or not perms.telemeta.can_not_view_users_and_profiles %} -
  • {% trans "Users" %}
  • - {% endif %} - {% endif %} +
  • {% trans "Vocabulary" %} {% if user.is_staff %} -
  • {% trans "Admin" %} +
  • + + {% else %} + + + + {% endif %} + + {% if user.is_authenticated %} + {% if user.is_staff or not perms.telemeta.can_not_view_users_and_profiles %} +
  • {% trans "Users" %}
  • + {% endif %} + {% endif %} + {% if user.is_staff %} +
  • {% trans "Admin" %} +
  • {% endif %}
    diff --git a/telemeta/templates/telemeta/enumeration.html b/telemeta/templates/telemeta/enumeration.html new file mode 100644 index 00000000..92d69fab --- /dev/null +++ b/telemeta/templates/telemeta/enumeration.html @@ -0,0 +1,48 @@ +{% extends "telemeta/admin.html" %} +{% load i18n %} + +{% block head_title %}{% trans "Enumeration" %} : {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %} + +{% block title %} +

    {% trans "Enumerations" %}

    +{% endblock %} + +{% block tabcontents %} + {% if enumeration_values %} + + + + + + + {% for record in enumeration_values %} + + + + + + {% if enumeration_id == "contextkeyword" %} + + {% else %} + + {% if enumeration_support == "Collection" %} + + {% else %} + + {% endif %} + + {% endif %} + + + + {% endfor %} + +
     {% trans "Value"%}nb{{ enumeration_support }}
    + {{record.value}} {{ enumeration_count.pop }} {{ enumeration_count.pop }} {{ enumeration_count.pop }}
    +
    + {% else %} +

    {% trans "This enumeration is empty" %}

    + {% endif %} + +
    +{% endblock %} diff --git a/telemeta/templates/telemeta/enumerations.html b/telemeta/templates/telemeta/enumerations.html new file mode 100644 index 00000000..dd849d19 --- /dev/null +++ b/telemeta/templates/telemeta/enumerations.html @@ -0,0 +1,27 @@ +{% extends "telemeta/admin.html" %} +{% load telemeta_tags %} +{% load i18n %} + +{% block title %} +

    {% trans "Enumerations" %}

    +{% endblock %} + +{% block tabcontents %} +{% if enumerations %} + + + + + {% for enum in enumerations %} + + {% endfor %} + +
    {% trans "Title"%}
    + {% trans enum.name|capfirst %} +
    + {% else %} +

    {% trans "No enumerations" %}

    + {% endif %} +{% endblock %} + + diff --git a/telemeta/templates/telemeta/instrument_alias.html b/telemeta/templates/telemeta/instrument_alias.html new file mode 100644 index 00000000..f7a5ba7c --- /dev/null +++ b/telemeta/templates/telemeta/instrument_alias.html @@ -0,0 +1,34 @@ +{% extends "telemeta/admin.html" %} +{% load i18n %} + +{% block head_title %}{% trans "Instrument aliases" %} - {{ block.super }}{% endblock %} + +{% block title %} +

    {% trans "Instrument aliases" %}

    +{% endblock %} + +{% block tabcontents %} + + {% if instruments %} + + + + + + {% for record in instruments %} + + + + + + {% endfor %} + +
     {% trans "Name"%}{% trans "Associated items" %}
    + {{record.name}}{{ record.num_items }}
    + + {% else %} +

    {% trans "This instrument list is empty" %}

    + {% endif %} + +
    +{% endblock %} diff --git a/telemeta/templates/telemeta/instruments.html b/telemeta/templates/telemeta/instruments.html new file mode 100644 index 00000000..2100630e --- /dev/null +++ b/telemeta/templates/telemeta/instruments.html @@ -0,0 +1,32 @@ +{% extends "telemeta/admin.html" %} +{% load i18n %} + +{% block head_title %}{% trans "Instruments" %} - {{ block.super }}{% endblock %} + +{% block title %} +

    {% trans "Instruments" %}

    +{% endblock %} + +{% block tabcontents %} + + {% if instruments %} + + + + + + {% for record in instruments %} + + + + + + {% endfor %} + +
     {% trans "Name"%}{% trans "Associated items" %}
    {{record.name}}{{ record.num_items }}
    + {% else %} +

    {% trans "This instrument list is empty" %}

    + {% endif %} + +
    +{% endblock %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 5d02642c..5b5436ff 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -31,6 +31,7 @@ from haystack.forms import * from jsonrpc import jsonrpc_site import os.path import telemeta.config +from telemeta.views.enum import EnumView telemeta.config.check() @@ -45,6 +46,7 @@ playlist_view = PlaylistView() profile_view = ProfileView() geo_view = GeoView() resource_view = ResourceView() +enumeration_view = EnumView() #boolean_view = BooleanSearchView() # ID's regular expressions @@ -53,7 +55,6 @@ export_extensions = "|".join(item_view.list_export_extensions()) urlpatterns = patterns('', url(r'^$', home_view.home, name="telemeta-home"), - url(r'^test', TemplateView.as_view(template_name = "telemeta/hello_world.html")), # items url(r'^archives/items/$', ItemListView.as_view(), name="telemeta-items"), @@ -146,6 +147,10 @@ urlpatterns = patterns('', url(r'^admin/enumerations/$', admin_view.admin_enumerations, name="telemeta-admin-enumerations"), url(r'^admin/users/$', admin_view.admin_users, name="telemeta-admin-users"), + # instruments + url(r'^instruments/$', instrument_view.instrument_list, name="telemeta-instruments"), + + # instruments administration url(r'^admin/instruments/$', instrument_view.edit_instrument , name="telemeta-instrument-edit"), url(r'^admin/instruments/add/$', instrument_view.add_to_instrument, name="telemeta-instrument-add"), @@ -158,6 +163,9 @@ urlpatterns = patterns('', url(r'^admin/instruments/' + r'(?P[0-9]+)/update/$', instrument_view.update_instrument_value, name="telemeta-instrument-record-update"), url(r'^admin/instruments/' + r'(?P[0-9]+)/replace/$', instrument_view.replace_instrument_value, name="telemeta-instrument-record-replace"), + # instruments aliases + url(r'^instruments_alias/$', instrument_alias_view.instrument_list, name="telemeta-instrument-alias"), + # instruments aliases administration url(r'^admin/instrument_aliases/$', instrument_alias_view.edit_instrument, name="telemeta-instrument-alias-edit"), url(r'^admin/instrument_aliases/add/$', instrument_alias_view.add_to_instrument, name="telemeta-instrument-alias-add"), @@ -169,7 +177,9 @@ urlpatterns = patterns('', url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-unpublished/$', ItemAliasUnpublishedListView.as_view(),name="telemeta-items-alias-unpublished"), url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-sound/$', ItemAliasSoundListView.as_view(),name="telemeta-items-alias-sound"), url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-items/$', ItemAliasListView.as_view(), name="telemeta-alias-item-list"), - + # enumeration + url(r'^enumerations/$',enumeration_view.enumerations,name="telemeta-enumerations"), + url(r'^enumerations/(?P[0-9a-z]+)/$', enumeration_view.enumeration, name="telemeta-enumeration"), # enumerations administration url(r'^admin/enumerations/(?P[0-9a-z]+)/$',admin_view.edit_enumeration,name="telemeta-enumeration-edit"), url(r'^admin/enumerations/(?P[0-9a-z]+)/add/$',admin_view.add_to_enumeration,name="telemeta-enumeration-add"), diff --git a/telemeta/views/enum.py b/telemeta/views/enum.py new file mode 100644 index 00000000..d6fa1c0c --- /dev/null +++ b/telemeta/views/enum.py @@ -0,0 +1,98 @@ +from telemeta.views.core import * +import telemeta.models + +class EnumView(object): + + def __get_admin_context_vars(self): + return {"enumerations": self.__get_enumerations_list()} + + def enumerations(self, request): + return render(request, 'telemeta/enumerations.html', self.__get_admin_context_vars()) + + def enumeration (self, request, enumeration_id): + atr = ""; + print enumeration_id + enumeration = self.__get_enumeration(enumeration_id) + if enumeration == None: + raise Http404 + vars = self.__get_admin_context_vars() + vars["enumeration_id"] = enumeration._meta.module_name + vars["enumeration_name"] = enumeration._meta.verbose_name + vars["enumeration_values"] = enumeration.objects.all() + vars["enumeration_support"] = "" + vars["enumeration_count"] = [] + f = MediaCollection._meta.get_all_field_names() + for field in f: + if field in enumeration._meta.db_table.replace(" ", "_"): + atr = field; + if enumeration._meta.db_table.replace(" ", "_") == "context_keywords": + vars["enumeration_support"] = "Item" + vars["enumeration_count"] = self.__getCountKeyWord(vars["enumeration_values"]) + else: + if atr == "": + vars["enumeration_support"] = "Item" + vars["enumeration_count"] = self.__getCountItem(enumeration, vars["enumeration_values"]) + else: + vars["enumeration_support"] = "Collection" + vars["enumeration_count"] = self.__getCountColl(vars["enumeration_values"], atr) + + return render(request, 'telemeta/enumeration.html', vars) + + def __get_enumerations_list(self): + from django.db.models import get_models + models = get_models(telemeta.models) + + enumerations = [] + for model in models: + if issubclass(model, Enumeration): + if not model.hidden: + enumerations.append({"name": model._meta.verbose_name, + "id": model._meta.module_name}) + + cmp = lambda obj1, obj2: unaccent_icmp(obj1['name'], obj2['name']) + enumerations.sort(cmp) + return enumerations + + def __get_enumeration(self, id): + from django.db.models import get_models + models = get_models(telemeta.models) + for model in models: + if model._meta.module_name == id: + break + + if model._meta.module_name != id: + return None + + return model + + def __getCountColl(self, values, atr): + c = [] + for enum in values: + lookup = "%s__exact" % atr + c.append(MediaCollection.objects.filter(**{lookup: enum.__getattribute__("id")}).count()) + c.reverse() + return c + + + def __getCountItem(self, enumeration, values): + c = [] + atr = "" + f = MediaItem._meta.get_all_field_names() + for field in f: + if field in enumeration._meta.db_table.replace(" ", "_"): + atr = field; + for enum in values: + lookup = "%s__exact" % atr + c.append(MediaItem.objects.filter(**{lookup: enum.__getattribute__("id")}).count()) + c.reverse() + return c + + + def __getCountKeyWord(self, values): + c = [] + atr = "keyword_id" + for enum in values: + lookup = "%s__exact" % atr + c.append(MediaItemKeyword.objects.filter(**{lookup: enum.__getattribute__("id")}).count()) + c.reverse() + return c \ No newline at end of file diff --git a/telemeta/views/instrument.py b/telemeta/views/instrument.py index 61c8a798..7877778c 100644 --- a/telemeta/views/instrument.py +++ b/telemeta/views/instrument.py @@ -26,6 +26,12 @@ from django.db.models import Count class InstrumentView(object): """Provide Instrument web UI methods""" + def instrument_list(self,request): + + instruments = Instrument.objects.annotate(num_items=Count('performances')).order_by('name') + if instruments == None: + raise Http404 + return render(request, 'telemeta/instruments.html', {'instruments': instruments}) @method_decorator(permission_required('telemeta.change_instrument')) def edit_instrument(self, request): @@ -109,6 +115,11 @@ class InstrumentView(object): class InstrumentAliasView(object): """Provide Instrument alias web UI methods""" + def instrument_list(self,request): + instruments = InstrumentAlias.objects.annotate(num_items=Count('performances')).order_by('name') + if instruments == None: + raise Http404 + return render(request, 'telemeta/instrument_alias.html', {'instruments': instruments}) @method_decorator(permission_required('telemeta.change_instrumentalias')) def edit_instrument(self, request): diff --git a/telemeta/views/item.py b/telemeta/views/item.py index f9903f70..76e983aa 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -33,6 +33,7 @@ import time class ItemBaseMixin(TelemetaBaseMixin): + graphers = timeside.core.processor.processors(timeside.core.api.IGrapher) decoders = timeside.core.processor.processors(timeside.core.api.IDecoder) encoders = timeside.core.processor.processors(timeside.core.api.IEncoder) @@ -45,16 +46,16 @@ class ItemBaseMixin(TelemetaBaseMixin): default_grapher_sizes = getattr(settings, 'TIMESIDE_DEFAULT_GRAPHER_SIZES', ['346x130', ]) auto_zoom = getattr(settings, 'TIMESIDE_AUTO_ZOOM', False) - public_graphers = ['waveform_centroid', 'waveform_simple', - 'spectrogram', 'spectrogram_log'] - + public_graphers = ['waveform_centroid' ,'waveform_simple', + 'spectrogram', 'spectrogram_log'] + def get_graphers(self): graphers = [] user = self.request.user graphers_access = (user.is_staff or user.is_superuser or user.has_perm('can_run_analysis')) - + for grapher in self.graphers: if (not graphers_access and grapher.id() not in self.public_graphers): @@ -297,7 +298,7 @@ class ItemView(ItemBaseMixin): graph = grapher(width=width, height=height) (decoder | graph).run() graph.watermark('timeside', opacity=.6, margin=(5, 5)) - # f = open(path, 'w') + #f = open(path, 'w') graph.render(output=path) # f.close() self.cache_data.add_file(image_file) @@ -408,7 +409,7 @@ class ItemView(ItemBaseMixin): video = item.file.path response = serve_media(video, content_type=mime_type) # response['Content-Disposition'] = 'attachment' - #  TF : I don't know why empty attachment was set + # TF : I don't know why empty attachment was set # TODO: remove if useless if return_availability: data = json.dumps({'available': True}) @@ -420,7 +421,7 @@ class ItemView(ItemBaseMixin): video = item.file.path response = serve_media(video, content_type=mime_type) # response['Content-Disposition'] = 'attachment' - #  TF : I don't know why empty attachment was set, + # TF : I don't know why empty attachment was set, # TODO: remove if useless if return_availability: data = json.dumps({'available': True}) @@ -428,7 +429,7 @@ class ItemView(ItemBaseMixin): return response (media, mime_type) = self.item_transcode(item, extension) - # media = None + #media = None if media: if return_availability: data = json.dumps({'available': True}) @@ -447,7 +448,7 @@ class ItemView(ItemBaseMixin): messages.info(request, title) response = render(request, 'telemeta/messages.html', {'description': description}) from django.utils.cache import patch_cache_control - # patch_cache_control(response, no_cache=True, no_store=True, must_revalidate=True) + #patch_cache_control(response, no_cache=True, no_store=True, must_revalidate=True) return response def item_export_available(self, request, public_id, extension): @@ -491,6 +492,7 @@ class ItemView(ItemBaseMixin): class ItemListView(ListView): + model = MediaItem template_name = "telemeta/mediaitem_list.html" queryset = MediaItem.objects.enriched().order_by('code', 'old_code') @@ -506,12 +508,11 @@ class ItemListView(ListView): class ItemListViewFullAccess(ListView): + model = MediaItem template_name = "telemeta/mediaitem_list.html" paginate_by = 20 - queryset = MediaItem.objects.enriched().filter( - Q(collection__public_access="full") | Q(public_access="full")).sound().exclude( - collection__public_access="none").order_by('code', 'old_code') + queryset = MediaItem.objects.enriched().filter(Q(collection__public_access="full") | Q(public_access="full")).sound().exclude(collection__public_access="none").order_by('code', 'old_code') def get_context_data(self, **kwargs): context = super(ItemListViewFullAccess, self).get_context_data(**kwargs) @@ -520,18 +521,22 @@ class ItemListViewFullAccess(ListView): class ItemUnpublishedListView(ItemListView): + queryset = MediaItem.objects.filter(collection__code__contains='_I_').order_by('code', 'old_code') class ItemPublishedListView(ItemListView): + queryset = MediaItem.objects.filter(collection__code__contains='_E_').order_by('code', 'old_code') class ItemSoundListView(ItemListView): + queryset = MediaItem.objects.sound().order_by('code', 'old_code') class ItemInstrumentListView(ItemListView): + template_name = "telemeta/media_item_instrument_list.html" def get_queryset(self): @@ -547,23 +552,25 @@ class ItemInstrumentListView(ItemListView): class ItemInstrumentPublishedListView(ItemInstrumentListView): + def get_queryset(self): - return super(ItemInstrumentPublishedListView, self).get_queryset().filter( - collection__code__contains='_E_').order_by('code', 'old_code') + return super(ItemInstrumentPublishedListView, self).get_queryset().filter(collection__code__contains='_E_').order_by('code', 'old_code') class ItemInstrumentUnpublishedListView(ItemInstrumentListView): + def get_queryset(self): - return super(ItemInstrumentUnpublishedListView, self).get_queryset().filter( - collection__code__contains='_I_').order_by('code', 'old_code') + return super(ItemInstrumentUnpublishedListView, self).get_queryset().filter(collection__code__contains='_I_').order_by('code', 'old_code') class ItemInstrumentSoundListView(ItemInstrumentListView): + def get_queryset(self): return super(ItemInstrumentSoundListView, self).get_queryset().sound().order_by('code', 'old_code') class ItemAliasListView(ItemListView): + template_name = "telemeta/media_item_alias_list.html" def get_queryset(self): @@ -579,27 +586,28 @@ class ItemAliasListView(ItemListView): class ItemAliasPublishedListView(ItemAliasListView): + def get_queryset(self): - return super(ItemAliasPublishedListView, self).get_queryset().filter(collection__code__contains='_E_').order_by( - 'code', 'old_code') + return super(ItemAliasPublishedListView, self).get_queryset().filter(collection__code__contains='_E_').order_by('code', 'old_code') class ItemAliasUnpublishedListView(ItemAliasListView): + def get_queryset(self): - return super(ItemAliasUnpublishedListView, self).get_queryset().filter( - collection__code__contains='_I_').order_by('code', 'old_code') + return super(ItemAliasUnpublishedListView, self).get_queryset().filter(collection__code__contains='_I_').order_by('code', 'old_code') class ItemAliasSoundListView(ItemAliasListView): + def get_queryset(self): return super(ItemAliasSoundListView, self).get_queryset().sound().order_by('code', 'old_code') class ItemViewMixin(ItemBaseMixin): + model = MediaItem form_class = MediaItemForm inlines = [ItemPerformanceInline, ItemKeywordInline, ItemRelatedInline, ItemIdentifierInline] - # inlines = [ItemPerformanceInline, ItemKeywordInline, ItemRelatedInline, # ItemFormatInline, ItemIdentifierInline] @@ -619,6 +627,7 @@ class ItemViewMixin(ItemBaseMixin): class ItemEditView(ItemViewMixin, UpdateWithInlinesView): + template_name = 'telemeta/mediaitem_edit.html' def get_form_class(self): @@ -666,6 +675,7 @@ class ItemEditView(ItemViewMixin, UpdateWithInlinesView): class ItemAddView(ItemViewMixin, CreateWithInlinesView): + form_class = MediaItemForm template_name = 'telemeta/mediaitem_add.html' @@ -697,6 +707,7 @@ class ItemAddView(ItemViewMixin, CreateWithInlinesView): class ItemCopyView(ItemAddView): + form_class = MediaItemForm template_name = 'telemeta/mediaitem_edit.html' @@ -746,6 +757,7 @@ class ItemCopyView(ItemAddView): class ItemDetailView(ItemViewMixin, DetailView): + template_name = 'telemeta/mediaitem_detail.html' def item_analyze(self, item): @@ -850,8 +862,8 @@ class ItemDetailView(ItemViewMixin, DetailView): is_transcoded_flag.value = True is_transcoded_flag.save() - # FIXME: parse tags on first load - # tags = decoder.tags +# FIXME: parse tags on first load +# tags = decoder.tags self.mime_type = mime_type @@ -952,28 +964,28 @@ class DublinCoreToFormatMetadata(object): 'relation': 'TALB', # album 'type': 'TCON', # genre 'publisher': 'TPUB', # publisher - 'date': 'TDRC', # year + 'date': 'TDRC', # year # 'coverage': 'COMM', #comment }, 'ogg': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, 'flac': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, 'wav': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, 'webm': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, } @@ -1004,6 +1016,7 @@ class DublinCoreToFormatMetadata(object): class ItemMarkerJsonView(View): + model = MediaItem def get(self, request, *args, **kwargs): @@ -1017,21 +1030,23 @@ class ItemMarkerJsonView(View): data = '' response = HttpResponse(data, content_type='application/json') response['Content-Disposition'] = "attachment; filename=%s.%s" % \ - (item.code, 'json') + (item.code, 'json') return response class ItemPlayerDefaultView(ItemDetailView): + template_name = 'telemeta/mediaitem_player.html' class ItemDetailDCView(ItemDetailView): + template_name = 'telemeta/mediaitem_detail_dc.html' class ItemVideoPlayerView(ItemDetailView): - template_name = 'telemeta/mediaitem_video_player.html' + template_name = 'telemeta/mediaitem_video_player.html' class ItemEnumListView(ItemListView): template_name = 'telemeta/media_item_enum_list.html' @@ -1043,13 +1058,10 @@ class ItemEnumListView(ItemListView): context['count'] = self.object_list.count() context['keyword'] = False context['enum_name'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3])._meta.verbose_name - context['enum_value'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3]).objects.get( - id__exact=self.request.path.split('/')[4]) + context['enum_value'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3]).objects.get(id__exact=self.request.path.split('/')[4]) context['url_all'] = "/admin/enumerations/" + context['enum'] + "/" + context['id'] + "/item/list" - context['url_unpublished'] = "/admin/enumerations/" + context['enum'] + "/" + context[ - 'id'] + "/item_unpublished/list/" - context['url_published'] = "/admin/enumerations/" + context['enum'] + "/" + context[ - 'id'] + "/item_published/list/" + context['url_unpublished'] = "/admin/enumerations/" + context['enum'] + "/" + context['id'] + "/item_unpublished/list/" + context['url_published'] = "/admin/enumerations/" + context['enum'] +"/"+context['id'] + "/item_published/list/" context['url_sound'] = "/admin/enumerations/" + context['enum'] + "/" + context['id'] + "/item_sound/list/" return context @@ -1078,11 +1090,10 @@ class ItemEnumListView(ItemListView): return None return model - class ItemPublishedEnumListView(ItemEnumListView): def get_queryset(self): c = ItemEnumListView() - # id of value of enumeration + #id of value of enumeration i = self.request.path.split('/')[4] enumeration = c.get_enumeration(self.request.path.split('/')[3]) queryset = self.get_item(enumeration.objects.filter(id=i).get(), c) @@ -1095,8 +1106,8 @@ class ItemPublishedEnumListView(ItemEnumListView): class ItemUnpublishedEnumListView(ItemEnumListView): def get_queryset(self): c = ItemEnumListView() - # id of value of enumeration - i = self.request.path.split('/')[4] + #id of value of enumeration + i= self.request.path.split('/')[4] enumeration = c.get_enumeration(self.request.path.split('/')[3]) queryset = self.get_item(enumeration.objects.filter(id=i).get(), c) return queryset @@ -1108,8 +1119,8 @@ class ItemUnpublishedEnumListView(ItemEnumListView): class ItemSoundEnumListView(ItemEnumListView): def get_queryset(self): c = ItemEnumListView() - # id of value of enumeration - i = self.request.path.split('/')[4] + #id of value of enumeration + i= self.request.path.split('/')[4] enumeration = c.get_enumeration(self.request.path.split('/')[3]) queryset = self.get_item(enumeration.objects.filter(id=i).get(), c) return queryset @@ -1119,6 +1130,8 @@ class ItemSoundEnumListView(ItemEnumListView): class ItemKeywordListView(ItemListView): + template_name = 'telemeta/media_item_enum_list.html' + def get_context_data(self, **kwargs): context = super(ItemListView, self).get_context_data(**kwargs) @@ -1127,15 +1140,11 @@ class ItemKeywordListView(ItemListView): context['count'] = self.object_list.count() context['keyword'] = True context['enum_name'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3])._meta.verbose_name - context['enum_value'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3]).objects.get( - id__exact=self.request.path.split('/')[4]) - context['url_all'] = "/admin/enumerations/" + context['enum'] + "/" + context['id'] + "/keyword_item/list" - context['url_unpublished'] = "/admin/enumerations/" + context['enum'] + "/" + context[ - 'id'] + "/keyword_item_unpublished/list/" - context['url_published'] = "/admin/enumerations/" + context['enum'] + "/" + context[ - 'id'] + "/keyword_item_published/list/" - context['url_sound'] = "/admin/enumerations/" + context['enum'] + "/" + context[ - 'id'] + "/keyword_item_published/list/" + context['enum_value'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3]).objects.get(id__exact=self.request.path.split('/')[4]) + context['url_all'] = "/admin/enumerations/"+context['enum']+"/"+context['id']+"/keyword_item/list" + context['url_unpublished'] = "/admin/enumerations/"+context['enum']+"/"+context['id']+"/keyword_item_unpublished/list/" + context['url_published'] = "/admin/enumerations/"+context['enum']+"/"+context['id']+"/keyword_item_published/list/" + context['url_sound'] = "/admin/enumerations/"+context['enum']+"/"+context['id']+"/keyword_item_published/list/" context['argument'] = [context['enum'], context['id']] @@ -1147,9 +1156,10 @@ class ItemKeywordListView(ItemListView): def get_item(self, id): c = [] - for m in MediaItemKeyword.objects.filter(keyword_id=id): + for m in MediaItemKeyword.objects.filter(keyword_id=id): c.append(m.__getattribute__("item_id")) - return MediaItem.objects.filter(id__in=c) + return MediaItem.objects.filter(id__in=c) + def get_enumeration(self, id): from django.db.models import get_models @@ -1161,28 +1171,28 @@ class ItemKeywordListView(ItemListView): return None return model - class ItemKeywordPublishedListView(ItemKeywordListView): + def get_queryset(self): - c = ItemKeywordListView() - queryset = self.get_item(self.request.path.split('/')[4], c) + c=ItemKeywordListView() + queryset = self.get_item(self.request.path.split('/')[4],c) return queryset - def get_item(self, id, c): + def get_item(self, id,c): return c.get_item(id).filter(code__contains='_E_') - class ItemKeywordUnpublishedListView(ItemKeywordListView): + def get_queryset(self): - c = ItemKeywordListView() - queryset = self.get_item(self.request.path.split('/')[4], c) + c=ItemKeywordListView() + queryset = self.get_item(self.request.path.split('/')[4],c) return queryset - def get_item(self, id, c): + def get_item(self, id,c): return c.get_item(id).filter(code__contains='_I_') - class ItemKeywordSoundListView(ItemKeywordListView): + def get_queryset(self): c = ItemKeywordListView() queryset = self.get_item(self.request.path.split('/')[4], c) -- 2.39.5