Added view to add a document to a folder directly from the document detail view
This commit is contained in:
@@ -2,8 +2,8 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
|
|
||||||
from navigation.api import register_links, register_menu, \
|
from navigation.api import register_links, register_menu, \
|
||||||
register_model_list_columns, register_multi_item_links
|
register_model_list_columns, register_multi_item_links
|
||||||
#from main.api import register_diagnostic
|
|
||||||
from permissions.api import register_permissions
|
from permissions.api import register_permissions
|
||||||
|
from navigation.api import register_sidebar_template
|
||||||
|
|
||||||
from models import Folder
|
from models import Folder
|
||||||
|
|
||||||
@@ -12,32 +12,13 @@ folder_create = {'text': _('create folder'), 'view': 'folder_create', 'famfam':
|
|||||||
folder_edit = {'text': _('edit'), 'view': 'folder_edit', 'args': 'object.id', 'famfam': 'folder_edit'}
|
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_delete = {'text': _('delete'), 'view': 'folder_delete', 'args': 'object.id', 'famfam': 'folder_delete'}
|
||||||
|
|
||||||
#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 (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_multiple_delete = {'text': _('delete'), 'view': 'document_multiple_delete', 'famfam': 'page_delete', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_DELETE]}}
|
|
||||||
#document_edit_metadata = {'text': _('edit metadata'), 'view': 'document_edit_metadata', 'args': 'object.id', 'famfam': 'page_edit', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_METADATA_EDIT]}}
|
|
||||||
#document_multiple_edit_metadata = {'text': _('edit metadata'), 'view': 'document_multiple_edit_metadata', 'famfam': 'page_edit', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_METADATA_EDIT]}}
|
|
||||||
#document_preview = {'text': _('preview'), 'class': 'fancybox', 'view': 'document_preview', 'args': 'object.id', 'famfam': 'magnifier', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
|
||||||
#document_download = {'text': _('download'), 'view': 'document_download', 'args': 'object.id', 'famfam': 'page_save', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_DOWNLOAD]}}
|
|
||||||
#document_find_duplicates = {'text': _('find duplicates'), 'view': 'document_find_duplicates', 'args': 'object.id', 'famfam': 'page_refresh', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
|
||||||
#document_find_all_duplicates = {'text': _('find all duplicates'), 'view': 'document_find_all_duplicates', 'famfam': 'page_refresh', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
|
||||||
#document_clear_transformations = {'text': _('clear all transformations'), 'view': 'document_clear_transformations', 'args': 'object.id', 'famfam': 'page_paintbrush', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}}
|
|
||||||
#document_multiple_clear_transformations = {'text': _('clear all transformations'), 'view': 'document_multiple_clear_transformations', 'famfam': 'page_paintbrush', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}}
|
|
||||||
|
|
||||||
#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_recent, document_list, document_create, document_create_multiple, document_create_sibling], menu_name='sidebar')
|
|
||||||
#register_multi_item_links(['document_list'], [document_multiple_clear_transformations, document_multiple_edit_metadata, document_multiple_delete])
|
|
||||||
|
|
||||||
#####register_links(['folder_list', 'document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_document_with_type', 'upload_multiple_documents_with_type'], [folder_list, folder_create], menu_name='sidebar')
|
|
||||||
|
|
||||||
register_links(Folder, [folder_edit, folder_delete])
|
register_links(Folder, [folder_edit, folder_delete])
|
||||||
|
|
||||||
register_links(['folder_edit', 'folder_delete', 'folder_list', 'folder_create'], [folder_list, folder_create], menu_name='sidebar')
|
register_links(['folder_edit', 'folder_delete', 'folder_list', 'folder_create'], [folder_list, folder_create], menu_name='sidebar')
|
||||||
|
|
||||||
|
|
||||||
register_menu([
|
register_menu([
|
||||||
{'text': _('folders'), 'view': 'folder_list', 'links': [
|
{'text': _('folders'), 'view': 'folder_list', 'links': [
|
||||||
folder_list, folder_create
|
folder_list, folder_create
|
||||||
], 'famfam': 'folder', 'position': 2}])
|
], 'famfam': 'folder', 'position': 2}])
|
||||||
|
|
||||||
|
register_sidebar_template(['document_view', 'document_view_simple'], 'folders_sidebar_template.html')
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
#from django.template.defaultfilters import capfirst
|
|
||||||
|
|
||||||
from models import Folder
|
from models import Folder
|
||||||
|
|
||||||
@@ -9,3 +8,18 @@ class FolderForm(forms.ModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Folder
|
model = Folder
|
||||||
fields = ('title',)
|
fields = ('title',)
|
||||||
|
|
||||||
|
|
||||||
|
class AddDocumentForm(forms.ModelForm):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
user = kwargs.pop('user', None)
|
||||||
|
super(AddDocumentForm, self).__init__(*args, **kwargs)
|
||||||
|
self.fields['existing_folder'] = forms.ModelChoiceField(required=False, queryset=Folder.objects.filter(user=user))
|
||||||
|
self.fields['title'].required = False
|
||||||
|
self.fields['title'].label = _(u'New folder')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Folder
|
||||||
|
fields = ('title',)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
apps/folders/templates/folders_sidebar_template.html
Normal file
2
apps/folders/templates/folders_sidebar_template.html
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
{% load folder_tags %}
|
||||||
|
{% get_add_document_to_folder_form %}
|
||||||
0
apps/folders/templatetags/__init__.py
Normal file
0
apps/folders/templatetags/__init__.py
Normal file
23
apps/folders/templatetags/folder_tags.py
Normal file
23
apps/folders/templatetags/folder_tags.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
from django.core.urlresolvers import reverse, NoReverseMatch
|
||||||
|
from django.template import TemplateSyntaxError, Library, \
|
||||||
|
VariableDoesNotExist, Node, Variable
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
|
from dynamic_search.forms import SearchForm
|
||||||
|
from folders.forms import AddDocumentForm
|
||||||
|
|
||||||
|
register = Library()
|
||||||
|
|
||||||
|
|
||||||
|
@register.inclusion_tag('generic_form_subtemplate.html', takes_context=True)
|
||||||
|
def get_add_document_to_folder_form(context):
|
||||||
|
context.update({
|
||||||
|
'form': AddDocumentForm(user=context['request'].user),#, document=context['object']),
|
||||||
|
#'form': SearchForm(initial={'q':context.get('query_string', '')}),
|
||||||
|
'request': context['request'],
|
||||||
|
#'MEDIA_URL': context['MEDIA_URL'],
|
||||||
|
'form_action': reverse('folder_add_document' ,args=[context['object'].pk]),
|
||||||
|
#'form_title': _(u'Search'),
|
||||||
|
'title': _('Add document to a folder')
|
||||||
|
})
|
||||||
|
return context
|
||||||
@@ -7,4 +7,6 @@ urlpatterns = patterns('folders.views',
|
|||||||
url(r'^(?P<folder_id>\d+)/edit/$', 'folder_edit', (), 'folder_edit'),
|
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+)/delete/$', 'folder_delete', (), 'folder_delete'),
|
||||||
url(r'^(?P<folder_id>\d+)/$', 'folder_view', (), 'folder_view'),
|
url(r'^(?P<folder_id>\d+)/$', 'folder_view', (), 'folder_view'),
|
||||||
|
#url(r'^(?P<folder_id>\d+)/add_document/(?P<folder_id>\d+)/$', 'folder_add_document', (), 'folder_add_document'),
|
||||||
|
url(r'^add_document/(?P<document_id>\d+)/$', 'folder_add_document', (), 'folder_add_document'),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from documents.models import Document
|
|||||||
from permissions.api import check_permissions
|
from permissions.api import check_permissions
|
||||||
|
|
||||||
from models import Folder, FolderDocument
|
from models import Folder, FolderDocument
|
||||||
from forms import FolderForm
|
from forms import FolderForm, AddDocumentForm
|
||||||
|
|
||||||
|
|
||||||
def folder_list(request):
|
def folder_list(request):
|
||||||
@@ -116,20 +116,33 @@ def folder_view(request, folder_id):
|
|||||||
}, context_instance=RequestContext(request))
|
}, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
def folder_add_document(request, folder_id, document_id):
|
def folder_add_document(request, document_id):
|
||||||
folder = get_object_or_404(Folder, pk=folder_id)
|
|
||||||
document = get_object_or_404(Document, pk=document_id)
|
|
||||||
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW])
|
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW])
|
||||||
|
document = get_object_or_404(Document, pk=document_id)
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
previous = request.META.get('HTTP_REFERER', '/')
|
previous = request.META.get('HTTP_REFERER', '/')
|
||||||
|
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 created successfully'))
|
||||||
|
else:
|
||||||
|
messages.error(request, _(u'A folder named: %s, already exists.') % form.cleaned_data['title'])
|
||||||
|
return HttpResponseRedirect(previous)
|
||||||
|
else:
|
||||||
|
messages.error(request, _(u'Must specify a new folder or an existing one.'))
|
||||||
|
return HttpResponseRedirect(previous)
|
||||||
|
|
||||||
|
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})
|
||||||
|
|
||||||
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(previous)
|
return HttpResponseRedirect(previous)
|
||||||
|
|||||||
Reference in New Issue
Block a user