mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00

When running PostgreSQL or MariaDB/MySQL backends, a query to a non-existent table will raise a "ProgrammingError". This patch properly catches this error. Without this patch all management calls to manage.py will lead to an error when running PostgreSQL or MariaDB as a backend.
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import textwrap
|
|
|
|
from django.conf import settings
|
|
from django.core.checks import Error, register
|
|
from django.db.utils import OperationalError, ProgrammingError
|
|
|
|
|
|
@register()
|
|
def changed_password_check(app_configs, **kwargs):
|
|
|
|
from documents.models import Document
|
|
from paperless.db import GnuPG
|
|
|
|
try:
|
|
encrypted_doc = Document.objects.filter(
|
|
storage_type=Document.STORAGE_TYPE_GPG).first()
|
|
except (OperationalError, ProgrammingError):
|
|
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 []
|