diff --git a/apps/documents/forms.py b/apps/documents/forms.py index f0e6369efe..ab119bee8e 100755 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -1,4 +1,3 @@ - from django import forms from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext @@ -7,6 +6,7 @@ from django.utils.http import urlencode from django.core.urlresolvers import reverse from django.utils.safestring import mark_safe from django.forms.formsets import formset_factory +from django.utils.http import urlquote_plus from staging import StagingFile @@ -196,8 +196,8 @@ class DocumentCreateWizard(BoundFormWizard): self.urldata = [] for id, metadata in enumerate(form.cleaned_data): if metadata['value']: - self.urldata.append(('metadata%s_id' % id,metadata['id'])) - self.urldata.append(('metadata%s_value' % id,metadata['value'])) + self.urldata.append(('metadata%s_id' % id, metadata['id'])) + self.urldata.append(('metadata%s_value' % id, urlquote_plus(metadata['value'])) def get_template(self, step): return 'generic_wizard.html' @@ -211,5 +211,5 @@ class DocumentCreateWizard(BoundFormWizard): url = reverse(view, args=[self.document_type.id]) return HttpResponseRedirect('%s?%s' % (url, urlencode(self.urldata))) - +urlquote_plus MetadataFormSet = formset_factory(MetadataForm, extra=0) diff --git a/apps/documents/utils.py b/apps/documents/utils.py index 300c4bf0a7..f13497b521 100755 --- a/apps/documents/utils.py +++ b/apps/documents/utils.py @@ -97,5 +97,5 @@ def save_metadata(metadata_dict, document): metadata_type=get_object_or_404(MetadataType, pk=metadata_dict['id']), ) #Handle 'plus sign as space' in the url - document_metadata.value=unquote_plus(metadata_dict['value']) + document_metadata.value=unquote_plus(metadata_dict['value']).decode('utf-8') document_metadata.save() diff --git a/apps/documents/views.py b/apps/documents/views.py index 9bf6d7767d..efffd68f28 100755 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -11,6 +11,7 @@ from django.conf import settings from django.utils.http import urlencode from django.template.defaultfilters import slugify from django.core.exceptions import ObjectDoesNotExist +from django.utils.http import urlquote_plus from common.utils import pretty_size from permissions.api import check_permissions, Unauthorized @@ -95,8 +96,8 @@ def document_create_sibling(request, document_id, multiple=True): urldata = [] for id, metadata in enumerate(document.documentmetadata_set.all()): if hasattr(metadata, 'value'): - urldata.append(('metadata%s_id' % id,metadata.metadata_type.id)) - urldata.append(('metadata%s_value' % id,metadata.value)) + urldata.append(('metadata%s_id' % id, metadata.metadata_type.id)) + urldata.append(('metadata%s_value' % id, urlquote_plus(metadata.value))) if multiple: view = 'upload_multiple_documents_with_type'