From 5e4456c0bdc9478fa7bb6073891d438f7db73f4e Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 5 Feb 2011 02:37:33 -0400 Subject: [PATCH] Added document edit view --- apps/documents/__init__.py | 3 ++- apps/documents/forms.py | 8 ++++++++ apps/documents/urls.py | 1 + apps/documents/views.py | 27 +++++++++++++++++++++++++-- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index ab27d4e59b..9ecf086794 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -9,8 +9,9 @@ document_create = {'text':_('upload a document'), 'view':'document_create', 'fam document_create_multiple = {'text':_('upload multiple document'), 'view':'document_create_multiple', 'famfam':'page_add'} document_view = {'text':_('details'), 'view':'document_view', 'args':'object.id', 'famfam':'page'} document_delete = {'text':_('delete'), 'view':'document_delete', 'args':'object.id', 'famfam':'page_delete'} +document_edit = {'text':_('edit'), 'view':'document_edit', 'args':'object.id', 'famfam':'page_edit'} -register_links(Document, [document_view, document_delete]) +register_links(Document, [document_view, document_edit, document_delete]) register_links(Document, [document_list, document_create, document_create_multiple], menu_name='sidebar') register_links(['document_list', 'document_create', 'document_create_multiple', 'upload_document_with_type', 'upload_multiple_documents_with_type'], [document_list, document_create, document_create_multiple], menu_name='sidebar') diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 5d2835e362..653dd47270 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -37,6 +37,14 @@ class DocumentForm_view(DetailForm): class Meta: model = Document exclude = ('file',) + + +class DocumentForm_edit(forms.ModelForm): + class Meta: + model = Document + exclude = ('file','document_type') + new_filename = forms.CharField(label=_(u'New filename'), required=False) + class DocumentTypeSelectForm(forms.Form): document_type = forms.ModelChoiceField(queryset=DocumentType.objects.all()) diff --git a/apps/documents/urls.py b/apps/documents/urls.py index 09e0d6147c..f4c1cc8613 100644 --- a/apps/documents/urls.py +++ b/apps/documents/urls.py @@ -11,4 +11,5 @@ urlpatterns = patterns('documents.views', url(r'^document/type/(?P\d+)/upload/multiple/$', 'upload_document_with_type', {'multiple':True}, 'upload_multiple_documents_with_type'), url(r'^document/(?P\d+)/$', 'document_view', (), 'document_view'), url(r'^document/(?P\d+)/delete/$', 'document_delete', (), 'document_delete'), + url(r'^document/(?P\d+)/edit/$', 'document_edit', (), 'document_edit'), ) diff --git a/apps/documents/views.py b/apps/documents/views.py index a0e06e4868..b3c7a6061e 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -8,7 +8,7 @@ from django.template import RequestContext from django.contrib import messages from django.views.generic.list_detail import object_detail, object_list from django.core.urlresolvers import reverse -from django.views.generic.create_update import create_object, delete_object +from django.views.generic.create_update import create_object, delete_object, update_object from django.forms.formsets import formset_factory @@ -16,7 +16,7 @@ from forms import DocumentForm_view from models import Document, DocumentMetadata, DocumentType, MetadataType from forms import DocumentTypeSelectForm, DocumentCreateWizard, \ - MetadataForm, DocumentForm + MetadataForm, DocumentForm, DocumentForm_edit from documents.conf.settings import STAGING_DIRECTORY @@ -127,3 +127,26 @@ def document_delete(request, document_id): 'object':document, 'object_name':_(u'document'), }) + + +def document_edit(request, document_id): + document = get_object_or_404(Document, pk=document_id) + if request.method == 'POST': + form = DocumentForm_edit(request.POST) + if form.is_valid(): + document.delete_fs_links() + document.file_filename = form.cleaned_data['new_filename'] + document.save() + document.create_fs_links() + messages.success(request, _(u'Document edited and filesystem links updated.')) + return HttpResponseRedirect(reverse('document_list')) + else: + form = DocumentForm_edit(instance=document, initial={'new_filename':document.file_filename}) + + return render_to_response('generic_form.html', { + 'form':form, + 'object':document, + + }, context_instance=RequestContext(request)) + +