def test_upload_interactive_with_ampersand_metadata(self): url = URL(path=reverse(viewname='sources:document_upload_interactive')) url.args['metadata0_metadata_type_id'] = self.test_metadata_type.pk url.args['metadata0_value'] = TEST_METADATA_VALUE_WITH_AMPERSAND self.grant_access(permission=permission_document_create, obj=self.test_document_type) # Upload the test document with open(file=TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object: response = self.post(path=url.to_string(), data={ 'document-language': 'eng', 'source-file': file_object, 'document_type_id': self.test_document_type.pk, }) self.assertEqual(response.status_code, 302) self.assertEqual(Document.objects.count(), 1) self.assertEqual(Document.objects.first().metadata.first().value, TEST_METADATA_VALUE_WITH_AMPERSAND)
def form_valid(self, form): query = {IMPERSONATE_VARIABLE_ID: form.cleaned_data['user'].pk} if form.cleaned_data['permanent']: query[IMPERSONATE_VARIABLE_PERMANENT] = '' IMPERSONATE_VARIABLE_PERMANENT url = URL(viewname=setting_home_view.value, query=query) return HttpResponseRedirect(redirect_to=url.to_string())
def decode_metadata_from_querystring(querystring=None): """ Parse a URL query string to a list of metadata """ metadata_dict = { 'metadata_type_id': {}, 'value': {} } metadata_list = [] if querystring: # Match out of order metadata_type ids with metadata values from request for key, value in URL(query_string=querystring).args.items(): if key.startswith('metadata'): index, element = key.split('_', 1) index = index[8:] metadata_dict[element][index] = value # Convert the nested dictionary into a list of id+values dictionaries for order, identifier in metadata_dict['metadata_type_id'].items(): if order in metadata_dict['value'].keys(): metadata_list.append( { 'metadata_type_id': identifier, 'value': metadata_dict['value'][order] } ) return metadata_list
def step_post_upload_process(cls, document, querystring=None): Cabinet = apps.get_model(app_label='cabinets', model_name='Cabinet') cabinet_id_list = URL( query_string=querystring).args.getlist('cabinets') for cabinet in Cabinet.objects.filter(pk__in=cabinet_id_list): cabinet.documents.add(document)
def step_post_upload_process(cls, document, querystring=None): Tag = apps.get_model(app_label='tags', model_name='Tag') tag_id_list = URL(query_string=querystring).args.getlist('tags') for tag in Tag.objects.filter(pk__in=tag_id_list): tag.documents.add(document)
def get(self, request, *args, **kwargs): url = URL(viewname=setting_home_view.value, query={IMPERSONATE_VARIABLE_DISABLE: ''}) return HttpResponseRedirect(redirect_to=url.to_string())
def form_valid(self, form): path = reverse(viewname='templating:document_template_sandbox', kwargs={'document_id': self.external_object.pk}) url = URL(path=path, query={'template': form.cleaned_data['template']}) return HttpResponseRedirect(redirect_to=url.to_string())