Implement use of the injected 'resolved_object' variable to simplify navigation links of objects in lists. Remove obsolete varaibles_tags. Consolidate get_action_links by means of get_menus_links which supports a list of menus to resolve. Remove obsolete 'list_object_variable_name'. Remove 'resolve_for_source' method which was consolidated with the normal resolve method by means of an optional 'source' argument.

This commit is contained in:
Roberto Rosario
2015-04-06 01:02:48 -04:00
parent eae3b0eba2
commit e27ba5d3d6
20 changed files with 48 additions and 124 deletions

View File

@@ -6,7 +6,6 @@
{% load navigation_tags %}
{% load project_tags %}
{% load settings %}
{% load variable_tags %}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
@@ -152,8 +151,7 @@
</div>
</div>
{% get_action_links as links %}
{% get_menus_links names='object menu,sidebar menu,secondary menu' as links %}
{% get_menu_links 'object facet' as form_navigation_links %}
<div class="row">

View File

@@ -5,7 +5,6 @@
{% load pagination_tags %}
{% load navigation_tags %}
{% load non_breakable %}
{% load variable_tags %}
{% load multiselect_tags %}
{% autopaginate object_list %}
@@ -101,12 +100,8 @@
{% endif %}
{% endfor %}
{% if not hide_links %}
{% if list_object_variable_name %}
{% copy_variable object as list_object_variable_name %}
{% copy_variable list_object_variable_name as "navigation_object_name" %}
{% endif %}
<td class="last">
{% get_menu_links 'object menu' as links %}
{% get_menu_links 'object menu' source=object as links %}
{% with links as object_navigation_links %}
{% with 'true' as horizontal %}
{% include 'navigation/generic_navigation.html' %}

View File

@@ -1,42 +0,0 @@
import re
from django.template import Node, TemplateSyntaxError, Library, Variable
register = Library()
class CopyNode(Node):
def __init__(self, source_variable, var_name, delete_old=False):
self.source_variable = source_variable
self.var_name = var_name
self.delete_old = delete_old
def render(self, context):
context[Variable(self.var_name).resolve(context)] = Variable(self.source_variable).resolve(context)
if self.delete_old:
context[Variable(self.source_variable).resolve(context)] = ''
return ''
@register.tag
def copy_variable(parser, token):
return parse_tag(parser, token)
@register.tag
def rename_variable(parser, token):
return parse_tag(parser, token, {'delete_old': True})
def parse_tag(parser, token, *args, **kwargs):
# This version uses a regular expression to parse tag contents.
try:
# Splitting by None == splitting by spaces.
tag_name, arg = token.contents.split(None, 1)
except ValueError:
raise TemplateSyntaxError('%r tag requires arguments' % token.contents.split()[0])
m = re.search(r'(.*?) as ([\'"]*\w+[\'"]*)', arg)
if not m:
raise TemplateSyntaxError('%r tag had invalid arguments' % tag_name)
source_variable, var_name = m.groups()
return CopyNode(source_variable, var_name, *args, **kwargs)

View File

@@ -18,7 +18,7 @@ def is_not_instance_root_node(context):
def is_not_root_node(context):
return not context['node'].is_root_node()
return not context['resolved_object'].is_root_node()
link_document_index_list = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW], text=_('Indexes'), view='indexing:document_index_list', args='object.pk')
@@ -28,15 +28,15 @@ link_index_parent = Link(condition=is_not_instance_root_node, permissions=[PERMI
link_index_setup = Link(icon='fa fa-sitemap', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Indexes'), view='indexing:index_setup_list')
link_index_setup_list = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Indexes'), view='indexing:index_setup_list')
link_index_setup_create = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_CREATE], text=_('Create index'), view='indexing:index_setup_create')
link_index_setup_edit = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], text=_('Edit'), view='indexing:index_setup_edit', args='index.pk')
link_index_setup_delete = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_DELETE], text=_('Delete'), view='indexing:index_setup_delete', args='index.pk')
link_index_setup_view = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Tree template'), view='indexing:index_setup_view', args='index.pk')
link_index_setup_document_types = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], text=_('Document types'), view='indexing:index_setup_document_types', args='index.pk')
link_index_setup_edit = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], text=_('Edit'), view='indexing:index_setup_edit', args='resolved_object.pk')
link_index_setup_delete = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_DELETE], text=_('Delete'), view='indexing:index_setup_delete', args='resolved_object.pk')
link_index_setup_view = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Tree template'), view='indexing:index_setup_view', args='resolved_object.pk')
link_index_setup_document_types = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], text=_('Document types'), view='indexing:index_setup_document_types', args='resolved_object.pk')
link_rebuild_index_instances = Link(
description=_('Deletes and creates from scratch all the document indexes.'),
permissions=[PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES],
text=_('Rebuild indexes'), view='indexing:rebuild_index_instances'
)
link_template_node_create = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('New child node'), view='indexing:template_node_create', args='node.pk')
link_template_node_edit = Link(condition=is_not_root_node, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Edit'), view='indexing:template_node_edit', args='node.pk')
link_template_node_delete = Link(condition=is_not_root_node, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Delete'), view='indexing:template_node_delete', args='node.pk')
link_template_node_create = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('New child node'), view='indexing:template_node_create', args='resolved_object.pk')
link_template_node_edit = Link(condition=is_not_root_node, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Edit'), view='indexing:template_node_edit', args='resolved_object.pk')
link_template_node_delete = Link(condition=is_not_root_node, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Delete'), view='indexing:template_node_delete', args='resolved_object.pk')

View File

@@ -37,7 +37,6 @@ def index_setup_list(request):
context = {
'title': _('Indexes'),
'hide_object': True,
'list_object_variable_name': 'index',
'extra_columns': [
{'name': _('Name'), 'attribute': 'name'},
{'name': _('Title'), 'attribute': 'title'},
@@ -151,7 +150,6 @@ def index_setup_view(request, index_pk):
context = {
'object_list': object_list,
'index': index,
'list_object_variable_name': 'node',
'navigation_object_list': ['index'],
'title': _('Tree template nodes for index: %s') % index,
'hide_object': True,

View File

@@ -18,5 +18,5 @@ link_setup_workflow_transition_create = Link(text=_('Create transition'), view='
link_setup_workflow_transition_delete = Link(text=_('Delete'), view='document_states:setup_workflow_transition_delete', args='object.pk')
link_setup_workflow_transition_edit = Link(text=_('Edit'), view='document_states:setup_workflow_transition_edit', args='object.pk')
link_setup_workflow_transitions = Link(text=_('Transitions'), view='document_states:setup_workflow_transitions', args='object.pk')
link_workflow_instance_detail = Link(text=_('Detail'), view='document_states:workflow_instance_detail', args='workflow_instance.pk')
link_workflow_instance_transition = Link(text=_('Transition'), view='document_states:workflow_instance_transition', args='workflow_instance.pk')
link_workflow_instance_detail = Link(text=_('Detail'), view='document_states:workflow_instance_detail', args='resolved_object.pk')
link_workflow_instance_transition = Link(text=_('Transition'), view='document_states:workflow_instance_transition', args='resolved_object.pk')

View File

@@ -53,7 +53,6 @@ class DocumentWorkflowInstanceListView(SingleObjectListView):
'hide_link': True,
'object': self.get_document(),
'title': _('Workflows for document: %s') % self.get_document(),
'list_object_variable_name': 'workflow_instance',
}
)

View File

@@ -93,11 +93,11 @@ link_document_version_revert = Link(conditional_disable=is_current_version, perm
# Document type related links
link_document_type_create = Link(permissions=[PERMISSION_DOCUMENT_TYPE_CREATE], text=_('Create document type'), view='documents:document_type_create')
link_document_type_delete = Link(permissions=[PERMISSION_DOCUMENT_TYPE_DELETE], text=_('Delete'), view='documents:document_type_delete', args='document_type.id')
link_document_type_edit = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Edit'), view='documents:document_type_edit', args='document_type.id')
link_document_type_delete = Link(permissions=[PERMISSION_DOCUMENT_TYPE_DELETE], text=_('Delete'), view='documents:document_type_delete', args='resolved_object.id')
link_document_type_edit = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Edit'), view='documents:document_type_edit', args='resolved_object.id')
link_document_type_filename_create = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Add filename to document type'), view='documents:document_type_filename_create', args='document_type.id')
link_document_type_filename_delete = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Delete'), view='documents:document_type_filename_delete', args='filename.id')
link_document_type_filename_edit = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Edit'), view='documents:document_type_filename_edit', args='filename.id')
link_document_type_filename_list = Link(permissions=[PERMISSION_DOCUMENT_TYPE_VIEW], text=_('Filenames'), view='documents:document_type_filename_list', args='document_type.id')
link_document_type_filename_delete = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Delete'), view='documents:document_type_filename_delete', args='resolved_object.id')
link_document_type_filename_edit = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Edit'), view='documents:document_type_filename_edit', args='resolved_object.id')
link_document_type_filename_list = Link(permissions=[PERMISSION_DOCUMENT_TYPE_VIEW], text=_('Filenames'), view='documents:document_type_filename_list', args='resolved_object.id')
link_document_type_list = Link(permissions=[PERMISSION_DOCUMENT_TYPE_VIEW], text=_('Document types'), view='documents:document_type_list')
link_document_type_setup = Link(icon='fa fa-file', permissions=[PERMISSION_DOCUMENT_TYPE_VIEW], text=_('Document types'), view='documents:document_type_list')

View File

@@ -854,7 +854,6 @@ def document_type_list(request):
'object_list': DocumentType.objects.all(),
'title': _('Document types'),
'hide_link': True,
'list_object_variable_name': 'document_type',
'extra_columns': [
{'name': _('OCR'), 'attribute': 'ocr'},
{'name': _('Documents'), 'attribute': encapsulate(lambda x: x.documents.count())}
@@ -960,7 +959,6 @@ def document_type_filename_list(request, document_type_id):
}
],
'hide_link': True,
'list_object_variable_name': 'filename',
'navigation_object_list': ['document_type'],
'object_list': document_type.filenames.all(),
'title': _('Filenames for document type: %s') % document_type,
@@ -1168,7 +1166,6 @@ def document_page_transformation_list(request, document_page_id):
'page': document_page,
'navigation_object_list': ['page'],
'title': _('Transformations for: %s') % document_page,
'list_object_variable_name': 'transformation',
'extra_columns': [
{'name': _('Order'), 'attribute': 'order'},
{'name': _('Transformation'), 'attribute': encapsulate(lambda x: x.get_transformation_display())},

View File

@@ -23,7 +23,7 @@ class SmartLinkConditionForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(SmartLinkConditionForm, self).__init__(*args, **kwargs)
self.fields['foreign_document_data'] = forms.ChoiceField(choices=ModelAttribute.get_choices_for(Document, type_names=['field', 'query']), label=_('Foreign document attribute'))
self.fields['expression'].help_text = ' '.join([self.fields['expression'].help_text, ModelAttribute.help_text_for(Document, type_names=['field', 'related', 'property'])])
self.fields['expression'].help_text = ' '.join([unicode(self.fields['expression'].help_text), ModelAttribute.help_text_for(Document, type_names=['field', 'related', 'property'])])
class Meta:
model = SmartLinkCondition

View File

@@ -13,8 +13,8 @@ from .permissions import (
link_smart_link_acl_list = Link(permissions=[ACLS_VIEW_ACL], text=_('ACLs'), view='linking:smart_link_acl_list', args='object.pk')
link_smart_link_condition_create = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Create condition'), view='linking:smart_link_condition_create', args='object.pk')
link_smart_link_condition_delete = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Delete'), view='linking:smart_link_condition_delete', args='condition.pk')
link_smart_link_condition_edit = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Edit'), view='linking:smart_link_condition_edit', args='condition.pk')
link_smart_link_condition_delete = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Delete'), view='linking:smart_link_condition_delete', args='resolved_object.pk')
link_smart_link_condition_edit = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Edit'), view='linking:smart_link_condition_edit', args='resolved_object.pk')
link_smart_link_condition_list = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Conditions'), view='linking:smart_link_condition_list', args='object.pk')
link_smart_link_create = Link(permissions=[PERMISSION_SMART_LINK_CREATE], text=_('Create new smart link'), view='linking:smart_link_create')
link_smart_link_delete = Link(permissions=[PERMISSION_SMART_LINK_DELETE], text=_('Delete'), view='linking:smart_link_delete', args='object.pk')

View File

@@ -117,7 +117,6 @@ def smart_link_list(request):
{'name': _('Enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))},
],
'hide_link': True,
'list_object_variable_name': 'smart_link',
}, context_instance=RequestContext(request))
@@ -234,7 +233,6 @@ def smart_link_condition_list(request, smart_link_pk):
],
'hide_link': True,
'object': smart_link,
'list_object_variable_name': 'condition',
}, context_instance=RequestContext(request))

View File

@@ -20,8 +20,8 @@ link_metadata_multiple_edit = Link(permissions=[PERMISSION_METADATA_DOCUMENT_EDI
link_metadata_multiple_remove = Link(permissions=[PERMISSION_METADATA_DOCUMENT_REMOVE], text=_('Remove metadata'), view='metadata:metadata_multiple_remove')
link_metadata_remove = Link(permissions=[PERMISSION_METADATA_DOCUMENT_REMOVE], text=_('Remove metadata'), view='metadata:metadata_remove', args='object.pk')
link_metadata_view = Link(permissions=[PERMISSION_METADATA_DOCUMENT_VIEW], text=_('Metadata'), view='metadata:metadata_view', args='object.pk')
link_setup_document_type_metadata = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Optional metadata'), view='metadata:setup_document_type_metadata', args='document_type.pk')
link_setup_document_type_metadata_required = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Required metadata'), view='metadata:setup_document_type_metadata_required', args='document_type.pk')
link_setup_document_type_metadata = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Optional metadata'), view='metadata:setup_document_type_metadata', args='resolved_object.pk')
link_setup_document_type_metadata_required = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Required metadata'), view='metadata:setup_document_type_metadata_required', args='resolved_object.pk')
link_setup_metadata_type_create = Link(permissions=[PERMISSION_METADATA_TYPE_CREATE], text=_('Create new'), view='metadata:setup_metadata_type_create')
link_setup_metadata_type_delete = Link(permissions=[PERMISSION_METADATA_TYPE_DELETE], text=_('Delete'), view='metadata:setup_metadata_type_delete', args='object.pk')
link_setup_metadata_type_edit = Link(permissions=[PERMISSION_METADATA_TYPE_EDIT], text=_('Edit'), view='metadata:setup_metadata_type_edit', args='object.pk')

View File

@@ -62,22 +62,7 @@ class Menu(object):
# Unsourced links display always
self._add_links_to_source(links, None)
def resolve_for_source(self, context, source):
request = Variable('request').resolve(context)
current_path = request.META['PATH_INFO']
current_view = resolve(current_path).view_name
result = []
for link in self.bound_links.get(CombinedSource(obj=(source), view=current_view), []):
result.append(link.resolve(context))
for link in self.bound_links.get(source, []):
result.append(link.resolve(context))
return result
def resolve(self, context):
def resolve(self, context, source=None):
request = Variable('request').resolve(context)
current_path = request.META['PATH_INFO']
@@ -87,14 +72,17 @@ class Menu(object):
result = []
navigation_object_list = context.get('navigation_object_list', ['object'])
if source:
resolved_navigation_object_list = [source]
else:
navigation_object_list = context.get('navigation_object_list', ['object'])
# Multiple objects
for navigation_object in navigation_object_list:
try:
resolved_navigation_object_list.append(Variable(navigation_object).resolve(context))
except VariableDoesNotExist:
pass
# Multiple objects
for navigation_object in navigation_object_list:
try:
resolved_navigation_object_list.append(Variable(navigation_object).resolve(context))
except VariableDoesNotExist:
pass
for resolved_navigation_object in resolved_navigation_object_list:
for source, links in self.bound_links.iteritems():

View File

@@ -11,17 +11,16 @@ register = Library()
@register.assignment_tag(takes_context=True)
def get_menu_links(context, name):
return Menu.get(name).resolve(context=context)
def get_menu_links(context, name, source=None):
return Menu.get(name).resolve(context=context, source=source)
@register.assignment_tag(takes_context=True)
def get_action_links(context):
# TODO: move this logic to template
def get_menus_links(context, names, source=None):
result = []
for menu_name in ['object menu', 'sidebar menu', 'secondary menu']:
links = Menu.get(name=menu_name).resolve(context)
for name in names.split(','):
links = Menu.get(name=name).resolve(context)
if links:
result.append(links)
@@ -30,7 +29,7 @@ def get_action_links(context):
@register.simple_tag(takes_context=True)
def get_multi_item_links_form(context, object_list):
actions = [(link.url, link.text) for link in Menu.get('multi item menu').resolve_for_source(context=context, source=type(object_list[0]))]
actions = [(link.url, link.text) for link in Menu.get('multi item menu').resolve(context=context, source=object_list[0])]
form = MultiItemForm(actions=actions)
context.update({'multi_item_form': form, 'multi_item_actions': actions})
return ''

View File

@@ -24,12 +24,12 @@ link_setup_source_create_pop3_email = Link(permissions=[PERMISSION_SOURCES_SETUP
link_setup_source_create_staging_folder = Link(permissions=[PERMISSION_SOURCES_SETUP_CREATE], text=_('Add new staging folder'), view='sources:setup_source_create', args='"%s"' % SOURCE_CHOICE_STAGING)
link_setup_source_create_watch_folder = Link(permissions=[PERMISSION_SOURCES_SETUP_CREATE], text=_('Add new watch folder'), view='sources:setup_source_create', args='"%s"' % SOURCE_CHOICE_WATCH)
link_setup_source_create_webform = Link(permissions=[PERMISSION_SOURCES_SETUP_CREATE], text=_('Add new webform source'), view='sources:setup_source_create', args='"%s"' % SOURCE_CHOICE_WEB_FORM)
link_setup_source_delete = Link(permissions=[PERMISSION_SOURCES_SETUP_DELETE], text=_('Delete'), view='sources:setup_source_delete', args=['source.pk'])
link_setup_source_edit = Link(text=_('Edit'), view='sources:setup_source_edit', args=['source.pk'], permissions=[PERMISSION_SOURCES_SETUP_EDIT])
link_setup_source_transformation_create = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Add transformation'), view='sources:setup_source_transformation_create', args=['source.pk'])
link_setup_source_transformation_edit = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Edit'), view='sources:setup_source_transformation_edit', args='transformation.pk')
link_setup_source_transformation_delete = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Delete'), view='sources:setup_source_transformation_delete', args='transformation.pk')
link_setup_source_transformation_list = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Transformations'), view='sources:setup_source_transformation_list', args=['source.pk'])
link_setup_source_delete = Link(permissions=[PERMISSION_SOURCES_SETUP_DELETE], text=_('Delete'), view='sources:setup_source_delete', args=['resolved_object.pk'])
link_setup_source_edit = Link(text=_('Edit'), view='sources:setup_source_edit', args=['resolved_object.pk'], permissions=[PERMISSION_SOURCES_SETUP_EDIT])
link_setup_source_transformation_create = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Add transformation'), view='sources:setup_source_transformation_create', args=['resolved_object.pk'])
link_setup_source_transformation_edit = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Edit'), view='sources:setup_source_transformation_edit', args='resolved_object.pk')
link_setup_source_transformation_delete = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Delete'), view='sources:setup_source_transformation_delete', args='resolved_object.pk')
link_setup_source_transformation_list = Link(permissions=[PERMISSION_SOURCES_SETUP_EDIT], text=_('Transformations'), view='sources:setup_source_transformation_list', args=['resolved_object.pk'])
link_source_list = Link(permissions=[PERMISSION_SOURCES_SETUP_VIEW], text=_('Document sources'), view='sources:setup_web_form_list')
link_staging_file_delete = Link(keep_query=True, permissions=[PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE], text=_('Delete'), view='sources:staging_file_delete', args=['source.pk', 'object.encoded_filename'])
link_upload_version = Link(permissions=[PERMISSION_DOCUMENT_NEW_VERSION], text=_('Upload new version'), view='sources:upload_version', args='object.pk')

View File

@@ -343,7 +343,6 @@ def setup_source_list(request):
'object_list': Source.objects.select_subclasses(),
'title': _('Sources'),
'hide_link': True,
'list_object_variable_name': 'source',
'extra_columns': [
{
'name': _('Type'),
@@ -459,7 +458,6 @@ def setup_source_transformation_list(request, source_id):
],
'hide_link': True,
'hide_object': True,
'list_object_variable_name': 'transformation',
'navigation_object_list': ['source'],
'object_list': SourceTransformation.transformations.get_for_object(source),
'source': source,

View File

@@ -19,5 +19,5 @@ class StatisticsApp(apps.AppConfig):
def ready(self):
menu_object.bind_links(links=[link_execute], sources=[Statistic])
menu_object.bind_links(links=[link_namespace_details], sources=[StatisticNamespace])
menu_secondary.bind_links(links=[link_namespace_list], sources=[StatisticNamespace, 'statistics:namespace_list', 'statistics:execute'])
menu_secondary.bind_links(links=[link_namespace_list], sources=[StatisticNamespace, 'statistics:namespace_list'])
menu_tools.bind_links(links=[link_statistics])

View File

@@ -10,6 +10,6 @@ def is_superuser(context):
link_execute = Link(condition=is_superuser, text=_('Execute'), view='statistics:execute', args='object.id')
link_namespace_details = Link(text=_('Details'), view='statistics:namespace_details', args='namespace.id', condition=is_superuser)
link_namespace_details = Link(text=_('Namespace details'), view='statistics:namespace_details', args='resolved_object.id', condition=is_superuser)
link_namespace_list = Link(condition=is_superuser, text=_('Namespace list'), view='statistics:namespace_list')
link_statistics = Link(condition=is_superuser, icon='fa fa-sort-numeric-desc', text=_('Statistics'), view='statistics:namespace_list')

View File

@@ -16,7 +16,6 @@ def namespace_list(request):
'object_list': StatisticNamespace.get_all(),
'hide_link': True,
'title': _('Statistics namespaces'),
'list_object_variable_name': 'namespace',
}, context_instance=RequestContext(request))
@@ -44,10 +43,7 @@ def execute(request, statistic_id):
return render_to_response('appearance/generic_list.html', {
'object': statictic,
'namespace': statictic.namespace,
'navigation_object_list': [
{'object': 'namespace', 'name': _('Namespace')},
{'object': 'object', 'name': _('Statistic')},
],
'navigation_object_list': ['namespace', 'object'],
'object_list': statictic.get_results(),
'hide_link': True,
'title': _('Results for: %s') % statictic,