diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 63642ab5ad..f6f50aaaaf 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -20,14 +20,15 @@ class DocumentForm(forms.ModelForm): super(DocumentForm, self).__init__(*args, **kwargs) if 'initial' in kwargs: if 'document_type' in kwargs['initial']: - self.fields['document_type'].widget = forms.HiddenInput() + if 'document_type' in self.fields: + #To allow merging with DocumentForm_edit + self.fields['document_type'].widget = forms.HiddenInput() filenames_qs = kwargs['initial']['document_type'].documenttypefilename_set.filter(enabled=True) if filenames_qs.count() > 0: - self.fields['new_filename'] = forms.ModelChoiceField( + self.fields['document_type_available_filenames'] = forms.ModelChoiceField( queryset=filenames_qs, required=False, - label=_(u'Rename file')) - + label=_(u'Document type available filenames')) class Meta: model = Document @@ -39,11 +40,12 @@ class DocumentForm_view(DetailForm): exclude = ('file',) -class DocumentForm_edit(forms.ModelForm): +class DocumentForm_edit(DocumentForm): class Meta: model = Document - exclude = ('file','document_type') - new_filename = forms.CharField(label=_(u'New filename'), required=False) + exclude = ('file', 'document_type') + + new_filename = forms.CharField(label=_(u'New document filename'), required=False) class DocumentTypeSelectForm(forms.Form): diff --git a/apps/documents/views.py b/apps/documents/views.py index de385cc4e1..cc95f6799a 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -72,9 +72,9 @@ def upload_document_with_type(request, document_type_id, multiple=True): form = DocumentForm(request.POST, request.FILES, initial={'document_type':document_type}) if form.is_valid(): instance = form.save() - if 'new_filename' in form.cleaned_data: - if form.cleaned_data['new_filename']: - instance.file_filename = form.cleaned_data['new_filename'].filename + if 'document_type_available_filenames' in form.cleaned_data: + if form.cleaned_data['document_type_available_filenames']: + instance.file_filename = form.cleaned_data['document_type_available_filenames'].filename instance.save() _save_metadata(request.GET, instance) @@ -161,15 +161,21 @@ def document_delete(request, document_id): def document_edit(request, document_id): document = get_object_or_404(Document, pk=document_id) if request.method == 'POST': - form = DocumentForm_edit(request.POST) + form = DocumentForm_edit(request.POST, initial={'document_type':document.document_type}) if form.is_valid(): try: document.delete_fs_links() except Exception, e: messages.error(request, e) return HttpResponseRedirect(reverse('document_list')) - + document.file_filename = form.cleaned_data['new_filename'] + + print form.cleaned_data + if 'document_type_available_filenames' in form.cleaned_data: + if form.cleaned_data['document_type_available_filenames']: + document.file_filename = form.cleaned_data['document_type_available_filenames'].filename + document.save() try: @@ -181,7 +187,8 @@ def document_edit(request, document_id): 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}) + form = DocumentForm_edit(instance=document, initial={ + 'new_filename':document.file_filename, 'document_type':document.document_type}) return render_to_response('generic_form.html', { 'form':form, diff --git a/docs/TODO b/docs/TODO index 84c7b4c195..0a76fcea43 100644 --- a/docs/TODO +++ b/docs/TODO @@ -8,6 +8,7 @@ * Raise exception instead of returning error msg - DONE * Option to delete source staging file after upload - DONE * Jquery upload document upload form with ajax widget - NOT NEEDED (commit: b0f31f2a8f82ff0daca081005f2fcae3f5573df5) +* Rename dropbox from document edit view - DONE * Document list filtering by metadata * Filterform date filtering widget * Validate GET data before saving file @@ -19,7 +20,6 @@ * Change to model signal * Allow document type to be changed in document edit view * Implement single sign on or LDAP for intranets -* Rename dropbox from document edit view * Ability to rename staging file during upload * Encrypting storage backend * Indicate in generic list which document don't exist in storage backend