Added views to add, edit and delete document type filenames

This commit is contained in:
Roberto Rosario
2011-06-12 23:58:02 -04:00
parent b9e0bd3e88
commit 45fb04f862
5 changed files with 179 additions and 13 deletions

View File

@@ -10,7 +10,7 @@ from tags.widgets import get_tags_inline_widget_simple
from history.api import register_history_type
from documents.models import Document, DocumentPage, \
DocumentPageTransformation, DocumentType
DocumentPageTransformation, DocumentType, DocumentTypeFilename
from documents.staging import StagingFile
from documents.conf.settings import USE_STAGING_DIRECTORY
from documents.conf.settings import PER_USER_STAGING_DIRECTORY
@@ -94,15 +94,26 @@ staging_file_delete = {'text': _(u'delete'), 'view': 'staging_file_delete', 'arg
# Document type related links
document_type_list = {'text': _(u'document type list'), 'view': 'document_type_list', 'famfam': 'layout', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_type_document_list = {'text': _(u'document list for type'), 'view': 'document_type_document_list', 'args': 'object.id', 'famfam': 'page_go', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_type_document_list = {'text': _(u'list of documents of this type'), 'view': 'document_type_document_list', 'args': 'object.id', 'famfam': 'page_go', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_type_edit = {'text': _(u'edit'), 'view': 'document_type_edit', 'args': 'object.id', 'famfam': 'layout_edit', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
document_type_delete = {'text': _(u'delete'), 'view': 'document_type_delete', 'args': 'object.id', 'famfam': 'layout_delete', 'permissions': [PERMISSION_DOCUMENT_TYPE_DELETE]}
document_type_create = {'text': _(u'Create document type'), 'view': 'document_type_create', 'famfam': 'layout_add', 'permissions': [PERMISSION_DOCUMENT_TYPE_CREATE]}
document_type_create = {'text': _(u'create document type'), 'view': 'document_type_create', 'famfam': 'layout_add', 'permissions': [PERMISSION_DOCUMENT_TYPE_CREATE]}
# Register links
register_links(DocumentType, [document_type_document_list, document_type_edit, document_type_delete])
register_links(['document_type_list', 'document_type_document_list', 'document_type_edit', 'document_type_delete'], [document_type_list, document_type_create], menu_name='sidebar')
document_type_filename_list = {'text': _(u'document type filenames'), 'view': 'document_type_filename_list', 'args': 'object.id', 'famfam': 'database', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_type_filename_create = {'text': _(u'add filename to document type'), 'view': 'document_type_filename_create', 'args': 'document_type.id', 'famfam': 'database_add', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
document_type_filename_edit = {'text': _(u'edit'), 'view': 'document_type_filename_edit', 'args': 'object.id', 'famfam': 'database_edit', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
document_type_filename_delete = {'text': _(u'delete'), 'view': 'document_type_filename_delete', 'args': 'object.id', 'famfam': 'database_delete', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
document_type_filename_return_to_document_type = {'text': _(u'return to document type filenames'), 'view': 'document_type_filename_list', 'args': 'object.document_type.id', 'famfam': 'database', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
# Register document type links
register_links(DocumentType, [document_type_document_list, document_type_filename_list, document_type_edit, document_type_delete])
register_links(DocumentTypeFilename, [document_type_filename_edit, document_type_filename_delete])
register_links(['document_type_filename_delete', 'document_type_create', 'document_type_filename_create', 'document_type_filename_edit', 'document_type_filename_list', 'document_type_list', 'document_type_document_list', 'document_type_edit', 'document_type_delete'], [document_type_list, document_type_create], menu_name='sidebar')
register_links(['document_type_filename_create', 'document_type_filename_list', 'document_type_filename_edit', 'document_type_filename_delete'], [document_type_filename_create], menu_name='sidebar')
register_links(['document_type_filename_edit', 'document_type_filename_delete'], [document_type_filename_return_to_document_type], menu_name='sidebar')
# Register document links
register_links(Document, [document_view_simple, document_view_advanced, document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_history_view])
register_links(Document, [document_create_siblings], menu_name='sidebar')

View File

@@ -11,7 +11,7 @@ from common.conf.settings import DEFAULT_PAPER_SIZE
from common.conf.settings import DEFAULT_PAGE_ORIENTATION
from documents.models import Document, DocumentType, \
DocumentPage, DocumentPageTransformation
DocumentPage, DocumentPageTransformation, DocumentTypeFilename
# Document page forms
@@ -279,3 +279,21 @@ class DocumentTypeForm(forms.ModelForm):
"""
class Meta:
model = DocumentType
class DocumentTypeFilenameForm(forms.ModelForm):
"""
Model class form to edit a document type filename
"""
class Meta:
model = DocumentTypeFilename
fields = ('filename', 'enabled')
class DocumentTypeFilenameForm_create(forms.ModelForm):
"""
Model class form to create a new document type filename
"""
class Meta:
model = DocumentTypeFilename
fields = ('filename',)

View File

@@ -70,4 +70,10 @@ urlpatterns = patterns('documents.views',
url(r'^type/(?P<document_type_id>\d+)/list/documents/$', 'document_type_document_list', (), 'document_type_document_list'),
url(r'^type/(?P<document_type_id>\d+)/edit/$', 'document_type_edit', (), 'document_type_edit'),
url(r'^type/(?P<document_type_id>\d+)/delete/$', 'document_type_delete', (), 'document_type_delete'),
url(r'^type/(?P<document_type_id>\d+)/filename/list/$', 'document_type_filename_list', (), 'document_type_filename_list'),
url(r'^type/filename/(?P<document_type_filename_id>\d+)/edit/$', 'document_type_filename_edit', (), 'document_type_filename_edit'),
url(r'^type/filename/(?P<document_type_filename_id>\d+)/delete/$', 'document_type_filename_delete', (), 'document_type_filename_delete'),
url(r'^type/(?P<document_type_id>\d+)/filename/create/$', 'document_type_filename_create', (), 'document_type_filename_create'),
)

View File

@@ -17,7 +17,8 @@ from django.core.files.uploadedfile import SimpleUploadedFile
from django.contrib.comments.models import Comment
import sendfile
from common.utils import pretty_size, parse_range, urlquote, return_diff
from common.utils import pretty_size, parse_range, urlquote, \
return_diff, two_state_template
from common.literals import PAGE_SIZE_DIMENSIONS, \
PAGE_ORIENTATION_PORTRAIT, PAGE_ORIENTATION_LANDSCAPE
from common.conf.settings import DEFAULT_PAPER_SIZE
@@ -67,10 +68,11 @@ from documents.forms import DocumentTypeSelectForm, \
StagingDocumentForm, DocumentPreviewForm, \
DocumentPageForm, DocumentPageTransformationForm, \
DocumentContentForm, DocumentPageForm_edit, \
DocumentPageForm_text, PrintForm, DocumentTypeForm
DocumentPageForm_text, PrintForm, DocumentTypeForm, \
DocumentTypeFilenameForm, DocumentTypeFilenameForm_create
from documents.wizards import DocumentCreateWizard
from documents.models import Document, DocumentType, DocumentPage, \
DocumentPageTransformation, RecentDocument
DocumentPageTransformation, RecentDocument, DocumentTypeFilename
from documents.staging import create_staging_file_class
from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \
PICTURE_UNKNOWN_SMALL, PICTURE_UNKNOWN_MEDIUM
@@ -1082,6 +1084,7 @@ def document_type_list(request):
context = {
'object_list': DocumentType.objects.all(),
'title': _(u'document types'),
'hide_link': True,
}
return render_to_response('generic_list.html', context,
@@ -1099,6 +1102,7 @@ def document_type_document_list(request, document_type_id):
title=_(u'documents of type "%s"') % document_type,
extra_context={
'object': document_type,
'object_name': _(u'document type'),
}
)
@@ -1107,13 +1111,15 @@ def document_type_edit(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('document_type_list'))))
if request.method == 'POST':
form = DocumentTypeForm(instance=document_type, data=request.POST)
if form.is_valid():
try:
form.save()
messages.success(request, _(u'Document type edited successfully'))
return HttpResponseRedirect(reverse('document_type_list'))
return HttpResponseRedirect(next)
except Exception, e:
messages.error(request, _(u'Error editing document type; %s') % e)
else:
@@ -1124,6 +1130,7 @@ def document_type_edit(request, document_type_id):
'form': form,
'object': document_type,
'object_name': _(u'document type'),
'next': next
},
context_instance=RequestContext(request))
@@ -1149,12 +1156,12 @@ def document_type_delete(request, document_type_id):
return HttpResponseRedirect(next)
context = {
'object_name': _(u'document tyep'),
'object_name': _(u'document type'),
'delete_view': True,
'previous': previous,
'next': next,
'object': document_type,
'title': _(u'Are you sure you with to delete the document type: %s?') % document_type,
'title': _(u'Are you sure you wish to delete the document type: %s?') % document_type,
'message': _(u'The document type of all documents using this document type will be set to none.'),
'form_icon': u'layout_delete.png',
}
@@ -1184,3 +1191,127 @@ def document_type_create(request):
'form': form,
},
context_instance=RequestContext(request))
def document_type_filename_list(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
context = {
'object_list': document_type.documenttypefilename_set.all(),
'title': _(u'filenames for document type: %s') % document_type,
'object': document_type,
'object_name': _(u'document type'),
'document_type': document_type,
'hide_link': True,
'extra_columns': [
{
'name': _(u'enabled'),
'attribute': lambda x: two_state_template(x.enabled),
}
]
}
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
def document_type_filename_edit(request, document_type_filename_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type_filename = get_object_or_404(DocumentTypeFilename, pk=document_type_filename_id)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('document_type_filename_list', args=[document_type_filename.document_type_id]))))
if request.method == 'POST':
form = DocumentTypeFilenameForm(instance=document_type_filename, data=request.POST)
if form.is_valid():
try:
document_type_filename.filename = form.cleaned_data['filename']
document_type_filename.enabled = form.cleaned_data['enabled']
document_type_filename.save()
messages.success(request, _(u'Document type filename edited successfully'))
return HttpResponseRedirect(next)
except Exception, e:
messages.error(request, _(u'Error editing document type filename; %s') % e)
else:
form = DocumentTypeFilenameForm(instance=document_type_filename)
return render_to_response('generic_form.html', {
'title': _(u'edit filename "%(filename)s" from document type "%(document_type)s"') % {
'document_type': document_type_filename.document_type, 'filename': document_type_filename
},
'form': form,
'object': document_type_filename,
'object_name': _(u'document type filename'),
'next': next,
'document_type': document_type_filename.document_type,
},
context_instance=RequestContext(request))
def document_type_filename_delete(request, document_type_filename_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type_filename = get_object_or_404(DocumentTypeFilename, pk=document_type_filename_id)
post_action_redirect = reverse('document_type_filename_list', args=[document_type_filename.document_type_id])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
if request.method == 'POST':
try:
document_type_filename.delete()
messages.success(request, _(u'Document type filename: %s deleted successfully.') % document_type_filename)
except Exception, e:
messages.error(request, _(u'Document type filename: %(document_type_filename)s delete error: %(error)s') % {
'document_type_filename': document_type_filename, 'error': e})
return HttpResponseRedirect(next)
context = {
'object_name': _(u'document type filename'),
'delete_view': True,
'previous': previous,
'next': next,
'object': document_type_filename,
'title': _(u'Are you sure you wish to delete the filename: %(filename)s, from document type "%(document_type)s"?') % {
'document_type': document_type_filename.document_type, 'filename': document_type_filename
},
'form_icon': u'database_delete.png',
'document_type': document_type_filename.document_type,
}
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))
def document_type_filename_create(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
if request.method == 'POST':
form = DocumentTypeFilenameForm_create(request.POST)
if form.is_valid():
try:
document_type_filename = DocumentTypeFilename(
document_type=document_type,
filename=form.cleaned_data['filename'],
enabled=True
)
document_type_filename.save()
messages.success(request, _(u'Document type filename created successfully'))
return HttpResponseRedirect(reverse('document_type_filename_list', args=[document_type_id]))
except Exception, e:
messages.error(request, _(u'Error creating document type filename; %(error)s') % {
'error': e})
else:
form = DocumentTypeFilenameForm_create()
return render_to_response('generic_form.html', {
'title': _(u'create filename for document type: %s') % document_type,
'form': form,
'document_type': document_type,
'object': document_type,
},
context_instance=RequestContext(request))

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB