Added new 'add document to folder' link to replace the sidebar template with the same use, added document membership list view, improved other folders apps views
This commit is contained in:
@@ -139,7 +139,7 @@ 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(['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(['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_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')
|
||||
|
||||
|
||||
@@ -3,24 +3,29 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from navigation.api import register_links, register_top_menu, \
|
||||
register_multi_item_links, register_sidebar_template
|
||||
from navigation.api import register_sidebar_template
|
||||
from documents.models import Document
|
||||
|
||||
from folders.models import Folder
|
||||
|
||||
folder_list = {'text': _(u'folder list'), 'view': 'folder_list', 'famfam': 'folder_user'}
|
||||
folder_create = {'text': _('create folder'), 'view': 'folder_create', 'famfam': 'folder_add'}
|
||||
folder_edit = {'text': _('edit'), 'view': 'folder_edit', 'args': 'object.id', 'famfam': 'folder_edit'}
|
||||
folder_delete = {'text': _('delete'), 'view': 'folder_delete', 'args': 'object.id', 'famfam': 'folder_delete'}
|
||||
folder_document_multiple_remove = {'text': _('remove'), 'view': 'folder_document_multiple_remove', 'famfam': 'delete'}
|
||||
folder_view = {'text': _(u'folder documents'), 'view': 'folder_view', 'args': 'object.id', 'famfam': 'folder_go'}
|
||||
folder_edit = {'text': _('edit'), 'view': 'folder_edit', 'args': 'object.pk', 'famfam': 'folder_edit'}
|
||||
folder_delete = {'text': _('delete'), 'view': 'folder_delete', 'args': 'object.pk', 'famfam': 'folder_delete'}
|
||||
folder_document_multiple_remove = {'text': _('remove from folder'), 'view': 'folder_document_multiple_remove', 'args': 'object.pk', 'famfam': 'delete'}
|
||||
folder_view = {'text': _(u'folder documents'), 'view': 'folder_view', 'args': 'object.pk', 'famfam': 'folder_go'}
|
||||
folder_add_document = {'text': _('add to folder'), 'view': 'folder_add_document', 'args': 'object.pk', 'famfam': 'add'}
|
||||
document_folder_list = {'text': _(u'folders'), 'view': 'document_folder_list', 'args': 'object.pk', 'famfam': 'folder_user'}
|
||||
|
||||
register_multi_item_links(['folder_view'], [folder_document_multiple_remove])
|
||||
|
||||
register_links(Folder, [folder_view, folder_edit, folder_delete])
|
||||
|
||||
register_links(['folder_edit', 'folder_delete', 'folder_list', 'folder_create', 'folder_view'], [folder_list, folder_create], menu_name='secondary_menu')
|
||||
register_links(['folder_edit', 'folder_delete', 'folder_list', 'folder_create', 'folder_view', 'folder_document_multiple_remove'], [folder_list, folder_create], menu_name='secondary_menu')
|
||||
|
||||
register_top_menu(name='folders', link={'text': _('folders'), 'famfam': 'folder_user', 'view': 'folder_list'}, children_path_regex=[r'^folders/'])
|
||||
|
||||
register_sidebar_template(['document_view_advanced', 'document_view_simple'], 'folders_sidebar_template.html')
|
||||
register_links(Document, [document_folder_list], menu_name='form_header')
|
||||
|
||||
register_sidebar_template(['folder_list'], 'folders_help.html')
|
||||
|
||||
register_links(['document_folder_list', 'folder_add_document'], [folder_add_document], menu_name="sidebar")
|
||||
|
||||
@@ -13,7 +13,7 @@ def get_add_document_to_folder_form(context):
|
||||
context.update({
|
||||
'form': AddDocumentForm(user=context['request'].user),
|
||||
'request': context['request'],
|
||||
'form_action': reverse('folder_add_document', args=[context['object'].pk]),
|
||||
'form_action': reverse('folder_add_document_sidebar', args=[context['object'].pk]),
|
||||
'title': _('Add document to a folder')
|
||||
})
|
||||
return context
|
||||
|
||||
@@ -7,7 +7,9 @@ urlpatterns = patterns('folders.views',
|
||||
url(r'^(?P<folder_id>\d+)/edit/$', 'folder_edit', (), 'folder_edit'),
|
||||
url(r'^(?P<folder_id>\d+)/delete/$', 'folder_delete', (), 'folder_delete'),
|
||||
url(r'^(?P<folder_id>\d+)/$', 'folder_view', (), 'folder_view'),
|
||||
url(r'^document/multiple/remove/$', 'folder_document_multiple_remove', (), 'folder_document_multiple_remove'),
|
||||
url(r'^(?P<folder_id>\d+)/remove/document/multiple/$', 'folder_document_multiple_remove', (), 'folder_document_multiple_remove'),
|
||||
|
||||
url(r'^add_document/(?P<document_id>\d+)/$', 'folder_add_document', (), 'folder_add_document'),
|
||||
url(r'^document/(?P<document_id>\d+)/folder/add/sidebar/$', 'folder_add_document_sidebar', (), 'folder_add_document_sidebar'),
|
||||
url(r'^document/(?P<document_id>\d+)/folder/add/$', 'folder_add_document', (), 'folder_add_document'),
|
||||
url(r'^document/(?P<document_id>\d+)/folder/list/$', 'document_folder_list', (), 'document_folder_list'),
|
||||
)
|
||||
|
||||
@@ -16,22 +16,25 @@ from folders.models import Folder, FolderDocument
|
||||
from folders.forms import FolderForm, AddDocumentForm
|
||||
|
||||
|
||||
def folder_list(request):
|
||||
def folder_list(request, queryset=None, extra_context=None):
|
||||
context = {
|
||||
'title': _(u'folders'),
|
||||
'multi_select_as_buttons': True,
|
||||
'extra_columns': [
|
||||
{'name': _(u'created'), 'attribute': 'datetime_created'},
|
||||
{'name': _(u'documents'), 'attribute': lambda x: x.folderdocument_set.count()}
|
||||
]
|
||||
}
|
||||
if extra_context:
|
||||
context.update(extra_context)
|
||||
|
||||
return object_list(
|
||||
request,
|
||||
queryset=Folder.objects.filter(user=request.user),
|
||||
queryset=queryset if not (queryset is None) else Folder.objects.filter(user=request.user),
|
||||
template_name='generic_list.html',
|
||||
extra_context={
|
||||
'title': _(u'folders'),
|
||||
'multi_select_as_buttons': True,
|
||||
'extra_columns': [
|
||||
{'name': _(u'created'), 'attribute': 'datetime_created'},
|
||||
{'name': _(u'documents'), 'attribute': lambda x: x.folderdocument_set.count()}
|
||||
]
|
||||
},
|
||||
extra_context=context,
|
||||
)
|
||||
|
||||
|
||||
def folder_create(request):
|
||||
if request.method == 'POST':
|
||||
form = FolderForm(request.POST)
|
||||
@@ -122,17 +125,8 @@ def folder_view(request, folder_id):
|
||||
raise PermissionDenied
|
||||
|
||||
return render_to_response('generic_list.html', {
|
||||
'object_list': folder.folderdocument_set.all(),
|
||||
'extra_columns': [
|
||||
{'name': _(u'document'), 'attribute':
|
||||
lambda x: document_link(x.document)
|
||||
},
|
||||
{'name': _(u'thumbnail'), 'attribute':
|
||||
lambda x: document_thumbnail(x.document)
|
||||
},
|
||||
],
|
||||
'hide_link': True,
|
||||
'hide_object': True,
|
||||
'object_list': [fd.document for fd in folder.folderdocument_set.all()],
|
||||
'hide_links': True,
|
||||
'title': _(u'documents in folder: %s') % folder,
|
||||
'multi_select_as_buttons': True,
|
||||
'object': folder,
|
||||
@@ -140,12 +134,13 @@ def folder_view(request, folder_id):
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def folder_add_document(request, document_id):
|
||||
def folder_add_document_sidebar(request, document_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
|
||||
previous = request.META.get('HTTP_REFERER', '/')
|
||||
|
||||
if request.method == 'POST':
|
||||
previous = request.META.get('HTTP_REFERER', '/')
|
||||
form = AddDocumentForm(request.POST, user=request.user)
|
||||
if form.is_valid():
|
||||
if form.cleaned_data['existing_folder']:
|
||||
@@ -172,13 +167,73 @@ def folder_add_document(request, document_id):
|
||||
return HttpResponseRedirect(previous)
|
||||
|
||||
|
||||
def folder_document_remove(request, folder_document_id=None, folder_document_id_list=None):
|
||||
def folder_add_document(request, document_id):
|
||||
# TODO: merge with folder_add_document_sidebar
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
|
||||
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/')))#reverse('document_tags', args=[document.pk]))))
|
||||
|
||||
if request.method == 'POST':
|
||||
form = AddDocumentForm(request.POST, user=request.user)
|
||||
if form.is_valid():
|
||||
if form.cleaned_data['existing_folder']:
|
||||
folder = form.cleaned_data['existing_folder']
|
||||
elif form.cleaned_data['title']:
|
||||
folder, created = Folder.objects.get_or_create(user=request.user, title=form.cleaned_data['title'])
|
||||
if created:
|
||||
messages.success(request, _(u'Folder "%s" created successfully') % form.cleaned_data['title'])
|
||||
else:
|
||||
messages.error(request, _(u'A folder named: %s, already exists.') % form.cleaned_data['title'])
|
||||
return HttpResponseRedirect(next)
|
||||
else:
|
||||
messages.error(request, _(u'Must specify a new folder or an existing one.'))
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
folder_document, created = FolderDocument.objects.get_or_create(folder=folder, document=document)
|
||||
if created:
|
||||
messages.success(request, _(u'Document: %(document)s added to folder: %(folder)s successfully.') % {
|
||||
'document': document, 'folder': folder})
|
||||
else:
|
||||
messages.warning(request, _(u'Document: %(document)s is already in folder: %(folder)s.') % {
|
||||
'document': document, 'folder': folder})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
else:
|
||||
form = AddDocumentForm(user=request.user)
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': _(u'add document "%s" to a folder') % document,
|
||||
'form': form,
|
||||
'object': document,
|
||||
'next': next,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def document_folder_list(request, document_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
|
||||
return folder_list(
|
||||
request,
|
||||
queryset=Folder.objects.filter(user=request.user).filter(folderdocument__document=document),
|
||||
extra_context={
|
||||
'title': _(u'folders containing: %s') % document,
|
||||
'object': document,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def folder_document_remove(request, folder_id, document_id=None, document_id_list=None):
|
||||
post_action_redirect = None
|
||||
|
||||
if folder_document_id:
|
||||
folder_documents = [get_object_or_404(FolderDocument, pk=folder_document_id)]
|
||||
elif folder_document_id_list:
|
||||
folder_documents = [get_object_or_404(FolderDocument, pk=folder_document_id) for folder_document_id in folder_document_id_list.split(',')]
|
||||
folder = get_object_or_404(Folder, pk=folder_id)
|
||||
|
||||
if document_id:
|
||||
folder_documents = [get_object_or_404(FolderDocument, folder__pk=folder_id, document__pk=document_id)]
|
||||
elif document_id_list:
|
||||
folder_documents = [get_object_or_404(FolderDocument, folder__pk=folder_id, document__pk=document_id) for document_id in document_id_list.split(',')]
|
||||
else:
|
||||
messages.error(request, _(u'Must provide at least one folder document.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
@@ -201,10 +256,11 @@ def folder_document_remove(request, folder_document_id=None, folder_document_id_
|
||||
'object_name': _(u'folder document'),
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
'form_icon': u'folder_page.png',
|
||||
'form_icon': u'delete.png',
|
||||
'object': folder
|
||||
}
|
||||
if len(folder_documents) == 1:
|
||||
context['object'] = folder_documents[0]
|
||||
#context['object'] = folder_documents[0]
|
||||
context['title'] = _(u'Are you sure you wish to remove the document: %(document)s from the folder "%(folder)s"?') % {
|
||||
'document': ', '.join([unicode(d) for d in folder_documents]), 'folder': folder_documents[0].folder}
|
||||
elif len(folder_documents) > 1:
|
||||
@@ -215,5 +271,5 @@ def folder_document_remove(request, folder_document_id=None, folder_document_id_
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def folder_document_multiple_remove(request):
|
||||
return folder_document_remove(request, folder_document_id_list=request.GET.get('id_list', []))
|
||||
def folder_document_multiple_remove(request, folder_id):
|
||||
return folder_document_remove(request, folder_id, document_id_list=request.GET.get('id_list', []))
|
||||
|
||||
@@ -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(['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(['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')
|
||||
|
||||
Reference in New Issue
Block a user