Added view to add, edit and delete document types from the setup menu
This commit is contained in:
@@ -9,7 +9,8 @@ from permissions.api import register_permission, set_namespace_title
|
||||
from tags.widgets import get_tags_inline_widget_simple
|
||||
from history.api import register_history_type
|
||||
|
||||
from documents.models import Document, DocumentPage, DocumentPageTransformation
|
||||
from documents.models import Document, DocumentPage, \
|
||||
DocumentPageTransformation, DocumentType
|
||||
from documents.staging import StagingFile
|
||||
from documents.conf.settings import USE_STAGING_DIRECTORY
|
||||
from documents.conf.settings import PER_USER_STAGING_DIRECTORY
|
||||
@@ -18,6 +19,8 @@ from documents.literals import PERMISSION_DOCUMENT_CREATE, \
|
||||
PERMISSION_DOCUMENT_DELETE, PERMISSION_DOCUMENT_DOWNLOAD, \
|
||||
PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_TOOLS, \
|
||||
PERMISSION_DOCUMENT_EDIT
|
||||
from documents.literals import PERMISSION_DOCUMENT_TYPE_EDIT, \
|
||||
PERMISSION_DOCUMENT_TYPE_DELETE, PERMISSION_DOCUMENT_TYPE_CREATE
|
||||
from documents.literals import HISTORY_DOCUMENT_CREATED, \
|
||||
HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED
|
||||
|
||||
@@ -32,6 +35,11 @@ register_permission(PERMISSION_DOCUMENT_DOWNLOAD)
|
||||
register_permission(PERMISSION_DOCUMENT_TRANSFORM)
|
||||
register_permission(PERMISSION_DOCUMENT_TOOLS)
|
||||
|
||||
# Document type permissions
|
||||
register_permission(PERMISSION_DOCUMENT_TYPE_EDIT)
|
||||
register_permission(PERMISSION_DOCUMENT_TYPE_DELETE)
|
||||
register_permission(PERMISSION_DOCUMENT_TYPE_CREATE)
|
||||
|
||||
# History setup
|
||||
register_history_type(HISTORY_DOCUMENT_CREATED)
|
||||
register_history_type(HISTORY_DOCUMENT_EDITED)
|
||||
@@ -84,10 +92,21 @@ upload_document_from_user_staging = {'text': _(u'user staging'), 'view': 'upload
|
||||
staging_file_preview = {'text': _(u'preview'), 'class': 'fancybox-noscaling', 'view': 'staging_file_preview', 'args': ['source', 'object.id'], 'famfam': 'drive_magnify'}
|
||||
staging_file_delete = {'text': _(u'delete'), 'view': 'staging_file_delete', 'args': ['source', 'object.id'], 'famfam': 'drive_delete'}
|
||||
|
||||
# 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_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]}
|
||||
|
||||
# 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')
|
||||
|
||||
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')
|
||||
|
||||
register_multi_item_links(['search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [document_multiple_clear_transformations, document_multiple_delete])
|
||||
register_multi_item_links(['document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [document_multiple_clear_transformations, document_multiple_delete])
|
||||
|
||||
register_links(['document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_document', 'upload_document_from_local', 'upload_document_from_staging', 'upload_document_from_user_staging', 'document_find_duplicates'], [document_list_recent, document_list, document_create_multiple], menu_name='secondary_menu')
|
||||
|
||||
|
||||
@@ -271,3 +271,11 @@ class StagingDocumentForm(DocumentForm):
|
||||
|
||||
class Meta(DocumentForm.Meta):
|
||||
exclude = ('description', 'file', 'document_type', 'tags')
|
||||
|
||||
|
||||
class DocumentTypeForm(forms.ModelForm):
|
||||
"""
|
||||
Model class form to create or edit a document type
|
||||
"""
|
||||
class Meta:
|
||||
model = DocumentType
|
||||
|
||||
@@ -5,15 +5,19 @@ PICTURE_ERROR_MEDIUM = u'1297211435_error.png'
|
||||
PICTURE_UNKNOWN_SMALL = u'1299549572_unknown2.png'
|
||||
PICTURE_UNKNOWN_MEDIUM = u'1299549805_unknown.png'
|
||||
|
||||
PERMISSION_DOCUMENT_CREATE = {'namespace': 'documents', 'name': 'document_create', 'label': _(u'Create document')}
|
||||
PERMISSION_DOCUMENT_CREATE = {'namespace': 'documents', 'name': 'document_create', 'label': _(u'Create documents')}
|
||||
PERMISSION_DOCUMENT_PROPERTIES_EDIT = {'namespace': 'documents', 'name': 'document_properties_edit', 'label': _(u'Edit document properties')}
|
||||
PERMISSION_DOCUMENT_EDIT = {'namespace': 'documents', 'name': 'document_edit', 'label': _(u'Edit document')}
|
||||
PERMISSION_DOCUMENT_VIEW = {'namespace': 'documents', 'name': 'document_view', 'label': _(u'View document')}
|
||||
PERMISSION_DOCUMENT_DELETE = {'namespace': 'documents', 'name': 'document_delete', 'label': _(u'Delete document')}
|
||||
PERMISSION_DOCUMENT_DOWNLOAD = {'namespace': 'documents', 'name': 'document_download', 'label': _(u'Download document')}
|
||||
PERMISSION_DOCUMENT_TRANSFORM = {'namespace': 'documents', 'name': 'document_transform', 'label': _(u'Transform document')}
|
||||
PERMISSION_DOCUMENT_EDIT = {'namespace': 'documents', 'name': 'document_edit', 'label': _(u'Edit documents')}
|
||||
PERMISSION_DOCUMENT_VIEW = {'namespace': 'documents', 'name': 'document_view', 'label': _(u'View documents')}
|
||||
PERMISSION_DOCUMENT_DELETE = {'namespace': 'documents', 'name': 'document_delete', 'label': _(u'Delete documents')}
|
||||
PERMISSION_DOCUMENT_DOWNLOAD = {'namespace': 'documents', 'name': 'document_download', 'label': _(u'Download documents')}
|
||||
PERMISSION_DOCUMENT_TRANSFORM = {'namespace': 'documents', 'name': 'document_transform', 'label': _(u'Transform documents')}
|
||||
PERMISSION_DOCUMENT_TOOLS = {'namespace': 'documents', 'name': 'document_tools', 'label': _(u'Execute document modifying tools')}
|
||||
|
||||
PERMISSION_DOCUMENT_TYPE_EDIT = {'namespace': 'documents', 'name': 'document_type_edit', 'label': _(u'Edit document types')}
|
||||
PERMISSION_DOCUMENT_TYPE_DELETE = {'namespace': 'documents', 'name': 'document_type_delete', 'label': _(u'Delete document types')}
|
||||
PERMISSION_DOCUMENT_TYPE_CREATE = {'namespace': 'documents', 'name': 'document_type_create', 'label': _(u'Create document types')}
|
||||
|
||||
UPLOAD_SOURCE_LOCAL = u'local'
|
||||
UPLOAD_SOURCE_STAGING = u'staging'
|
||||
UPLOAD_SOURCE_USER_STAGING = u'user_staging'
|
||||
|
||||
@@ -63,4 +63,11 @@ urlpatterns = patterns('documents.views',
|
||||
url(r'^page/transformation/(?P<document_page_transformation_id>\d+)/delete/$', 'document_page_transformation_delete', (), 'document_page_transformation_delete'),
|
||||
|
||||
url(r'^missing/list/$', 'document_missing_list', (), 'document_missing_list'),
|
||||
|
||||
# Admin views
|
||||
url(r'^type/list/$', 'document_type_list', (), 'document_type_list'),
|
||||
url(r'^type/create/$', 'document_type_create', (), 'document_type_create'),
|
||||
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'),
|
||||
)
|
||||
|
||||
@@ -67,7 +67,7 @@ from documents.forms import DocumentTypeSelectForm, \
|
||||
StagingDocumentForm, DocumentPreviewForm, \
|
||||
DocumentPageForm, DocumentPageTransformationForm, \
|
||||
DocumentContentForm, DocumentPageForm_edit, \
|
||||
DocumentPageForm_text, PrintForm
|
||||
DocumentPageForm_text, PrintForm, DocumentTypeForm
|
||||
from documents.wizards import DocumentCreateWizard
|
||||
from documents.models import Document, DocumentType, DocumentPage, \
|
||||
DocumentPageTransformation, RecentDocument
|
||||
@@ -76,6 +76,10 @@ from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \
|
||||
PICTURE_UNKNOWN_SMALL, PICTURE_UNKNOWN_MEDIUM
|
||||
from documents.literals import UPLOAD_SOURCE_LOCAL, \
|
||||
UPLOAD_SOURCE_STAGING, UPLOAD_SOURCE_USER_STAGING
|
||||
|
||||
# Document type permissions
|
||||
from documents.literals import PERMISSION_DOCUMENT_TYPE_EDIT, \
|
||||
PERMISSION_DOCUMENT_TYPE_DELETE, PERMISSION_DOCUMENT_TYPE_CREATE
|
||||
|
||||
|
||||
def document_list(request, object_list=None, title=None, extra_context=None):
|
||||
@@ -1046,6 +1050,7 @@ def document_hard_copy(request, document_id):
|
||||
page_width = request.GET.get('page_width', dict(PAGE_SIZE_DIMENSIONS)[DEFAULT_PAPER_SIZE][0])
|
||||
page_height = request.GET.get('page_height', dict(PAGE_SIZE_DIMENSIONS)[DEFAULT_PAPER_SIZE][1])
|
||||
|
||||
# TODO: Replace with regex to extact numeric portion
|
||||
width = float(page_width.split('i')[0].split('c')[0].split('m')[0])
|
||||
height = float(page_height.split('i')[0].split('c')[0].split('m')[0])
|
||||
|
||||
@@ -1068,3 +1073,113 @@ def document_hard_copy(request, document_id):
|
||||
'page_height': page_height,
|
||||
'pages': pages,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_type_list(request):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
|
||||
context = {
|
||||
'object_list': DocumentType.objects.all(),
|
||||
'title': _(u'document types'),
|
||||
}
|
||||
|
||||
return render_to_response('generic_list.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_type_document_list(request, document_type_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
|
||||
document_type = get_object_or_404(DocumentType, pk=document_type_id)
|
||||
|
||||
return document_list(
|
||||
request,
|
||||
object_list=Document.objects.filter(document_type=document_type),
|
||||
title=_(u'documents of type "%s"') % document_type,
|
||||
extra_context={
|
||||
'object': document_type,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
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)
|
||||
|
||||
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'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error editing document type; %s') % e)
|
||||
else:
|
||||
form = DocumentTypeForm(instance=document_type)
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': _(u'edit document type: %s') % document_type,
|
||||
'form': form,
|
||||
'object': document_type,
|
||||
'object_name': _(u'document type'),
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_type_delete(request, document_type_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_DELETE])
|
||||
document_type = get_object_or_404(DocumentType, pk=document_type_id)
|
||||
|
||||
post_action_redirect = reverse('document_type_list')
|
||||
|
||||
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.objects.filter(document_type=document_type).update(document_type=None)
|
||||
document_type.delete()
|
||||
messages.success(request, _(u'Document type: %s deleted successfully.') % document_type)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Document type: %(document_type)s delete error: %(error)s') % {
|
||||
'document_type': document_type, 'error': e})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
context = {
|
||||
'object_name': _(u'document tyep'),
|
||||
'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,
|
||||
'message': _(u'The document type of all documents using this document type will be set to none.'),
|
||||
'form_icon': u'layout_delete.png',
|
||||
}
|
||||
|
||||
return render_to_response('generic_confirm.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_type_create(request):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_CREATE])
|
||||
|
||||
if request.method == 'POST':
|
||||
form = DocumentTypeForm(request.POST)
|
||||
if form.is_valid():
|
||||
try:
|
||||
form.save()
|
||||
messages.success(request, _(u'Document type created successfully'))
|
||||
return HttpResponseRedirect(reverse('document_type_list'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error creating document type; %(error)s') % {
|
||||
'error': e})
|
||||
else:
|
||||
form = DocumentTypeForm()
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': _(u'create document type'),
|
||||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
@@ -5,6 +5,7 @@ from permissions import role_list, permission_views
|
||||
from user_management import user_list, group_list, user_management_views
|
||||
from navigation.api import register_links
|
||||
from history import history_list
|
||||
#from documents import document_type_list
|
||||
|
||||
from main.conf.settings import SIDE_BAR_SEARCH
|
||||
|
||||
@@ -18,7 +19,7 @@ diagnostics = {'text': _(u'diagnostics'), 'view': 'diagnostics', 'famfam': 'pill
|
||||
tools_menu = {'text': _(u'tools'), 'view': 'tools_menu', 'famfam': 'wrench'}
|
||||
admin_site = {'text': _(u'admin site'), 'url': '/admin', 'famfam': 'keyboard', 'condition': is_superuser}
|
||||
sentry = {'text': _(u'sentry'), 'url': '/sentry', 'famfam': 'bug', 'condition': is_superuser}
|
||||
|
||||
document_types = {'text': _(u'document types'), 'view': 'document_type_list', 'famfam': 'layout'}
|
||||
|
||||
__version_info__ = {
|
||||
'major': 0,
|
||||
@@ -38,12 +39,12 @@ if not SIDE_BAR_SEARCH:
|
||||
register_top_menu('search', link={'text': _(u'search'), 'view': 'search', 'famfam': 'zoom'})
|
||||
register_top_menu('tools', link=tools_menu, children_views=['statistics', 'history_list'])
|
||||
#register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children=setup_views)
|
||||
register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'permissions'])
|
||||
register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'^permissions'])
|
||||
register_top_menu('about', link={'text': _(u'about'), 'view': 'about', 'famfam': 'information'})
|
||||
|
||||
register_links(['tools_menu', 'statistics', 'history_list', 'history_view'], [tools_menu, statistics, history_list, sentry], menu_name='secondary_menu')
|
||||
|
||||
tool_links = [check_settings, role_list, user_list, group_list, admin_site]
|
||||
tool_links = [check_settings, role_list, user_list, group_list, document_types, admin_site]
|
||||
register_links(['setting_list'], tool_links, menu_name='secondary_menu')
|
||||
register_links(permission_views, tool_links, menu_name='secondary_menu')
|
||||
register_links(user_management_views, tool_links, menu_name='secondary_menu')
|
||||
|
||||
@@ -21,4 +21,4 @@ metadata_remove = {'text': _(u'remove metadata'), 'view': 'metadata_remove', 'ar
|
||||
metadata_multiple_remove = {'text': _(u'remove metadata'), 'view': 'metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
|
||||
|
||||
register_links(Document, [metadata_add, metadata_edit, metadata_remove])
|
||||
register_multi_item_links(['search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])
|
||||
register_multi_item_links(['document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])
|
||||
|
||||
BIN
site_media/images/icons/layout_delete.png
Normal file
BIN
site_media/images/icons/layout_delete.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Reference in New Issue
Block a user