Passed
Push — master ( e32157...9a4845 )
by Alexander
04:03
created

CheckUnappliedMigrationsMiddleware.process_request()   A

Complexity

Conditions 2

Size

Total Lines 14
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 14
rs 9.8
c 0
b 0
f 0
cc 2
nop 2
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