from django import forms from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext from django.core.urlresolvers import reverse from django.utils.safestring import mark_safe from django.template.defaultfilters import capfirst from django.conf import settings from tags.widgets import get_tags_inline_widget class DocumentGroupImageWidget(forms.widgets.Widget): def render(self, name, value, attrs=None): output = [] if value['links']: output.append(u'') output.append(u'
') for document in value['group_data']: tags_template = get_tags_inline_widget(document) output.append( u'''
%(document_name)s
%(page_string)s: %(document_pages)d
%(tags_template)s
''' % { '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, 'static_url': settings.STATIC_URL, 'tags_template': tags_template if tags_template else u'', 'string': _(u'group 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 DocumentDataGroupForm(forms.Form): def __init__(self, *args, **kwargs): groups = kwargs.pop('groups', None) links = kwargs.pop('links', None) current_document = kwargs.pop('current_document', None) super(DocumentDataGroupForm, self).__init__(*args, **kwargs) for group, data in groups.items(): self.fields['preview-%s' % group] = forms.CharField( widget=DocumentGroupImageWidget(), label=u'%s (%d)' % (unicode(data['title']), len(data['documents'])), required=False, initial={ 'group': group, 'group_data': data['documents'], 'current_document': current_document, 'links': links } )