diff --git a/mayan/apps/acls/apps.py b/mayan/apps/acls/apps.py index 5f79f0fc0e..f46839f3cc 100644 --- a/mayan/apps/acls/apps.py +++ b/mayan/apps/acls/apps.py @@ -6,7 +6,6 @@ from common import MayanAppConfig, menu_object, menu_sidebar from navigation import SourceColumn from .links import link_acl_new, link_acl_delete, link_acl_permissions -from .models import AccessControlList class ACLsApp(MayanAppConfig): @@ -17,6 +16,8 @@ class ACLsApp(MayanAppConfig): def ready(self): super(ACLsApp, self).ready() + AccessControlList = self.get_model('AccessControlList') + SourceColumn( source=AccessControlList, label=_('Permissions'), attribute='get_permission_titles' diff --git a/mayan/apps/checkouts/apps.py b/mayan/apps/checkouts/apps.py index 76f8f12e88..660dce0b1c 100644 --- a/mayan/apps/checkouts/apps.py +++ b/mayan/apps/checkouts/apps.py @@ -17,7 +17,6 @@ from .links import ( link_checkout_list ) from .literals import CHECK_EXPIRED_CHECK_OUTS_INTERVAL -from .models import DocumentCheckout from .permissions import ( permission_document_checkin, permission_document_checkin_override, permission_document_checkout @@ -36,6 +35,8 @@ class CheckoutsApp(MayanAppConfig): APIEndPoint(app=self, version_string='1') + DocumentCheckout = self.get_model('DocumentCheckout') + Document.add_to_class( 'check_in', lambda document, user=None: DocumentCheckout.objects.check_in_document(document, user) diff --git a/mayan/apps/converter/apps.py b/mayan/apps/converter/apps.py index 727967327b..f2527f9b50 100644 --- a/mayan/apps/converter/apps.py +++ b/mayan/apps/converter/apps.py @@ -11,7 +11,6 @@ from .links import ( link_transformation_create, link_transformation_delete, link_transformation_edit ) -from .models import Transformation class ConverterApp(MayanAppConfig): @@ -21,6 +20,8 @@ class ConverterApp(MayanAppConfig): def ready(self): super(ConverterApp, self).ready() + Transformation = self.get_model('Transformation') + Package(label='Pillow', license_text=''' The Python Imaging Library (PIL) is diff --git a/mayan/apps/document_comments/apps.py b/mayan/apps/document_comments/apps.py index 378ed7f66e..5b52b73d98 100644 --- a/mayan/apps/document_comments/apps.py +++ b/mayan/apps/document_comments/apps.py @@ -10,7 +10,6 @@ from navigation import SourceColumn from .links import ( link_comment_add, link_comment_delete, link_comments_for_document ) -from .models import Comment from .permissions import ( permission_comment_create, permission_comment_delete, permission_comment_view @@ -26,6 +25,8 @@ class DocumentCommentsApp(MayanAppConfig): def ready(self): super(DocumentCommentsApp, self).ready() + Comment = self.get_model('Comment') + ModelPermission.register( model=Document, permissions=( permission_comment_create, permission_comment_delete, diff --git a/mayan/apps/document_indexing/apps.py b/mayan/apps/document_indexing/apps.py index a90d51381a..6dc211800a 100644 --- a/mayan/apps/document_indexing/apps.py +++ b/mayan/apps/document_indexing/apps.py @@ -30,10 +30,6 @@ from .links import ( link_template_node_create, link_template_node_delete, link_template_node_edit ) -from .models import ( - DocumentIndexInstanceNode, Index, IndexInstance, IndexInstanceNode, - IndexTemplateNode -) from .widgets import get_breadcrumbs, index_instance_item_link, node_level @@ -47,6 +43,12 @@ class DocumentIndexingApp(MayanAppConfig): def ready(self): super(DocumentIndexingApp, self).ready() + DocumentIndexInstanceNode = self.get_model('DocumentIndexInstanceNode') + Index = self.get_model('Index') + IndexInstance = self.get_model('IndexInstance') + IndexInstanceNode = self.get_model('IndexInstanceNode') + IndexTemplateNode = self.get_model('IndexTemplateNode') + APIEndPoint(app=self, version_string='1') Package(label='Django MPTT', license_text=''' diff --git a/mayan/apps/document_signatures/apps.py b/mayan/apps/document_signatures/apps.py index 592181aaf8..69dc4a245b 100644 --- a/mayan/apps/document_signatures/apps.py +++ b/mayan/apps/document_signatures/apps.py @@ -11,11 +11,11 @@ from django_gpg.exceptions import GPGDecryptionError from django_gpg.runtime import gpg from documents.models import Document, DocumentVersion +from .hooks import document_pre_open_hook, document_version_post_save_hook from .links import ( link_document_signature_delete, link_document_signature_download, link_document_signature_upload, link_document_verify ) -from .models import DocumentVersionSignature from .permissions import ( permission_document_verify, permission_signature_delete, permission_signature_download, permission_signature_upload @@ -24,37 +24,6 @@ from .permissions import ( logger = logging.getLogger(__name__) -def document_pre_open_hook(descriptor, instance): - if DocumentVersionSignature.objects.has_embedded_signature(document_version=instance): - # If it has an embedded signature, decrypt - try: - result = gpg.decrypt_file(descriptor, close_descriptor=False) - # gpg return a string, turn it into a file like object - except GPGDecryptionError: - # At least return the original raw content - descriptor.seek(0) - return descriptor - else: - descriptor.close() - return io.BytesIO(result.data) - else: - return descriptor - - -def document_version_post_save_hook(instance): - logger.debug('instance: %s', instance) - - try: - document_signature = DocumentVersionSignature.objects.get( - document_version=instance - ) - except DocumentVersionSignature.DoesNotExist: - document_signature = DocumentVersionSignature.objects.create( - document_version=instance - ) - document_signature.check_for_embedded_signature() - - class DocumentSignaturesApp(MayanAppConfig): app_namespace = 'signatures' app_url = 'signatures' @@ -65,6 +34,8 @@ class DocumentSignaturesApp(MayanAppConfig): def ready(self): super(DocumentSignaturesApp, self).ready() + DocumentVersionSignature = self.get_model('DocumentVersionSignature') + DocumentVersion.register_post_save_hook( 1, document_version_post_save_hook ) diff --git a/mayan/apps/document_states/apps.py b/mayan/apps/document_states/apps.py index d93e79bb03..0af6eb8132 100644 --- a/mayan/apps/document_states/apps.py +++ b/mayan/apps/document_states/apps.py @@ -12,10 +12,6 @@ from documents.models import Document from navigation import SourceColumn from .handlers import launch_workflow -from .models import ( - Workflow, WorkflowInstance, WorkflowInstanceLogEntry, WorkflowState, - WorkflowTransition -) from .links import ( link_document_workflow_instance_list, link_setup_workflow_document_types, link_setup_workflow_create, link_setup_workflow_delete, @@ -37,6 +33,12 @@ class DocumentStatesApp(MayanAppConfig): def ready(self): super(DocumentStatesApp, self).ready() + Workflow = self.get_model('Workflow') + WorkflowInstance = self.get_model('WorkflowInstance') + WorkflowInstanceLogEntry = self.get_model('WorkflowInstanceLogEntry') + WorkflowState = self.get_model('WorkflowState') + WorkflowTransition = self.get_model('WorkflowTransition') + SourceColumn( source=Workflow, label=_('Initial state'), func=lambda context: context['object'].get_initial_state() or _('None') diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index 344529af39..9927703d8c 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -60,10 +60,6 @@ from .literals import ( CHECK_DELETE_PERIOD_INTERVAL, CHECK_TRASH_PERIOD_INTERVAL, DELETE_STALE_STUBS_INTERVAL ) -from .models import ( - DeletedDocument, Document, DocumentPage, DocumentType, - DocumentTypeFilename, DocumentVersion -) from .permissions import ( permission_document_delete, permission_document_download, permission_document_edit, permission_document_new_version, @@ -90,6 +86,13 @@ class DocumentsApp(MayanAppConfig): APIEndPoint(app=self, version_string='1') + DeletedDocument = self.get_model('DeletedDocument') + Document = self.get_model('Document') + DocumentPage = self.get_model('DocumentPage') + DocumentType = self.get_model('DocumentType') + DocumentTypeFilename = self.get_model('DocumentTypeFilename') + DocumentVersion = self.get_model('DocumentVersion') + MissingItem( label=_('Create a document type'), description=_( diff --git a/mayan/apps/folders/apps.py b/mayan/apps/folders/apps.py index 6926e0cded..467949f6d5 100644 --- a/mayan/apps/folders/apps.py +++ b/mayan/apps/folders/apps.py @@ -20,7 +20,6 @@ from .links import ( link_folder_delete, link_folder_document_multiple_remove, link_folder_edit, link_folder_view ) -from .models import DocumentFolder, Folder from .permissions import ( permission_folder_add_document, permission_folder_delete, permission_folder_edit, permission_folder_remove_document, @@ -36,6 +35,9 @@ class FoldersApp(MayanAppConfig): def ready(self): super(FoldersApp, self).ready() + DocumentFolder = self.get_model('DocumentFolder') + Folder = self.get_model('Folder') + APIEndPoint(app=self, version_string='1') Document.add_to_class( diff --git a/mayan/apps/linking/apps.py b/mayan/apps/linking/apps.py index 7643a1e52d..8a0ac798ff 100644 --- a/mayan/apps/linking/apps.py +++ b/mayan/apps/linking/apps.py @@ -21,7 +21,6 @@ from .links import ( link_smart_link_instance_view, link_smart_link_instances_for_document, link_smart_link_list, link_smart_link_setup ) -from .models import ResolvedSmartLink, SmartLink, SmartLinkCondition from .permissions import ( permission_smart_link_delete, permission_smart_link_edit, permission_smart_link_view @@ -35,6 +34,10 @@ class LinkingApp(MayanAppConfig): def ready(self): super(LinkingApp, self).ready() + ResolvedSmartLink = self.get_model('ResolvedSmartLink') + SmartLink = self.get_model('SmartLink') + SmartLinkCondition = self.get_model('SmartLinkCondition') + ModelPermission.register( model=SmartLink, permissions=( permission_acl_edit, permission_acl_view, diff --git a/mayan/apps/mailer/apps.py b/mayan/apps/mailer/apps.py index 158788e176..b7eefbb8f7 100644 --- a/mayan/apps/mailer/apps.py +++ b/mayan/apps/mailer/apps.py @@ -14,7 +14,6 @@ from .links import ( link_document_mailing_error_log, link_send_document_link, link_send_document ) -from .models import LogEntry from .permissions import ( permission_mailing_link, permission_mailing_send_document ) @@ -27,6 +26,8 @@ class MailerApp(MayanAppConfig): def ready(self): super(MailerApp, self).ready() + LogEntry = self.get_model('LogEntry') + SourceColumn( source=LogEntry, label=_('Date and time'), attribute='datetime' ) diff --git a/mayan/apps/metadata/apps.py b/mayan/apps/metadata/apps.py index cf521bbd05..79281600c8 100644 --- a/mayan/apps/metadata/apps.py +++ b/mayan/apps/metadata/apps.py @@ -37,7 +37,6 @@ from .links import ( link_setup_metadata_type_create, link_setup_metadata_type_delete, link_setup_metadata_type_edit, link_setup_metadata_type_list, ) -from .models import DocumentMetadata, DocumentTypeMetadataType, MetadataType from .permissions import ( permission_metadata_document_add, permission_metadata_document_edit, permission_metadata_document_remove, permission_metadata_document_view @@ -55,6 +54,10 @@ class MetadataApp(MayanAppConfig): def ready(self): super(MetadataApp, self).ready() + DocumentMetadata = self.get_model('DocumentMetadata') + DocumentTypeMetadataType = self.get_model('DocumentTypeMetadataType') + MetadataType = self.get_model('MetadataType') + APIEndPoint(app=self, version_string='1') Document.add_to_class( diff --git a/mayan/apps/ocr/apps.py b/mayan/apps/ocr/apps.py index 7a57d36f3a..2b8afff5b9 100644 --- a/mayan/apps/ocr/apps.py +++ b/mayan/apps/ocr/apps.py @@ -29,7 +29,6 @@ from .links import ( link_document_submit_multiple, link_document_type_ocr_settings, link_document_type_submit, link_entry_list ) -from .models import DocumentVersionOCRError from .permissions import permission_ocr_document, permission_ocr_content_view from .settings import ( setting_pdftotext_path, setting_tesseract_path @@ -58,6 +57,8 @@ class OCRApp(MayanAppConfig): def ready(self): super(OCRApp, self).ready() + DocumentVersionOCRError = self.get_model('DocumentVersionOCRError') + APIEndPoint(app=self, version_string='1') Document.add_to_class('submit_for_ocr', document_ocr_submit) diff --git a/mayan/apps/permissions/apps.py b/mayan/apps/permissions/apps.py index d2fa84dd01..9cc06178c1 100644 --- a/mayan/apps/permissions/apps.py +++ b/mayan/apps/permissions/apps.py @@ -9,7 +9,6 @@ from common.signals import perform_upgrade from rest_api.classes import APIEndPoint from .handlers import purge_permissions -from .models import Role from .links import ( link_permission_grant, link_permission_revoke, link_role_create, link_role_delete, link_role_edit, link_role_list, link_role_members, @@ -25,6 +24,8 @@ class PermissionsApp(MayanAppConfig): def ready(self): super(PermissionsApp, self).ready() + Role = self.get_model('Role') + APIEndPoint(app=self, version_string='1') menu_object.bind_links( diff --git a/mayan/apps/sources/apps.py b/mayan/apps/sources/apps.py index 1e96231734..cc4230d710 100644 --- a/mayan/apps/sources/apps.py +++ b/mayan/apps/sources/apps.py @@ -30,10 +30,6 @@ from .links import ( link_setup_source_edit, link_setup_source_logs, link_staging_file_delete, link_upload_version ) -from .models import ( - POP3Email, IMAPEmail, Source, SourceLog, StagingFolderSource, - WatchFolderSource, WebFormSource -) from .widgets import staging_file_thumbnail @@ -45,6 +41,14 @@ class SourcesApp(MayanAppConfig): def ready(self): super(SourcesApp, self).ready() + POP3Email = self.get_model('POP3Email') + IMAPEmail = self.get_model('IMAPEmail') + Source = self.get_model('Source') + SourceLog = self.get_model('SourceLog') + StagingFolderSource = self.get_model('StagingFolderSource') + WatchFolderSource = self.get_model('WatchFolderSource') + WebFormSource = self.get_model('WebFormSource') + APIEndPoint(app=self, version_string='1') MissingItem( diff --git a/mayan/apps/tags/apps.py b/mayan/apps/tags/apps.py index c6f230b3a7..df13311c11 100644 --- a/mayan/apps/tags/apps.py +++ b/mayan/apps/tags/apps.py @@ -20,7 +20,6 @@ from .links import ( link_tag_delete, link_tag_document_list, link_tag_edit, link_tag_list, link_tag_multiple_delete, link_tag_tagged_item_list ) -from .models import DocumentTag, Tag from .permissions import ( permission_tag_attach, permission_tag_delete, permission_tag_edit, permission_tag_remove, permission_tag_view @@ -36,6 +35,9 @@ class TagsApp(MayanAppConfig): def ready(self): super(TagsApp, self).ready() + DocumentTag = self.get_model('DocumentTag') + Tag = self.get_model('Tag') + APIEndPoint(app=self, version_string='1') Document.add_to_class(