From f8ce939d839169c4d207632b2eb7ac98b05fbe25 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 11 May 2015 09:53:28 +0200 Subject: [PATCH] fix item view mixins --- telemeta/pages | 2 +- telemeta/views/item.py | 115 ++++++++++++++++++----------------------- 2 files changed, 51 insertions(+), 66 deletions(-) diff --git a/telemeta/pages b/telemeta/pages index bff9dcc2..f8324093 160000 --- a/telemeta/pages +++ b/telemeta/pages @@ -1 +1 @@ -Subproject commit bff9dcc2ab149ad2c88d811a4268b43cdb9b2073 +Subproject commit f8324093174d077b674ac2c52eb0db6eaf815ab5 diff --git a/telemeta/views/item.py b/telemeta/views/item.py index cc047e71..ff1412e0 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -55,10 +55,6 @@ class ItemBaseMixin(TelemetaBaseMixin): default_grapher_sizes = getattr(settings, 'TIMESIDE_DEFAULT_GRAPHER_SIZES', ['346x130', ]) auto_zoom = getattr(settings, 'TIMESIDE_AUTO_ZOOM', False) - -class ItemView(ItemBaseMixin): - """Provide Item web UI methods""" - def get_export_formats(self): formats = [] for encoder in self.encoders: @@ -67,12 +63,14 @@ class ItemView(ItemBaseMixin): 'extension': encoder.file_extension()}) return formats - def get_graphers(self): + def get_graphers(self, user): graphers = [] for grapher in self.graphers: if grapher.id() == self.default_grapher_id: graphers.insert(0, {'name':grapher.name(), 'id': grapher.id()}) - else: + elif not hasattr(grapher, '_staging'): + graphers.append({'name':grapher.name(), 'id': grapher.id()}) + elif not grapher._staging: graphers.append({'name':grapher.name(), 'id': grapher.id()}) return graphers @@ -82,6 +80,52 @@ class ItemView(ItemBaseMixin): break return grapher + def get_export_formats(self): + formats = [] + for encoder in self.encoders: + if encoder.file_extension() in self.export_formats: + formats.append({'name': encoder.format(), + 'extension': encoder.file_extension()}) + return formats + + def item_previous_next(self, item): + """Get previous and next items inside the collection of the item""" + + pks = [] + items = MediaItem.objects.filter(collection=item.collection) + items = items.order_by('code', 'old_code') + + if len(items) > 1: + for it in items: + pks.append(it.pk) + for pk in pks: + if pk == item.pk: + if pk == pks[0]: + previous_pk = pks[-1] + next_pk = pks[1] + elif pk == pks[-1]: + previous_pk = pks[-2] + next_pk = pks[0] + else: + previous_pk = pks[pks.index(pk)-1] + next_pk = pks[pks.index(pk)+1] + for it in items: + if it.pk == previous_pk: + previous = it + if it.pk == next_pk: + next = it + previous = previous.public_id + next = next.public_id + else: + previous = item.public_id + next = item.public_id + + return previous, next + + +class ItemView(ItemBaseMixin): + """Provide Item web UI methods""" + def item_detail(self, request, public_id=None, marker_id=None, width=None, height=None, template='telemeta/mediaitem_detail.html'): """Show the details of a given item""" @@ -392,65 +436,6 @@ class ItemViewMixin(ItemBaseMixin): # inlines = [ItemPerformanceInline, ItemKeywordInline, ItemRelatedInline, # ItemFormatInline, ItemIdentifierInline] - def get_export_formats(self): - formats = [] - for encoder in self.encoders: - if encoder.file_extension() in self.export_formats: - formats.append({'name': encoder.format(), - 'extension': encoder.file_extension()}) - return formats - - def item_previous_next(self, item): - """Get previous and next items inside the collection of the item""" - - pks = [] - items = MediaItem.objects.filter(collection=item.collection) - items = items.order_by('code', 'old_code') - - if len(items) > 1: - for it in items: - pks.append(it.pk) - for pk in pks: - if pk == item.pk: - if pk == pks[0]: - previous_pk = pks[-1] - next_pk = pks[1] - elif pk == pks[-1]: - previous_pk = pks[-2] - next_pk = pks[0] - else: - previous_pk = pks[pks.index(pk)-1] - next_pk = pks[pks.index(pk)+1] - for it in items: - if it.pk == previous_pk: - previous = it - if it.pk == next_pk: - next = it - previous = previous.public_id - next = next.public_id - else: - previous = item.public_id - next = item.public_id - - return previous, next - - def get_graphers(self, user): - graphers = [] - for grapher in self.graphers: - if grapher.id() == self.default_grapher_id: - graphers.insert(0, {'name':grapher.name(), 'id': grapher.id()}) - elif not hasattr(grapher, '_staging'): - graphers.append({'name':grapher.name(), 'id': grapher.id()}) - elif not grapher._staging: - graphers.append({'name':grapher.name(), 'id': grapher.id()}) - return graphers - - def get_grapher(self, id): - for grapher in self.graphers: - if grapher.id() == id: - break - return grapher - def get_object(self): obj = self.model.objects.filter(code=self.kwargs['public_id']) if not obj: -- 2.39.5