Created 'simple document' for non technical users with all of a document pages content

This commit is contained in:
Roberto Rosario
2011-03-11 03:27:55 -04:00
parent b303df58e4
commit 9bff8de365
7 changed files with 107 additions and 12 deletions

View File

@@ -39,7 +39,8 @@ document_list = {'text':_(u'documents list'), 'view':'document_list', 'famfam':'
document_create = {'text':_('upload a new document'), 'view':'document_create', 'famfam':'page_add', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_CREATE]}}
document_create_multiple = {'text':_('upload multiple new documents'), 'view':'document_create_multiple', 'famfam':'page_add', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_CREATE]}}
document_create_sibling = {'text':_('upload new document using same metadata'), 'view':'document_create_sibling', 'args':'object.id', 'famfam':'page_copy', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_CREATE]}}
document_view = {'text':_('details'), 'view':'document_view', 'args':'object.id', 'famfam':'page', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
document_view = {'text':_('details (advanced)'), 'view':'document_view', 'args':'object.id', 'famfam':'page', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
document_view_simple = {'text':_('details (simple)'), 'view':'document_view_simple', 'args':'object.id', 'famfam':'page', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
document_delete = {'text':_('delete'), 'view':'document_delete', 'args':'object.id', 'famfam':'page_delete', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_DELETE]}}
document_edit = {'text':_('edit'), 'view':'document_edit', 'args':'object.id', 'famfam':'page_edit', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_PROPERTIES_EDIT]}}
document_edit_metadata = {'text':_('edit metadata'), 'view':'document_edit_metadata', 'args':'object.id', 'famfam':'page_edit', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_METADATA_EDIT]}}
@@ -59,7 +60,7 @@ document_page_go_back = {'text':_('return to document'), 'view':'document_view',
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'}
register_links(Document, [document_view, document_edit, document_edit_metadata, document_delete, document_download, document_find_duplicates, document_clear_transformations], menu_name='sidebar')
register_links(Document, [document_view_simple, document_view, document_edit, document_edit_metadata, document_delete, document_download, document_find_duplicates, document_clear_transformations], menu_name='sidebar')
register_links(Document, [document_list, document_create, document_create_multiple, document_create_sibling], menu_name='sidebar')
if ENABLE_SINGLE_DOCUMENT_UPLOAD:

View File

@@ -49,12 +49,11 @@ class DocumentPageForm(DetailForm):
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):
output = []
page_count = value.documentpage_set.count()
if page_count > 1:
output.append('<br /><span class="famfam active famfam-page_white_copy"></span>%s<br />' % ugettext(u'Pages'))
@@ -71,13 +70,13 @@ 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'))
if not self.attrs.get('hide_detail_link', False):
for document_page in value.documentpage_set.all():
output.append('<br/><a href="%(url)s"><span class="famfam active famfam-page_white"></span>%(text)s</a>' % {
'page_number': document_page.page_number,
'url':reverse('document_page_view', args=[document_page.id]),
'text':ugettext(u'Page %s details') % document_page.page_number})
for document_page in value.documentpage_set.all():
output.append('<br/><a href="%(url)s"><span class="famfam active famfam-page_white"></span>%(text)s</a>' % {
'page_number': document_page.page_number,
'url':reverse('document_page_view', args=[document_page.id]),
'text':ugettext(u'Page %s details') % document_page.page_number})
#output.append(super(ImageWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))
@@ -105,12 +104,25 @@ class DocumentForm(forms.ModelForm):
class DocumentPreviewForm(forms.Form):
def __init__(self, *args, **kwargs):
self.document = kwargs.pop('document', None)
self.hide_detail_link = kwargs.pop('hide_detail_link', False)
super(DocumentPreviewForm, self).__init__(*args, **kwargs)
self.fields['preview'].initial = self.document
self.fields['preview'].widget.attrs['hide_detail_link']=self.hide_detail_link
preview = forms.CharField(widget=ImageWidget())
class DocumentContentForm(forms.Form):
def __init__(self, *args, **kwargs):
self.document = kwargs.pop('document', None)
super(DocumentContentForm, self).__init__(*args, **kwargs)
page_break_template = u'\n\n\n------------------ %s ------------------\n\n\n' % _(u'page break')
self.fields['contents'].initial = page_break_template.join([page.content for page in self.document.documentpage_set.all() if page.content])
contents = forms.CharField(label=_(u'Contents'), widget=forms.widgets.Textarea(attrs={'rows':24, 'cols':80}))
class DocumentForm_view(DetailForm):
class Meta:
model = Document

View File

@@ -98,7 +98,7 @@ class Document(models.Model):
@models.permalink
def get_absolute_url(self):
return ('document_view', [self.id])
return ('document_view_simple', [self.id])
def update_checksum(self, save=True):

View File

@@ -19,6 +19,7 @@ urlpatterns = patterns('documents.views',
url(r'^document/type/(?P<document_type_id>\d+)/upload/single/$', 'upload_document_with_type', {'multiple':False}, 'upload_document_with_type'),
url(r'^document/type/(?P<document_type_id>\d+)/upload/multiple/$', 'upload_document_with_type', {'multiple':True}, 'upload_multiple_documents_with_type'),
url(r'^document/(?P<document_id>\d+)/$', 'document_view', (), 'document_view'),
url(r'^document/(?P<document_id>\d+)/simple/$', 'document_view_simple', (), 'document_view_simple'),
url(r'^document/(?P<document_id>\d+)/delete/$', 'document_delete', (), 'document_delete'),
url(r'^document/(?P<document_id>\d+)/edit/$', 'document_edit', (), 'document_edit'),
url(r'^document/(?P<document_id>\d+)/edit/metadata/$', 'document_edit_metadata', (), 'document_edit_metadata'),

View File

@@ -741,3 +741,77 @@ def document_clear_transformations(request, document_id):
'title':_(u'Are you sure you with to clear all the page transformations for document: %s?') % document,
'previous':previous,
}, context_instance=RequestContext(request))
from forms import DocumentContentForm
def document_view_simple(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=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, hide_detail_link=True)
form_list = [
{
'form':content_form,
'object':document,
'grid':6,
},
{
'form':preview_form,
'title':_(u'document preview'),
'object':document,
'grid':6,
'grid_clear':True,
},
]
subtemplates_dict = [
{
'name':'generic_list_subtemplate.html',
'title':_(u'metadata'),
'object_list':document.documentmetadata_set.all(),
'extra_columns':[{'name':_(u'value'), 'attribute':'value'}],
'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:
'<span class="famfam active famfam-resultset_previous"></span>' if x == document else ''}]
if GROUP_SHOW_THUMBNAIL:
extra_columns.append({'name':_(u'thumbnail'), 'attribute':
lambda x: '<a class="fancybox" href="%s"><img src="%s" /></a>' % (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))

View File

@@ -1,5 +1,8 @@
2011-Mar-11
* Don't allow duplicate documents in queues
* Don't raise PermissionDenied exception in PermissionDenied middleware, even while debugging
* Fixed page number detection
* Created 'simple document' for non technical users with all of a document pages content
2011-Mar-10
* Added new setting: side bar search box

View File

@@ -108,7 +108,9 @@ Documents
* Improve doc page template/view
* Document page edit view
* Show all document's pages content combined
* Create 'simple view' = stripped down document view for non technical users
* Create 'simple view' document view for non technical users - DONE
* Unify document form classes
* Use document preview code for staging file also
Filesystem serving
==================
@@ -156,4 +158,6 @@ OCR
* Don't allow duplicate documents in queues - STARTED
* OCR queue schedule support
* Make automatic OCR a function of OCR app and not of Documents app (via signals)
* Two types of OCR nodes: thin, fat (thin = document file is passed serialize to node,
fat = has direct access to document storage read document file)