From e7c580f1a856fa69316e5154ebd6ab288d368190 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 20 Apr 2011 02:45:51 -0400 Subject: [PATCH] Changed the side bar document grouping with carousel style document grouping form widget --- apps/common/templates/generic_detail.html | 25 +++++- apps/documents/forms.py | 59 ++++++++++++- apps/documents/views.py | 102 +++++++++------------- apps/main/templates/about.html | 1 + 4 files changed, 121 insertions(+), 66 deletions(-) diff --git a/apps/common/templates/generic_detail.html b/apps/common/templates/generic_detail.html index a937c48360..a4bba054d5 100644 --- a/apps/common/templates/generic_detail.html +++ b/apps/common/templates/generic_detail.html @@ -91,7 +91,6 @@ {% endwith %} {% endfor %} - {% for subtemplate in subtemplates_dict %} {% with subtemplate.title as title %} {% with subtemplate.object_list as object_list %} @@ -100,8 +99,30 @@ {% with subtemplate.main_object as main_object %} {% with subtemplate.hide_link as hide_link %} {% with subtemplate.hide_header as hide_header %} +
- {% include subtemplate.name %} + + {% if subtemplate.form %} + {% with subtemplate.submit_method as submit_method %} + {% with subtemplate.striptags as striptags %} + {% with subtemplate.object as object %} + {% with subtemplate.object_name as object_name %} + {% with subtemplate.form_action as form_action %} + {% with "true" as read_only %} + {% with subtemplate.form as form %} +
+ {% include subtemplate.name %} +
+ {% endwith %} + {% endwith %} + {% endwith %} + {% endwith %} + {% endwith %} + {% endwith %} + {% endwith %} + {% else %} + {% include subtemplate.name %} + {% endif %}
{% if subtemplate.grid_clear or not subtemplate.grid %}
diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 50bd253a7e..415ea8fa64 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -92,7 +92,7 @@ class ImageWidget(forms.widgets.Widget):
- %(details_string)s + %(details_string)s
''' % { 'url': reverse('document_page_view', args=[page.pk]), @@ -297,3 +297,60 @@ class DocumentCreateWizard(BoundFormWizard): url = reverse(view, args=[self.document_type.id]) return HttpResponseRedirect('%s?%s' % (url, urlencode(self.urldata))) + + +class MetaDataImageWidget(forms.widgets.Widget): + def render(self, name, value, attrs=None): + output = [] + output.append( + u'
%s
' % + ugettext(u'Total documents: %s') % len(value['group_data'])) + + output.append(u'
') + for document in value['group_data']: + output.append( + u'''
+
%(document_name)s
+
%(page_string)s: %(document_pages)d
+
+ + + +
+ +
''' % { + 'url': reverse('document_view_simple', args=[document.pk]), + 'img': reverse('document_preview_multipage', args=[document.pk]), + 'current': u'border: 5px solid black; padding: 3px;' if value['current_document'] == document else u'', + 'view_url': reverse('document_display', args=[document.pk]), + 'document_pages': document.documentpage_set.count(), + 'page_string': ugettext(u'Pages'), + 'details_string': ugettext(u'Select'), + 'group_id': value['group'].pk, + 'document_name': document + }) + output.append(u'
') + output.append( + u'
%s' % + ugettext(u'Click on the image for full size view of the first page.')) + + return mark_safe(u''.join(output)) + + +class MetaDataGroupForm(forms.Form): + def __init__(self, *args, **kwargs): + groups = kwargs.pop('groups', None) + current_document = kwargs.pop('current_document', None) + super(MetaDataGroupForm, self).__init__(*args, **kwargs) + for group, data in groups.items(): + self.fields['preview-%s' % group] = forms.CharField( + widget=MetaDataImageWidget(), + label=group, + initial={ + 'group': group, + 'group_data': data, + 'current_document': current_document + } + ) diff --git a/apps/documents/views.py b/apps/documents/views.py index addc756e12..ba4dc02aab 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -49,7 +49,7 @@ from forms import DocumentTypeSelectForm, DocumentCreateWizard, \ MetadataForm, DocumentForm, DocumentForm_edit, DocumentForm_view, \ StagingDocumentForm, DocumentTypeMetadataType, DocumentPreviewForm, \ MetadataFormSet, DocumentPageForm, DocumentPageTransformationForm, \ - DocumentContentForm, DocumentPageForm_edit + DocumentContentForm, DocumentPageForm_edit, MetaDataGroupForm from metadata import save_metadata_list, \ decode_metadata_from_url, metadata_repr_as_list @@ -301,46 +301,36 @@ def document_view(request, document_id): }, ] + metadata_groups, errors = document.get_metadata_groups() + if (request.user.is_staff or request.user.is_superuser) and errors: + for error in errors: + messages.warning(request, _(u'Metadata group query error: %s' % error)) + + if not GROUP_SHOW_EMPTY: + #If GROUP_SHOW_EMPTY is False, remove empty groups from + #dictionary + metadata_groups = dict([(group, data) for group, data in metadata_groups.items() if data]) + + if metadata_groups: + subtemplates_dict.append( + { + 'title':_(u'metadata groups'), + 'form': MetaDataGroupForm(groups=metadata_groups, current_document=document), + 'name': 'generic_form_subtemplate.html', + } + ) + if FILESERVING_ENABLE: subtemplates_dict.append({ 'name': 'generic_list_subtemplate.html', 'title': _(u'index links'), 'object_list': document.documentmetadataindex_set.all(), 'hide_link': True}) - - sidebar_groups = [] - for group, data in metadata_groups.items(): - if len(data) or GROUP_SHOW_EMPTY: - if len(data): - if len(data) > GROUP_MAX_RESULTS: - total_string = '(%s out of %s)' % (GROUP_MAX_RESULTS, len(data)) - else: - total_string = '(%s)' % len(data) - else: - total_string = '' - - extra_columns = [{'name':'current', 'attribute':lambda x: - '' if x == document else ''}] - - if GROUP_SHOW_THUMBNAIL: - extra_columns.append({'name': _(u'thumbnail'), 'attribute': - lambda x: '' % (reverse('document_preview', args=[x.id]), - reverse('document_thumbnail', args=[x.id]))}) - - sidebar_groups.append({ - 'title': '%s %s' % (group.label, total_string), - 'name': 'generic_list_subtemplate.html', - 'object_list': data[:GROUP_MAX_RESULTS], - 'hide_columns': True, - 'hide_header': True, - 'extra_columns': extra_columns, - }) - + return render_to_response('generic_detail.html', { 'form_list': form_list, 'object': document, 'subtemplates_dict': subtemplates_dict, - 'sidebar_subtemplates_dict': sidebar_groups, }, context_instance=RequestContext(request)) @@ -824,11 +814,6 @@ def document_view_simple(request, document_id): content_form = DocumentContentForm(document=document) - metadata_groups, errors = document.get_metadata_groups() - if (request.user.is_staff or request.user.is_superuser) and errors: - for error in errors: - messages.warning(request, _(u'Metadata group query error: %s' % error)) - preview_form = DocumentPreviewForm(document=document) form_list = [ { @@ -841,6 +826,7 @@ def document_view_simple(request, document_id): 'object': document, }, ] + subtemplates_dict = [ { 'name': 'generic_list_subtemplate.html', @@ -851,39 +837,29 @@ def document_view_simple(request, document_id): }, ] - sidebar_groups = [] - for group, data in metadata_groups.items(): - if len(data) or GROUP_SHOW_EMPTY: - if len(data): - if len(data) > GROUP_MAX_RESULTS: - total_string = '(%s out of %s)' % (GROUP_MAX_RESULTS, len(data)) - else: - total_string = '(%s)' % len(data) - else: - total_string = '' + metadata_groups, errors = document.get_metadata_groups() + if (request.user.is_staff or request.user.is_superuser) and errors: + for error in errors: + messages.warning(request, _(u'Metadata group query error: %s' % error)) - extra_columns = [{'name': 'current', 'attribute': lambda x: - '' if x == document else ''}] - - if GROUP_SHOW_THUMBNAIL: - extra_columns.append({'name': _(u'thumbnail'), 'attribute': - lambda x: '' % (reverse('document_preview', args=[x.id]), - reverse('document_thumbnail', args=[x.id]))}) - - sidebar_groups.append({ - 'title': '%s %s' % (group.label, total_string), - 'name': 'generic_list_subtemplate.html', - 'object_list': data[:GROUP_MAX_RESULTS], - 'hide_columns': True, - 'hide_header': True, - 'extra_columns': extra_columns, - }) + if not GROUP_SHOW_EMPTY: + #If GROUP_SHOW_EMPTY is False, remove empty groups from + #dictionary + metadata_groups = dict([(group, data) for group, data in metadata_groups.items() if data]) + + if metadata_groups: + subtemplates_dict.append( + { + 'title':_(u'metadata groups'), + 'form': MetaDataGroupForm(groups=metadata_groups, current_document=document), + 'name': 'generic_form_subtemplate.html', + } + ) return render_to_response('generic_detail.html', { 'form_list': form_list, 'object': document, 'subtemplates_dict': subtemplates_dict, - 'sidebar_subtemplates_dict': sidebar_groups, }, context_instance=RequestContext(request)) diff --git a/apps/main/templates/about.html b/apps/main/templates/about.html index acedfbd21c..a798e60bf2 100644 --- a/apps/main/templates/about.html +++ b/apps/main/templates/about.html @@ -9,6 +9,7 @@ {% project_name %}

{% trans 'Open source, Django based document manager with custom metadata indexing, file serving integration and OCR capabilities' %}

http://www.github.com/rosarior/mayan/

+
{% trans "Released under the GPL V3 License" %}