Added preliminary views to add/remove document page transformations
This commit is contained in:
@@ -43,9 +43,10 @@ document_edit_metadata = {'text':_('edit metadata'), 'view':'document_edit_metad
|
||||
document_preview = {'text':_('preview'), 'class':'fancybox', 'view':'document_preview', 'args':'object.id', 'famfam':'magnifier', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
|
||||
document_download = {'text':_('download'), 'view':'document_download', 'args':'object.id', 'famfam':'page_save', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_DOWNLOAD]}}
|
||||
|
||||
#document_transformation_list = {'text':_(u'transformations'), 'view':'document_transformation_list', 'args':'object.id', 'famfam':'page_paintbrush', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
|
||||
#document_transformation_delete = {'text':_('delete'), 'view':'document_transformation_delete', 'args':'object.id', 'famfam':'delete'}#, 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
|
||||
|
||||
document_page_transformation_create = {'text':_('create new transformation'), 'view':'document_page_transformation_create', 'args':'object.id', 'famfam':'pencil_add', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
|
||||
document_page_transformation_edit = {'text':_('edit'), 'view':'document_page_transformation_edit', 'args':'object.id', 'famfam':'pencil_go', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
|
||||
document_page_transformation_delete = {'text':_('delete'), 'view':'document_page_transformation_delete', 'args':'object.id', 'famfam':'pencil_delete', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
|
||||
#document_page_transformation_go_back = {'text':_('delete'), 'view':'document_page_transformation_delete', 'args':'object.id', 'famfam':'pencil_delete', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
|
||||
|
||||
staging_file_preview = {'text':_('preview'), 'class':'fancybox-noscaling', 'view':'staging_file_preview', 'args':'object.id', 'famfam':'drive_magnify'}
|
||||
staging_file_delete = {'text':_('delete'), 'view':'staging_file_delete', 'args':'object.id', 'famfam':'drive_delete'}
|
||||
@@ -54,7 +55,8 @@ register_links(Document, [document_view, document_edit, document_edit_metadata,
|
||||
register_links(Document, [document_list, document_create, document_create_multiple, document_create_sibling], menu_name='sidebar')
|
||||
register_links(['document_list', 'document_create', 'document_create_multiple', 'upload_document_with_type', 'upload_multiple_documents_with_type'], [document_list, document_create, document_create_multiple], menu_name='sidebar')
|
||||
|
||||
#register_links(DocumentTransformation, [document_transformation_delete])
|
||||
register_links(DocumentPageTransformation, [document_page_transformation_edit, document_page_transformation_delete])
|
||||
register_links(['document_page_view', 'document_page_transformation_edit', 'document_page_transformation_delete', 'document_page_transformation_create'], [document_page_transformation_create], menu_name='sidebar')
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,12 +13,43 @@ from common.wizard import BoundFormWizard
|
||||
from common.utils import urlquote
|
||||
from common.forms import DetailForm
|
||||
|
||||
from models import Document, DocumentType, DocumentTypeMetadataType
|
||||
from models import Document, DocumentType, DocumentTypeMetadataType, \
|
||||
DocumentPage, DocumentPageTransformation
|
||||
|
||||
from documents.conf.settings import AVAILABLE_FUNCTIONS
|
||||
from documents.conf.settings import AVAILABLE_MODELS
|
||||
|
||||
|
||||
class DocumentPageTransformationForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = DocumentPageTransformation
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DocumentPageTransformationForm, self).__init__(*args, **kwargs)
|
||||
self.fields['document_page'].widget = forms.HiddenInput()
|
||||
|
||||
|
||||
class DocumentPageImageWidget(forms.widgets.Widget):
|
||||
def render(self, name, value, attrs=None):
|
||||
output = []
|
||||
output.append('<img src="%(img)s?page=%(page)s" />' % {
|
||||
'img':reverse('document_preview', args=[value.document.id]),
|
||||
'page':value.page_number,
|
||||
})
|
||||
#output.append(super(ImageWidget, self).render(name, value, attrs))
|
||||
return mark_safe(u''.join(output))
|
||||
|
||||
|
||||
class DocumentPageForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = DocumentPage
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DocumentPageForm, self).__init__(*args, **kwargs)
|
||||
self.fields['page_image'].initial = self.instance
|
||||
|
||||
page_image = forms.CharField(widget=DocumentPageImageWidget())
|
||||
|
||||
|
||||
class ImageWidget(forms.widgets.Widget):
|
||||
def render(self, name, value, attrs=None):
|
||||
@@ -40,6 +71,11 @@ class ImageWidget(forms.widgets.Widget):
|
||||
})
|
||||
|
||||
output.append('<br /><span class="famfam active famfam-magnifier"></span>%s' % ugettext(u'Click on the image for full size view'))
|
||||
|
||||
#for document_page in value.documentpage_set.all():
|
||||
# output.append('<br/>%s)<a href="%s">%s</a>' % (document_page.page_number,
|
||||
# reverse('document_page_view', args=[document_page.id]),
|
||||
# ugettext(u'page view')))
|
||||
#output.append(super(ImageWidget, self).render(name, value, attrs))
|
||||
return mark_safe(u''.join(output))
|
||||
|
||||
|
||||
@@ -400,7 +400,7 @@ class DocumentPage(models.Model):
|
||||
page_number = models.PositiveIntegerField(default=1, editable=False, verbose_name=_(u'page number'))
|
||||
|
||||
def __unicode__(self):
|
||||
return '%s - %s - %s' % (self.document, self.page_number, self.page_label)
|
||||
return '%s - %d - %s' % (unicode(self.document), self.page_number, self.page_label)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _(u'document page')
|
||||
@@ -471,12 +471,12 @@ available_transformations = ([(name, data['label']) for name, data in AVAILABLE_
|
||||
|
||||
class DocumentPageTransformation(models.Model):
|
||||
document_page = models.ForeignKey(DocumentPage, verbose_name=_(u'document page'))
|
||||
order = models.PositiveIntegerField(blank=True, null=True, verbose_name=_(u'order'))
|
||||
order = models.PositiveIntegerField(default=0, blank=True, null=True, verbose_name=_(u'order'))
|
||||
transformation = models.CharField(choices=available_transformations, max_length=128, verbose_name=_(u'transformation'))
|
||||
arguments = models.TextField(blank=True, null=True, verbose_name=_(u'arguments'), help_text=_(u'Use directories to indentify arguments, example: {\'degrees\':90}'))
|
||||
arguments = models.TextField(blank=True, null=True, verbose_name=_(u'arguments'), help_text=_(u'Use dictionaries to indentify arguments, example: {\'degrees\':90}'))
|
||||
|
||||
def __unicode__(self):
|
||||
return '%s - %s' % (self.document_page, self.get_transformation_display())
|
||||
return '%s - %s' % (unicode(self.document_page), self.get_transformation_display())
|
||||
|
||||
class Meta:
|
||||
ordering = ('order',)
|
||||
|
||||
@@ -27,10 +27,11 @@ urlpatterns = patterns('documents.views',
|
||||
url(r'^document/(?P<document_id>\d+)/download/$', 'document_download', (), 'document_download'),
|
||||
url(r'^document/(?P<document_id>\d+)/create/siblings/$', 'document_create_sibling', {'multiple':False}, 'document_create_sibling'),
|
||||
|
||||
url(r'^document/(?P<document_id>\d+)/tranformation/list/$', 'document_transformation_list', (), 'document_transformation_list'),
|
||||
url(r'^document/tranformation/(?P<document_transformation_id>\d+)/delete/$', 'document_transformation_delete', (), 'document_transformation_delete'),
|
||||
|
||||
|
||||
url(r'^staging_file/(?P<staging_file_id>\w+)/preview/$', 'staging_file_preview', (), 'staging_file_preview'),
|
||||
url(r'^staging_file/(?P<staging_file_id>\w+)/delete/$', 'staging_file_delete', (), 'staging_file_delete'),
|
||||
|
||||
url(r'^document/page/(?P<document_page_id>\d+)/$', 'document_page_view', (), 'document_page_view'),
|
||||
url(r'^document/page/(?P<document_page_id>\d+)/transformation/create/$', 'document_page_transformation_create', (), 'document_page_transformation_create'),
|
||||
url(r'^document/page/transformation/(?P<document_page_transformation_id>\d+)/edit/$', 'document_page_transformation_edit', (), 'document_page_transformation_edit'),
|
||||
url(r'^document/page/transformation/(?P<document_page_transformation_id>\d+)/delete/$', 'document_page_transformation_delete', (), 'document_page_transformation_delete'),
|
||||
)
|
||||
|
||||
@@ -26,7 +26,7 @@ from models import Document, DocumentMetadata, DocumentType, MetadataType, \
|
||||
from forms import DocumentTypeSelectForm, DocumentCreateWizard, \
|
||||
MetadataForm, DocumentForm, DocumentForm_edit, DocumentForm_view, \
|
||||
StagingDocumentForm, DocumentTypeMetadataType, DocumentPreviewForm, \
|
||||
MetadataFormSet
|
||||
MetadataFormSet, DocumentPageForm, DocumentPageTransformationForm
|
||||
|
||||
from staging import StagingFile
|
||||
|
||||
@@ -461,7 +461,6 @@ def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_
|
||||
try:
|
||||
#Catch invalid or non existing pages
|
||||
document_page = DocumentPage.objects.get(document=document, page_number=page)
|
||||
|
||||
for page_transformation in document_page.documentpagetransformation_set.all():
|
||||
try:
|
||||
if page_transformation.transformation in TRANFORMATION_CHOICES:
|
||||
@@ -559,39 +558,118 @@ def staging_file_delete(request, staging_file_id):
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_transformation_list(request, document_id):
|
||||
def document_page_view(request, document_page_id):
|
||||
permissions = [PERMISSION_DOCUMENT_VIEW]
|
||||
try:
|
||||
check_permissions(request.user, 'documents', permissions)
|
||||
except Unauthorized, e:
|
||||
raise Http404(e)
|
||||
|
||||
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
|
||||
document_page_form = DocumentPageForm(instance=document_page)
|
||||
|
||||
form_list = [
|
||||
{
|
||||
'form':document_page_form,
|
||||
'title':_(u'document page'),
|
||||
'object':document_page,
|
||||
'grid':6,
|
||||
},
|
||||
]
|
||||
subtemplates_dict = [
|
||||
{
|
||||
'name':'generic_list_subtemplate.html',
|
||||
'title':_(u'transformations'),
|
||||
'object_list':document_page.documentpagetransformation_set.all(),
|
||||
'extra_columns':[
|
||||
{'name':_(u'order'), 'attribute':'order'},
|
||||
{'name':_(u'transformation'), 'attribute':lambda x: x.get_transformation_display()},
|
||||
{'name':_(u'arguments'), 'attribute':'arguments'}
|
||||
],
|
||||
'hide_link':True,
|
||||
'hide_object':True,
|
||||
'grid':6,
|
||||
'grid_clear':True,
|
||||
'hide_header':True,
|
||||
},
|
||||
]
|
||||
|
||||
return render_to_response('generic_detail.html', {
|
||||
'form_list':form_list,
|
||||
'object':document_page,
|
||||
'subtemplates_dict':subtemplates_dict,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_page_transformation_create(request, document_page_id):
|
||||
permissions = [PERMISSION_DOCUMENT_TRANSFORM]
|
||||
try:
|
||||
check_permissions(request.user, 'documents', permissions)
|
||||
except Unauthorized, e:
|
||||
raise Http404(e)
|
||||
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
|
||||
|
||||
return object_list(
|
||||
request,
|
||||
queryset=document.documenttransformation_set.all(),
|
||||
template_name='generic_list.html',
|
||||
extra_context={
|
||||
'title':_(u'document transformations'),
|
||||
},
|
||||
)
|
||||
|
||||
def document_transformation_delete(request, document_transformation_id):
|
||||
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = DocumentPageTransformationForm(request.POST, initial={'document_page':document_page})
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
return HttpResponseRedirect(reverse('document_page_view', args=[document_page_id]))
|
||||
else:
|
||||
form = DocumentPageTransformationForm(initial={'document_page':document_page})
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'form':form,
|
||||
'object':document_page,
|
||||
'title':_(u'Create new transformation for page: %s of document: %s') % (
|
||||
document_page.page_number, document_page.document),
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_page_transformation_edit(request, document_page_transformation_id):
|
||||
permissions = [PERMISSION_DOCUMENT_TRANSFORM]
|
||||
try:
|
||||
check_permissions(request.user, 'documents', permissions)
|
||||
except Unauthorized, e:
|
||||
raise Http404(e)
|
||||
|
||||
document_page_transformation = get_object_or_404(DocumentPageTransformation, pk=document_page_transformation_id)
|
||||
return update_object(request, template_name='generic_form.html',
|
||||
form_class=DocumentPageTransformationForm,
|
||||
object_id=document_page_transformation_id,
|
||||
post_save_redirect=reverse('document_page_view', args=[document_page_transformation.document_page.id]),
|
||||
extra_context={
|
||||
'object_name':_(u'transformation')}
|
||||
)
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'form':form,
|
||||
'object':document_page_transformation.document_page,
|
||||
'title':_(u'Edit transformation "%s" for page: %s of document: %s') % (
|
||||
document_page_transformation.get_transformation_display(),
|
||||
document_page_transformation.document_page.page_number,
|
||||
document_page_transformation.document_page.document),
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_page_transformation_delete(request, document_page_transformation_id):
|
||||
permissions = [PERMISSION_DOCUMENT_TRANSFORM]
|
||||
try:
|
||||
check_permissions(request.user, 'documents', permissions)
|
||||
except Unauthorized, e:
|
||||
raise Http404(e)
|
||||
|
||||
document_transformation = get_object_or_404(DocumentPageTransformation, pk=document_transformation_id)
|
||||
document_page_transformation = get_object_or_404(DocumentPageTransformation, pk=document_page_transformation_id)
|
||||
|
||||
return delete_object(request, model=DocumentPageTransformation, object_id=document_transformation_id,
|
||||
return delete_object(request, model=DocumentPageTransformation, object_id=document_page_transformation_id,
|
||||
template_name='generic_confirm.html',
|
||||
post_delete_redirect=reverse('document_transformation_list'),
|
||||
post_delete_redirect=reverse('document_page_view', args=[document_page_transformation.document_page.id]),
|
||||
extra_context={
|
||||
'delete_view':True,
|
||||
'object':document_transformation,
|
||||
'object':document_page_transformation,
|
||||
'object_name':_(u'document transformation'),
|
||||
'title':_(u'Are you sure you wish to delete transformation "%s" for page: %s of document: %s') % (
|
||||
document_page_transformation.get_transformation_display(),
|
||||
document_page_transformation.document_page.page_number,
|
||||
document_page_transformation.document_page.document),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user