Added a document page edit view
This commit is contained in:
@@ -16,6 +16,7 @@ from conf.settings import ENABLE_SINGLE_DOCUMENT_UPLOAD
|
||||
|
||||
PERMISSION_DOCUMENT_CREATE = 'document_create'
|
||||
PERMISSION_DOCUMENT_PROPERTIES_EDIT = 'document_properties_edit'
|
||||
PERMISSION_DOCUMENT_EDIT = 'document_edit'
|
||||
PERMISSION_DOCUMENT_METADATA_EDIT = 'document_metadata_edit'
|
||||
PERMISSION_DOCUMENT_VIEW = 'document_view'
|
||||
PERMISSION_DOCUMENT_DELETE = 'document_delete'
|
||||
@@ -26,6 +27,7 @@ PERMISSION_DOCUMENT_TOOLS = 'document_tools'
|
||||
register_permissions('documents', [
|
||||
{'name': PERMISSION_DOCUMENT_CREATE, 'label': _(u'Create document')},
|
||||
{'name': PERMISSION_DOCUMENT_PROPERTIES_EDIT, 'label': _(u'Edit document properties')},
|
||||
{'name': PERMISSION_DOCUMENT_EDIT, 'label': _(u'Edit document')},
|
||||
{'name': PERMISSION_DOCUMENT_METADATA_EDIT, 'label': _(u'Edit document metadata')},
|
||||
{'name': PERMISSION_DOCUMENT_VIEW, 'label': _(u'View document')},
|
||||
{'name': PERMISSION_DOCUMENT_DELETE, 'label': _(u'Delete document')},
|
||||
@@ -58,7 +60,8 @@ document_page_transformation_edit = {'text': _('edit'), 'view': 'document_page_t
|
||||
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': _('page view'), 'view': 'document_page_view', 'args': 'object.document_page.id', 'famfam': 'page_white', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
||||
|
||||
document_page_go_back = {'text': _('page view'), 'view': 'document_page_view', 'args': 'object.id', 'famfam': 'page_white', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
||||
document_page_go_back = {'text': _('page details'), 'view': 'document_page_view', 'args': 'object.id', 'famfam': 'page_white', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
||||
document_page_edit = {'text': _('edit page'), 'view': 'document_page_edit', 'args': 'object.id', 'famfam': 'page_white', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_EDIT]}}
|
||||
|
||||
document_missing_list = {'text': _('Find missing document files'), 'view': 'document_missing_list', 'famfam': 'folder_page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
||||
|
||||
@@ -74,13 +77,13 @@ if ENABLE_SINGLE_DOCUMENT_UPLOAD:
|
||||
else:
|
||||
register_links(['document_list', 'document_create', 'document_create_multiple', 'upload_document_with_type', 'upload_multiple_documents_with_type'], [document_list, document_create_multiple], menu_name='sidebar')
|
||||
|
||||
register_links(DocumentPage, [document_page_go_back], menu_name='sidebar')
|
||||
register_links(DocumentPage, [document_page_edit, document_page_go_back], menu_name='sidebar')
|
||||
register_links('document_page_transformation_list', [document_page_transformation_create, document_page_transformation_list], menu_name='sidebar')
|
||||
register_links('document_page_transformation_create', [document_page_transformation_create], menu_name='sidebar')
|
||||
|
||||
register_links(DocumentPageTransformation, [document_page_transformation_edit, document_page_transformation_delete])
|
||||
register_links(DocumentPageTransformation, [document_page_transformation_go_back], menu_name='sidebar')
|
||||
register_links(['document_page_view', 'document_page_transformation_edit', 'document_page_transformation_delete', 'document_page_transformation_create'], [document_page_transformation_list], menu_name='sidebar')
|
||||
register_links(DocumentPageTransformation, [document_page_edit, document_page_transformation_go_back], menu_name='sidebar')
|
||||
register_links(['document_page_edit', 'document_page_view', 'document_page_transformation_edit', 'document_page_transformation_delete', 'document_page_transformation_create'], [document_page_transformation_list], menu_name='sidebar')
|
||||
|
||||
register_links(StagingFile, [staging_file_preview, staging_file_delete])
|
||||
|
||||
|
||||
@@ -30,12 +30,15 @@ class DocumentPageTransformationForm(forms.ModelForm):
|
||||
|
||||
class DocumentPageImageWidget(forms.widgets.Widget):
|
||||
def render(self, name, value, attrs=None):
|
||||
if value:
|
||||
output = []
|
||||
output.append('<div style="overflow: auto;"><img src="%(img)s?page=%(page)s" /></div>' % {
|
||||
'img': reverse('document_display', args=[value.document.id]),
|
||||
'page': value.page_number,
|
||||
})
|
||||
return mark_safe(u''.join(output))
|
||||
else:
|
||||
return u''
|
||||
|
||||
|
||||
class DocumentPageForm(DetailForm):
|
||||
@@ -55,6 +58,22 @@ class DocumentPageForm(DetailForm):
|
||||
page_image = forms.CharField(widget=DocumentPageImageWidget())
|
||||
|
||||
|
||||
class DocumentPageForm_edit(forms.ModelForm):
|
||||
class Meta:
|
||||
model = DocumentPage
|
||||
fields = ('page_label', 'content')
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DocumentPageForm_edit, self).__init__(*args, **kwargs)
|
||||
self.fields['page_image'].initial = self.instance
|
||||
self.fields.keyOrder = [
|
||||
'page_image',
|
||||
'page_label',
|
||||
'content',
|
||||
]
|
||||
page_image = forms.CharField(required=False, widget=DocumentPageImageWidget())
|
||||
|
||||
|
||||
class ImageWidget(forms.widgets.Widget):
|
||||
def render(self, name, value, attrs=None):
|
||||
output = []
|
||||
@@ -64,7 +83,6 @@ class ImageWidget(forms.widgets.Widget):
|
||||
ugettext(u'Pages'))
|
||||
for page in value.documentpage_set.all():
|
||||
output.append(
|
||||
#'<span>%(page)s)<a rel="gallery_1" class="fancybox-iframe" href="%(url)s?page=%(page)s"><img src="%(img)s?page=%(page)s" /></a></span>' % {
|
||||
'<span>%(page)s)<a rel="gallery_1" class="fancybox-iframe" href="%(url)s"><img src="%(img)s?page=%(page)s" /></a></span>' % {
|
||||
'url': reverse('document_page_view', args=[page.id]),
|
||||
'img': reverse('document_preview_multipage', args=[value.id]),
|
||||
|
||||
@@ -298,6 +298,10 @@ class DocumentPage(models.Model):
|
||||
verbose_name = _(u'document page')
|
||||
verbose_name_plural = _(u'document pages')
|
||||
|
||||
@models.permalink
|
||||
def get_absolute_url(self):
|
||||
return ('document_page_view', [self.id])
|
||||
|
||||
|
||||
class MetadataGroup(models.Model):
|
||||
document_type = models.ManyToManyField(DocumentType, null=True, blank=True,
|
||||
|
||||
@@ -43,6 +43,7 @@ urlpatterns = patterns('documents.views',
|
||||
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+)/edit/$', 'document_page_edit', (), 'document_page_edit'),
|
||||
|
||||
url(r'^document/page/(?P<document_page_id>\d+)/transformation/list/$', 'document_page_transformation_list', (), 'document_page_transformation_list'),
|
||||
url(r'^document/page/(?P<document_page_id>\d+)/transformation/create/$', 'document_page_transformation_create', (), 'document_page_transformation_create'),
|
||||
|
||||
@@ -40,13 +40,14 @@ from documents import PERMISSION_DOCUMENT_CREATE, \
|
||||
PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_PROPERTIES_EDIT, \
|
||||
PERMISSION_DOCUMENT_METADATA_EDIT, PERMISSION_DOCUMENT_VIEW, \
|
||||
PERMISSION_DOCUMENT_DELETE, PERMISSION_DOCUMENT_DOWNLOAD, \
|
||||
PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_TOOLS
|
||||
PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_TOOLS, \
|
||||
PERMISSION_DOCUMENT_EDIT
|
||||
|
||||
from forms import DocumentTypeSelectForm, DocumentCreateWizard, \
|
||||
MetadataForm, DocumentForm, DocumentForm_edit, DocumentForm_view, \
|
||||
StagingDocumentForm, DocumentTypeMetadataType, DocumentPreviewForm, \
|
||||
MetadataFormSet, DocumentPageForm, DocumentPageTransformationForm, \
|
||||
DocumentContentForm
|
||||
DocumentContentForm, DocumentPageForm_edit
|
||||
|
||||
from metadata import save_metadata_list, \
|
||||
decode_metadata_from_url, metadata_repr_as_list
|
||||
@@ -906,7 +907,6 @@ def document_page_view(request, document_page_id):
|
||||
{
|
||||
'form': document_page_form,
|
||||
'title': _(u'details for page: %s') % document_page.page_number,
|
||||
'object': document_page,
|
||||
},
|
||||
]
|
||||
return render_to_response('generic_detail.html', {
|
||||
@@ -914,3 +914,27 @@ def document_page_view(request, document_page_id):
|
||||
'object': document_page,
|
||||
'web_theme_hide_menus': True,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_page_edit(request, document_page_id):
|
||||
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_EDIT])
|
||||
|
||||
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = DocumentPageForm_edit(request.POST, instance=document_page)
|
||||
if form.is_valid():
|
||||
document_page.page_label = form.cleaned_data['page_label']
|
||||
document_page.content = form.cleaned_data['content']
|
||||
document_page.save()
|
||||
messages.success(request, _(u'Document page edited successfully.'))
|
||||
return HttpResponseRedirect(document_page.get_absolute_url())
|
||||
else:
|
||||
form = DocumentPageForm_edit(instance=document_page)
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'form': form,
|
||||
'object': document_page,
|
||||
'title': _(u'edit page: %s') % document_page.page_number,
|
||||
'web_theme_hide_menus': True,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
Reference in New Issue
Block a user