mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-05-17 12:32:12 -05:00
Merge checks
This commit is contained in:
parent
de05d7a270
commit
2037ba4123
@ -1,5 +1 @@
|
|||||||
# this is here so that django finds the checks.
|
__all__ = []
|
||||||
from documents.checks import changed_password_check
|
|
||||||
from documents.checks import parser_check
|
|
||||||
|
|
||||||
__all__ = ["changed_password_check", "parser_check"]
|
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
import textwrap
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.core.checks import Error
|
|
||||||
from django.core.checks import Warning
|
|
||||||
from django.core.checks import register
|
|
||||||
from django.core.exceptions import FieldError
|
|
||||||
from django.db.utils import OperationalError
|
|
||||||
from django.db.utils import ProgrammingError
|
|
||||||
|
|
||||||
from documents.signals import document_consumer_declaration
|
|
||||||
from documents.templating.utils import convert_format_str_to_template_format
|
|
||||||
|
|
||||||
|
|
||||||
@register()
|
|
||||||
def changed_password_check(app_configs, **kwargs):
|
|
||||||
from paperless.db import GnuPG
|
|
||||||
from paperless.models import Document
|
|
||||||
|
|
||||||
try:
|
|
||||||
encrypted_doc = (
|
|
||||||
Document.objects.filter(
|
|
||||||
storage_type=Document.STORAGE_TYPE_GPG,
|
|
||||||
)
|
|
||||||
.only("pk", "storage_type")
|
|
||||||
.first()
|
|
||||||
)
|
|
||||||
except (OperationalError, ProgrammingError, FieldError):
|
|
||||||
return [] # No documents table yet
|
|
||||||
|
|
||||||
if encrypted_doc:
|
|
||||||
if not settings.PASSPHRASE:
|
|
||||||
return [
|
|
||||||
Error(
|
|
||||||
"The database contains encrypted documents but no password is set.",
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
if not GnuPG.decrypted(encrypted_doc.source_file):
|
|
||||||
return [
|
|
||||||
Error(
|
|
||||||
textwrap.dedent(
|
|
||||||
"""
|
|
||||||
The current password doesn't match the password of the
|
|
||||||
existing documents.
|
|
||||||
|
|
||||||
If you intend to change your password, you must first export
|
|
||||||
all of the old documents, start fresh with the new password
|
|
||||||
and then re-import them."
|
|
||||||
""",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
return []
|
|
||||||
|
|
||||||
|
|
||||||
@register()
|
|
||||||
def parser_check(app_configs, **kwargs):
|
|
||||||
parsers = []
|
|
||||||
for response in document_consumer_declaration.send(None):
|
|
||||||
parsers.append(response[1])
|
|
||||||
|
|
||||||
if len(parsers) == 0:
|
|
||||||
return [
|
|
||||||
Error(
|
|
||||||
"No parsers found. This is a bug. The consumer won't be "
|
|
||||||
"able to consume any documents without parsers.",
|
|
||||||
),
|
|
||||||
]
|
|
||||||
else:
|
|
||||||
return []
|
|
||||||
|
|
||||||
|
|
||||||
@register()
|
|
||||||
def filename_format_check(app_configs, **kwargs):
|
|
||||||
if settings.FILENAME_FORMAT:
|
|
||||||
converted_format = convert_format_str_to_template_format(
|
|
||||||
settings.FILENAME_FORMAT,
|
|
||||||
)
|
|
||||||
if converted_format != settings.FILENAME_FORMAT:
|
|
||||||
return [
|
|
||||||
Warning(
|
|
||||||
f"Filename format {settings.FILENAME_FORMAT} is using the old style, please update to use double curly brackets",
|
|
||||||
hint=converted_format,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
return []
|
|
@ -6,10 +6,10 @@ from django.core.checks import Warning
|
|||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
|
|
||||||
from documents.checks import changed_password_check
|
|
||||||
from documents.checks import filename_format_check
|
|
||||||
from documents.checks import parser_check
|
|
||||||
from documents.tests.factories import DocumentFactory
|
from documents.tests.factories import DocumentFactory
|
||||||
|
from paperless.checks import changed_password_check
|
||||||
|
from paperless.checks import filename_format_check
|
||||||
|
from paperless.checks import parser_check
|
||||||
from paperless.models import Document
|
from paperless.models import Document
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
from paperless.celery import app as celery_app
|
from paperless.celery import app as celery_app
|
||||||
from paperless.checks import audit_log_check
|
from paperless.checks import audit_log_check
|
||||||
from paperless.checks import binaries_check
|
from paperless.checks import binaries_check
|
||||||
|
from paperless.checks import changed_password_check
|
||||||
|
from paperless.checks import parser_check
|
||||||
from paperless.checks import paths_check
|
from paperless.checks import paths_check
|
||||||
from paperless.checks import settings_values_check
|
from paperless.checks import settings_values_check
|
||||||
|
|
||||||
@ -8,6 +10,8 @@ __all__ = [
|
|||||||
"audit_log_check",
|
"audit_log_check",
|
||||||
"binaries_check",
|
"binaries_check",
|
||||||
"celery_app",
|
"celery_app",
|
||||||
|
"changed_password_check",
|
||||||
|
"parser_check",
|
||||||
"paths_check",
|
"paths_check",
|
||||||
"settings_values_check",
|
"settings_values_check",
|
||||||
]
|
]
|
||||||
|
@ -3,12 +3,19 @@ import os
|
|||||||
import pwd
|
import pwd
|
||||||
import shutil
|
import shutil
|
||||||
import stat
|
import stat
|
||||||
|
import textwrap
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.checks import Error
|
from django.core.checks import Error
|
||||||
from django.core.checks import Warning
|
from django.core.checks import Warning
|
||||||
from django.core.checks import register
|
from django.core.checks import register
|
||||||
|
from django.core.exceptions import FieldError
|
||||||
from django.db import connections
|
from django.db import connections
|
||||||
|
from django.db.utils import OperationalError
|
||||||
|
from django.db.utils import ProgrammingError
|
||||||
|
|
||||||
|
from documents.signals import document_consumer_declaration
|
||||||
|
from documents.templating.utils import convert_format_str_to_template_format
|
||||||
|
|
||||||
exists_message = "{} is set but doesn't exist."
|
exists_message = "{} is set but doesn't exist."
|
||||||
exists_hint = "Create a directory at {}"
|
exists_hint = "Create a directory at {}"
|
||||||
@ -212,3 +219,79 @@ def audit_log_check(app_configs, **kwargs):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
@register()
|
||||||
|
def changed_password_check(app_configs, **kwargs):
|
||||||
|
from paperless.db import GnuPG
|
||||||
|
from paperless.models import Document
|
||||||
|
|
||||||
|
try:
|
||||||
|
encrypted_doc = (
|
||||||
|
Document.objects.filter(
|
||||||
|
storage_type=Document.STORAGE_TYPE_GPG,
|
||||||
|
)
|
||||||
|
.only("pk", "storage_type")
|
||||||
|
.first()
|
||||||
|
)
|
||||||
|
except (OperationalError, ProgrammingError, FieldError):
|
||||||
|
return [] # No documents table yet
|
||||||
|
|
||||||
|
if encrypted_doc:
|
||||||
|
if not settings.PASSPHRASE:
|
||||||
|
return [
|
||||||
|
Error(
|
||||||
|
"The database contains encrypted documents but no password is set.",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
if not GnuPG.decrypted(encrypted_doc.source_file):
|
||||||
|
return [
|
||||||
|
Error(
|
||||||
|
textwrap.dedent(
|
||||||
|
"""
|
||||||
|
The current password doesn't match the password of the
|
||||||
|
existing documents.
|
||||||
|
|
||||||
|
If you intend to change your password, you must first export
|
||||||
|
all of the old documents, start fresh with the new password
|
||||||
|
and then re-import them."
|
||||||
|
""",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@register()
|
||||||
|
def parser_check(app_configs, **kwargs):
|
||||||
|
parsers = []
|
||||||
|
for response in document_consumer_declaration.send(None):
|
||||||
|
parsers.append(response[1])
|
||||||
|
|
||||||
|
if len(parsers) == 0:
|
||||||
|
return [
|
||||||
|
Error(
|
||||||
|
"No parsers found. This is a bug. The consumer won't be "
|
||||||
|
"able to consume any documents without parsers.",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@register()
|
||||||
|
def filename_format_check(app_configs, **kwargs):
|
||||||
|
if settings.FILENAME_FORMAT:
|
||||||
|
converted_format = convert_format_str_to_template_format(
|
||||||
|
settings.FILENAME_FORMAT,
|
||||||
|
)
|
||||||
|
if converted_format != settings.FILENAME_FORMAT:
|
||||||
|
return [
|
||||||
|
Warning(
|
||||||
|
f"Filename format {settings.FILENAME_FORMAT} is using the old style, please update to use double curly brackets",
|
||||||
|
hint=converted_format,
|
||||||
|
),
|
||||||
|
]
|
||||||
|
return []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user