Improve and fix failing metadata tests

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2018-12-29 20:43:33 -04:00
parent 23a4a56aae
commit 82651ff32c
14 changed files with 353 additions and 341 deletions

View File

@@ -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

View File

@@ -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']

View File

@@ -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(

View File

@@ -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

View File

@@ -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')

View File

@@ -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'
)

View File

@@ -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

View File

@@ -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')
)

View File

@@ -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()

View File

@@ -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',
)

View File

@@ -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

View File

@@ -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()
),
]

View File

@@ -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',