Added view to add a document to a folder directly from the document detail view

This commit is contained in:
Roberto Rosario
2011-04-18 04:31:44 -04:00
parent 5084f7c871
commit 2cf8b05bfa
7 changed files with 70 additions and 35 deletions

View File

@@ -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')

View File

@@ -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',)

View File

@@ -0,0 +1,2 @@
{% load folder_tags %}
{% get_add_document_to_folder_form %}

View File

View 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

View File

@@ -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'),
) )

View File

@@ -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,13 +116,26 @@ 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) folder_document, created = FolderDocument.objects.get_or_create(folder=folder, document=document)
if created: if created: