Improve and fix failing metadata tests
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -24,12 +24,13 @@ class DocumentTestMixin(object):
|
||||
label=TEST_DOCUMENT_TYPE_LABEL
|
||||
)
|
||||
|
||||
def upload_document(self):
|
||||
def upload_document(self, filename=None):
|
||||
self._calculate_test_document_path()
|
||||
|
||||
with open(self.test_document_path, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
file_object=file_object, label=self.test_document_filename
|
||||
file_object=file_object,
|
||||
label=filename or self.test_document_filename
|
||||
)
|
||||
return document
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ from mayan.apps.rest_api.permissions import MayanPermission
|
||||
|
||||
from .models import MetadataType
|
||||
from .permissions import (
|
||||
permission_metadata_document_add, permission_metadata_document_remove,
|
||||
permission_metadata_document_edit, permission_metadata_document_view,
|
||||
permission_document_metadata_add, permission_document_metadata_remove,
|
||||
permission_document_metadata_edit, permission_document_metadata_view,
|
||||
permission_metadata_type_create, permission_metadata_type_delete,
|
||||
permission_metadata_type_edit, permission_metadata_type_view
|
||||
)
|
||||
@@ -34,9 +34,9 @@ class APIDocumentMetadataListView(generics.ListCreateAPIView):
|
||||
"""
|
||||
def get_document(self):
|
||||
if self.request.method == 'GET':
|
||||
permission_required = permission_metadata_document_view
|
||||
permission_required = permission_document_metadata_view
|
||||
else:
|
||||
permission_required = permission_metadata_document_add
|
||||
permission_required = permission_document_metadata_add
|
||||
|
||||
document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
@@ -90,13 +90,13 @@ class APIDocumentMetadataView(generics.RetrieveUpdateDestroyAPIView):
|
||||
|
||||
def get_document(self):
|
||||
if self.request.method == 'GET':
|
||||
permission_required = permission_metadata_document_view
|
||||
permission_required = permission_document_metadata_view
|
||||
elif self.request.method == 'PUT':
|
||||
permission_required = permission_metadata_document_edit
|
||||
permission_required = permission_document_metadata_edit
|
||||
elif self.request.method == 'PATCH':
|
||||
permission_required = permission_metadata_document_edit
|
||||
permission_required = permission_document_metadata_edit
|
||||
elif self.request.method == 'DELETE':
|
||||
permission_required = permission_metadata_document_remove
|
||||
permission_required = permission_document_metadata_remove
|
||||
|
||||
document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
|
||||
@@ -48,8 +48,8 @@ from .links import (
|
||||
)
|
||||
from .methods import method_get_metadata
|
||||
from .permissions import (
|
||||
permission_metadata_document_add, permission_metadata_document_edit,
|
||||
permission_metadata_document_remove, permission_metadata_document_view,
|
||||
permission_document_metadata_add, permission_document_metadata_edit,
|
||||
permission_document_metadata_remove, permission_document_metadata_view,
|
||||
permission_metadata_type_delete, permission_metadata_type_edit,
|
||||
permission_metadata_type_view
|
||||
)
|
||||
@@ -130,10 +130,10 @@ class MetadataApp(MayanAppConfig):
|
||||
|
||||
ModelPermission.register(
|
||||
model=Document, permissions=(
|
||||
permission_metadata_document_add,
|
||||
permission_metadata_document_edit,
|
||||
permission_metadata_document_remove,
|
||||
permission_metadata_document_view,
|
||||
permission_document_metadata_add,
|
||||
permission_document_metadata_edit,
|
||||
permission_document_metadata_remove,
|
||||
permission_document_metadata_view,
|
||||
)
|
||||
)
|
||||
ModelPermission.register(
|
||||
|
||||
@@ -122,7 +122,7 @@ class DocumentMetadataForm(forms.Form):
|
||||
DocumentMetadataFormSet = formset_factory(DocumentMetadataForm, extra=0)
|
||||
|
||||
|
||||
class DocumentAddMetadataForm(forms.Form):
|
||||
class DocumentMetadataAddForm(forms.Form):
|
||||
metadata_type = forms.ModelMultipleChoiceField(
|
||||
help_text=_('Metadata types to be added to the selected documents.'),
|
||||
label=_('Metadata type'), queryset=MetadataType.objects.all(),
|
||||
@@ -143,25 +143,11 @@ class DocumentAddMetadataForm(forms.Form):
|
||||
else:
|
||||
queryset = MetadataType.objects.none()
|
||||
|
||||
super(DocumentAddMetadataForm, self).__init__(*args, **kwargs)
|
||||
super(DocumentMetadataAddForm, self).__init__(*args, **kwargs)
|
||||
|
||||
self.fields['metadata_type'].queryset = queryset
|
||||
|
||||
|
||||
class MetadataTypeForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(MetadataTypeForm, self).__init__(*args, **kwargs)
|
||||
self.fields['lookup'].help_text = format_lazy(
|
||||
'{}{}{}', self.fields['lookup'].help_text,
|
||||
_(' Available template context variables: '),
|
||||
MetadataLookup.get_as_help_text()
|
||||
)
|
||||
|
||||
class Meta:
|
||||
fields = ('name', 'label', 'default', 'lookup', 'validation', 'parser')
|
||||
model = MetadataType
|
||||
|
||||
|
||||
class DocumentMetadataRemoveForm(DocumentMetadataForm):
|
||||
update = forms.BooleanField(
|
||||
initial=False, label=_('Remove'), required=False
|
||||
@@ -281,3 +267,17 @@ class DocumentTypeMetadataTypeRelationshipFormSet(DocumentTypeMetadataTypeRelati
|
||||
_user = kwargs.pop('_user')
|
||||
super(DocumentTypeMetadataTypeRelationshipFormSet, self).__init__(*args, **kwargs)
|
||||
self.form_kwargs.update({'_user': _user})
|
||||
|
||||
|
||||
class MetadataTypeForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(MetadataTypeForm, self).__init__(*args, **kwargs)
|
||||
self.fields['lookup'].help_text = format_lazy(
|
||||
'{}{}{}', self.fields['lookup'].help_text,
|
||||
_(' Available template context variables: '),
|
||||
MetadataLookup.get_as_help_text()
|
||||
)
|
||||
|
||||
class Meta:
|
||||
fields = ('name', 'label', 'default', 'lookup', 'validation', 'parser')
|
||||
model = MetadataType
|
||||
|
||||
@@ -37,8 +37,5 @@ icon_document_type_metadata_types = Icon(
|
||||
icon_metadata = Icon(driver_name='fontawesome', symbol='database')
|
||||
icon_metadata_type_create = Icon(driver_name='fontawesome', symbol='plus')
|
||||
icon_metadata_type_delete = Icon(driver_name='fontawesome', symbol='times')
|
||||
icon_metadata_type_document_types = Icon(
|
||||
driver_name='fontawesome', symbol='book'
|
||||
)
|
||||
icon_metadata_type_edit = Icon(driver_name='fontawesome', symbol='pencil-alt')
|
||||
icon_metadata_type_list = Icon(driver_name='fontawesome', symbol='database')
|
||||
|
||||
@@ -11,25 +11,24 @@ from .icons import (
|
||||
icon_document_metadata_remove, icon_document_metadata_view,
|
||||
icon_document_multiple_metadata_add, icon_document_multiple_metadata_edit,
|
||||
icon_document_multiple_metadata_remove, icon_metadata_type_create,
|
||||
icon_document_type_metadata_types, icon_metadata_type_document_types,
|
||||
icon_metadata_type_delete, icon_metadata_type_edit,
|
||||
icon_metadata_type_list,
|
||||
icon_document_type_metadata_types, icon_metadata_type_delete,
|
||||
icon_metadata_type_edit, icon_metadata_type_list
|
||||
)
|
||||
from .permissions import (
|
||||
permission_metadata_document_add, permission_metadata_document_edit,
|
||||
permission_metadata_document_remove, permission_metadata_document_view,
|
||||
permission_document_metadata_add, permission_document_metadata_edit,
|
||||
permission_document_metadata_remove, permission_document_metadata_view,
|
||||
permission_metadata_type_create, permission_metadata_type_delete,
|
||||
permission_metadata_type_edit, permission_metadata_type_view
|
||||
)
|
||||
|
||||
link_document_metadata_add = Link(
|
||||
args='object.pk', icon_class=icon_document_metadata_add,
|
||||
permissions=(permission_metadata_document_add,), text=_('Add metadata'),
|
||||
permissions=(permission_document_metadata_add,), text=_('Add metadata'),
|
||||
view='metadata:document_metadata_add',
|
||||
)
|
||||
link_document_metadata_edit = Link(
|
||||
args='object.pk', icon_class=icon_document_metadata_edit,
|
||||
permissions=(permission_metadata_document_edit,), text=_('Edit metadata'),
|
||||
permissions=(permission_document_metadata_edit,), text=_('Edit metadata'),
|
||||
view='metadata:document_metadata_edit'
|
||||
)
|
||||
link_document_multiple_metadata_add = Link(
|
||||
@@ -47,12 +46,12 @@ link_document_multiple_metadata_remove = Link(
|
||||
)
|
||||
link_document_metadata_remove = Link(
|
||||
args='object.pk', icon_class=icon_document_metadata_remove,
|
||||
permissions=(permission_metadata_document_remove,),
|
||||
permissions=(permission_document_metadata_remove,),
|
||||
text=_('Remove metadata'), view='metadata:document_metadata_remove',
|
||||
)
|
||||
link_document_metadata_view = Link(
|
||||
args='resolved_object.pk', icon_class=icon_document_metadata_view,
|
||||
permissions=(permission_metadata_document_view,), text=_('Metadata'),
|
||||
permissions=(permission_document_metadata_view,), text=_('Metadata'),
|
||||
view='metadata:document_metadata_view',
|
||||
)
|
||||
link_document_type_metadata_types = Link(
|
||||
@@ -61,7 +60,7 @@ link_document_type_metadata_types = Link(
|
||||
view='metadata:document_type_metadata_types',
|
||||
)
|
||||
link_metadata_type_document_types = Link(
|
||||
args='resolved_object.pk', icon_class=icon_metadata_type_document_types,
|
||||
args='resolved_object.pk', icon_class=icon_document_type,
|
||||
permissions=(permission_document_type_edit,), text=_('Document types'),
|
||||
view='metadata:metadata_type_document_types',
|
||||
)
|
||||
@@ -85,5 +84,3 @@ link_metadata_type_list = Link(
|
||||
permissions=(permission_metadata_type_view,), text=_('Metadata types'),
|
||||
view='metadata:metadata_type_list'
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ class MetadataType(models.Model):
|
||||
return self.label
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('metadata:setup_metadata_type_edit', args=(self.pk,))
|
||||
return reverse('metadata:metadata_type_edit', kwargs={'pk': self.pk})
|
||||
|
||||
if PY2:
|
||||
# Python 2 non unicode version
|
||||
|
||||
@@ -4,32 +4,35 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.permissions import PermissionNamespace
|
||||
|
||||
namespace = PermissionNamespace(label=_('Metadata'), name='metadata')
|
||||
namespace = PermissionNamespace(name='metadata', label=_('Metadata'))
|
||||
|
||||
permission_metadata_document_edit = namespace.add_permission(
|
||||
permission_document_metadata_add = namespace.add_permission(
|
||||
name='metadata_document_add', label=_('Add metadata to a document')
|
||||
)
|
||||
permission_document_metadata_edit = namespace.add_permission(
|
||||
name='metadata_document_edit', label=_('Edit a document\'s metadata')
|
||||
)
|
||||
permission_metadata_document_add = namespace.add_permission(
|
||||
name='metadata_document_add', label=_('Add metadata to a document'))
|
||||
permission_metadata_document_remove = namespace.add_permission(
|
||||
permission_document_metadata_remove = namespace.add_permission(
|
||||
name='metadata_document_remove',
|
||||
label=_('Remove metadata from a document')
|
||||
)
|
||||
permission_metadata_document_view = namespace.add_permission(
|
||||
permission_document_metadata_view = namespace.add_permission(
|
||||
name='metadata_document_view', label=_('View metadata from a document')
|
||||
)
|
||||
|
||||
setup_namespace = PermissionNamespace(label=_('Metadata setup'), name='metadata_setup')
|
||||
|
||||
permission_metadata_type_edit = setup_namespace.add_permission(
|
||||
name='metadata_type_edit', label=_('Edit metadata types')
|
||||
setup_namespace = PermissionNamespace(
|
||||
name='metadata_setup', label=_('Metadata setup')
|
||||
)
|
||||
|
||||
permission_metadata_type_create = setup_namespace.add_permission(
|
||||
name='metadata_type_create', label=_('Create new metadata types')
|
||||
)
|
||||
permission_metadata_type_delete = setup_namespace.add_permission(
|
||||
name='metadata_type_delete', label=_('Delete metadata types')
|
||||
)
|
||||
permission_metadata_type_edit = setup_namespace.add_permission(
|
||||
name='metadata_type_edit', label=_('Edit metadata types')
|
||||
)
|
||||
permission_metadata_type_view = setup_namespace.add_permission(
|
||||
name='metadata_type_view', label=_('View metadata types')
|
||||
)
|
||||
|
||||
@@ -8,6 +8,7 @@ from .parsers import MetadataParser
|
||||
from .validators import MetadataValidator
|
||||
|
||||
namespace = Namespace(name='metadata', label=_('Metadata'))
|
||||
|
||||
setting_available_validators = namespace.add_setting(
|
||||
global_name='METADATA_AVAILABLE_VALIDATORS',
|
||||
default=MetadataValidator.get_import_paths()
|
||||
|
||||
@@ -25,7 +25,7 @@ class MetadataTestsMixin(object):
|
||||
|
||||
def _request_metadata_type_create_view(self):
|
||||
return self.post(
|
||||
viewname='metadata:setup_metadata_type_create', data={
|
||||
viewname='metadata:metadata_type_create', data={
|
||||
'label': TEST_METADATA_TYPE_LABEL,
|
||||
'name': TEST_METADATA_TYPE_NAME
|
||||
}
|
||||
@@ -33,14 +33,14 @@ class MetadataTestsMixin(object):
|
||||
|
||||
def _request_metadata_type_delete_view(self):
|
||||
return self.post(
|
||||
viewname='metadata:setup_metadata_type_delete', args=(
|
||||
viewname='metadata:metadata_type_delete', args=(
|
||||
self.metadata_type.pk,
|
||||
),
|
||||
)
|
||||
|
||||
def _request_metadata_type_edit_view(self):
|
||||
return self.post(
|
||||
viewname='metadata:setup_metadata_type_edit', args=(
|
||||
viewname='metadata:metadata_type_edit', args=(
|
||||
self.metadata_type.pk,), data={
|
||||
'label': TEST_METADATA_TYPE_LABEL_EDITED,
|
||||
'name': TEST_METADATA_TYPE_NAME_EDITED
|
||||
@@ -52,7 +52,7 @@ class MetadataTestsMixin(object):
|
||||
# blindly sets the first form of the formset.
|
||||
|
||||
return self.post(
|
||||
viewname='metadata:setup_metadata_type_document_types',
|
||||
viewname='metadata:metadata_type_document_types',
|
||||
args=(self.metadata_type.pk,), data={
|
||||
'form-TOTAL_FORMS': '1',
|
||||
'form-INITIAL_FORMS': '0',
|
||||
@@ -62,5 +62,5 @@ class MetadataTestsMixin(object):
|
||||
|
||||
def _request_metadata_type_list_view(self):
|
||||
return self.get(
|
||||
viewname='metadata:setup_metadata_type_list',
|
||||
viewname='metadata:metadata_type_list',
|
||||
)
|
||||
|
||||
@@ -11,8 +11,8 @@ from mayan.apps.rest_api.tests import BaseAPITestCase
|
||||
|
||||
from ..models import DocumentTypeMetadataType, MetadataType
|
||||
from ..permissions import (
|
||||
permission_metadata_document_add, permission_metadata_document_edit,
|
||||
permission_metadata_document_remove, permission_metadata_document_view,
|
||||
permission_document_metadata_add, permission_document_metadata_edit,
|
||||
permission_document_metadata_remove, permission_document_metadata_view,
|
||||
permission_metadata_type_create, permission_metadata_type_delete,
|
||||
permission_metadata_type_edit, permission_metadata_type_view
|
||||
)
|
||||
@@ -63,7 +63,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_metadata_type_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,)
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}
|
||||
)
|
||||
|
||||
def test_metadata_type_delete_no_access(self):
|
||||
@@ -84,7 +84,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_metadata_type_detail_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,)
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}
|
||||
)
|
||||
|
||||
def test_metadata_type_detail_view_no_access(self):
|
||||
@@ -107,7 +107,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_metadata_type_edit_view_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,), data={
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}, data={
|
||||
'label': TEST_METADATA_TYPE_LABEL_2,
|
||||
'name': TEST_METADATA_TYPE_NAME_2
|
||||
}
|
||||
@@ -137,7 +137,7 @@ class MetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_metadata_type_edit_view_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:metadatatype-detail',
|
||||
args=(self.metadata_type.pk,), data={
|
||||
kwargs={'metadata_type_pk': self.metadata_type.pk}, data={
|
||||
'label': TEST_METADATA_TYPE_LABEL_2,
|
||||
'name': TEST_METADATA_TYPE_NAME_2
|
||||
}
|
||||
@@ -199,10 +199,6 @@ class DocumentTypeMetadataTypeAPITestCase(BaseAPITestCase):
|
||||
label=TEST_METADATA_TYPE_LABEL, name=TEST_METADATA_TYPE_NAME
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
self.document_type.delete()
|
||||
super(DocumentTypeMetadataTypeAPITestCase, self).tearDown()
|
||||
|
||||
def _create_document_type_metadata_type(self):
|
||||
self.document_type_metadata_type = self.document_type.metadata.create(
|
||||
metadata_type=self.metadata_type, required=False
|
||||
@@ -211,7 +207,7 @@ class DocumentTypeMetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_create_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:documenttypemetadatatype-list',
|
||||
args=(self.document_type.pk,), data={
|
||||
kwargs={'document_type_pk': self.document_type.pk}, data={
|
||||
'metadata_type_pk': self.metadata_type.pk, 'required': False
|
||||
}
|
||||
)
|
||||
@@ -241,9 +237,10 @@ class DocumentTypeMetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:documenttypemetadatatype-detail',
|
||||
args=(
|
||||
self.document_type.pk, self.document_type_metadata_type.pk,
|
||||
),
|
||||
kwargs={
|
||||
'document_type_pk': self.document_type.pk,
|
||||
'metadata_type_pk': self.document_type_metadata_type.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_type_metadata_type_delete_view_no_access(self):
|
||||
@@ -262,9 +259,7 @@ class DocumentTypeMetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_list_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:documenttypemetadatatype-list',
|
||||
args=(
|
||||
self.document_type.pk,
|
||||
),
|
||||
kwargs={'document_type_pk': self.document_type.pk}
|
||||
)
|
||||
|
||||
def test_document_type_metadata_type_list_view_no_access(self):
|
||||
@@ -286,9 +281,10 @@ class DocumentTypeMetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_edit_view_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:documenttypemetadatatype-detail',
|
||||
args=(
|
||||
self.document_type.pk, self.document_type_metadata_type.pk,
|
||||
), data={
|
||||
kwargs={
|
||||
'document_type_pk': self.document_type.pk,
|
||||
'metadata_type_pk': self.document_type_metadata_type.pk
|
||||
}, data={
|
||||
'required': True
|
||||
}
|
||||
)
|
||||
@@ -311,9 +307,10 @@ class DocumentTypeMetadataTypeAPITestCase(BaseAPITestCase):
|
||||
def _request_document_type_metadata_type_edit_view_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:documenttypemetadatatype-detail',
|
||||
args=(
|
||||
self.document_type.pk, self.document_type_metadata_type.pk,
|
||||
), data={
|
||||
kwargs={
|
||||
'document_type_pk': self.document_type.pk,
|
||||
'metadata_type_pk': self.document_type_metadata_type.pk
|
||||
}, data={
|
||||
'required': True
|
||||
}
|
||||
)
|
||||
@@ -368,7 +365,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def _request_document_metadata_create_view(self):
|
||||
return self.post(
|
||||
viewname='rest_api:documentmetadata-list',
|
||||
args=(self.document.pk,), data={
|
||||
kwargs={'document_pk': self.document.pk}, data={
|
||||
'metadata_type_pk': self.metadata_type.pk,
|
||||
'value': TEST_METADATA_VALUE
|
||||
}
|
||||
@@ -380,7 +377,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
self.assertEqual(self.document.metadata.count(), 0)
|
||||
|
||||
def test_document_metadata_create_view_with_access(self):
|
||||
self.grant_access(permission=permission_metadata_document_add, obj=self.document)
|
||||
self.grant_access(permission=permission_document_metadata_add, obj=self.document)
|
||||
response = self._request_document_metadata_create_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
document_metadata = self.document.metadata.first()
|
||||
@@ -390,7 +387,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
|
||||
def test_document_metadata_create_duplicate_view(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_permission(permission=permission_metadata_document_add)
|
||||
self.grant_permission(permission=permission_document_metadata_add)
|
||||
response = self._request_document_metadata_create_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertEqual(list(response.data.keys())[0], 'non_field_errors')
|
||||
@@ -398,7 +395,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def test_document_metadata_create_invalid_lookup_value_view(self):
|
||||
self.metadata_type.lookup = 'invalid,lookup,values,on,purpose'
|
||||
self.metadata_type.save()
|
||||
self.grant_permission(permission=permission_metadata_document_add)
|
||||
self.grant_permission(permission=permission_document_metadata_add)
|
||||
response = self._request_document_metadata_create_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertEqual(list(response.data.keys())[0], 'non_field_errors')
|
||||
@@ -406,7 +403,10 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def _request_document_metadata_delete_view(self):
|
||||
return self.delete(
|
||||
viewname='rest_api:documentmetadata-detail',
|
||||
args=(self.document.pk, self.document_metadata.pk,)
|
||||
kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'metadata_pk': self.document_metadata.pk
|
||||
}
|
||||
)
|
||||
|
||||
def test_document_metadata_delete_view_no_access(self):
|
||||
@@ -418,7 +418,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def test_document_metadata_delete_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_remove, obj=self.document
|
||||
permission=permission_document_metadata_remove, obj=self.document
|
||||
)
|
||||
response = self._request_document_metadata_delete_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||
@@ -426,9 +426,8 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
|
||||
def _request_document_metadata_list_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:documentmetadata-list', args=(
|
||||
self.document.pk,
|
||||
)
|
||||
viewname='rest_api:documentmetadata-list',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_document_metadata_list_view_no_access(self):
|
||||
@@ -439,7 +438,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def test_document_metadata_list_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_view, obj=self.document
|
||||
permission=permission_document_metadata_view, obj=self.document
|
||||
)
|
||||
response = self._request_document_metadata_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
@@ -460,7 +459,10 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def _request_document_metadata_edit_view_via_patch(self):
|
||||
return self.patch(
|
||||
viewname='rest_api:documentmetadata-detail',
|
||||
args=(self.document.pk, self.document_metadata.pk,), data={
|
||||
kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'metadata_pk': self.document_metadata.pk
|
||||
}, data={
|
||||
'value': TEST_METADATA_VALUE_EDITED
|
||||
}
|
||||
)
|
||||
@@ -475,7 +477,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def test_document_metadata_patch_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_edit, obj=self.document
|
||||
permission=permission_document_metadata_edit, obj=self.document
|
||||
)
|
||||
response = self._request_document_metadata_edit_view_via_patch()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
@@ -490,7 +492,10 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def _request_document_metadata_edit_view_via_put(self):
|
||||
return self.put(
|
||||
viewname='rest_api:documentmetadata-detail',
|
||||
args=(self.document.pk, self.document_metadata.pk,), data={
|
||||
kwargs={
|
||||
'document_pk': self.document.pk,
|
||||
'metadata_pk': self.document_metadata.pk
|
||||
}, data={
|
||||
'value': TEST_METADATA_VALUE_EDITED
|
||||
}
|
||||
)
|
||||
@@ -505,7 +510,7 @@ class DocumentMetadataAPITestCase(BaseAPITestCase):
|
||||
def test_document_metadata_put_view_with_access(self):
|
||||
self._create_document_metadata()
|
||||
self.grant_access(
|
||||
permission=permission_metadata_document_edit, obj=self.document
|
||||
permission=permission_document_metadata_edit, obj=self.document
|
||||
)
|
||||
response = self._request_document_metadata_edit_view_via_put()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17,87 +17,94 @@ from .views import (
|
||||
|
||||
urlpatterns = [
|
||||
url(
|
||||
r'^documents/(?P<pk>\d+)/edit/$', DocumentMetadataEditView.as_view(),
|
||||
name='document_metadata_edit'
|
||||
regex=r'^documents/(?P<pk>\d+)/edit/$', name='document_metadata_edit',
|
||||
view=DocumentMetadataEditView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/multiple/edit/$', DocumentMetadataEditView.as_view(),
|
||||
name='document_multiple_metadata_edit'
|
||||
regex=r'^documents/multiple/edit/$',
|
||||
name='document_multiple_metadata_edit',
|
||||
view=DocumentMetadataEditView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/(?P<pk>\d+)/view/$', DocumentMetadataListView.as_view(),
|
||||
name='document_metadata_view'
|
||||
regex=r'^documents/(?P<pk>\d+)/view/$', name='document_metadata_view',
|
||||
view=DocumentMetadataListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/(?P<pk>\d+)/add/$', DocumentMetadataAddView.as_view(),
|
||||
name='document_metadata_add'
|
||||
regex=r'^documents/(?P<pk>\d+)/add/$', name='document_metadata_add',
|
||||
view=DocumentMetadataAddView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/multiple/add/$', DocumentMetadataAddView.as_view(),
|
||||
name='document_multiple_metadata_add'
|
||||
regex=r'^documents/multiple/add/$',
|
||||
name='document_multiple_metadata_add',
|
||||
view=DocumentMetadataAddView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/(?P<pk>\d+)/remove/$', DocumentMetadataRemoveView.as_view(),
|
||||
name='document_metadata_remove'
|
||||
regex=r'^documents/(?P<pk>\d+)/remove/$',
|
||||
name='document_metadata_remove',
|
||||
view=DocumentMetadataRemoveView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/multiple/remove/$', DocumentMetadataRemoveView.as_view(),
|
||||
name='document_multiple_metadata_remove'
|
||||
regex=r'^documents/multiple/remove/$',
|
||||
name='document_multiple_metadata_remove',
|
||||
view=DocumentMetadataRemoveView.as_view()
|
||||
),
|
||||
|
||||
url(
|
||||
r'^types/list/$', MetadataTypeListView.as_view(),
|
||||
name='metadata_type_list'
|
||||
regex=r'^types/list/$', name='metadata_type_list',
|
||||
view=MetadataTypeListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^types/create/$', MetadataTypeCreateView.as_view(),
|
||||
name='metadata_type_create'
|
||||
regex=r'^types/create/$', name='metadata_type_create',
|
||||
view=MetadataTypeCreateView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^types/(?P<pk>\d+)/edit/$', MetadataTypeEditView.as_view(),
|
||||
name='metadata_type_edit'
|
||||
regex=r'^types/(?P<pk>\d+)/edit/$', name='metadata_type_edit',
|
||||
view=MetadataTypeEditView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^types/(?P<pk>\d+)/delete/$',
|
||||
MetadataTypeDeleteView.as_view(), name='metadata_type_delete'
|
||||
regex=r'^types/(?P<pk>\d+)/delete/$', name='metadata_type_delete',
|
||||
view=MetadataTypeDeleteView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^document_types/(?P<pk>\d+)/metadata_types/$',
|
||||
SetupDocumentTypeMetadataTypes.as_view(),
|
||||
name='document_type_metadata_types'
|
||||
regex=r'^document_types/(?P<pk>\d+)/metadata_types/$',
|
||||
name='document_type_metadata_types',
|
||||
view=SetupDocumentTypeMetadataTypes.as_view()
|
||||
),
|
||||
url(
|
||||
r'^metadata_types/(?P<pk>\d+)/document_types/$',
|
||||
SetupMetadataTypesDocumentTypes.as_view(),
|
||||
name='metadata_type_document_types'
|
||||
regex=r'^metadata_types/(?P<pk>\d+)/document_types/$',
|
||||
name='metadata_type_document_types',
|
||||
view=SetupMetadataTypesDocumentTypes.as_view()
|
||||
),
|
||||
]
|
||||
|
||||
api_urls = [
|
||||
url(
|
||||
r'^metadata_types/$', APIMetadataTypeListView.as_view(),
|
||||
name='metadatatype-list'
|
||||
regex=r'^metadata_types/$', name='metadatatype-list',
|
||||
view=APIMetadataTypeListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^metadata_types/(?P<metadata_type_pk>\d+)/$',
|
||||
APIMetadataTypeView.as_view(), name='metadatatype-detail'
|
||||
regex=r'^metadata_types/(?P<metadata_type_pk>\d+)/$',
|
||||
name='metadatatype-detail',
|
||||
view=APIMetadataTypeView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^document_types/(?P<document_type_pk>\d+)/metadata_types/$',
|
||||
APIDocumentTypeMetadataTypeListView.as_view(),
|
||||
name='documenttypemetadatatype-list'
|
||||
regex=r'^document_types/(?P<document_type_pk>\d+)/metadata_types/$',
|
||||
name='documenttypemetadatatype-list',
|
||||
view=APIDocumentTypeMetadataTypeListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^document_types/(?P<document_type_pk>\d+)/metadata_types/(?P<metadata_type_pk>\d+)/$',
|
||||
APIDocumentTypeMetadataTypeView.as_view(),
|
||||
name='documenttypemetadatatype-detail'
|
||||
regex=r'^document_types/(?P<document_type_pk>\d+)/metadata_types/(?P<metadata_type_pk>\d+)/$',
|
||||
name='documenttypemetadatatype-detail',
|
||||
view=APIDocumentTypeMetadataTypeView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/(?P<document_pk>\d+)/metadata/$',
|
||||
APIDocumentMetadataListView.as_view(), name='documentmetadata-list'
|
||||
regex=r'^documents/(?P<document_pk>\d+)/metadata/$',
|
||||
name='documentmetadata-list',
|
||||
view=APIDocumentMetadataListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^documents/(?P<document_pk>\d+)/metadata/(?P<metadata_pk>\d+)/$',
|
||||
APIDocumentMetadataView.as_view(), name='documentmetadata-detail'
|
||||
regex=r'^documents/(?P<document_pk>\d+)/metadata/(?P<metadata_pk>\d+)/$',
|
||||
name='documentmetadata-detail',
|
||||
view=APIDocumentMetadataView.as_view()
|
||||
),
|
||||
]
|
||||
|
||||
@@ -23,31 +23,28 @@ from mayan.apps.documents.permissions import (
|
||||
|
||||
from .api import save_metadata_list
|
||||
from .forms import (
|
||||
DocumentAddMetadataForm, DocumentMetadataFormSet,
|
||||
DocumentMetadataAddForm, DocumentMetadataFormSet,
|
||||
DocumentMetadataRemoveFormSet,
|
||||
DocumentTypeMetadataTypeRelationshipFormSet, MetadataTypeForm
|
||||
)
|
||||
from .icons import (
|
||||
icon_document_metadata_add, icon_document_metadata_edit,
|
||||
icon_document_metadata_remove, icon_metadata
|
||||
)
|
||||
from .icons import icon_metadata
|
||||
from .links import (
|
||||
link_document_metadata_add, link_document_multiple_metadata_add,
|
||||
link_metadata_type_create
|
||||
)
|
||||
from .models import DocumentMetadata, MetadataType
|
||||
from .permissions import (
|
||||
permission_metadata_document_add, permission_metadata_document_edit,
|
||||
permission_metadata_document_remove, permission_metadata_document_view,
|
||||
permission_document_metadata_add, permission_document_metadata_edit,
|
||||
permission_document_metadata_remove, permission_document_metadata_view,
|
||||
permission_metadata_type_create, permission_metadata_type_delete,
|
||||
permission_metadata_type_edit, permission_metadata_type_view
|
||||
)
|
||||
|
||||
|
||||
class DocumentMetadataAddView(MultipleObjectFormActionView):
|
||||
form_class = DocumentAddMetadataForm
|
||||
form_class = DocumentMetadataAddForm
|
||||
model = Document
|
||||
object_permission = permission_metadata_document_add
|
||||
object_permission = permission_document_metadata_add
|
||||
success_message = _('Metadata add request performed on %(count)d document')
|
||||
success_message_plural = _(
|
||||
'Metadata add request performed on %(count)d documents'
|
||||
@@ -87,7 +84,7 @@ class DocumentMetadataAddView(MultipleObjectFormActionView):
|
||||
return HttpResponseRedirect(
|
||||
'%s?%s' % (
|
||||
reverse(
|
||||
viewname='metadata:document_metadata_multiple_edit'
|
||||
viewname='metadata:document_multiple_metadata_edit'
|
||||
), urlencode(
|
||||
{
|
||||
'id_list': ','.join(
|
||||
@@ -107,7 +104,6 @@ class DocumentMetadataAddView(MultipleObjectFormActionView):
|
||||
queryset = self.get_queryset()
|
||||
|
||||
result = {
|
||||
'submit_icon_class': icon_document_metadata_add,
|
||||
'submit_label': _('Add'),
|
||||
'title': ungettext(
|
||||
'Add metadata types to document',
|
||||
@@ -213,7 +209,7 @@ class DocumentMetadataAddView(MultipleObjectFormActionView):
|
||||
class DocumentMetadataEditView(MultipleObjectFormActionView):
|
||||
form_class = DocumentMetadataFormSet
|
||||
model = Document
|
||||
object_permission = permission_metadata_document_edit
|
||||
object_permission = permission_document_metadata_edit
|
||||
success_message = _(
|
||||
'Metadata edit request performed on %(count)d document'
|
||||
)
|
||||
@@ -255,7 +251,7 @@ class DocumentMetadataEditView(MultipleObjectFormActionView):
|
||||
return HttpResponseRedirect(
|
||||
'%s?%s' % (
|
||||
reverse(
|
||||
viewname='metadata:document_metadata_multiple_edit'
|
||||
viewname='metadata:document_multiple_metadata_edit'
|
||||
), urlencode(
|
||||
{
|
||||
'id_list': ','.join(
|
||||
@@ -305,7 +301,6 @@ class DocumentMetadataEditView(MultipleObjectFormActionView):
|
||||
'and assign them corresponding values.'
|
||||
),
|
||||
'no_results_title': _('There is no metadata to edit'),
|
||||
'submit_icon_class': icon_document_metadata_edit,
|
||||
'submit_label': _('Edit'),
|
||||
'title': ungettext(
|
||||
'Edit document metadata',
|
||||
@@ -396,7 +391,7 @@ class DocumentMetadataEditView(MultipleObjectFormActionView):
|
||||
class DocumentMetadataListView(SingleObjectListView):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_metadata_document_view,
|
||||
permissions=permission_document_metadata_view,
|
||||
user=self.request.user, obj=self.get_document()
|
||||
)
|
||||
|
||||
@@ -435,7 +430,7 @@ class DocumentMetadataListView(SingleObjectListView):
|
||||
class DocumentMetadataRemoveView(MultipleObjectFormActionView):
|
||||
form_class = DocumentMetadataRemoveFormSet
|
||||
model = Document
|
||||
object_permission = permission_metadata_document_remove
|
||||
object_permission = permission_document_metadata_remove
|
||||
success_message = _(
|
||||
'Metadata remove request performed on %(count)d document'
|
||||
)
|
||||
@@ -477,7 +472,7 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView):
|
||||
return HttpResponseRedirect(
|
||||
'%s?%s' % (
|
||||
reverse(
|
||||
viewname='metadata:document_metadata_multiple_edit'
|
||||
viewname='metadata:document_multiple_metadata_edit'
|
||||
), urlencode(
|
||||
{
|
||||
'id_list': ','.join(
|
||||
@@ -498,7 +493,6 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView):
|
||||
|
||||
result = {
|
||||
'form_display_mode_table': True,
|
||||
'submit_icon_class': icon_document_metadata_remove,
|
||||
'submit_label': _('Remove'),
|
||||
'title': ungettext(
|
||||
'Remove metadata types from the document',
|
||||
|
||||
Reference in New Issue
Block a user