from __future__ import absolute_import from django import forms 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 documents.widgets import document_html_widget from tags.widgets import get_tags_inline_widget from .models import SmartLink, SmartLinkCondition class SmartLinkForm(forms.ModelForm): class Meta: model = SmartLink class SmartLinkConditionForm(forms.ModelForm): class Meta: model = SmartLinkCondition exclude = ('smart_link',) class SmartLinkImageWidget(forms.widgets.Widget): def render(self, name, value, attrs=None): output = [] # TODO: convert to navigation app if value['links']: output.append(u'') output.append(u'
') for document in value['documents']: output.append(u'
' % (u'border: 5px solid black; padding: 3px;' if value['current_document'] == document else u'')) output.append(u'
%s
' % document) output.append(u'
%s: %d
' % (ugettext(u'Pages'), document.pages.count())) output.append(get_tags_inline_widget(document)) output.append(u'
' % document) output.append(document_html_widget(document, click_view='document_display', view='document_preview_multipage', fancybox_class='fancybox-noscaling', gallery_name=u'smart_link_%d_documents_gallery' % value['smart_link_instance'].pk, title=document.filename)) output.append(u'
') output.append(u'
') output.append(u'%s' % (reverse('document_view_simple', args=[document.pk]), ugettext(u'Select'))) output.append(u'
') output.append(u'
') 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 SmartLinkInstanceForm(forms.Form): def __init__(self, *args, **kwargs): smart_link_instances = kwargs.pop('smart_link_instances', None) links = kwargs.pop('links', None) current_document = kwargs.pop('current_document', None) super(SmartLinkInstanceForm, self).__init__(*args, **kwargs) for smart_link_instance, data in smart_link_instances.items(): self.fields['preview-%s' % smart_link_instance] = forms.CharField( widget=SmartLinkImageWidget(), label=u'%s (%d)' % (unicode(data['title']), len(data['documents'])), required=False, initial={ 'smart_link_instance': smart_link_instance, 'documents': data['documents'], 'current_document': current_document, 'links': links } )