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)
Exemple #2
0
    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())
Exemple #3
0
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
Exemple #4
0
    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)
Exemple #5
0
    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)
Exemple #6
0
 def get(self, request, *args, **kwargs):
     url = URL(viewname=setting_home_view.value,
               query={IMPERSONATE_VARIABLE_DISABLE: ''})
     return HttpResponseRedirect(redirect_to=url.to_string())
Exemple #7
0
    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())