Implemented child url regex highlight for regular links, improve the document duplicate list, improved staging file delete view
This commit is contained in:
@@ -38,6 +38,7 @@ register_permission(PERMISSION_DOCUMENT_TRANSFORM)
|
||||
register_permission(PERMISSION_DOCUMENT_TOOLS)
|
||||
|
||||
# Document type permissions
|
||||
set_namespace_title('documents_setup', _(u'Documents setup'))
|
||||
register_permission(PERMISSION_DOCUMENT_TYPE_EDIT)
|
||||
register_permission(PERMISSION_DOCUMENT_TYPE_DELETE)
|
||||
register_permission(PERMISSION_DOCUMENT_TYPE_CREATE)
|
||||
@@ -129,9 +130,12 @@ register_links(['document_type_filename_edit', 'document_type_filename_delete'],
|
||||
|
||||
# Register document links
|
||||
register_links(Document, [document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_create_siblings])
|
||||
register_multi_item_links(['folder_view', 'index_instance_list', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [document_multiple_clear_transformations, document_multiple_delete])
|
||||
register_multi_item_links(['document_find_duplicates', 'folder_view', 'index_instance_list', '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_interactive', 'document_find_duplicates'], [document_list_recent, document_list, document_create_multiple], menu_name='secondary_menu')
|
||||
secondary_menu_links = [document_list_recent, document_list, document_create_multiple]
|
||||
|
||||
register_links(['document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_interactive', 'staging_file_delete'], secondary_menu_links, menu_name='secondary_menu')
|
||||
#register_links(Document, secondary_menu_links, menu_name='sidebar')
|
||||
|
||||
# Document page links
|
||||
register_links(DocumentPage, [
|
||||
|
||||
@@ -198,12 +198,7 @@ class DocumentForm_edit(DocumentForm):
|
||||
"""
|
||||
class Meta:
|
||||
model = Document
|
||||
exclude = ('file', 'document_type', 'tags', 'expand')
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DocumentForm_edit, self).__init__(*args, **kwargs)
|
||||
self.fields.pop('expand')
|
||||
exclude = ('file', 'document_type', 'tags')
|
||||
|
||||
|
||||
class DocumentPropertiesForm(DetailForm):
|
||||
|
||||
@@ -14,9 +14,9 @@ PERMISSION_DOCUMENT_DOWNLOAD = {'namespace': 'documents', 'name': 'document_down
|
||||
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')}
|
||||
PERMISSION_DOCUMENT_TYPE_EDIT = {'namespace': 'documents_setup', 'name': 'document_type_edit', 'label': _(u'Edit document types')}
|
||||
PERMISSION_DOCUMENT_TYPE_DELETE = {'namespace': 'documents_setup', 'name': 'document_type_delete', 'label': _(u'Delete document types')}
|
||||
PERMISSION_DOCUMENT_TYPE_CREATE = {'namespace': 'documents_setup', 'name': 'document_type_create', 'label': _(u'Create document types')}
|
||||
|
||||
HISTORY_DOCUMENT_CREATED = {
|
||||
'namespace': 'documents', 'name': 'document_created',
|
||||
|
||||
@@ -375,58 +375,6 @@ def document_download(request, document_id):
|
||||
messages.error(request, e)
|
||||
return HttpResponseRedirect(request.META['HTTP_REFERER'])
|
||||
|
||||
'''
|
||||
def staging_file_preview(request, source, staging_file_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
|
||||
StagingFile = create_staging_file_class(request, source)
|
||||
try:
|
||||
output_file, errors = StagingFile.get(staging_file_id).preview()
|
||||
if errors and (request.user.is_staff or request.user.is_superuser):
|
||||
for error in errors:
|
||||
messages.warning(request, _(u'Staging file transformation error: %(error)s') % {
|
||||
'error': error
|
||||
})
|
||||
|
||||
except UnkownConvertError, e:
|
||||
if request.user.is_staff or request.user.is_superuser:
|
||||
messages.error(request, e)
|
||||
|
||||
output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_ERROR_MEDIUM)
|
||||
except UnknownFormat:
|
||||
output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_UNKNOWN_MEDIUM)
|
||||
except Exception, e:
|
||||
if request.user.is_staff or request.user.is_superuser:
|
||||
messages.error(request, e)
|
||||
output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_ERROR_MEDIUM)
|
||||
finally:
|
||||
return sendfile.sendfile(request, output_file)
|
||||
|
||||
|
||||
def staging_file_delete(request, source, staging_file_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
|
||||
StagingFile = create_staging_file_class(request, source)
|
||||
|
||||
staging_file = StagingFile.get(staging_file_id)
|
||||
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None)))
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
|
||||
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
staging_file.delete()
|
||||
messages.success(request, _(u'Staging file delete successfully.'))
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
return render_to_response('generic_confirm.html', {
|
||||
'source': source,
|
||||
'delete_view': True,
|
||||
'object': staging_file,
|
||||
'next': next,
|
||||
'previous': previous,
|
||||
'form_icon': u'drive_delete.png',
|
||||
}, context_instance=RequestContext(request))
|
||||
'''
|
||||
|
||||
def document_page_transformation_list(request, document_page_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
|
||||
@@ -519,10 +467,14 @@ def document_find_duplicates(request, document_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
return _find_duplicate_list(request, [document], include_source=True, confirmation=False)
|
||||
extra_context = {
|
||||
'title': _(u'duplicates of: %s') % document,
|
||||
'object': document,
|
||||
}
|
||||
return _find_duplicate_list(request, [document], include_source=True, confirmation=False, extra_context=extra_context)
|
||||
|
||||
|
||||
def _find_duplicate_list(request, source_document_list=Document.objects.all(), include_source=False, confirmation=True):
|
||||
def _find_duplicate_list(request, source_document_list=Document.objects.all(), include_source=False, confirmation=True, extra_context=None):
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
|
||||
|
||||
if confirmation and request.method != 'POST':
|
||||
@@ -542,10 +494,18 @@ def _find_duplicate_list(request, source_document_list=Document.objects.all(), i
|
||||
if include_source and results:
|
||||
duplicated.append(document.pk)
|
||||
|
||||
return render_to_response('generic_list.html', {
|
||||
context = {
|
||||
'object_list': Document.objects.filter(pk__in=duplicated),
|
||||
'title': _(u'duplicated documents'),
|
||||
}, context_instance=RequestContext(request))
|
||||
'hide_links': True,
|
||||
'multi_select_as_buttons': True,
|
||||
}
|
||||
|
||||
if extra_context:
|
||||
context.update(extra_context)
|
||||
|
||||
return render_to_response('generic_list.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_find_all_duplicates(request):
|
||||
|
||||
@@ -62,7 +62,7 @@ setup_document_type_metadata = {'text': _(u'default metadata'), 'view': 'setup_d
|
||||
#register_links(Document, [metadata_add, metadata_edit, metadata_remove])
|
||||
register_links(['metadata_add', 'metadata_edit', 'metadata_remove', 'metadata_view'], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar')
|
||||
register_links(Document, [metadata_view], menu_name='form_header')#, metadata_edit, metadata_remove])
|
||||
register_multi_item_links(['folder_view', 'index_instance_list', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])
|
||||
register_multi_item_links(['document_find_duplicates', 'folder_view', 'index_instance_list', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])
|
||||
|
||||
register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_delete])
|
||||
register_links(['setup_metadata_type_delete', 'setup_metadata_type_edit', 'setup_metadata_type_list', 'setup_metadata_type_create'], [setup_metadata_type_create], menu_name='sidebar')
|
||||
|
||||
@@ -123,6 +123,13 @@ def resolve_links(context, links, current_view, current_path, parsed_query_strin
|
||||
new_link['disabled'] = link['conditional_disable'](context)
|
||||
else:
|
||||
new_link['disabled'] = False
|
||||
|
||||
if current_view in link.get('children_views', []):
|
||||
new_link['active'] = True
|
||||
|
||||
for child_url_regex in link.get('children_url_regex', []):
|
||||
if re.compile(child_url_regex).match(current_path.lstrip('/')):
|
||||
new_link['active'] = True
|
||||
|
||||
context_links.append(new_link)
|
||||
return context_links
|
||||
|
||||
@@ -8,7 +8,7 @@ from sources.staging import StagingFile
|
||||
from sources.models import WebForm, StagingFolder
|
||||
|
||||
staging_file_preview = {'text': _(u'preview'), 'class': 'fancybox-noscaling', 'view': 'staging_file_preview', 'args': ['source.source_type', 'source.pk', 'object.id'], 'famfam': 'zoom'}
|
||||
staging_file_delete = {'text': _(u'delete'), 'view': 'staging_file_delete', 'args': ['source.source_type', 'source.pk', 'object.id'], 'famfam': 'delete'}
|
||||
staging_file_delete = {'text': _(u'delete'), 'view': 'staging_file_delete', 'args': ['source.source_type', 'source.pk', 'object.id'], 'famfam': 'delete', 'keep_query': True}
|
||||
|
||||
setup_web_form_list = {'text': _(u'web forms'), 'view': 'setup_web_form_list', 'famfam': 'application_form'}
|
||||
setup_web_form_edit = {'text': _(u'edit'), 'view': 'setup_web_form_edit', 'args': 'object.pk', 'famfam': 'application_form_edit'}
|
||||
@@ -20,7 +20,7 @@ setup_staging_folder_edit = {'text': _(u'edit'), 'view': 'setup_staging_folder_e
|
||||
setup_staging_folder_delete = {'text': _(u'delete'), 'view': 'setup_staging_folder_delete', 'args': 'object.pk', 'famfam': 'folder_delete'}
|
||||
setup_staging_folder_create = {'text': _(u'add new'), 'view': 'setup_staging_folder_create', 'famfam': 'folder_add'}
|
||||
|
||||
source_list = {'text': _(u'Document sources'), 'view': 'setup_web_form_list', 'famfam': 'page_add'}
|
||||
source_list = {'text': _(u'Document sources'), 'view': 'setup_web_form_list', 'famfam': 'page_add', 'children_url_regex': [r'sources/setup']}
|
||||
|
||||
register_links(StagingFile, [staging_file_preview, staging_file_delete])
|
||||
|
||||
|
||||
@@ -27,24 +27,18 @@ from sources.models import WebForm, StagingFolder
|
||||
from sources.models import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING
|
||||
from sources.models import SOURCE_UNCOMPRESS_CHOICE_Y, \
|
||||
SOURCE_UNCOMPRESS_CHOICE_ASK
|
||||
from sources.staging import create_staging_file_class
|
||||
from sources.staging import create_staging_file_class, StagingFile
|
||||
from sources.forms import StagingDocumentForm, WebFormForm
|
||||
from sources.forms import WebFormSetupForm, StagingFolderSetupForm
|
||||
|
||||
|
||||
def return_function(obj):
|
||||
return lambda context: context['source'].source_type == obj.source_type and context['source'].pk == obj.pk
|
||||
|
||||
|
||||
def upload_interactive(request, source_type=None, source_id=None):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
|
||||
|
||||
subtemplates_list = []
|
||||
|
||||
def get_active_tab_links():
|
||||
tab_links = []
|
||||
|
||||
context = {}
|
||||
|
||||
web_forms = WebForm.objects.filter(enabled=True)
|
||||
for web_form in web_forms:
|
||||
tab_links.append({
|
||||
@@ -66,8 +60,24 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
'keep_query': True,
|
||||
'conditional_highlight': return_function(staging_folder),
|
||||
})
|
||||
|
||||
return {
|
||||
'tab_links': tab_links,
|
||||
'web_forms': web_forms,
|
||||
'staging_folders': staging_folders
|
||||
}
|
||||
|
||||
|
||||
if web_forms.count() == 0 and staging_folders.count() == 0:
|
||||
def upload_interactive(request, source_type=None, source_id=None):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
|
||||
|
||||
subtemplates_list = []
|
||||
|
||||
context = {}
|
||||
|
||||
results = get_active_tab_links()
|
||||
|
||||
if results['web_forms'].count() == 0 and results['staging_folders'].count() == 0:
|
||||
subtemplates_list.append(
|
||||
{
|
||||
'name': 'generic_subtemplate.html',
|
||||
@@ -89,12 +99,12 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
subtemplates_list = []
|
||||
|
||||
if source_type is None and source_id is None:
|
||||
if web_forms.count():
|
||||
source_type = web_forms[0].source_type
|
||||
source_id = web_forms[0].pk
|
||||
elif staging_folders.count():
|
||||
source_type = staging_folders[0].source_type
|
||||
source_id = staging_folders[0].pk
|
||||
if results['web_forms'].count():
|
||||
source_type = results['web_forms'][0].source_type
|
||||
source_id = results['web_forms'][0].pk
|
||||
elif results['staging_folders'].count():
|
||||
source_type = results['staging_folders'][0].source_type
|
||||
source_id = results['staging_folders'][0].pk
|
||||
|
||||
if source_type and source_id:
|
||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||
@@ -210,7 +220,7 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
'side_bar': True,
|
||||
}
|
||||
}],
|
||||
'temporary_navigation_links': {'form_header': {'upload_interactive': {'links': tab_links}}}
|
||||
'temporary_navigation_links': {'form_header': {'upload_interactive': {'links': results['tab_links']}}},
|
||||
})
|
||||
return render_to_response('generic_form.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
@@ -303,6 +313,8 @@ def staging_file_delete(request, source_type, source_id, staging_file_id):
|
||||
messages.error(request, e)
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
results = get_active_tab_links()
|
||||
|
||||
return render_to_response('generic_confirm.html', {
|
||||
'source': staging_folder,
|
||||
'delete_view': True,
|
||||
@@ -310,6 +322,7 @@ def staging_file_delete(request, source_type, source_id, staging_file_id):
|
||||
'next': next,
|
||||
'previous': previous,
|
||||
'form_icon': u'delete.png',
|
||||
'temporary_navigation_links': {'form_header': {'staging_file_delete': {'links': results['tab_links']}}},
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@@ -326,8 +339,7 @@ def setup_source_list(request, source_type):
|
||||
context = {
|
||||
'object_list': cls.objects.all(),
|
||||
'title': title,
|
||||
#'multi_select_as_buttons': True,
|
||||
#'hide_links': True,
|
||||
'hide_link': True,
|
||||
}
|
||||
|
||||
return render_to_response('generic_list.html', context,
|
||||
@@ -402,8 +414,7 @@ def setup_source_delete(request, source_type, source_id):
|
||||
'object': source,
|
||||
'object_name': _(u'source'),
|
||||
'delete_view': True,
|
||||
'previous': next,
|
||||
'next': next,
|
||||
'previous': reverse(redirect_view),
|
||||
'form_icon': form_icon,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user