Backport common mixin and generics improvements

* Rename get_object_list to get_source_queryset.
* Add uniqueness validation to SingleObjectCreateView.
* Remove MultipleInstanceActionMixin.
* Backport MultipleObjectMixin improvements.
* Remove ObjectListPermissionFilterMixin.
* Add and improve tests.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-05-06 02:07:35 -04:00
parent 7181852c2d
commit 95a1df8072
72 changed files with 1330 additions and 1092 deletions

View File

@@ -10,6 +10,7 @@ from mayan.apps.common.generics import (
FormView, MultipleObjectConfirmActionView, SingleObjectDetailView,
SingleObjectDownloadView, SingleObjectEditView, SingleObjectListView
)
from mayan.apps.common.mixins import ExternalObjectMixin
from mayan.apps.documents.forms import DocumentTypeFilteredSelectForm
from mayan.apps.documents.models import Document, DocumentPage, DocumentType
@@ -93,7 +94,7 @@ class DocumentParsingErrorsListView(SingleObjectListView):
) % self.get_document(),
}
def get_object_list(self):
def get_source_queryset(self):
return self.get_document().latest_version.parsing_errors.all()
@@ -136,19 +137,21 @@ class DocumentSubmitView(MultipleObjectConfirmActionView):
instance.submit_for_parsing()
class DocumentTypeSettingsEditView(SingleObjectEditView):
class DocumentTypeSettingsEditView(ExternalObjectMixin, SingleObjectEditView):
external_object_class = DocumentType
external_object_permission = permission_document_type_parsing_setup
external_object_pk_url_kwarg = 'pk'
fields = ('auto_parsing',)
object_permission = permission_document_type_parsing_setup
post_action_redirect = reverse_lazy('documents:document_type_list')
post_action_redirect = reverse_lazy(viewname='documents:document_type_list')
def get_document_type(self):
return get_object_or_404(klass=DocumentType, pk=self.kwargs['pk'])
return self.external_object
def get_extra_context(self):
return {
'object': self.get_document_type(),
'title': _(
'Edit parsing settings for document type: %s'
'Edit parsing settings for document type: %s.'
) % self.get_document_type()
}
@@ -195,5 +198,5 @@ class ParseErrorListView(SingleObjectListView):
}
view_permission = permission_document_type_parsing_setup
def get_object_list(self):
def get_source_queryset(self):
return DocumentVersionParseError.objects.all()