1
|
|
|
# pylint: disable=no-self-use, too-few-public-methods |
2
|
|
|
|
3
|
|
|
from django.conf import settings |
4
|
|
|
from django.contrib import messages |
5
|
|
|
from django.contrib.sites.models import Site |
6
|
|
|
from django.urls import reverse |
7
|
|
|
from django.utils.deprecation import MiddlewareMixin |
8
|
|
|
from django.utils.safestring import mark_safe |
9
|
|
|
from django.utils.translation import gettext_lazy as _ |
10
|
|
|
from django.db import DEFAULT_DB_ALIAS, connections |
11
|
|
|
from django.db.migrations.executor import MigrationExecutor |
12
|
|
|
|
13
|
|
|
|
14
|
|
|
class CsrfDisableMiddleware(MiddlewareMixin): |
15
|
|
|
def process_view(self, request, _callback, _callback_args, _callback_kwargs): |
16
|
|
|
setattr(request, '_dont_enforce_csrf_checks', True) |
17
|
|
|
|
18
|
|
|
|
19
|
|
|
class CheckSettingsMiddleware(MiddlewareMixin): |
20
|
|
|
def process_request(self, request): |
21
|
|
|
doc_url = 'https://kiwitcms.readthedocs.io/en/latest/admin.html#configure-kiwi-s-base-url' |
22
|
|
|
site = Site.objects.get(pk=settings.SITE_ID) |
23
|
|
|
|
24
|
|
|
if site.domain == '127.0.0.1:8000': |
25
|
|
|
messages.add_message( |
26
|
|
|
request, |
27
|
|
|
messages.ERROR, |
28
|
|
|
mark_safe( # nosec:B308:B703 |
29
|
|
|
_('Base URL is not configured! ' |
30
|
|
|
'See <a href="%(doc_url)s">documentation</a> and ' |
31
|
|
|
'<a href="%(admin_url)s">change it</a>') % { |
32
|
|
|
'doc_url': doc_url, |
33
|
|
|
'admin_url': reverse('admin:sites_site_change', args=[site.pk]) |
34
|
|
|
} |
35
|
|
|
) |
36
|
|
|
) |
37
|
|
|
|
38
|
|
|
|
39
|
|
|
class CheckUnappliedMigrationsMiddleware(MiddlewareMixin): |
40
|
|
|
def process_request(self, request): |
41
|
|
|
doc_url = 'https://kiwitcms.readthedocs.io/en/latest/'\ |
42
|
|
|
'installing_docker.html#initial-configuration-of-running-container' |
43
|
|
|
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS]) |
44
|
|
|
plan = executor.migration_plan(executor.loader.graph.leaf_nodes()) |
45
|
|
|
if plan: |
46
|
|
|
messages.add_message( |
47
|
|
|
request, |
48
|
|
|
messages.ERROR, |
49
|
|
|
mark_safe( |
50
|
|
|
_('You have %(unapplied_migration_count)s unapplied migration(s). ' |
51
|
|
|
'See <a href="%(doc_url)s">documentation</a>') % { |
52
|
|
|
"unapplied_migration_count": len(plan), |
53
|
|
|
"doc_url": doc_url, |
54
|
|
|
} |
55
|
|
|
) |
56
|
|
|
) |
57
|
|
|
|