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, \
|
||||
register_model_list_columns, register_multi_item_links
|
||||
#from main.api import register_diagnostic
|
||||
from permissions.api import register_permissions
|
||||
from navigation.api import register_sidebar_template
|
||||
|
||||
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_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_edit', 'folder_delete', 'folder_list', 'folder_create'], [folder_list, folder_create], menu_name='sidebar')
|
||||
|
||||
|
||||
register_menu([
|
||||
{'text': _('folders'), 'view': 'folder_list', 'links': [
|
||||
folder_list, folder_create
|
||||
], '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.utils.translation import ugettext as _
|
||||
#from django.template.defaultfilters import capfirst
|
||||
|
||||
from models import Folder
|
||||
|
||||
@@ -9,3 +8,18 @@ class FolderForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Folder
|
||||
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+)/delete/$', 'folder_delete', (), 'folder_delete'),
|
||||
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 models import Folder, FolderDocument
|
||||
from forms import FolderForm
|
||||
from forms import FolderForm, AddDocumentForm
|
||||
|
||||
|
||||
def folder_list(request):
|
||||
@@ -116,13 +116,26 @@ def folder_view(request, folder_id):
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def folder_add_document(request, folder_id, document_id):
|
||||
folder = get_object_or_404(Folder, pk=folder_id)
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
def folder_add_document(request, document_id):
|
||||
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW])
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
|
||||
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']:
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user