Update cabinets and document_index api views docstrings. Update multi level docstrings as per Python best practices.
Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
committed by
Roberto Rosario
parent
f44fbe5687
commit
de65d96fe2
@@ -82,7 +82,6 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
|
|||||||
Test creating a duplicate ACL entry: same object & role
|
Test creating a duplicate ACL entry: same object & role
|
||||||
Result: Should redirect to existing ACL for object + role combination
|
Result: Should redirect to existing ACL for object + role combination
|
||||||
"""
|
"""
|
||||||
|
|
||||||
acl = AccessControlList.objects.create(
|
acl = AccessControlList.objects.create(
|
||||||
content_object=self.document, role=self.role
|
content_object=self.document, role=self.role
|
||||||
)
|
)
|
||||||
@@ -110,7 +109,6 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
|
|||||||
Test creating an ACL entry for an object with no model permissions.
|
Test creating an ACL entry for an object with no model permissions.
|
||||||
Result: Should display a blank permissions list (not optgroup)
|
Result: Should display a blank permissions list (not optgroup)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.login_user()
|
self.login_user()
|
||||||
|
|
||||||
self.role.permissions.add(
|
self.role.permissions.add(
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ class APIDocumentCabinetListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
Returns a list of all the cabinets to which a document belongs.
|
Returns a list of all the cabinets to which a document belongs.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
serializer_class = CabinetSerializer
|
serializer_class = CabinetSerializer
|
||||||
|
|
||||||
filter_backends = (MayanObjectPermissionsFilter,)
|
filter_backends = (MayanObjectPermissionsFilter,)
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ class CabinetAPITestCase(APITestCase):
|
|||||||
"""
|
"""
|
||||||
Test the cabinet API endpoints
|
Test the cabinet API endpoints
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(CabinetAPITestCase, self).setUp()
|
super(CabinetAPITestCase, self).setUp()
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ def check_new_version_creation(sender, instance, **kwargs):
|
|||||||
"""
|
"""
|
||||||
Make sure that new version creation is allowed for this document
|
Make sure that new version creation is allowed for this document
|
||||||
"""
|
"""
|
||||||
|
|
||||||
NewVersionBlock = apps.get_model(
|
NewVersionBlock = apps.get_model(
|
||||||
app_label='checkouts', model_name='NewVersionBlock'
|
app_label='checkouts', model_name='NewVersionBlock'
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ class SplitTimeDeltaWidget(forms.widgets.MultiWidget):
|
|||||||
A Widget that splits a timedelta input into three <input type="text">
|
A Widget that splits a timedelta input into three <input type="text">
|
||||||
boxes.
|
boxes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, attrs=None):
|
def __init__(self, attrs=None):
|
||||||
widgets = (
|
widgets = (
|
||||||
forms.widgets.NumberInput(
|
forms.widgets.NumberInput(
|
||||||
|
|||||||
@@ -195,7 +195,6 @@ class UserForm(forms.ModelForm):
|
|||||||
"""
|
"""
|
||||||
Form used to edit an user's mininal fields by the user himself
|
Form used to edit an user's mininal fields by the user himself
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
fields = ('username', 'first_name', 'last_name', 'email')
|
fields = ('username', 'first_name', 'last_name', 'email')
|
||||||
model = get_user_model()
|
model = get_user_model()
|
||||||
@@ -205,7 +204,6 @@ class UserForm_view(DetailForm):
|
|||||||
"""
|
"""
|
||||||
Form used to display an user's public details
|
Form used to display an user's public details
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
fields = (
|
fields = (
|
||||||
'username', 'first_name', 'last_name', 'email', 'last_login',
|
'username', 'first_name', 'last_name', 'email', 'last_login',
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ class ExtraContextMixin(object):
|
|||||||
"""
|
"""
|
||||||
Mixin that allows views to pass extra context to the template
|
Mixin that allows views to pass extra context to the template
|
||||||
"""
|
"""
|
||||||
|
|
||||||
extra_context = {}
|
extra_context = {}
|
||||||
|
|
||||||
def get_extra_context(self):
|
def get_extra_context(self):
|
||||||
@@ -64,7 +63,6 @@ class FormExtraKwargsMixin(object):
|
|||||||
"""
|
"""
|
||||||
Mixin that allows a view to pass extra keyword arguments to forms
|
Mixin that allows a view to pass extra keyword arguments to forms
|
||||||
"""
|
"""
|
||||||
|
|
||||||
form_extra_kwargs = {}
|
form_extra_kwargs = {}
|
||||||
|
|
||||||
def get_form_extra_kwargs(self):
|
def get_form_extra_kwargs(self):
|
||||||
@@ -123,7 +121,6 @@ class MultipleObjectMixin(object):
|
|||||||
"""
|
"""
|
||||||
Mixin that allows a view to work on a single or multiple objects
|
Mixin that allows a view to work on a single or multiple objects
|
||||||
"""
|
"""
|
||||||
|
|
||||||
model = None
|
model = None
|
||||||
object_permission = None
|
object_permission = None
|
||||||
pk_list_key = 'id_list'
|
pk_list_key = 'id_list'
|
||||||
@@ -184,7 +181,6 @@ class ObjectActionMixin(object):
|
|||||||
"""
|
"""
|
||||||
Mixin that performs an user action to a queryset
|
Mixin that performs an user action to a queryset
|
||||||
"""
|
"""
|
||||||
|
|
||||||
success_message = 'Operation performed on %(count)d object'
|
success_message = 'Operation performed on %(count)d object'
|
||||||
success_message_plural = 'Operation performed on %(count)d objects'
|
success_message_plural = 'Operation performed on %(count)d objects'
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,6 @@ def render_subtemplate(context, template_name, template_context):
|
|||||||
Renders the specified template with the mixed parent and
|
Renders the specified template with the mixed parent and
|
||||||
subtemplate contexts
|
subtemplate contexts
|
||||||
"""
|
"""
|
||||||
|
|
||||||
new_context = Context(context.flatten())
|
new_context = Context(context.flatten())
|
||||||
new_context.update(Context(template_context))
|
new_context.update(Context(template_context))
|
||||||
return get_template(template_name).render(new_context.flatten())
|
return get_template(template_name).render(new_context.flatten())
|
||||||
|
|||||||
@@ -312,7 +312,6 @@ def multi_object_action_view(request):
|
|||||||
Proxy view called first when using a multi object action, which
|
Proxy view called first when using a multi object action, which
|
||||||
then redirects to the appropiate specialized view
|
then redirects to the appropiate specialized view
|
||||||
"""
|
"""
|
||||||
|
|
||||||
next = request.POST.get(
|
next = request.POST.get(
|
||||||
'next', request.GET.get(
|
'next', request.GET.get(
|
||||||
'next', request.META.get(
|
'next', request.META.get(
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ class TransformationManager(models.Manager):
|
|||||||
as_classes == True returns the transformation classes from .classes
|
as_classes == True returns the transformation classes from .classes
|
||||||
ready to be feed to the converter class
|
ready to be feed to the converter class
|
||||||
"""
|
"""
|
||||||
|
|
||||||
content_type = ContentType.objects.get_for_model(obj)
|
content_type = ContentType.objects.get_for_model(obj)
|
||||||
|
|
||||||
transformations = self.filter(
|
transformations = self.filter(
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ class YAMLValidator(object):
|
|||||||
"""
|
"""
|
||||||
Validates that the input is YAML compliant.
|
Validates that the input is YAML compliant.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __call__(self, value):
|
def __call__(self, value):
|
||||||
value = value.strip()
|
value = value.strip()
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ class APIIndexNodeInstanceDocumentListView(generics.ListAPIView):
|
|||||||
Returns a list of all the documents contained by a particular index node
|
Returns a list of all the documents contained by a particular index node
|
||||||
instance.
|
instance.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
filter_backends = (MayanObjectPermissionsFilter,)
|
filter_backends = (MayanObjectPermissionsFilter,)
|
||||||
mayan_object_permissions = {'GET': (permission_document_view,)}
|
mayan_object_permissions = {'GET': (permission_document_view,)}
|
||||||
serializer_class = DocumentSerializer
|
serializer_class = DocumentSerializer
|
||||||
@@ -105,7 +104,6 @@ class APIDocumentIndexListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
Returns a list of all the indexes to which a document belongs.
|
Returns a list of all the indexes to which a document belongs.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
filter_backends = (MayanObjectPermissionsFilter,)
|
filter_backends = (MayanObjectPermissionsFilter,)
|
||||||
mayan_object_permissions = {'GET': (permission_document_indexing_view,)}
|
mayan_object_permissions = {'GET': (permission_document_indexing_view,)}
|
||||||
serializer_class = IndexInstanceNodeSerializer
|
serializer_class = IndexInstanceNodeSerializer
|
||||||
|
|||||||
@@ -291,7 +291,6 @@ class DocumentIndexNodeListView(SingleObjectListView):
|
|||||||
"""
|
"""
|
||||||
Show a list of indexes where the current document can be found
|
Show a list of indexes where the current document can be found
|
||||||
"""
|
"""
|
||||||
|
|
||||||
object_permission = permission_document_indexing_view
|
object_permission = permission_document_indexing_view
|
||||||
object_permission_related = 'index'
|
object_permission_related = 'index'
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ def get_instance_link(index_instance_node):
|
|||||||
"""
|
"""
|
||||||
Return an HTML anchor to an index node instance
|
Return an HTML anchor to an index node instance
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return mark_safe(
|
return mark_safe(
|
||||||
'<a href="{url}">{text}</a>'.format(
|
'<a href="{url}">{text}</a>'.format(
|
||||||
url=index_instance_node.get_absolute_url(),
|
url=index_instance_node.get_absolute_url(),
|
||||||
@@ -45,7 +44,6 @@ def node_level(node):
|
|||||||
"""
|
"""
|
||||||
Render an indented tree like output for a specific node
|
Render an indented tree like output for a specific node
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return mark_safe(
|
return mark_safe(
|
||||||
''.join(
|
''.join(
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ class Parser(object):
|
|||||||
"""
|
"""
|
||||||
Parser base class
|
Parser base class
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_registry = {}
|
_registry = {}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -110,7 +109,6 @@ class PopplerParser(Parser):
|
|||||||
"""
|
"""
|
||||||
PDF parser using the pdftotext execute from the poppler package
|
PDF parser using the pdftotext execute from the poppler package
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.pdftotext_path = setting_pdftotext_path.value
|
self.pdftotext_path = setting_pdftotext_path.value
|
||||||
if not os.path.exists(self.pdftotext_path):
|
if not os.path.exists(self.pdftotext_path):
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ class SignatureBaseModel(models.Model):
|
|||||||
it will generate a unique signature ID. No two signature IDs are the same,
|
it will generate a unique signature ID. No two signature IDs are the same,
|
||||||
even when using the same key.
|
even when using the same key.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
document_version = models.ForeignKey(
|
document_version = models.ForeignKey(
|
||||||
DocumentVersion, editable=False, on_delete=models.CASCADE,
|
DocumentVersion, editable=False, on_delete=models.CASCADE,
|
||||||
related_name='signatures', verbose_name=_('Document version')
|
related_name='signatures', verbose_name=_('Document version')
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ class APIWorkflowDocumentTypeList(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
This view returns a list of document types that belong to a workflow.
|
This view returns a list of document types that belong to a workflow.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self.get_workflow().document_types.all()
|
return self.get_workflow().document_types.all()
|
||||||
|
|
||||||
def get_serializer(self, *args, **kwargs):
|
def get_serializer(self, *args, **kwargs):
|
||||||
@@ -96,7 +95,6 @@ class APIWorkflowDocumentTypeList(generics.ListCreateAPIView):
|
|||||||
Retrieve the parent workflow of the workflow document type.
|
Retrieve the parent workflow of the workflow document type.
|
||||||
Perform custom permission and access check.
|
Perform custom permission and access check.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
permission_required = permission_workflow_view
|
permission_required = permission_workflow_view
|
||||||
else:
|
else:
|
||||||
@@ -488,7 +486,6 @@ class APIWorkflowInstanceLogEntryListView(generics.ListCreateAPIView):
|
|||||||
Failing that, check for ACLs for any of the workflow's transitions.
|
Failing that, check for ACLs for any of the workflow's transitions.
|
||||||
Failing that, then raise PermissionDenied
|
Failing that, then raise PermissionDenied
|
||||||
"""
|
"""
|
||||||
|
|
||||||
AccessControlList.objects.check_access(
|
AccessControlList.objects.check_access(
|
||||||
permissions=permission_workflow_view, user=self.request.user,
|
permissions=permission_workflow_view, user=self.request.user,
|
||||||
obj=document
|
obj=document
|
||||||
|
|||||||
@@ -381,7 +381,6 @@ class APIDocumentTypeDocumentListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
Returns a list of all the documents of a particular document type.
|
Returns a list of all the documents of a particular document type.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
filter_backends = (MayanObjectPermissionsFilter,)
|
filter_backends = (MayanObjectPermissionsFilter,)
|
||||||
mayan_object_permissions = {'GET': (permission_document_view,)}
|
mayan_object_permissions = {'GET': (permission_document_view,)}
|
||||||
serializer_class = DocumentSerializer
|
serializer_class = DocumentSerializer
|
||||||
|
|||||||
@@ -166,7 +166,6 @@ class DocumentTypeSelectForm(forms.Form):
|
|||||||
Form to select the document type of a document to be created, used
|
Form to select the document type of a document to be created, used
|
||||||
as form #1 in the document creation wizard
|
as form #1 in the document creation wizard
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
user = kwargs.pop('user', None)
|
user = kwargs.pop('user', None)
|
||||||
logger.debug('user: %s', user)
|
logger.debug('user: %s', user)
|
||||||
|
|||||||
@@ -154,7 +154,6 @@ class Document(models.Model):
|
|||||||
generated for each document. No two documents can ever have the same UUID.
|
generated for each document. No two documents can ever have the same UUID.
|
||||||
This ID is generated automatically.
|
This ID is generated automatically.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
uuid = models.UUIDField(default=uuid.uuid4, editable=False)
|
uuid = models.UUIDField(default=uuid.uuid4, editable=False)
|
||||||
document_type = models.ForeignKey(
|
document_type = models.ForeignKey(
|
||||||
DocumentType, on_delete=models.CASCADE, related_name='documents',
|
DocumentType, on_delete=models.CASCADE, related_name='documents',
|
||||||
|
|||||||
@@ -119,7 +119,6 @@ class DocumentTestCase(BaseTestCase):
|
|||||||
Test document type trashing policies. Documents are moved to the
|
Test document type trashing policies. Documents are moved to the
|
||||||
trash, x amount of time after being uploaded
|
trash, x amount of time after being uploaded
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.document_type.trash_time_period = 1
|
self.document_type.trash_time_period = 1
|
||||||
# 'seconds' is not a choice via the model, used here for convenience
|
# 'seconds' is not a choice via the model, used here for convenience
|
||||||
self.document_type.trash_time_unit = 'seconds'
|
self.document_type.trash_time_unit = 'seconds'
|
||||||
@@ -142,7 +141,6 @@ class DocumentTestCase(BaseTestCase):
|
|||||||
Test document type deletion policies. Documents are deleted from the
|
Test document type deletion policies. Documents are deleted from the
|
||||||
trash, x amount of time after being trashed
|
trash, x amount of time after being trashed
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.document_type.delete_time_period = 1
|
self.document_type.delete_time_period = 1
|
||||||
# 'seconds' is not a choice via the model, used here for convenience
|
# 'seconds' is not a choice via the model, used here for convenience
|
||||||
self.document_type.delete_time_unit = 'seconds'
|
self.document_type.delete_time_unit = 'seconds'
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ class DocumentSearchTestCase(BaseTestCase):
|
|||||||
Test that simple search works after related_name changes to
|
Test that simple search works after related_name changes to
|
||||||
document versions and document version pages
|
document versions and document version pages
|
||||||
"""
|
"""
|
||||||
|
|
||||||
queryset, elapsed_time = document_search.search(
|
queryset, elapsed_time = document_search.search(
|
||||||
{'q': 'Mayan'}, user=self.admin_user
|
{'q': 'Mayan'}, user=self.admin_user
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ class Issue46TestCase(GenericViewTestCase):
|
|||||||
"""
|
"""
|
||||||
Functional tests to make sure issue 46 is fixed
|
Functional tests to make sure issue 46 is fixed
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(Issue46TestCase, self).setUp()
|
super(Issue46TestCase, self).setUp()
|
||||||
self.login_admin_user()
|
self.login_admin_user()
|
||||||
|
|||||||
@@ -28,13 +28,10 @@ from .serializers import (
|
|||||||
|
|
||||||
|
|
||||||
class APIDocumentMetadataListView(generics.ListCreateAPIView):
|
class APIDocumentMetadataListView(generics.ListCreateAPIView):
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
"""
|
||||||
Returns a list of selected document's metadata types and values.
|
get: Returns a list of selected document's metadata types and values.
|
||||||
|
post: Add an existing metadata type and value to the selected document.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return super(APIDocumentMetadataListView, self).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def get_document(self):
|
def get_document(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
permission_required = permission_metadata_document_view
|
permission_required = permission_metadata_document_view
|
||||||
@@ -81,31 +78,16 @@ class APIDocumentMetadataListView(generics.ListCreateAPIView):
|
|||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Add an existing metadata type and value to the selected document.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIDocumentMetadataListView, self).post(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class APIDocumentMetadataView(generics.RetrieveUpdateDestroyAPIView):
|
class APIDocumentMetadataView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
"""
|
||||||
|
delete: Remove this metadata entry from the selected document.
|
||||||
|
get: Return the details of the selected document metadata type and value.
|
||||||
|
patch: Edit the selected document metadata type and value.
|
||||||
|
put: Edit the selected document metadata type and value.
|
||||||
|
"""
|
||||||
lookup_url_kwarg = 'metadata_pk'
|
lookup_url_kwarg = 'metadata_pk'
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Remove this metadata entry from the selected document.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIDocumentMetadataView, self).delete(*args, **kwargs)
|
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Return the details of the selected document metadata type and value.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIDocumentMetadataView, self).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def get_document(self):
|
def get_document(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
permission_required = permission_metadata_document_view
|
permission_required = permission_metadata_document_view
|
||||||
@@ -142,22 +124,12 @@ class APIDocumentMetadataView(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
else:
|
else:
|
||||||
return DocumentMetadataSerializer
|
return DocumentMetadataSerializer
|
||||||
|
|
||||||
def patch(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected document metadata type and value.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIDocumentMetadataView, self).patch(*args, **kwargs)
|
|
||||||
|
|
||||||
def put(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected document metadata type and value.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIDocumentMetadataView, self).put(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class APIMetadataTypeListView(generics.ListCreateAPIView):
|
class APIMetadataTypeListView(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
get: Returns a list of all the metadata types.
|
||||||
|
post: Create a new metadata type.
|
||||||
|
"""
|
||||||
filter_backends = (MayanObjectPermissionsFilter,)
|
filter_backends = (MayanObjectPermissionsFilter,)
|
||||||
mayan_object_permissions = {'GET': (permission_metadata_type_view,)}
|
mayan_object_permissions = {'GET': (permission_metadata_type_view,)}
|
||||||
mayan_view_permissions = {'POST': (permission_metadata_type_create,)}
|
mayan_view_permissions = {'POST': (permission_metadata_type_create,)}
|
||||||
@@ -165,22 +137,14 @@ class APIMetadataTypeListView(generics.ListCreateAPIView):
|
|||||||
queryset = MetadataType.objects.all()
|
queryset = MetadataType.objects.all()
|
||||||
serializer_class = MetadataTypeSerializer
|
serializer_class = MetadataTypeSerializer
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Returns a list of all the metadata types.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMetadataTypeListView, self).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Create a new metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMetadataTypeListView, self).post(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class APIMetadataTypeView(generics.RetrieveUpdateDestroyAPIView):
|
class APIMetadataTypeView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
"""
|
||||||
|
delete: Delete the selected metadata type.
|
||||||
|
get: Return the details of the selected metadata type.
|
||||||
|
patch: Edit the selected metadata type.
|
||||||
|
put: Edit the selected metadata type.
|
||||||
|
"""
|
||||||
lookup_url_kwarg = 'metadata_type_pk'
|
lookup_url_kwarg = 'metadata_type_pk'
|
||||||
mayan_object_permissions = {
|
mayan_object_permissions = {
|
||||||
'GET': (permission_metadata_type_view,),
|
'GET': (permission_metadata_type_view,),
|
||||||
@@ -192,47 +156,14 @@ class APIMetadataTypeView(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
queryset = MetadataType.objects.all()
|
queryset = MetadataType.objects.all()
|
||||||
serializer_class = MetadataTypeSerializer
|
serializer_class = MetadataTypeSerializer
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Delete the selected metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMetadataTypeView, self).delete(*args, **kwargs)
|
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Return the details of the selected metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMetadataTypeView, self).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def patch(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMetadataTypeView, self).patch(*args, **kwargs)
|
|
||||||
|
|
||||||
def put(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMetadataTypeView, self).put(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class APIDocumentTypeMetadataTypeListView(generics.ListCreateAPIView):
|
class APIDocumentTypeMetadataTypeListView(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
get: Returns a list of selected document type's metadata types.
|
||||||
|
post: Add a metadata type to the selected document type.
|
||||||
|
"""
|
||||||
lookup_url_kwarg = 'metadata_type_pk'
|
lookup_url_kwarg = 'metadata_type_pk'
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Returns a list of selected document type's metadata types.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(
|
|
||||||
APIDocumentTypeMetadataTypeListView, self
|
|
||||||
).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def get_document_type(self):
|
def get_document_type(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
permission_required = permission_document_type_view
|
permission_required = permission_document_type_view
|
||||||
@@ -279,38 +210,17 @@ class APIDocumentTypeMetadataTypeListView(generics.ListCreateAPIView):
|
|||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Add a metadata type to the selected document type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(
|
|
||||||
APIDocumentTypeMetadataTypeListView, self
|
|
||||||
).post(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class APIDocumentTypeMetadataTypeView(generics.RetrieveUpdateDestroyAPIView):
|
class APIDocumentTypeMetadataTypeView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
"""
|
||||||
|
delete: Remove a metadata type from a document type.
|
||||||
|
get: Retrieve the details of a document type metadata type.
|
||||||
|
patch: Edit the selected document type metadata type.
|
||||||
|
put: Edit the selected document type metadata type.
|
||||||
|
"""
|
||||||
lookup_url_kwarg = 'metadata_type_pk'
|
lookup_url_kwarg = 'metadata_type_pk'
|
||||||
serializer_class = DocumentTypeMetadataTypeSerializer
|
serializer_class = DocumentTypeMetadataTypeSerializer
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Remove a metadata type from a document type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(
|
|
||||||
APIDocumentTypeMetadataTypeView, self
|
|
||||||
).delete(*args, **kwargs)
|
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Retrieve the details of a document type metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(
|
|
||||||
APIDocumentTypeMetadataTypeView, self
|
|
||||||
).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def get_document_type(self):
|
def get_document_type(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
permission_required = permission_document_type_view
|
permission_required = permission_document_type_view
|
||||||
@@ -342,21 +252,3 @@ class APIDocumentTypeMetadataTypeView(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
return DocumentTypeMetadataTypeSerializer
|
return DocumentTypeMetadataTypeSerializer
|
||||||
else:
|
else:
|
||||||
return WritableDocumentTypeMetadataTypeSerializer
|
return WritableDocumentTypeMetadataTypeSerializer
|
||||||
|
|
||||||
def patch(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected document type metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(
|
|
||||||
APIDocumentTypeMetadataTypeView, self
|
|
||||||
).patch(*args, **kwargs)
|
|
||||||
|
|
||||||
def put(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected document type metadata type.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(
|
|
||||||
APIDocumentTypeMetadataTypeView, self
|
|
||||||
).put(*args, **kwargs)
|
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ class MetadataType(models.Model):
|
|||||||
"""
|
"""
|
||||||
Define a type of metadata
|
Define a type of metadata
|
||||||
"""
|
"""
|
||||||
|
|
||||||
name = models.CharField(
|
name = models.CharField(
|
||||||
max_length=48,
|
max_length=48,
|
||||||
help_text=_(
|
help_text=_(
|
||||||
@@ -149,7 +148,6 @@ class DocumentMetadata(models.Model):
|
|||||||
Link a document to a specific instance of a metadata type with it's
|
Link a document to a specific instance of a metadata type with it's
|
||||||
current value
|
current value
|
||||||
"""
|
"""
|
||||||
|
|
||||||
document = models.ForeignKey(
|
document = models.ForeignKey(
|
||||||
Document, on_delete=models.CASCADE, related_name='metadata',
|
Document, on_delete=models.CASCADE, related_name='metadata',
|
||||||
verbose_name=_('Document')
|
verbose_name=_('Document')
|
||||||
|
|||||||
@@ -100,7 +100,6 @@ class MetadataTestCase(MetadataTypeMixin, BaseTestCase):
|
|||||||
Checks for GitLab issue #250
|
Checks for GitLab issue #250
|
||||||
Empty optional lookup metadata trigger validation error
|
Empty optional lookup metadata trigger validation error
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.metadata_type.lookup = TEST_LOOKUP_TEMPLATE
|
self.metadata_type.lookup = TEST_LOOKUP_TEMPLATE
|
||||||
self.metadata_type.save()
|
self.metadata_type.save()
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ from .serializers import MessageSerializer
|
|||||||
|
|
||||||
|
|
||||||
class APIMessageListView(generics.ListCreateAPIView):
|
class APIMessageListView(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
get: Returns a list of all the messages.
|
||||||
|
post: Create a new message.
|
||||||
|
"""
|
||||||
filter_backends = (MayanObjectPermissionsFilter,)
|
filter_backends = (MayanObjectPermissionsFilter,)
|
||||||
mayan_object_permissions = {'GET': (permission_message_view,)}
|
mayan_object_permissions = {'GET': (permission_message_view,)}
|
||||||
mayan_view_permissions = {'POST': (permission_message_create,)}
|
mayan_view_permissions = {'POST': (permission_message_create,)}
|
||||||
@@ -21,22 +25,14 @@ class APIMessageListView(generics.ListCreateAPIView):
|
|||||||
queryset = Message.objects.all()
|
queryset = Message.objects.all()
|
||||||
serializer_class = MessageSerializer
|
serializer_class = MessageSerializer
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Returns a list of all the messages.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMessageListView, self).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Create a new message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMessageListView, self).post(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class APIMessageView(generics.RetrieveUpdateDestroyAPIView):
|
class APIMessageView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
"""
|
||||||
|
delete: Delete the selected message.
|
||||||
|
get: Return the details of the selected message.
|
||||||
|
patch: Edit the selected message.
|
||||||
|
put: Edit the selected message.
|
||||||
|
"""
|
||||||
filter_backends = (MayanObjectPermissionsFilter,)
|
filter_backends = (MayanObjectPermissionsFilter,)
|
||||||
mayan_object_permissions = {
|
mayan_object_permissions = {
|
||||||
'DELETE': (permission_message_delete,),
|
'DELETE': (permission_message_delete,),
|
||||||
@@ -46,31 +42,3 @@ class APIMessageView(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
}
|
}
|
||||||
queryset = Message.objects.all()
|
queryset = Message.objects.all()
|
||||||
serializer_class = MessageSerializer
|
serializer_class = MessageSerializer
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Delete the selected message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMessageView, self).delete(*args, **kwargs)
|
|
||||||
|
|
||||||
def get(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Return the details of the selected message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMessageView, self).get(*args, **kwargs)
|
|
||||||
|
|
||||||
def patch(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMessageView, self).patch(*args, **kwargs)
|
|
||||||
|
|
||||||
def put(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Edit the selected message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return super(APIMessageView, self).put(*args, **kwargs)
|
|
||||||
|
|||||||
@@ -100,7 +100,6 @@ class Menu(object):
|
|||||||
"""
|
"""
|
||||||
Associate a link to a model, a view inside this menu
|
Associate a link to a model, a view inside this menu
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for source in sources:
|
for source in sources:
|
||||||
self._map_links_to_source(
|
self._map_links_to_source(
|
||||||
@@ -237,7 +236,6 @@ class Menu(object):
|
|||||||
Allow unbinding links from sources, used to allow 3rd party apps to
|
Allow unbinding links from sources, used to allow 3rd party apps to
|
||||||
change the link binding of core apps
|
change the link binding of core apps
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for source in sources:
|
for source in sources:
|
||||||
self._map_links_to_source(
|
self._map_links_to_source(
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ class OCRAPITestCase(BaseAPITestCase):
|
|||||||
"""
|
"""
|
||||||
Test the OCR app API endpoints
|
Test the OCR app API endpoints
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(OCRAPITestCase, self).setUp()
|
super(OCRAPITestCase, self).setUp()
|
||||||
self.login_user()
|
self.login_user()
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ class BaseAPITestCase(UserMixin, APITestCase):
|
|||||||
"""
|
"""
|
||||||
API test case class that invalidates permissions and smart settings
|
API test case class that invalidates permissions and smart settings
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(BaseAPITestCase, self).setUp()
|
super(BaseAPITestCase, self).setUp()
|
||||||
Namespace.invalidate_cache_all()
|
Namespace.invalidate_cache_all()
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ class APIStagingSourceListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
get: Returns a list of all the staging folders and the files they contain.
|
get: Returns a list of all the staging folders and the files they contain.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
serializer_class = StagingFolderSerializer
|
serializer_class = StagingFolderSerializer
|
||||||
queryset = StagingFolderSource.objects.all()
|
queryset = StagingFolderSource.objects.all()
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
|
|||||||
Test uploading of documents by granting the document create
|
Test uploading of documents by granting the document create
|
||||||
permssion for the document type to the user
|
permssion for the document type to the user
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.login_user()
|
self.login_user()
|
||||||
|
|
||||||
# Create an access control entry giving the role the document
|
# Create an access control entry giving the role the document
|
||||||
@@ -226,7 +225,6 @@ class NewDocumentVersionViewTestCase(GenericDocumentViewTestCase):
|
|||||||
- Link to upload version view should not resolve
|
- Link to upload version view should not resolve
|
||||||
- Upload version view should reject request
|
- Upload version view should reject request
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.login_admin_user()
|
self.login_admin_user()
|
||||||
|
|
||||||
NewVersionBlock.objects.block(self.document)
|
NewVersionBlock.objects.block(self.document)
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ def has_metadata_types(wizard):
|
|||||||
"""
|
"""
|
||||||
Skip the 2nd step if document type has no associated metadata
|
Skip the 2nd step if document type has no associated metadata
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cleaned_data = wizard.get_cleaned_data_for_step(STEP_DOCUMENT_TYPE) or {}
|
cleaned_data = wizard.get_cleaned_data_for_step(STEP_DOCUMENT_TYPE) or {}
|
||||||
|
|
||||||
document_type = cleaned_data.get('document_type')
|
document_type = cleaned_data.get('document_type')
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
This module should be called settings.py but is named conf.py to avoid a
|
This module should be called settings.py but is named conf.py to avoid a
|
||||||
class with the mayan/settings/* module
|
class with the mayan/settings/* module
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ It exposes the WSGI callable as a module-level variable named ``application``.
|
|||||||
For more information on this file, see
|
For more information on this file, see
|
||||||
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
|
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from django.core.wsgi import get_wsgi_application
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
|||||||
Reference in New Issue
Block a user