From f0d776b316eb96760e2a4c20237893b292fdc422 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 19 Aug 2011 04:35:27 -0400 Subject: [PATCH] Converted document grouping subtemplate into a document information tab --- apps/documents/views.py | 6 ----- apps/grouping/__init__.py | 6 +++++ apps/grouping/urls.py | 1 + apps/grouping/utils.py | 36 ---------------------------- apps/grouping/views.py | 49 ++++++++++++++++++++++++++++++++++++++- 5 files changed, 55 insertions(+), 43 deletions(-) delete mode 100644 apps/grouping/utils.py diff --git a/apps/documents/views.py b/apps/documents/views.py index acff89e8d5..a8b8ee5b01 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -20,7 +20,6 @@ from common.conf.settings import DEFAULT_PAPER_SIZE from converter.literals import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION, \ DEFAULT_PAGE_NUMBER from filetransfers.api import serve_file -from grouping.utils import get_document_group_subtemplate from metadata.forms import MetadataFormSet, MetadataSelectionForm from navigation.utils import resolve_to_name from permissions.api import check_permissions @@ -163,11 +162,6 @@ def document_view(request, document_id, advanced=False): } ) - document_group_subtemplate = get_document_group_subtemplate(request, document) - - if document_group_subtemplate: - subtemplates_list.append(document_group_subtemplate) - return render_to_response('generic_detail.html', { 'object': document, 'document': document, diff --git a/apps/grouping/__init__.py b/apps/grouping/__init__.py index 4986bdea71..b939fc5fa6 100644 --- a/apps/grouping/__init__.py +++ b/apps/grouping/__init__.py @@ -1,5 +1,11 @@ from django.utils.translation import ugettext_lazy as _ +from navigation.api import register_links + from documents.literals import PERMISSION_DOCUMENT_VIEW +from documents.models import Document document_group_link = {'text': _(u'group actions'), 'view': 'document_group_view', 'famfam': 'page_go', 'permissions': [PERMISSION_DOCUMENT_VIEW]} +groups_for_document = {'text': _(u'groups'), 'view': 'groups_for_document', 'args': 'object.pk', 'famfam': 'page_go', 'permissions': [PERMISSION_DOCUMENT_VIEW]} + +register_links(Document, [groups_for_document], menu_name='form_header') diff --git a/apps/grouping/urls.py b/apps/grouping/urls.py index 1e54277143..ecb15abd27 100644 --- a/apps/grouping/urls.py +++ b/apps/grouping/urls.py @@ -3,4 +3,5 @@ from django.conf.urls.defaults import patterns, url urlpatterns = patterns('grouping.views', url(r'^action/$', 'document_group_action', (), 'document_group_action'), url(r'^document/(?P\d+)/group/(?P\d+)/$', 'document_group_view', (), 'document_group_view'), + url(r'^groups/for_document/(?P\d+)/$', 'groups_for_document', (), 'groups_for_document'), ) diff --git a/apps/grouping/utils.py b/apps/grouping/utils.py deleted file mode 100644 index 00a81c6ab0..0000000000 --- a/apps/grouping/utils.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.utils.translation import ugettext_lazy as _ -from django.contrib import messages -from django.core.urlresolvers import reverse - -from grouping.models import DocumentGroup -from grouping.conf.settings import SHOW_EMPTY_GROUPS -from grouping.forms import DocumentDataGroupForm -from grouping import document_group_link - - -def get_document_group_subtemplate(request, document): - document_groups, errors = DocumentGroup.objects.get_groups_for(document) - if (request.user.is_staff or request.user.is_superuser) and errors: - for error in errors: - messages.warning(request, _(u'Document group query error: %s' % error)) - - if not SHOW_EMPTY_GROUPS: - #If GROUP_SHOW_EMPTY is False, remove empty groups from - #dictionary - document_groups = dict([(group, data) for group, data in document_groups.items() if data['documents']]) - - if document_groups: - return { - 'name': 'generic_form_subtemplate.html', - 'context': { - 'title': _(u'document groups (%s)') % len(document_groups.keys()), - 'form': DocumentDataGroupForm( - groups=document_groups, current_document=document, - links=[document_group_link] - ), - 'form_action': reverse('document_group_action'), - 'submit_method': 'GET', - } - } - else: - return None diff --git a/apps/grouping/views.py b/apps/grouping/views.py index 0688654a51..704483ce45 100644 --- a/apps/grouping/views.py +++ b/apps/grouping/views.py @@ -1,12 +1,17 @@ from django.utils.translation import ugettext_lazy as _ from django.contrib import messages from django.http import HttpResponseRedirect -from django.shortcuts import get_object_or_404 +from django.shortcuts import get_object_or_404, render_to_response +from django.core.urlresolvers import reverse +from django.template import RequestContext from documents.models import Document from documents.views import document_list from grouping.models import DocumentGroup +from grouping.conf.settings import SHOW_EMPTY_GROUPS +from grouping.forms import DocumentDataGroupForm +from grouping import document_group_link def document_group_action(request): @@ -34,3 +39,45 @@ def document_group_view(request, document_id, document_group_id): 'object': document } ) + + +def groups_for_document(request, document_id): + subtemplates_list = [] + document = get_object_or_404(Document, pk=document_id) + document_groups, errors = DocumentGroup.objects.get_groups_for(document) + if (request.user.is_staff or request.user.is_superuser) and errors: + for error in errors: + messages.warning(request, _(u'Document group query error: %s' % error)) + + if not SHOW_EMPTY_GROUPS: + #If GROUP_SHOW_EMPTY is False, remove empty groups from + #dictionary + document_groups = dict([(group, data) for group, data in document_groups.items() if data['documents']]) + + if document_groups: + subtemplates_list = [{ + 'name': 'generic_form_subtemplate.html', + 'context': { + 'title': _(u'document groups (%s)') % len(document_groups.keys()), + 'form': DocumentDataGroupForm( + groups=document_groups, current_document=document, + links=[document_group_link] + ), + 'form_action': reverse('document_group_action'), + 'submit_method': 'GET', + } + }] + else: + # If there are not group display a placeholder messages saying so + subtemplates_list = [{ + 'name': 'generic_subtemplate.html', + 'context': { + 'content': _(u'There no defined groups for the current document.'), + } + }] + + return render_to_response('generic_detail.html', { + 'object': document, + 'document': document, + 'subtemplates_list': subtemplates_list, + }, context_instance=RequestContext(request))