From 5cbe668a57cd9446c2f8d38722c1ccf10374b952 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= <zebuline@entrouvert.com>
Date: Tue, 6 Apr 2021 21:31:24 +0200
Subject: [PATCH 2/2] misc: apply isort (#52797)

---
 combo/apps/assets/api_views.py                |  3 +-
 combo/apps/assets/templatetags/assets.py      |  1 -
 combo/apps/assets/urls.py                     |  5 +-
 combo/apps/assets/views.py                    | 18 +++----
 combo/apps/calendar/forms.py                  |  5 +-
 .../apps/calendar/migrations/0001_initial.py  |  3 +-
 combo/apps/calendar/models.py                 |  4 +-
 combo/apps/calendar/utils.py                  |  2 +-
 combo/apps/calendar/views.py                  |  4 +-
 .../apps/dashboard/migrations/0001_initial.py |  2 +-
 combo/apps/dashboard/models.py                |  4 +-
 combo/apps/dashboard/views.py                 |  6 +--
 combo/apps/dataviz/forms.py                   |  2 +-
 combo/apps/dataviz/migrations/0001_initial.py |  2 +-
 .../0002_gauge_jsonp_data_source.py           |  2 +-
 .../0003_cubesbarchart_cubestable.py          |  2 +-
 .../migrations/0004_auto_20160108_1048.py     |  2 +-
 .../migrations/0007_auto_20170214_2006.py     |  3 +-
 .../migrations/0010_auto_20190328_1111.py     |  2 +-
 .../migrations/0012_auto_20201126_1557.py     |  2 +-
 .../migrations/0015_auto_20201202_1424.py     |  2 +-
 combo/apps/dataviz/models.py                  | 18 +++----
 combo/apps/dataviz/views.py                   |  6 +--
 combo/apps/family/migrations/0001_initial.py  |  2 +-
 ..._familyinfoscell_restricted_to_unlogged.py |  2 +-
 ...4_familyinfoscell_last_update_timestamp.py |  3 +-
 combo/apps/family/models.py                   |  4 +-
 combo/apps/family/views.py                    |  6 +--
 combo/apps/fargo/migrations/0001_initial.py   |  2 +-
 ...centdocumentscell_last_update_timestamp.py |  3 +-
 combo/apps/fargo/models.py                    |  7 ++-
 combo/apps/gallery/migrations/0001_initial.py |  2 +-
 .../gallery/migrations/0002_image_title.py    |  2 +-
 .../migrations/0003_gallerycell_title.py      |  2 +-
 combo/apps/gallery/models.py                  |  4 +-
 combo/apps/gallery/views.py                   | 14 ++---
 combo/apps/kb/migrations/0001_initial.py      |  2 +-
 combo/apps/kb/models.py                       |  2 +-
 combo/apps/lingo/__init__.py                  |  5 +-
 combo/apps/lingo/forms.py                     |  3 +-
 combo/apps/lingo/manager_views.py             | 22 ++++----
 combo/apps/lingo/migrations/0001_initial.py   |  2 +-
 .../apps/lingo/migrations/0002_transaction.py |  2 +-
 .../migrations/0003_auto_20150306_1047.py     |  2 +-
 .../0004_basketitem_notification_date.py      |  2 +-
 .../migrations/0005_auto_20150307_1242.py     |  2 +-
 .../migrations/0006_transaction_status.py     |  2 +-
 .../migrations/0007_lingobasketlinkcell.py    |  2 +-
 .../migrations/0008_auto_20150908_1538.py     |  2 +-
 .../migrations/0009_auto_20150917_1456.py     |  2 +-
 .../0010_regie_payment_min_amount.py          |  2 +-
 .../migrations/0011_auto_20151029_1535.py     |  2 +-
 .../migrations/0012_auto_20151130_1047.py     |  2 +-
 .../migrations/0013_transaction_amount.py     |  2 +-
 .../migrations/0014_auto_20160218_1455.py     |  2 +-
 .../migrations/0015_auto_20160309_2150.py     |  2 +-
 .../migrations/0016_auto_20160319_2028.py     |  2 +-
 .../migrations/0017_auto_20160327_0831.py     |  2 +-
 .../migrations/0021_transactionoperation.py   |  2 +-
 .../0024_selfdeclaredinvoicepayment.py        |  2 +-
 .../migrations/0025_auto_20161206_1713.py     |  2 +-
 .../migrations/0027_auto_20170214_2006.py     |  3 +-
 .../migrations/0028_tipipaymentformcell.py    |  3 +-
 .../migrations/0029_auto_20170528_1334.py     |  2 +-
 ...030_transaction_to_be_paid_remote_items.py |  2 +-
 .../migrations/0034_auto_20190426_1159.py     |  2 +-
 .../migrations/0036_auto_20190426_1202.py     |  2 +-
 .../0037_regie_transaction_options.py         |  2 +-
 combo/apps/lingo/models.py                    | 29 +++++------
 combo/apps/lingo/urls.py                      | 46 ++++++++---------
 combo/apps/lingo/views.py                     | 51 ++++++++++---------
 combo/apps/maps/forms.py                      |  1 +
 combo/apps/maps/manager_views.py              |  9 ++--
 combo/apps/maps/migrations/0001_initial.py    |  3 +-
 .../maps/migrations/0008_map_layer_options.py |  2 +-
 combo/apps/maps/models.py                     | 17 +++----
 combo/apps/maps/urls.py                       |  3 +-
 .../newsletters/migrations/0001_initial.py    |  2 +-
 ...3_newsletterscell_last_update_timestamp.py |  3 +-
 combo/apps/newsletters/models.py              | 13 +++--
 combo/apps/newsletters/urls.py                |  2 +-
 combo/apps/newsletters/views.py               |  4 +-
 combo/apps/notifications/api_views.py         |  3 +-
 .../notifications/migrations/0001_initial.py  |  2 +-
 ...notificationscell_last_update_timestamp.py |  3 +-
 combo/apps/notifications/models.py            | 11 ++--
 combo/apps/notifications/urls.py              |  2 +-
 combo/apps/pwa/manager_views.py               |  8 +--
 combo/apps/pwa/migrations/0001_initial.py     |  4 +-
 combo/apps/pwa/migrations/0002_pwasettings.py |  3 +-
 .../pwa/migrations/0003_pwanavigationentry.py |  2 +-
 .../pwa/migrations/0006_auto_20190628_1042.py |  2 +-
 combo/apps/pwa/models.py                      |  7 ++-
 combo/apps/pwa/signals.py                     |  3 +-
 combo/apps/pwa/templatetags/pwa.py            |  1 -
 combo/apps/pwa/urls.py                        |  9 ++--
 combo/apps/pwa/views.py                       | 13 +++--
 combo/apps/search/forms.py                    |  3 +-
 combo/apps/search/manager_views.py            |  8 ++-
 .../migrations/0002_auto_20180720_1511.py     |  2 +-
 .../search/migrations/0006_indexedcell.py     |  2 +-
 combo/apps/search/models.py                   | 16 +++---
 combo/apps/search/urls.py                     |  5 +-
 combo/apps/search/utils.py                    |  5 +-
 combo/apps/wcs/__init__.py                    | 11 ++--
 combo/apps/wcs/forms.py                       | 10 ++--
 combo/apps/wcs/migrations/0001_initial.py     |  3 +-
 .../wcs/migrations/0002_auto_20150217_1402.py |  2 +-
 .../wcs/migrations/0003_auto_20150218_1151.py |  2 +-
 .../wcs/migrations/0004_auto_20150218_1154.py |  2 +-
 .../wcs/migrations/0005_auto_20150401_0758.py |  2 +-
 .../wcs/migrations/0006_categoriescell.py     |  3 +-
 .../migrations/0007_trackingcodeinputcell.py  |  2 +-
 .../0008_wcsformcell_cached_json.py           |  2 +-
 .../0009_remove_wcscategorycell_link_page.py  |  2 +-
 .../wcs/migrations/0010_auto_20151029_1535.py |  2 +-
 .../wcs/migrations/0011_auto_20151215_1121.py |  2 +-
 ...012_wcsformsofcategorycell_manual_order.py |  2 +-
 .../wcs/migrations/0014_auto_20170214_2006.py |  3 +-
 .../0015_wcscurrentformscell_categories.py    |  2 +-
 .../0016_backofficesubmissioncell.py          |  5 +-
 .../wcs/migrations/0017_wcscareformscell.py   |  5 +-
 .../0018_wcscurrentdraftscell_categories.py   |  2 +-
 combo/apps/wcs/migrations/0020_cards.py       |  5 +-
 combo/apps/wcs/migrations/0021_card.py        |  5 +-
 .../migrations/0025_submission_categories.py  |  2 +-
 combo/apps/wcs/models.py                      | 10 ++--
 combo/apps/wcs/templatetags/wcs.py            |  1 -
 combo/apps/wcs/utils.py                       |  1 -
 combo/apps/wcs/views.py                       | 11 ++--
 combo/context_processors.py                   |  2 +-
 combo/data/fields.py                          |  3 +-
 combo/data/forms.py                           |  3 +-
 combo/data/management/commands/import_site.py |  2 +-
 combo/data/migrations/0001_initial.py         |  2 +-
 .../migrations/0002_auto_20150217_1327.py     |  2 +-
 combo/data/migrations/0003_menucell.py        |  2 +-
 combo/data/migrations/0004_menucell_depth.py  |  2 +-
 .../migrations/0005_auto_20150226_0903.py     |  2 +-
 combo/data/migrations/0006_linkcell.py        |  2 +-
 .../migrations/0007_auto_20150529_1003.py     |  2 +-
 .../migrations/0008_auto_20150529_1504.py     |  2 +-
 .../migrations/0009_auto_20150529_2247.py     |  2 +-
 combo/data/migrations/0010_feedcell.py        |  2 +-
 .../migrations/0011_auto_20151028_1047.py     |  2 +-
 .../migrations/0012_auto_20151029_1535.py     |  2 +-
 combo/data/migrations/0013_parameterscell.py  |  2 +-
 .../migrations/0014_menucell_initial_level.py |  2 +-
 combo/data/migrations/0015_feedcell_title.py  |  2 +-
 combo/data/migrations/0021_jsoncell.py        |  3 +-
 .../migrations/0022_auto_20170214_2006.py     |  3 +-
 combo/data/migrations/0024_configjsoncell.py  |  2 +-
 .../migrations/0025_jsoncell_varnames_str.py  |  1 +
 .../migrations/0029_auto_20171022_1242.py     |  3 +-
 .../migrations/0033_auto_20180401_1300.py     |  4 +-
 combo/data/migrations/0034_redirect.py        |  2 +-
 .../migrations/0035_page_related_cells.py     |  2 +-
 combo/data/migrations/0039_link_list_cell.py  |  2 +-
 .../0042_page_creation_timestamp.py           |  2 +-
 combo/data/migrations/0044_validity_info.py   |  2 +-
 combo/data/models.py                          | 34 ++++++-------
 combo/data/utils.py                           |  8 ++-
 combo/manager/fields.py                       |  2 +-
 combo/manager/forms.py                        |  6 +--
 combo/manager/urls.py                         |  6 +--
 combo/manager/views.py                        | 48 +++++++++--------
 combo/middleware.py                           |  1 -
 combo/monkeypatch.py                          |  9 ++--
 combo/plugins.py                              |  2 +-
 combo/profile/__init__.py                     |  3 +-
 combo/profile/migrations/0001_initial.py      |  2 +-
 combo/profile/migrations/0002_profilecell.py  |  2 +-
 combo/profile/models.py                       |  4 +-
 combo/public/admin.py                         |  2 +-
 combo/public/templatetags/combo.py            | 10 ++--
 combo/public/urls.py                          |  1 +
 combo/public/views.py                         | 23 ++++-----
 combo/settings.py                             |  1 +
 combo/urls.py                                 |  8 ++-
 combo/urls_utils.py                           |  1 -
 combo/utils/__init__.py                       |  6 +--
 combo/utils/cache.py                          |  1 +
 combo/utils/crypto.py                         |  3 +-
 combo/utils/misc.py                           |  3 +-
 combo/utils/requests_wrapper.py               |  8 +--
 combo/utils/signature.py                      |  5 +-
 combo/utils/spooler.py                        |  2 +-
 combo/utils/urls.py                           |  2 +-
 setup.py                                      |  8 +--
 tests/conftest.py                             |  4 +-
 tests/test_assets.py                          | 22 ++++----
 tests/test_calendar.py                        |  9 ++--
 tests/test_cells.py                           | 34 ++++++-------
 tests/test_cron.py                            |  5 +-
 tests/test_dashboard.py                       | 12 ++---
 tests/test_dataviz.py                         | 11 ++--
 tests/test_fargo.py                           |  4 +-
 tests/test_gallery_cell.py                    |  5 +-
 tests/test_import_export.py                   |  8 +--
 tests/test_kb.py                              |  4 +-
 tests/test_lingo_cells.py                     | 11 ++--
 tests/test_lingo_manager.py                   | 22 ++++----
 tests/test_lingo_payment.py                   | 36 +++++++------
 tests/test_lingo_remote_regie.py              | 28 +++++-----
 tests/test_manager.py                         | 34 ++++++-------
 tests/test_maps_cells.py                      |  9 ++--
 tests/test_maps_manager.py                    |  6 +--
 tests/test_newsletters_cell.py                | 12 ++---
 tests/test_notification.py                    | 16 +++---
 tests/test_pages.py                           |  9 ++--
 tests/test_profile.py                         |  2 +-
 tests/test_public.py                          | 33 ++++++------
 tests/test_public_templatetags.py             |  5 +-
 tests/test_publik.py                          |  5 +-
 tests/test_pwa.py                             |  8 ++-
 tests/test_requests.py                        |  3 +-
 tests/test_search.py                          | 12 ++---
 tests/test_utils.py                           |  8 +--
 tests/test_wcs.py                             | 38 +++++++-------
 219 files changed, 647 insertions(+), 686 deletions(-)

diff --git a/combo/apps/assets/api_views.py b/combo/apps/assets/api_views.py
index f0f9a7f5..c440d058 100644
--- a/combo/apps/assets/api_views.py
+++ b/combo/apps/assets/api_views.py
@@ -18,8 +18,7 @@ import base64
 
 from django.core.files import File
 from django.utils.six import BytesIO
-
-from rest_framework import serializers, permissions, status
+from rest_framework import permissions, serializers, status
 from rest_framework.generics import GenericAPIView
 from rest_framework.response import Response
 
diff --git a/combo/apps/assets/templatetags/assets.py b/combo/apps/assets/templatetags/assets.py
index 6f2e31e6..4c08efdf 100644
--- a/combo/apps/assets/templatetags/assets.py
+++ b/combo/apps/assets/templatetags/assets.py
@@ -19,7 +19,6 @@ import os
 from django import template
 from django.db.models.fields.files import ImageFieldFile
 from django.utils import six
-
 from sorl.thumbnail.shortcuts import get_thumbnail
 
 from ..models import Asset
diff --git a/combo/apps/assets/urls.py b/combo/apps/assets/urls.py
index d1eb7834..914b8b8b 100644
--- a/combo/apps/assets/urls.py
+++ b/combo/apps/assets/urls.py
@@ -14,12 +14,11 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.conf.urls import url, include
+from django.conf.urls import include, url
 
 from combo.urls_utils import decorated_includes, manager_required
 
-from . import views
-from . import api_views
+from . import api_views, views
 
 assets_manager_urls = [
     url(r'^$', views.assets, name='combo-manager-assets'),
diff --git a/combo/apps/assets/views.py b/combo/apps/assets/views.py
index a2b0639c..9864b5dd 100644
--- a/combo/apps/assets/views.py
+++ b/combo/apps/assets/views.py
@@ -15,29 +15,27 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import json
-import tarfile
 import os
+import tarfile
 
+import ckeditor
 from django.conf import settings
 from django.contrib import messages
 from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
 from django.core.files.storage import default_storage
-from django.urls import reverse, reverse_lazy
 from django.http import Http404, HttpResponse
-from django.shortcuts import get_object_or_404
-from django.shortcuts import redirect
+from django.shortcuts import get_object_or_404, redirect
+from django.urls import reverse, reverse_lazy
 from django.utils.six import BytesIO
 from django.utils.translation import ugettext_lazy as _
-from django.views.generic import TemplateView, ListView, FormView
-
-import ckeditor
+from django.views.generic import FormView, ListView, TemplateView
 from sorl.thumbnail.shortcuts import get_thumbnail
 
-from combo.data.models import CellBase
-from combo.apps.assets.utils import import_assets, export_assets
+from combo.apps.assets.utils import export_assets, import_assets
 from combo.apps.maps.models import MapLayer
+from combo.data.models import CellBase
 
-from .forms import AssetUploadForm, AssetsImportForm
+from .forms import AssetsImportForm, AssetUploadForm
 from .models import Asset
 
 
diff --git a/combo/apps/calendar/forms.py b/combo/apps/calendar/forms.py
index 33610bef..e17d876b 100644
--- a/combo/apps/calendar/forms.py
+++ b/combo/apps/calendar/forms.py
@@ -15,12 +15,13 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from django import forms
-from django.utils.translation import ugettext_lazy as _
 from django.utils.dateparse import parse_datetime, parse_time
+from django.utils.translation import ugettext_lazy as _
+
+from combo.apps.wcs.utils import get_wcs_options
 
 from .models import BookingCalendar
 from .utils import get_agendas
-from combo.apps.wcs.utils import get_wcs_options
 
 
 class BookingCalendarForm(forms.ModelForm):
diff --git a/combo/apps/calendar/migrations/0001_initial.py b/combo/apps/calendar/migrations/0001_initial.py
index 85d5dc83..a7891da0 100644
--- a/combo/apps/calendar/migrations/0001_initial.py
+++ b/combo/apps/calendar/migrations/0001_initial.py
@@ -1,9 +1,10 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
 
+from django.db import migrations, models
+
 
 class Migration(migrations.Migration):
 
diff --git a/combo/apps/calendar/models.py b/combo/apps/calendar/models.py
index 688481ed..79aac451 100644
--- a/combo/apps/calendar/models.py
+++ b/combo/apps/calendar/models.py
@@ -20,10 +20,10 @@ from django.conf import settings
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
 
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 
-from .utils import is_chrono_enabled, is_wcs_enabled, get_chrono_events, get_calendar_context_vars
+from .utils import get_calendar_context_vars, get_chrono_events, is_chrono_enabled, is_wcs_enabled
 
 
 @register_cell_class
diff --git a/combo/apps/calendar/utils.py b/combo/apps/calendar/utils.py
index c909b185..f2431a2b 100644
--- a/combo/apps/calendar/utils.py
+++ b/combo/apps/calendar/utils.py
@@ -18,7 +18,7 @@ import datetime
 import math
 
 from django.conf import settings
-from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
+from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
 from django.utils.dateparse import parse_datetime
 from django.utils.http import urlencode
 from django.utils.timezone import localtime, make_aware
diff --git a/combo/apps/calendar/views.py b/combo/apps/calendar/views.py
index d1a093a8..13fce662 100644
--- a/combo/apps/calendar/views.py
+++ b/combo/apps/calendar/views.py
@@ -17,12 +17,12 @@
 from django.contrib import messages
 from django.http import HttpResponseRedirect
 from django.utils.encoding import force_text
-from django.views.generic import View, DetailView
+from django.views.generic import DetailView, View
 from django.views.generic.detail import SingleObjectMixin
 
 from .forms import BookingForm
 from .models import BookingCalendar
-from .utils import get_form_url_with_params, get_chrono_events, get_calendar_context_vars
+from .utils import get_calendar_context_vars, get_chrono_events, get_form_url_with_params
 
 
 class BookingView(SingleObjectMixin, View):
diff --git a/combo/apps/dashboard/migrations/0001_initial.py b/combo/apps/dashboard/migrations/0001_initial.py
index 0c275384..a7601d44 100644
--- a/combo/apps/dashboard/migrations/0001_initial.py
+++ b/combo/apps/dashboard/migrations/0001_initial.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dashboard/models.py b/combo/apps/dashboard/models.py
index a0bc09db..9adcffd9 100644
--- a/combo/apps/dashboard/models.py
+++ b/combo/apps/dashboard/models.py
@@ -17,14 +17,14 @@
 import datetime
 
 from django.conf import settings
-from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes import fields
+from django.contrib.contenttypes.models import ContentType
 from django.db import models
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _
 
-from combo.data.models import CellBase, ValidityInfo
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase, ValidityInfo
 
 
 @register_cell_class
diff --git a/combo/apps/dashboard/views.py b/combo/apps/dashboard/views.py
index 8caa6112..ece4146f 100644
--- a/combo/apps/dashboard/views.py
+++ b/combo/apps/dashboard/views.py
@@ -19,21 +19,21 @@ import json
 from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import PermissionDenied
-from django.urls import reverse
 from django.db.models import Max, Min
 from django.http import (
     Http404,
     HttpResponse,
     HttpResponseBadRequest,
-    HttpResponseRedirect,
     HttpResponseNotAllowed,
+    HttpResponseRedirect,
 )
+from django.urls import reverse
 from django.utils.encoding import force_text
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import View
 
-from combo.data.models import CellBase, ConfigJsonCell
 from combo.data.library import get_cell_class
+from combo.data.models import CellBase, ConfigJsonCell
 from combo.public.views import render_cell
 
 from .models import DashboardCell, Tile
diff --git a/combo/apps/dataviz/forms.py b/combo/apps/dataviz/forms.py
index 7888c9cc..18761856 100644
--- a/combo/apps/dataviz/forms.py
+++ b/combo/apps/dataviz/forms.py
@@ -22,7 +22,7 @@ from django.conf import settings
 from django.db import transaction
 from django.db.models import Q
 
-from combo.utils import requests, cache_during_request, spooler
+from combo.utils import cache_during_request, requests, spooler
 
 from .models import ChartCell, ChartNgCell
 
diff --git a/combo/apps/dataviz/migrations/0001_initial.py b/combo/apps/dataviz/migrations/0001_initial.py
index 957e8020..b35e7137 100644
--- a/combo/apps/dataviz/migrations/0001_initial.py
+++ b/combo/apps/dataviz/migrations/0001_initial.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dataviz/migrations/0002_gauge_jsonp_data_source.py b/combo/apps/dataviz/migrations/0002_gauge_jsonp_data_source.py
index c90aaa3d..6f70bd17 100644
--- a/combo/apps/dataviz/migrations/0002_gauge_jsonp_data_source.py
+++ b/combo/apps/dataviz/migrations/0002_gauge_jsonp_data_source.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dataviz/migrations/0003_cubesbarchart_cubestable.py b/combo/apps/dataviz/migrations/0003_cubesbarchart_cubestable.py
index 42695238..9660760e 100644
--- a/combo/apps/dataviz/migrations/0003_cubesbarchart_cubestable.py
+++ b/combo/apps/dataviz/migrations/0003_cubesbarchart_cubestable.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dataviz/migrations/0004_auto_20160108_1048.py b/combo/apps/dataviz/migrations/0004_auto_20160108_1048.py
index 2eb8c921..2d3c85f5 100644
--- a/combo/apps/dataviz/migrations/0004_auto_20160108_1048.py
+++ b/combo/apps/dataviz/migrations/0004_auto_20160108_1048.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dataviz/migrations/0007_auto_20170214_2006.py b/combo/apps/dataviz/migrations/0007_auto_20170214_2006.py
index c04c67bc..ed19c432 100644
--- a/combo/apps/dataviz/migrations/0007_auto_20170214_2006.py
+++ b/combo/apps/dataviz/migrations/0007_auto_20170214_2006.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py b/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py
index 6bdd6347..808cdbed 100644
--- a/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py
+++ b/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py
@@ -2,9 +2,9 @@
 # Generated by Django 1.11.12 on 2019-03-28 10:11
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dataviz/migrations/0012_auto_20201126_1557.py b/combo/apps/dataviz/migrations/0012_auto_20201126_1557.py
index ae26f458..08745c73 100644
--- a/combo/apps/dataviz/migrations/0012_auto_20201126_1557.py
+++ b/combo/apps/dataviz/migrations/0012_auto_20201126_1557.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.29 on 2020-11-26 14:57
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py b/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py
index 7537d0fe..f578abda 100644
--- a/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py
+++ b/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.29 on 2020-12-02 13:24
 from __future__ import unicode_literals
 
-from django.db import migrations
 import jsonfield.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/dataviz/models.py b/combo/apps/dataviz/models.py
index a04e8d5b..d6f7322d 100644
--- a/combo/apps/dataviz/models.py
+++ b/combo/apps/dataviz/models.py
@@ -18,22 +18,22 @@ import copy
 import os
 import sys
 from datetime import date
-from requests.exceptions import RequestException
 
-from django.urls import reverse
+import pygal
+import pygal.util
+from django.conf import settings
 from django.db import models, transaction
+from django.urls import reverse
 from django.utils import timezone
 from django.utils.encoding import force_text
-from django.utils.translation import ugettext_lazy as _, ungettext, gettext
-from django.conf import settings
-
+from django.utils.translation import gettext
+from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ungettext
 from jsonfield import JSONField
-from requests.exceptions import HTTPError
-import pygal
-import pygal.util
+from requests.exceptions import HTTPError, RequestException
 
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 from combo.utils import get_templated_url, requests, spooler
 
 
diff --git a/combo/apps/dataviz/views.py b/combo/apps/dataviz/views.py
index c652608a..7d4cb55b 100644
--- a/combo/apps/dataviz/views.py
+++ b/combo/apps/dataviz/views.py
@@ -15,13 +15,13 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from django.core.exceptions import PermissionDenied
-from django.http import HttpResponse, Http404
+from django.http import Http404, HttpResponse
 from django.utils.translation import ugettext_lazy as _
-
 from requests.exceptions import HTTPError
 
 from combo.utils import get_templated_url, requests
-from .models import Gauge, ChartNgCell, UnsupportedDataSet
+
+from .models import ChartNgCell, Gauge, UnsupportedDataSet
 
 
 def ajax_gauge_count(request, *args, **kwargs):
diff --git a/combo/apps/family/migrations/0001_initial.py b/combo/apps/family/migrations/0001_initial.py
index 5d8f0f77..f3acb5e9 100644
--- a/combo/apps/family/migrations/0001_initial.py
+++ b/combo/apps/family/migrations/0001_initial.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import ckeditor.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/family/migrations/0002_familyinfoscell_restricted_to_unlogged.py b/combo/apps/family/migrations/0002_familyinfoscell_restricted_to_unlogged.py
index a3c6a370..1340d93a 100644
--- a/combo/apps/family/migrations/0002_familyinfoscell_restricted_to_unlogged.py
+++ b/combo/apps/family/migrations/0002_familyinfoscell_restricted_to_unlogged.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/family/migrations/0004_familyinfoscell_last_update_timestamp.py b/combo/apps/family/migrations/0004_familyinfoscell_last_update_timestamp.py
index a53412d1..c90f450d 100644
--- a/combo/apps/family/migrations/0004_familyinfoscell_last_update_timestamp.py
+++ b/combo/apps/family/migrations/0004_familyinfoscell_last_update_timestamp.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/apps/family/models.py b/combo/apps/family/models.py
index 74129cb7..fb7e7fbe 100644
--- a/combo/apps/family/models.py
+++ b/combo/apps/family/models.py
@@ -16,10 +16,10 @@
 
 from django.utils.translation import ugettext_lazy as _
 
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 
-from .utils import is_family_enabled, get_family
+from .utils import get_family, is_family_enabled
 
 
 @register_cell_class
diff --git a/combo/apps/family/views.py b/combo/apps/family/views.py
index 50fbaaea..5f460b11 100644
--- a/combo/apps/family/views.py
+++ b/combo/apps/family/views.py
@@ -15,10 +15,10 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-from django.views.generic import FormView, TemplateView
-from django.utils.translation import ugettext_lazy as _
-from django.http import HttpResponseRedirect
 from django.contrib import messages
+from django.http import HttpResponseRedirect
+from django.utils.translation import ugettext_lazy as _
+from django.views.generic import FormView, TemplateView
 
 from .forms import FamilyLinkForm
 from .utils import link_family, unlink_family
diff --git a/combo/apps/fargo/migrations/0001_initial.py b/combo/apps/fargo/migrations/0001_initial.py
index 78d3e6ed..7a7627d8 100644
--- a/combo/apps/fargo/migrations/0001_initial.py
+++ b/combo/apps/fargo/migrations/0001_initial.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/fargo/migrations/0003_recentdocumentscell_last_update_timestamp.py b/combo/apps/fargo/migrations/0003_recentdocumentscell_last_update_timestamp.py
index dbaa1401..e2bb6926 100644
--- a/combo/apps/fargo/migrations/0003_recentdocumentscell_last_update_timestamp.py
+++ b/combo/apps/fargo/migrations/0003_recentdocumentscell_last_update_timestamp.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/apps/fargo/models.py b/combo/apps/fargo/models.py
index 8a766ac6..418eafe2 100644
--- a/combo/apps/fargo/models.py
+++ b/combo/apps/fargo/models.py
@@ -18,14 +18,13 @@ import logging
 
 from django.conf import settings
 from django.db import models
-from django.forms import models as model_forms
 from django.forms import Select
+from django.forms import models as model_forms
 from django.utils.translation import ugettext_lazy as _
+from requests import HTTPError, RequestException
 
-from requests import RequestException, HTTPError
-
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 from combo.utils import requests
 
 logger = logging.getLogger(__name__)
diff --git a/combo/apps/gallery/migrations/0001_initial.py b/combo/apps/gallery/migrations/0001_initial.py
index b87c02bc..1a6dfb60 100644
--- a/combo/apps/gallery/migrations/0001_initial.py
+++ b/combo/apps/gallery/migrations/0001_initial.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/gallery/migrations/0002_image_title.py b/combo/apps/gallery/migrations/0002_image_title.py
index 32bd732e..51e0898c 100644
--- a/combo/apps/gallery/migrations/0002_image_title.py
+++ b/combo/apps/gallery/migrations/0002_image_title.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/gallery/migrations/0003_gallerycell_title.py b/combo/apps/gallery/migrations/0003_gallerycell_title.py
index 57cb09c3..23b0be6c 100644
--- a/combo/apps/gallery/migrations/0003_gallerycell_title.py
+++ b/combo/apps/gallery/migrations/0003_gallerycell_title.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/gallery/models.py b/combo/apps/gallery/models.py
index b943a086..bfb1dadf 100644
--- a/combo/apps/gallery/models.py
+++ b/combo/apps/gallery/models.py
@@ -17,13 +17,13 @@
 import json
 
 from django import template
-from django.db import models
 from django.core import serializers
+from django.db import models
 from django.forms import models as model_forms
 from django.utils.translation import ugettext_lazy as _
 
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 
 
 @register_cell_class
diff --git a/combo/apps/gallery/views.py b/combo/apps/gallery/views.py
index e378b032..6742a958 100644
--- a/combo/apps/gallery/views.py
+++ b/combo/apps/gallery/views.py
@@ -14,21 +14,21 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.urls import reverse, reverse_lazy
 from django.shortcuts import redirect
+from django.urls import reverse, reverse_lazy
 from django.views.generic import (
-    TemplateView,
-    RedirectView,
-    DetailView,
     CreateView,
-    UpdateView,
-    ListView,
     DeleteView,
+    DetailView,
     FormView,
+    ListView,
+    RedirectView,
+    TemplateView,
+    UpdateView,
 )
 
-from .models import Image, GalleryCell
 from .forms import ImageAddForm, ImageEditForm
+from .models import GalleryCell, Image
 
 
 class ImageAddView(CreateView):
diff --git a/combo/apps/kb/migrations/0001_initial.py b/combo/apps/kb/migrations/0001_initial.py
index 94c7c3e6..92dfab97 100644
--- a/combo/apps/kb/migrations/0001_initial.py
+++ b/combo/apps/kb/migrations/0001_initial.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.18 on 2020-01-31 15:40
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/kb/models.py b/combo/apps/kb/models.py
index 2d2cfad8..490f4974 100644
--- a/combo/apps/kb/models.py
+++ b/combo/apps/kb/models.py
@@ -21,8 +21,8 @@ from django.db import models
 from django.utils import timezone
 from django.utils.translation import ugettext_lazy as _
 
-from combo.data.models import CellBase, Page
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase, Page
 
 
 @register_cell_class
diff --git a/combo/apps/lingo/__init__.py b/combo/apps/lingo/__init__.py
index 7bb25728..400a3036 100644
--- a/combo/apps/lingo/__init__.py
+++ b/combo/apps/lingo/__init__.py
@@ -18,12 +18,11 @@ import datetime
 import logging
 
 import django.apps
+import eopayment
 from django.urls import reverse
 from django.utils import timezone
 from django.utils.translation import ugettext_lazy as _
 
-import eopayment
-
 
 class AppConfig(django.apps.AppConfig):
     name = 'combo.apps.lingo'
@@ -42,7 +41,7 @@ class AppConfig(django.apps.AppConfig):
         self.notify_payments()
 
     def update_transactions(self):
-        from .models import Transaction, EXPIRED
+        from .models import EXPIRED, Transaction
 
         logger = logging.getLogger(__name__)
         now = timezone.now()
diff --git a/combo/apps/lingo/forms.py b/combo/apps/lingo/forms.py
index 759c0b39..078e93bd 100644
--- a/combo/apps/lingo/forms.py
+++ b/combo/apps/lingo/forms.py
@@ -16,12 +16,11 @@
 
 import datetime
 
-
 from django import forms
 from django.core.exceptions import ValidationError
 from django.utils.translation import ugettext_lazy as _
 
-from .models import Regie, PaymentBackend
+from .models import PaymentBackend, Regie
 
 TYPE_FIELD_MAPPING = {
     str: forms.CharField,
diff --git a/combo/apps/lingo/manager_views.py b/combo/apps/lingo/manager_views.py
index b2777918..b194b18c 100644
--- a/combo/apps/lingo/manager_views.py
+++ b/combo/apps/lingo/manager_views.py
@@ -16,26 +16,22 @@
 
 import csv
 import datetime
-from dateutil import parser as date_parser
 
-from django.urls import reverse
-from django.urls import reverse_lazy
+import eopayment
+from dateutil import parser as date_parser
 from django.contrib import messages
-from django.db.models import Q, Prefetch
+from django.db.models import Prefetch, Q
 from django.db.models.expressions import RawSQL
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import get_object_or_404
+from django.template.response import TemplateResponse
+from django.urls import reverse, reverse_lazy
 from django.utils import six
 from django.utils.timezone import make_aware, now
 from django.utils.translation import ugettext_lazy as _
-from django.views.generic import CreateView, UpdateView, ListView, DeleteView, View
-from django.http import HttpResponse
-from django.http import HttpResponseRedirect
-from django.shortcuts import get_object_or_404
-from django.template.response import TemplateResponse
-
-import eopayment
+from django.views.generic import CreateView, DeleteView, ListView, UpdateView, View
 
-from .forms import RegieForm, PaymentBackendForm
-from .forms import TransactionExportForm
+from .forms import PaymentBackendForm, RegieForm, TransactionExportForm
 from .models import BasketItem, PaymentBackend, Regie, Transaction
 
 
diff --git a/combo/apps/lingo/migrations/0001_initial.py b/combo/apps/lingo/migrations/0001_initial.py
index 393010f1..3daaf8b1 100644
--- a/combo/apps/lingo/migrations/0001_initial.py
+++ b/combo/apps/lingo/migrations/0001_initial.py
@@ -1,9 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import jsonfield.fields
 from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0002_transaction.py b/combo/apps/lingo/migrations/0002_transaction.py
index 0520cb50..b770560c 100644
--- a/combo/apps/lingo/migrations/0002_transaction.py
+++ b/combo/apps/lingo/migrations/0002_transaction.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0003_auto_20150306_1047.py b/combo/apps/lingo/migrations/0003_auto_20150306_1047.py
index da7226c0..10d5bf94 100644
--- a/combo/apps/lingo/migrations/0003_auto_20150306_1047.py
+++ b/combo/apps/lingo/migrations/0003_auto_20150306_1047.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0004_basketitem_notification_date.py b/combo/apps/lingo/migrations/0004_basketitem_notification_date.py
index a9f4bc12..d29e21d5 100644
--- a/combo/apps/lingo/migrations/0004_basketitem_notification_date.py
+++ b/combo/apps/lingo/migrations/0004_basketitem_notification_date.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0005_auto_20150307_1242.py b/combo/apps/lingo/migrations/0005_auto_20150307_1242.py
index 1942e295..ba83873a 100644
--- a/combo/apps/lingo/migrations/0005_auto_20150307_1242.py
+++ b/combo/apps/lingo/migrations/0005_auto_20150307_1242.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0006_transaction_status.py b/combo/apps/lingo/migrations/0006_transaction_status.py
index 4d81b6c0..81b2c392 100644
--- a/combo/apps/lingo/migrations/0006_transaction_status.py
+++ b/combo/apps/lingo/migrations/0006_transaction_status.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0007_lingobasketlinkcell.py b/combo/apps/lingo/migrations/0007_lingobasketlinkcell.py
index 24e6144e..68819d2f 100644
--- a/combo/apps/lingo/migrations/0007_lingobasketlinkcell.py
+++ b/combo/apps/lingo/migrations/0007_lingobasketlinkcell.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0008_auto_20150908_1538.py b/combo/apps/lingo/migrations/0008_auto_20150908_1538.py
index c6f87066..7fefb93d 100644
--- a/combo/apps/lingo/migrations/0008_auto_20150908_1538.py
+++ b/combo/apps/lingo/migrations/0008_auto_20150908_1538.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import ckeditor.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0009_auto_20150917_1456.py b/combo/apps/lingo/migrations/0009_auto_20150917_1456.py
index f67ad490..4772b836 100644
--- a/combo/apps/lingo/migrations/0009_auto_20150917_1456.py
+++ b/combo/apps/lingo/migrations/0009_auto_20150917_1456.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0010_regie_payment_min_amount.py b/combo/apps/lingo/migrations/0010_regie_payment_min_amount.py
index 619a751a..3522dd76 100644
--- a/combo/apps/lingo/migrations/0010_regie_payment_min_amount.py
+++ b/combo/apps/lingo/migrations/0010_regie_payment_min_amount.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0011_auto_20151029_1535.py b/combo/apps/lingo/migrations/0011_auto_20151029_1535.py
index e01c42dc..7a29a6fc 100644
--- a/combo/apps/lingo/migrations/0011_auto_20151029_1535.py
+++ b/combo/apps/lingo/migrations/0011_auto_20151029_1535.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0012_auto_20151130_1047.py b/combo/apps/lingo/migrations/0012_auto_20151130_1047.py
index 92c9d809..c9a8efd0 100644
--- a/combo/apps/lingo/migrations/0012_auto_20151130_1047.py
+++ b/combo/apps/lingo/migrations/0012_auto_20151130_1047.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0013_transaction_amount.py b/combo/apps/lingo/migrations/0013_transaction_amount.py
index f1afda8c..02e653fa 100644
--- a/combo/apps/lingo/migrations/0013_transaction_amount.py
+++ b/combo/apps/lingo/migrations/0013_transaction_amount.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0014_auto_20160218_1455.py b/combo/apps/lingo/migrations/0014_auto_20160218_1455.py
index ceddf9b4..b1c9154a 100644
--- a/combo/apps/lingo/migrations/0014_auto_20160218_1455.py
+++ b/combo/apps/lingo/migrations/0014_auto_20160218_1455.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0015_auto_20160309_2150.py b/combo/apps/lingo/migrations/0015_auto_20160309_2150.py
index bb3eae42..1ea74382 100644
--- a/combo/apps/lingo/migrations/0015_auto_20160309_2150.py
+++ b/combo/apps/lingo/migrations/0015_auto_20160309_2150.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0016_auto_20160319_2028.py b/combo/apps/lingo/migrations/0016_auto_20160319_2028.py
index 260fddaa..e6d618c5 100644
--- a/combo/apps/lingo/migrations/0016_auto_20160319_2028.py
+++ b/combo/apps/lingo/migrations/0016_auto_20160319_2028.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0017_auto_20160327_0831.py b/combo/apps/lingo/migrations/0017_auto_20160327_0831.py
index a6b3382a..b0cbaa9c 100644
--- a/combo/apps/lingo/migrations/0017_auto_20160327_0831.py
+++ b/combo/apps/lingo/migrations/0017_auto_20160327_0831.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import ckeditor.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0021_transactionoperation.py b/combo/apps/lingo/migrations/0021_transactionoperation.py
index a0c792e4..0773fb21 100644
--- a/combo/apps/lingo/migrations/0021_transactionoperation.py
+++ b/combo/apps/lingo/migrations/0021_transactionoperation.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0024_selfdeclaredinvoicepayment.py b/combo/apps/lingo/migrations/0024_selfdeclaredinvoicepayment.py
index bcbba4a4..29376662 100644
--- a/combo/apps/lingo/migrations/0024_selfdeclaredinvoicepayment.py
+++ b/combo/apps/lingo/migrations/0024_selfdeclaredinvoicepayment.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import ckeditor.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0025_auto_20161206_1713.py b/combo/apps/lingo/migrations/0025_auto_20161206_1713.py
index 6b01fc78..502de149 100644
--- a/combo/apps/lingo/migrations/0025_auto_20161206_1713.py
+++ b/combo/apps/lingo/migrations/0025_auto_20161206_1713.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0027_auto_20170214_2006.py b/combo/apps/lingo/migrations/0027_auto_20170214_2006.py
index b99359bd..d5151966 100644
--- a/combo/apps/lingo/migrations/0027_auto_20170214_2006.py
+++ b/combo/apps/lingo/migrations/0027_auto_20170214_2006.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/apps/lingo/migrations/0028_tipipaymentformcell.py b/combo/apps/lingo/migrations/0028_tipipaymentformcell.py
index 35462458..c66b5430 100644
--- a/combo/apps/lingo/migrations/0028_tipipaymentformcell.py
+++ b/combo/apps/lingo/migrations/0028_tipipaymentformcell.py
@@ -1,7 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
+
 import combo.data.fields
 
 
diff --git a/combo/apps/lingo/migrations/0029_auto_20170528_1334.py b/combo/apps/lingo/migrations/0029_auto_20170528_1334.py
index 92e05312..68accc08 100644
--- a/combo/apps/lingo/migrations/0029_auto_20170528_1334.py
+++ b/combo/apps/lingo/migrations/0029_auto_20170528_1334.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0030_transaction_to_be_paid_remote_items.py b/combo/apps/lingo/migrations/0030_transaction_to_be_paid_remote_items.py
index f8dc9cc8..8e733a84 100644
--- a/combo/apps/lingo/migrations/0030_transaction_to_be_paid_remote_items.py
+++ b/combo/apps/lingo/migrations/0030_transaction_to_be_paid_remote_items.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0034_auto_20190426_1159.py b/combo/apps/lingo/migrations/0034_auto_20190426_1159.py
index 34d26d15..356ac60f 100644
--- a/combo/apps/lingo/migrations/0034_auto_20190426_1159.py
+++ b/combo/apps/lingo/migrations/0034_auto_20190426_1159.py
@@ -2,9 +2,9 @@
 # Generated by Django 1.11.18 on 2019-04-26 09:59
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0036_auto_20190426_1202.py b/combo/apps/lingo/migrations/0036_auto_20190426_1202.py
index 8eb4faa9..68e68c21 100644
--- a/combo/apps/lingo/migrations/0036_auto_20190426_1202.py
+++ b/combo/apps/lingo/migrations/0036_auto_20190426_1202.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.18 on 2019-04-26 10:02
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/lingo/migrations/0037_regie_transaction_options.py b/combo/apps/lingo/migrations/0037_regie_transaction_options.py
index 77530362..c84db461 100644
--- a/combo/apps/lingo/migrations/0037_regie_transaction_options.py
+++ b/combo/apps/lingo/migrations/0037_regie_transaction_options.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.18 on 2019-05-14 12:02
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import jsonfield.fields
+from django.db import migrations, models
 
 from combo.apps.lingo.models import SERVICES
 
diff --git a/combo/apps/lingo/models.py b/combo/apps/lingo/models.py
index 6980a992..ee065b5f 100644
--- a/combo/apps/lingo/models.py
+++ b/combo/apps/lingo/models.py
@@ -17,40 +17,39 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import datetime
-from decimal import Decimal
 import json
 import logging
 import re
+from decimal import Decimal
 
-from dateutil import parser
 import eopayment
-from jsonfield import JSONField
-from requests import RequestException
-
+from dateutil import parser
 from django import template
 from django.conf import settings
+from django.contrib.auth.models import User
 from django.core import serializers
-from django.db import models
-from django.forms import models as model_forms, Select
-from django.utils.translation import ugettext_lazy as _
-from django.utils import timezone, dateparse, six
+from django.core.exceptions import ObjectDoesNotExist, PermissionDenied, ValidationError
 from django.core.mail import EmailMultiAlternatives
+from django.db import models
+from django.forms import Select
+from django.forms import models as model_forms
+from django.template.loader import render_to_string
 from django.urls import reverse
-from django.core.exceptions import ObjectDoesNotExist, PermissionDenied, ValidationError
+from django.utils import dateparse, six, timezone
 from django.utils.encoding import force_bytes, python_2_unicode_compatible
 from django.utils.formats import localize
 from django.utils.http import urlencode
 from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.timezone import make_aware, utc
+from django.utils.translation import ugettext_lazy as _
+from jsonfield import JSONField
+from requests import RequestException
 
-from django.contrib.auth.models import User
-from django.template.loader import render_to_string
-
+from combo.apps.notifications.models import Notification
 from combo.data.fields import RichTextField
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 from combo.utils import NothingInCacheException, aes_hex_encrypt, requests
-from combo.apps.notifications.models import Notification
 
 from .utils import signing_dumps
 
diff --git a/combo/apps/lingo/urls.py b/combo/apps/lingo/urls.py
index c89979e8..0363b13a 100644
--- a/combo/apps/lingo/urls.py
+++ b/combo/apps/lingo/urls.py
@@ -14,40 +14,40 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.conf.urls import url, include
+from django.conf.urls import include, url
 
 from combo.urls_utils import decorated_includes, manager_required
 
+from .manager_views import (
+    BasketItemErrorListView,
+    BasketItemMarkAsNotifiedView,
+    PaymentBackendCreateView,
+    PaymentBackendDeleteView,
+    PaymentBackendListView,
+    PaymentBackendUpdateView,
+    RegieCreateView,
+    RegieDeleteView,
+    RegieListView,
+    RegieUpdateView,
+    TransactionListView,
+    download_transactions_csv,
+)
 from .views import (
-    RegiesApiView,
     AddBasketItemApiView,
-    PayView,
+    BasketItemPayView,
     CallbackView,
-    ReturnView,
+    CancelItemView,
+    CancelTransactionApiView,
     ItemDownloadView,
     ItemView,
-    CancelItemView,
+    PaymentStatusView,
+    PayView,
+    RegiesApiView,
     RemoveBasketItemApiView,
-    ValidateTransactionApiView,
-    CancelTransactionApiView,
+    ReturnView,
     SelfInvoiceView,
-    BasketItemPayView,
     TransactionStatusApiView,
-    PaymentStatusView,
-)
-from .manager_views import (
-    RegieListView,
-    RegieCreateView,
-    RegieUpdateView,
-    RegieDeleteView,
-    TransactionListView,
-    BasketItemErrorListView,
-    download_transactions_csv,
-    PaymentBackendListView,
-    PaymentBackendCreateView,
-    PaymentBackendUpdateView,
-    PaymentBackendDeleteView,
-    BasketItemMarkAsNotifiedView,
+    ValidateTransactionApiView,
 )
 
 lingo_manager_urls = [
diff --git a/combo/apps/lingo/views.py b/combo/apps/lingo/views.py
index 3bfcf7cf..e4a155f5 100644
--- a/combo/apps/lingo/views.py
+++ b/combo/apps/lingo/views.py
@@ -14,47 +14,52 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from decimal import Decimal, ROUND_HALF_UP
 import json
 import logging
-import requests
+from decimal import ROUND_HALF_UP, Decimal
 
+import eopayment
+import requests
+from django.conf import settings
+from django.contrib import messages
 from django.contrib.auth.models import User
-from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
-from django.urls import reverse
 from django.core import signing
-from django.http import HttpResponse, HttpResponseNotFound, HttpResponseRedirect, HttpResponseBadRequest
-from django.http import HttpResponseForbidden, Http404, JsonResponse
+from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
+from django.db.transaction import atomic
+from django.http import (
+    Http404,
+    HttpResponse,
+    HttpResponseBadRequest,
+    HttpResponseForbidden,
+    HttpResponseNotFound,
+    HttpResponseRedirect,
+    JsonResponse,
+)
+from django.shortcuts import get_object_or_404
 from django.template.response import TemplateResponse
-from django.utils import timezone, dateparse, six
-from django.utils.encoding import force_text
+from django.urls import reverse
+from django.utils import dateparse, six, timezone
+from django.utils.encoding import force_text, smart_text
 from django.utils.http import urlencode
-from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import View, DetailView, ListView, TemplateView
-from django.conf import settings
-from django.contrib import messages
 from django.utils.translation import ugettext_lazy as _
-from django.db.transaction import atomic
-from django.shortcuts import get_object_or_404
-from django.utils.encoding import smart_text
-
-import eopayment
+from django.views.decorators.csrf import csrf_exempt
+from django.views.generic import DetailView, ListView, TemplateView, View
 
 from combo.data.models import Page
-from combo.utils import check_request_signature, aes_hex_decrypt, DecryptionError
 from combo.profile.utils import get_user_from_name_id
 from combo.public.views import publish_page
+from combo.utils import DecryptionError, aes_hex_decrypt, check_request_signature
 
 from .models import (
-    Regie,
+    EXPIRED,
     BasketItem,
-    Transaction,
-    TransactionOperation,
     LingoBasketCell,
-    SelfDeclaredInvoicePayment,
     PaymentBackend,
-    EXPIRED,
+    Regie,
     RemoteInvoiceException,
+    SelfDeclaredInvoicePayment,
+    Transaction,
+    TransactionOperation,
 )
 from .utils import signing_dumps, signing_loads
 
diff --git a/combo/apps/maps/forms.py b/combo/apps/maps/forms.py
index d0ba6771..15b08e39 100644
--- a/combo/apps/maps/forms.py
+++ b/combo/apps/maps/forms.py
@@ -20,6 +20,7 @@ from django.utils.text import slugify
 from django.utils.translation import ugettext_lazy as _
 
 from combo.data.fields import TemplatableURLField
+
 from .models import MapLayer, MapLayerOptions
 
 
diff --git a/combo/apps/maps/manager_views.py b/combo/apps/maps/manager_views.py
index 1473977d..b6165519 100644
--- a/combo/apps/maps/manager_views.py
+++ b/combo/apps/maps/manager_views.py
@@ -14,17 +14,16 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.urls import reverse, reverse_lazy
 from django.http import Http404
 from django.shortcuts import get_object_or_404
+from django.urls import reverse, reverse_lazy
 from django.utils.translation import ugettext_lazy as _
-from django.views.generic import ListView, CreateView, UpdateView, DeleteView
+from django.views.generic import CreateView, DeleteView, ListView, UpdateView
 
 from combo.data.models import CellBase, PageSnapshot
-from .models import Map
-from .models import MapLayer
-from .models import MapLayerOptions
+
 from .forms import MapLayerForm, MapLayerOptionsForm
+from .models import Map, MapLayer, MapLayerOptions
 
 
 class MapLayerMixin(object):
diff --git a/combo/apps/maps/migrations/0001_initial.py b/combo/apps/maps/migrations/0001_initial.py
index be3d160a..2a55f0db 100644
--- a/combo/apps/maps/migrations/0001_initial.py
+++ b/combo/apps/maps/migrations/0001_initial.py
@@ -1,9 +1,10 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from combo.apps.maps.models import ICONS
 from django.db import migrations, models
 
+from combo.apps.maps.models import ICONS
+
 
 class Migration(migrations.Migration):
 
diff --git a/combo/apps/maps/migrations/0008_map_layer_options.py b/combo/apps/maps/migrations/0008_map_layer_options.py
index 2d92cd68..854f51af 100644
--- a/combo/apps/maps/migrations/0008_map_layer_options.py
+++ b/combo/apps/maps/migrations/0008_map_layer_options.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/maps/models.py b/combo/apps/maps/models.py
index 329585a7..9a3df1dc 100644
--- a/combo/apps/maps/models.py
+++ b/combo/apps/maps/models.py
@@ -16,25 +16,22 @@
 
 import json
 
-from django.core import serializers
-from django.core import validators
+import pyproj
+from django import forms
+from django.conf import settings
+from django.core import serializers, validators
 from django.db import models
+from django.urls import reverse
 from django.utils import six
 from django.utils.encoding import python_2_unicode_compatible
 from django.utils.html import escape
 from django.utils.text import slugify
 from django.utils.translation import ugettext_lazy as _
-from django.urls import reverse
-from django import forms
-from django.conf import settings
-
-import pyproj
 from requests.models import PreparedRequest
 
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
-from combo.utils import requests, get_templated_url
-
+from combo.data.models import CellBase
+from combo.utils import get_templated_url, requests
 
 KIND = [
     ('tiles', _('Tiles')),
diff --git a/combo/apps/maps/urls.py b/combo/apps/maps/urls.py
index 6912ee7d..7a89418a 100644
--- a/combo/apps/maps/urls.py
+++ b/combo/apps/maps/urls.py
@@ -14,12 +14,11 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.conf.urls import url, include
+from django.conf.urls import include, url
 
 from combo.urls_utils import decorated_includes, manager_required
 
 from . import manager_views
-
 from .views import GeojsonView
 
 maps_manager_urls = [
diff --git a/combo/apps/newsletters/migrations/0001_initial.py b/combo/apps/newsletters/migrations/0001_initial.py
index 621a1b11..bd8eb6cd 100644
--- a/combo/apps/newsletters/migrations/0001_initial.py
+++ b/combo/apps/newsletters/migrations/0001_initial.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/newsletters/migrations/0003_newsletterscell_last_update_timestamp.py b/combo/apps/newsletters/migrations/0003_newsletterscell_last_update_timestamp.py
index 65a84708..521484c8 100644
--- a/combo/apps/newsletters/migrations/0003_newsletterscell_last_update_timestamp.py
+++ b/combo/apps/newsletters/migrations/0003_newsletterscell_last_update_timestamp.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/apps/newsletters/models.py b/combo/apps/newsletters/models.py
index ef4d4f57..a6d4f580 100644
--- a/combo/apps/newsletters/models.py
+++ b/combo/apps/newsletters/models.py
@@ -14,20 +14,19 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-import logging
 import json
+import logging
 
-from requests.exceptions import RequestException, HTTPError
-
+from django.conf import settings
 from django.db import models
-from django.utils.translation import ugettext_lazy as _
-from django.template.defaultfilters import slugify
 from django.forms import models as model_forms
-from django.conf import settings
+from django.template.defaultfilters import slugify
 from django.utils.http import urlencode
+from django.utils.translation import ugettext_lazy as _
+from requests.exceptions import HTTPError, RequestException
 
-from combo.data.models import CellBase
 from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 from combo.utils import requests
 
 from .forms import NewslettersManageForm
diff --git a/combo/apps/newsletters/urls.py b/combo/apps/newsletters/urls.py
index a5509fc7..c53a0265 100644
--- a/combo/apps/newsletters/urls.py
+++ b/combo/apps/newsletters/urls.py
@@ -1,5 +1,5 @@
-from django.contrib.auth.decorators import login_required
 from django.conf.urls import url
+from django.contrib.auth.decorators import login_required
 
 from .views import NewslettersView
 
diff --git a/combo/apps/newsletters/views.py b/combo/apps/newsletters/views.py
index 805c7307..0e333065 100644
--- a/combo/apps/newsletters/views.py
+++ b/combo/apps/newsletters/views.py
@@ -14,10 +14,10 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.views.generic import FormView
-from django.utils.translation import ugettext_lazy as _
 from django.contrib import messages
 from django.http import HttpResponseRedirect
+from django.utils.translation import ugettext_lazy as _
+from django.views.generic import FormView
 
 from .forms import NewslettersManageForm
 from .models import NewslettersCell, SubscriptionsSaveError
diff --git a/combo/apps/notifications/api_views.py b/combo/apps/notifications/api_views.py
index 3d233ab1..8e82c913 100644
--- a/combo/apps/notifications/api_views.py
+++ b/combo/apps/notifications/api_views.py
@@ -15,8 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from django.utils.encoding import force_text
-
-from rest_framework import authentication, serializers, permissions, status
+from rest_framework import authentication, permissions, serializers, status
 from rest_framework.generics import GenericAPIView
 from rest_framework.response import Response
 
diff --git a/combo/apps/notifications/migrations/0001_initial.py b/combo/apps/notifications/migrations/0001_initial.py
index 09aebf1c..ee2a2ee3 100644
--- a/combo/apps/notifications/migrations/0001_initial.py
+++ b/combo/apps/notifications/migrations/0001_initial.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/notifications/migrations/0002_notificationscell_last_update_timestamp.py b/combo/apps/notifications/migrations/0002_notificationscell_last_update_timestamp.py
index 20344111..243161db 100644
--- a/combo/apps/notifications/migrations/0002_notificationscell_last_update_timestamp.py
+++ b/combo/apps/notifications/migrations/0002_notificationscell_last_update_timestamp.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/apps/notifications/models.py b/combo/apps/notifications/models.py
index 70546bce..cfc866db 100644
--- a/combo/apps/notifications/models.py
+++ b/combo/apps/notifications/models.py
@@ -18,16 +18,15 @@ import re
 
 from django.conf import settings
 from django.db import models
-from django.utils.encoding import force_text, python_2_unicode_compatible
-from django.utils.translation import ugettext_lazy as _
-from django.utils.timezone import now, timedelta
 from django.db.models import Q
 from django.db.models.query import QuerySet
-
-from combo.data.models import CellBase
-from combo.data.library import register_cell_class
+from django.utils.encoding import force_text, python_2_unicode_compatible
+from django.utils.timezone import now, timedelta
+from django.utils.translation import ugettext_lazy as _
 
 from combo.apps.pwa.models import PwaSettings
+from combo.data.library import register_cell_class
+from combo.data.models import CellBase
 
 
 class NotificationQuerySet(QuerySet):
diff --git a/combo/apps/notifications/urls.py b/combo/apps/notifications/urls.py
index 378ee492..cf098835 100644
--- a/combo/apps/notifications/urls.py
+++ b/combo/apps/notifications/urls.py
@@ -16,7 +16,7 @@
 
 from django.conf.urls import url
 
-from .api_views import add, ack, forget, count
+from .api_views import ack, add, count, forget
 
 urlpatterns = [
     url('^api/notification/add/$', add, name='api-notification-add'),
diff --git a/combo/apps/pwa/manager_views.py b/combo/apps/pwa/manager_views.py
index 7f30c7ad..706beb33 100644
--- a/combo/apps/pwa/manager_views.py
+++ b/combo/apps/pwa/manager_views.py
@@ -14,17 +14,17 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.urls import reverse_lazy
-from django.db.models import Max
 from django import forms
+from django.db.models import Max
 from django.http import JsonResponse
+from django.urls import reverse_lazy
 from django.utils.translation import ugettext_lazy as _
-from django.views.generic import CreateView, UpdateView, DeleteView
+from django.views.generic import CreateView, DeleteView, UpdateView
 
 from combo.data.forms import get_page_choices
 
-from .models import PwaSettings, PwaNavigationEntry
 from .forms import PwaSettingsForm
+from .models import PwaNavigationEntry, PwaSettings
 
 
 class ManagerHomeView(UpdateView):
diff --git a/combo/apps/pwa/migrations/0001_initial.py b/combo/apps/pwa/migrations/0001_initial.py
index c12768d3..4e9c24a9 100644
--- a/combo/apps/pwa/migrations/0001_initial.py
+++ b/combo/apps/pwa/migrations/0001_initial.py
@@ -2,10 +2,10 @@
 # Generated by Django 1.11.12 on 2018-11-29 09:45
 from __future__ import unicode_literals
 
-from django.conf import settings
-from django.db import migrations, models
 import django.db.models.deletion
 import jsonfield.fields
+from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/pwa/migrations/0002_pwasettings.py b/combo/apps/pwa/migrations/0002_pwasettings.py
index 0ae0cf0e..77de5200 100644
--- a/combo/apps/pwa/migrations/0002_pwasettings.py
+++ b/combo/apps/pwa/migrations/0002_pwasettings.py
@@ -2,9 +2,10 @@
 # Generated by Django 1.11.12 on 2018-12-27 08:44
 from __future__ import unicode_literals
 
-import combo.data.fields
 from django.db import migrations, models
 
+import combo.data.fields
+
 
 class Migration(migrations.Migration):
 
diff --git a/combo/apps/pwa/migrations/0003_pwanavigationentry.py b/combo/apps/pwa/migrations/0003_pwanavigationentry.py
index c188428d..900fd592 100644
--- a/combo/apps/pwa/migrations/0003_pwanavigationentry.py
+++ b/combo/apps/pwa/migrations/0003_pwanavigationentry.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.12 on 2018-12-27 14:27
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/pwa/migrations/0006_auto_20190628_1042.py b/combo/apps/pwa/migrations/0006_auto_20190628_1042.py
index 51ec481c..6f08763a 100644
--- a/combo/apps/pwa/migrations/0006_auto_20190628_1042.py
+++ b/combo/apps/pwa/migrations/0006_auto_20190628_1042.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.12 on 2019-06-28 08:42
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/pwa/models.py b/combo/apps/pwa/models.py
index d4860d09..94bf1809 100644
--- a/combo/apps/pwa/models.py
+++ b/combo/apps/pwa/models.py
@@ -25,15 +25,14 @@ from django.core.files.base import ContentFile
 from django.core.files.storage import default_storage
 from django.db import models
 from django.utils import six
-from django.utils.encoding import force_text, force_bytes
+from django.utils.encoding import force_bytes, force_text
 from django.utils.six import BytesIO
 from django.utils.translation import ugettext_lazy as _
-
+from jsonfield import JSONField
 from py_vapid import Vapid
 
-from jsonfield import JSONField
-from combo.data.fields import RichTextField
 from combo import utils
+from combo.data.fields import RichTextField
 
 
 class PwaSettings(models.Model):
diff --git a/combo/apps/pwa/signals.py b/combo/apps/pwa/signals.py
index b6afe362..c0df8ffc 100644
--- a/combo/apps/pwa/signals.py
+++ b/combo/apps/pwa/signals.py
@@ -17,12 +17,11 @@
 import json
 import logging
 
+import pywebpush
 from django.conf import settings
 from django.db.models.signals import post_save
 from django.dispatch import receiver
-
 from py_vapid import Vapid
-import pywebpush
 
 from combo.apps.notifications.models import Notification
 
diff --git a/combo/apps/pwa/templatetags/pwa.py b/combo/apps/pwa/templatetags/pwa.py
index 6a3e509f..ec339aa5 100644
--- a/combo/apps/pwa/templatetags/pwa.py
+++ b/combo/apps/pwa/templatetags/pwa.py
@@ -19,7 +19,6 @@ from django.conf import settings
 
 from combo.apps.pwa.models import PwaNavigationEntry
 
-
 register = template.Library()
 
 
diff --git a/combo/apps/pwa/urls.py b/combo/apps/pwa/urls.py
index 45a8a6b1..1e4d21d7 100644
--- a/combo/apps/pwa/urls.py
+++ b/combo/apps/pwa/urls.py
@@ -14,26 +14,25 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.conf.urls import url, include
+from django.conf.urls import include, url
 
 from combo.urls_utils import decorated_includes, manager_required
 
 from .manager_views import (
-    ManagerHomeView,
     ManagerAddNavigationEntry,
-    ManagerEditNavigationEntry,
     ManagerDeleteNavigationEntry,
+    ManagerEditNavigationEntry,
+    ManagerHomeView,
     manager_navigation_order,
 )
 from .views import (
     manifest_json,
+    offline_page,
     service_worker_js,
     service_worker_registration_js,
     subscribe_push,
-    offline_page,
 )
 
-
 pwa_manager_urls = [
     url('^$', ManagerHomeView.as_view(), name='pwa-manager-homepage'),
     url('^navigation/add/$', ManagerAddNavigationEntry.as_view(), name='pwa-manager-navigation-add'),
diff --git a/combo/apps/pwa/views.py b/combo/apps/pwa/views.py
index 5f37994d..6d4cb098 100644
--- a/combo/apps/pwa/views.py
+++ b/combo/apps/pwa/views.py
@@ -17,20 +17,19 @@
 import base64
 import json
 
+from cryptography.hazmat.primitives import serialization
 from django.conf import settings
-
-from django.http import HttpResponse, HttpResponseForbidden, Http404, JsonResponse, HttpResponseBadRequest
-from django.template.loader import get_template, TemplateDoesNotExist
-from django.utils.encoding import force_text, force_bytes
+from django.http import Http404, HttpResponse, HttpResponseBadRequest, HttpResponseForbidden, JsonResponse
+from django.template.loader import TemplateDoesNotExist, get_template
+from django.utils.encoding import force_bytes, force_text
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import TemplateView
-
-from cryptography.hazmat.primitives import serialization
 from py_vapid import Vapid
 
-from .models import PushSubscription, PwaSettings
 from combo import VERSION
 
+from .models import PushSubscription, PwaSettings
+
 
 def manifest_json(request, *args, **kwargs):
     try:
diff --git a/combo/apps/search/forms.py b/combo/apps/search/forms.py
index 15eb485b..f9e0eea0 100644
--- a/combo/apps/search/forms.py
+++ b/combo/apps/search/forms.py
@@ -18,8 +18,9 @@ from django import forms
 from django.utils.translation import ugettext_lazy as _
 
 from combo.data.models import Page
-from .models import SearchCell
+
 from . import engines
+from .models import SearchCell
 
 
 class SearchCellForm(forms.ModelForm):
diff --git a/combo/apps/search/manager_views.py b/combo/apps/search/manager_views.py
index 9f47a0cc..cce48e07 100644
--- a/combo/apps/search/manager_views.py
+++ b/combo/apps/search/manager_views.py
@@ -14,14 +14,12 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.http import HttpResponse
-from django.http import HttpResponseRedirect
-from django.shortcuts import get_object_or_404
-from django.shortcuts import render
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import get_object_or_404, render
 from django.urls import reverse
 from django.utils.translation import ugettext_lazy as _
 
-from combo.apps.search.forms import TextEngineSettingsForm, CardsEngineSettingsForm
+from combo.apps.search.forms import CardsEngineSettingsForm, TextEngineSettingsForm
 from combo.apps.search.models import SearchCell
 from combo.data.models import PageSnapshot
 
diff --git a/combo/apps/search/migrations/0002_auto_20180720_1511.py b/combo/apps/search/migrations/0002_auto_20180720_1511.py
index 64ccb278..73bc1669 100644
--- a/combo/apps/search/migrations/0002_auto_20180720_1511.py
+++ b/combo/apps/search/migrations/0002_auto_20180720_1511.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations
 import jsonfield.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/search/migrations/0006_indexedcell.py b/combo/apps/search/migrations/0006_indexedcell.py
index 5e172ad6..39f73e11 100644
--- a/combo/apps/search/migrations/0006_indexedcell.py
+++ b/combo/apps/search/migrations/0006_indexedcell.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.17 on 2020-01-20 15:30
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/search/models.py b/combo/apps/search/models.py
index cae1323e..0f8bc347 100644
--- a/combo/apps/search/models.py
+++ b/combo/apps/search/models.py
@@ -14,25 +14,23 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from django import template
 from django.contrib.auth.models import Group
 from django.contrib.contenttypes import fields
 from django.contrib.contenttypes.models import ContentType
+from django.core.exceptions import PermissionDenied
 from django.db import models
-from django.utils.translation import ugettext_lazy as _
-from django import template
 from django.http import HttpResponse
-from django.core.exceptions import PermissionDenied
-from django.utils.functional import cached_property
-from django.utils.http import quote
 from django.shortcuts import get_object_or_404
 from django.template import RequestContext, Template
-
+from django.utils.functional import cached_property
+from django.utils.http import quote
+from django.utils.translation import ugettext_lazy as _
 from jsonfield import JSONField
 
-from combo.utils import requests
-from combo.data.models import CellBase, Page
 from combo.data.library import register_cell_class
-from combo.utils import get_templated_url
+from combo.data.models import CellBase, Page
+from combo.utils import get_templated_url, requests
 
 from . import engines
 
diff --git a/combo/apps/search/urls.py b/combo/apps/search/urls.py
index 17ce7cd9..efed09a5 100644
--- a/combo/apps/search/urls.py
+++ b/combo/apps/search/urls.py
@@ -14,11 +14,12 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.conf.urls import url, include
+from django.conf.urls import include, url
 
 from combo.urls_utils import decorated_includes, manager_required
-from .models import SearchCell
+
 from . import manager_views
+from .models import SearchCell
 
 search_manager_urls = [
     url(
diff --git a/combo/apps/search/utils.py b/combo/apps/search/utils.py
index af981191..f9223c32 100644
--- a/combo/apps/search/utils.py
+++ b/combo/apps/search/utils.py
@@ -18,10 +18,11 @@ from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector
 from django.db import connection
-from django.db.models import Q, Prefetch
+from django.db.models import Prefetch, Q
 from django.db.transaction import atomic
 
-from combo.data.models import Page, CellBase, ValidityInfo
+from combo.data.models import CellBase, Page, ValidityInfo
+
 from .models import IndexedCell
 
 
diff --git a/combo/apps/wcs/__init__.py b/combo/apps/wcs/__init__.py
index bc942d7a..7a2ca1d9 100644
--- a/combo/apps/wcs/__init__.py
+++ b/combo/apps/wcs/__init__.py
@@ -20,7 +20,8 @@ import django.apps
 from django.conf import settings
 from django.urls import reverse
 from django.utils.encoding import force_bytes
-from django.utils.translation import ugettext_lazy as _, pgettext_lazy
+from django.utils.translation import pgettext_lazy
+from django.utils.translation import ugettext_lazy as _
 
 
 class AppConfig(django.apps.AppConfig):
@@ -46,6 +47,7 @@ class AppConfig(django.apps.AppConfig):
 
     def get_card_search_engines(self, wcs_services):
         from combo.data.models import Page
+
         from .utils import get_wcs_json
 
         pages_with_sub_slug = Page.objects.exclude(sub_slug='')
@@ -125,12 +127,13 @@ class AppConfig(django.apps.AppConfig):
 
     def update_db_cache(self):
         from combo.data.models import CellBase
+
         from .models import (
-            WcsFormCell,
+            WcsCardInfosCell,
+            WcsCardsCell,
             WcsCategoryCell,
+            WcsFormCell,
             WcsFormsOfCategoryCell,
-            WcsCardsCell,
-            WcsCardInfosCell,
         )
 
         models_to_update = [
diff --git a/combo/apps/wcs/forms.py b/combo/apps/wcs/forms.py
index 506abf78..f4acaa5e 100644
--- a/combo/apps/wcs/forms.py
+++ b/combo/apps/wcs/forms.py
@@ -21,13 +21,13 @@ from django.utils.translation import ugettext_lazy as _
 from combo.utils.forms import MultiSortWidget
 
 from .models import (
-    WcsFormCell,
+    WcsCardInfosCell,
+    WcsCardsCell,
     WcsCategoryCell,
-    WcsFormsOfCategoryCell,
-    WcsCurrentFormsCell,
     WcsCurrentDraftsCell,
-    WcsCardsCell,
-    WcsCardInfosCell,
+    WcsCurrentFormsCell,
+    WcsFormCell,
+    WcsFormsOfCategoryCell,
 )
 from .utils import get_wcs_options, get_wcs_services
 
diff --git a/combo/apps/wcs/migrations/0001_initial.py b/combo/apps/wcs/migrations/0001_initial.py
index 8d50d2dc..e87623b1 100644
--- a/combo/apps/wcs/migrations/0001_initial.py
+++ b/combo/apps/wcs/migrations/0001_initial.py
@@ -1,7 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
+
 import combo.apps.wcs.models
 
 
diff --git a/combo/apps/wcs/migrations/0002_auto_20150217_1402.py b/combo/apps/wcs/migrations/0002_auto_20150217_1402.py
index 73422c07..5705de54 100644
--- a/combo/apps/wcs/migrations/0002_auto_20150217_1402.py
+++ b/combo/apps/wcs/migrations/0002_auto_20150217_1402.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0003_auto_20150218_1151.py b/combo/apps/wcs/migrations/0003_auto_20150218_1151.py
index 62365ecf..4180a8ea 100644
--- a/combo/apps/wcs/migrations/0003_auto_20150218_1151.py
+++ b/combo/apps/wcs/migrations/0003_auto_20150218_1151.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0004_auto_20150218_1154.py b/combo/apps/wcs/migrations/0004_auto_20150218_1154.py
index e756d99f..b57337bf 100644
--- a/combo/apps/wcs/migrations/0004_auto_20150218_1154.py
+++ b/combo/apps/wcs/migrations/0004_auto_20150218_1154.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0005_auto_20150401_0758.py b/combo/apps/wcs/migrations/0005_auto_20150401_0758.py
index 05c21186..b558fb69 100644
--- a/combo/apps/wcs/migrations/0005_auto_20150401_0758.py
+++ b/combo/apps/wcs/migrations/0005_auto_20150401_0758.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0006_categoriescell.py b/combo/apps/wcs/migrations/0006_categoriescell.py
index 479f0221..5b3d98a8 100644
--- a/combo/apps/wcs/migrations/0006_categoriescell.py
+++ b/combo/apps/wcs/migrations/0006_categoriescell.py
@@ -1,7 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
+
 import combo.apps.wcs.models
 
 
diff --git a/combo/apps/wcs/migrations/0007_trackingcodeinputcell.py b/combo/apps/wcs/migrations/0007_trackingcodeinputcell.py
index b64930bd..8331c304 100644
--- a/combo/apps/wcs/migrations/0007_trackingcodeinputcell.py
+++ b/combo/apps/wcs/migrations/0007_trackingcodeinputcell.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py b/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py
index d64a6571..6e7353dd 100644
--- a/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py
+++ b/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0009_remove_wcscategorycell_link_page.py b/combo/apps/wcs/migrations/0009_remove_wcscategorycell_link_page.py
index b5062fa9..65b4b1b9 100644
--- a/combo/apps/wcs/migrations/0009_remove_wcscategorycell_link_page.py
+++ b/combo/apps/wcs/migrations/0009_remove_wcscategorycell_link_page.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0010_auto_20151029_1535.py b/combo/apps/wcs/migrations/0010_auto_20151029_1535.py
index f43eb939..79db827e 100644
--- a/combo/apps/wcs/migrations/0010_auto_20151029_1535.py
+++ b/combo/apps/wcs/migrations/0010_auto_20151029_1535.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0011_auto_20151215_1121.py b/combo/apps/wcs/migrations/0011_auto_20151215_1121.py
index 689e9d9c..e2cafcca 100644
--- a/combo/apps/wcs/migrations/0011_auto_20151215_1121.py
+++ b/combo/apps/wcs/migrations/0011_auto_20151215_1121.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py b/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py
index 247de4e3..f8ef98e6 100644
--- a/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py
+++ b/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0014_auto_20170214_2006.py b/combo/apps/wcs/migrations/0014_auto_20170214_2006.py
index dab70938..7b351f02 100644
--- a/combo/apps/wcs/migrations/0014_auto_20170214_2006.py
+++ b/combo/apps/wcs/migrations/0014_auto_20170214_2006.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py b/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py
index ec5c3c42..081c1e68 100644
--- a/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py
+++ b/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.8 on 2018-01-21 12:50
 from __future__ import unicode_literals
 
-from django.db import migrations
 import jsonfield.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0016_backofficesubmissioncell.py b/combo/apps/wcs/migrations/0016_backofficesubmissioncell.py
index 64f0e36c..66c5c32b 100644
--- a/combo/apps/wcs/migrations/0016_backofficesubmissioncell.py
+++ b/combo/apps/wcs/migrations/0016_backofficesubmissioncell.py
@@ -2,9 +2,10 @@
 # Generated by Django 1.11.12 on 2018-08-10 08:05
 from __future__ import unicode_literals
 
-import combo.apps.wcs.models
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
+
+import combo.apps.wcs.models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0017_wcscareformscell.py b/combo/apps/wcs/migrations/0017_wcscareformscell.py
index f1c71b8d..3be36c0d 100644
--- a/combo/apps/wcs/migrations/0017_wcscareformscell.py
+++ b/combo/apps/wcs/migrations/0017_wcscareformscell.py
@@ -2,9 +2,10 @@
 # Generated by Django 1.11.18 on 2019-10-18 13:48
 from __future__ import unicode_literals
 
-import combo.apps.wcs.models
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
+
+import combo.apps.wcs.models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py b/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py
index 277cb67d..a6d9b949 100644
--- a/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py
+++ b/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations
 import jsonfield.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0020_cards.py b/combo/apps/wcs/migrations/0020_cards.py
index 9a6b7e08..d88340d2 100644
--- a/combo/apps/wcs/migrations/0020_cards.py
+++ b/combo/apps/wcs/migrations/0020_cards.py
@@ -1,9 +1,10 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-import combo.apps.wcs.models
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
+
+import combo.apps.wcs.models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0021_card.py b/combo/apps/wcs/migrations/0021_card.py
index cc2c366b..a6ccabfa 100644
--- a/combo/apps/wcs/migrations/0021_card.py
+++ b/combo/apps/wcs/migrations/0021_card.py
@@ -1,10 +1,11 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-import combo.apps.wcs.models
-from django.db import migrations, models
 import django.db.models.deletion
 import jsonfield.fields
+from django.db import migrations, models
+
+import combo.apps.wcs.models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/migrations/0025_submission_categories.py b/combo/apps/wcs/migrations/0025_submission_categories.py
index 346255c6..29c5ed90 100644
--- a/combo/apps/wcs/migrations/0025_submission_categories.py
+++ b/combo/apps/wcs/migrations/0025_submission_categories.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations
 import jsonfield.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
diff --git a/combo/apps/wcs/models.py b/combo/apps/wcs/models.py
index 47b112f1..67b312b8 100644
--- a/combo/apps/wcs/models.py
+++ b/combo/apps/wcs/models.py
@@ -21,21 +21,19 @@ import logging
 
 from django.conf import settings
 from django.db import models
-from django.forms import models as model_forms
 from django.forms import Select
+from django.forms import models as model_forms
 from django.utils.text import slugify
 from django.utils.translation import ugettext_lazy as _
-
 from jsonfield import JSONField
 from requests.exceptions import RequestException
 
-from combo.data.models import CellBase, Page
-from combo.data.library import register_cell_class
 from combo import utils
+from combo.data.library import register_cell_class
+from combo.data.models import CellBase, Page
 from combo.utils import requests
 
-from .utils import get_wcs_json, is_wcs_enabled, get_wcs_services
-
+from .utils import get_wcs_json, get_wcs_services, is_wcs_enabled
 
 invalid_reason_codes = {
     'wcs_form_not_defined': _('No form set'),
diff --git a/combo/apps/wcs/templatetags/wcs.py b/combo/apps/wcs/templatetags/wcs.py
index 2d3caac2..4b4b1e46 100644
--- a/combo/apps/wcs/templatetags/wcs.py
+++ b/combo/apps/wcs/templatetags/wcs.py
@@ -16,7 +16,6 @@
 
 from django import template
 
-
 register = template.Library()
 
 
diff --git a/combo/apps/wcs/utils.py b/combo/apps/wcs/utils.py
index a8fdf897..62c6373d 100644
--- a/combo/apps/wcs/utils.py
+++ b/combo/apps/wcs/utils.py
@@ -17,7 +17,6 @@
 import json
 
 from django.conf import settings
-
 from requests.exceptions import RequestException
 
 from combo.utils import requests
diff --git a/combo/apps/wcs/views.py b/combo/apps/wcs/views.py
index b640200c..2b062547 100644
--- a/combo/apps/wcs/views.py
+++ b/combo/apps/wcs/views.py
@@ -16,25 +16,24 @@
 
 import re
 
-from django.contrib import messages
+import ratelimit.utils
 from django.conf import settings
+from django.contrib import messages
 from django.core.exceptions import DisallowedRedirect, PermissionDenied
+from django.http import HttpResponseBadRequest, HttpResponseRedirect, JsonResponse
 from django.urls import reverse
-from django.http import JsonResponse, HttpResponseRedirect, HttpResponseBadRequest
 from django.utils.http import urlquote
 from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.translation import ugettext_lazy as _
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import View
 
-import ratelimit.utils
+from combo.utils import requests
+from combo.utils.misc import is_url_from_known_service
 
 from .models import TrackingCodeInputCell
 from .utils import get_wcs_services
 
-from combo.utils import requests
-from combo.utils.misc import is_url_from_known_service
-
 
 class TrackingCodeView(View):
     http_method_names = ['post']
diff --git a/combo/context_processors.py b/combo/context_processors.py
index b42032ac..eafd630a 100644
--- a/combo/context_processors.py
+++ b/combo/context_processors.py
@@ -17,8 +17,8 @@
 
 from django.conf import settings
 
-from combo.utils.cache import cache_during_request
 from combo.apps.pwa.models import PwaSettings
+from combo.utils.cache import cache_during_request
 
 
 def template_vars(request):
diff --git a/combo/data/fields.py b/combo/data/fields.py
index c7523fba..05dd5c46 100644
--- a/combo/data/fields.py
+++ b/combo/data/fields.py
@@ -16,14 +16,13 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import ckeditor.fields
 from django import forms
 from django.conf import settings
 from django.core import validators
 from django.forms.widgets import TextInput
 from django.utils.encoding import force_text
 
-import ckeditor.fields
-
 
 class RichTextField(ckeditor.fields.RichTextField):
     def formfield(self, **kwargs):
diff --git a/combo/data/forms.py b/combo/data/forms.py
index 6b7dbd62..a8d6336f 100644
--- a/combo/data/forms.py
+++ b/combo/data/forms.py
@@ -18,9 +18,10 @@ import copy
 
 from django import forms
 
-from .models import Page, MenuCell, LinkCell, LinkListCell, ConfigJsonCell
 from combo.utils import cache_during_request
 
+from .models import ConfigJsonCell, LinkCell, LinkListCell, MenuCell, Page
+
 
 @cache_during_request
 def get_page_choices():
diff --git a/combo/data/management/commands/import_site.py b/combo/data/management/commands/import_site.py
index f00daeed..7a5f01cb 100644
--- a/combo/data/management/commands/import_site.py
+++ b/combo/data/management/commands/import_site.py
@@ -20,7 +20,7 @@ import tarfile
 
 from django.core.management.base import BaseCommand, CommandError
 
-from combo.data.utils import import_site, import_site_tar, ImportSiteError
+from combo.data.utils import ImportSiteError, import_site, import_site_tar
 
 
 class Command(BaseCommand):
diff --git a/combo/data/migrations/0001_initial.py b/combo/data/migrations/0001_initial.py
index e18e399b..113c8809 100644
--- a/combo/data/migrations/0001_initial.py
+++ b/combo/data/migrations/0001_initial.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import ckeditor.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0002_auto_20150217_1327.py b/combo/data/migrations/0002_auto_20150217_1327.py
index 7547a9ea..a8c60aef 100644
--- a/combo/data/migrations/0002_auto_20150217_1327.py
+++ b/combo/data/migrations/0002_auto_20150217_1327.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0003_menucell.py b/combo/data/migrations/0003_menucell.py
index eb85fd9c..a110d2b1 100644
--- a/combo/data/migrations/0003_menucell.py
+++ b/combo/data/migrations/0003_menucell.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0004_menucell_depth.py b/combo/data/migrations/0004_menucell_depth.py
index f222c825..e68d9a3a 100644
--- a/combo/data/migrations/0004_menucell_depth.py
+++ b/combo/data/migrations/0004_menucell_depth.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0005_auto_20150226_0903.py b/combo/data/migrations/0005_auto_20150226_0903.py
index 5c77cc4b..d60a8467 100644
--- a/combo/data/migrations/0005_auto_20150226_0903.py
+++ b/combo/data/migrations/0005_auto_20150226_0903.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import ckeditor.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0006_linkcell.py b/combo/data/migrations/0006_linkcell.py
index cc30f855..3769ac43 100644
--- a/combo/data/migrations/0006_linkcell.py
+++ b/combo/data/migrations/0006_linkcell.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0007_auto_20150529_1003.py b/combo/data/migrations/0007_auto_20150529_1003.py
index 0609ebc5..3f34d355 100644
--- a/combo/data/migrations/0007_auto_20150529_1003.py
+++ b/combo/data/migrations/0007_auto_20150529_1003.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0008_auto_20150529_1504.py b/combo/data/migrations/0008_auto_20150529_1504.py
index 12f8a4d0..691cef40 100644
--- a/combo/data/migrations/0008_auto_20150529_1504.py
+++ b/combo/data/migrations/0008_auto_20150529_1504.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0009_auto_20150529_2247.py b/combo/data/migrations/0009_auto_20150529_2247.py
index 951b6111..7f93411b 100644
--- a/combo/data/migrations/0009_auto_20150529_2247.py
+++ b/combo/data/migrations/0009_auto_20150529_2247.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0010_feedcell.py b/combo/data/migrations/0010_feedcell.py
index 5b5262a2..93dac910 100644
--- a/combo/data/migrations/0010_feedcell.py
+++ b/combo/data/migrations/0010_feedcell.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0011_auto_20151028_1047.py b/combo/data/migrations/0011_auto_20151028_1047.py
index 43f1a692..4ac7fde8 100644
--- a/combo/data/migrations/0011_auto_20151028_1047.py
+++ b/combo/data/migrations/0011_auto_20151028_1047.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0012_auto_20151029_1535.py b/combo/data/migrations/0012_auto_20151029_1535.py
index b6b4ad79..d6bbf189 100644
--- a/combo/data/migrations/0012_auto_20151029_1535.py
+++ b/combo/data/migrations/0012_auto_20151029_1535.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0013_parameterscell.py b/combo/data/migrations/0013_parameterscell.py
index a3706a79..130f5ed8 100644
--- a/combo/data/migrations/0013_parameterscell.py
+++ b/combo/data/migrations/0013_parameterscell.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0014_menucell_initial_level.py b/combo/data/migrations/0014_menucell_initial_level.py
index 3cef2c2f..292f2a84 100644
--- a/combo/data/migrations/0014_menucell_initial_level.py
+++ b/combo/data/migrations/0014_menucell_initial_level.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0015_feedcell_title.py b/combo/data/migrations/0015_feedcell_title.py
index eef50ac6..8e3cab94 100644
--- a/combo/data/migrations/0015_feedcell_title.py
+++ b/combo/data/migrations/0015_feedcell_title.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import models, migrations
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0021_jsoncell.py b/combo/data/migrations/0021_jsoncell.py
index a58a8e81..8a9ee194 100644
--- a/combo/data/migrations/0021_jsoncell.py
+++ b/combo/data/migrations/0021_jsoncell.py
@@ -1,9 +1,10 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-import combo.data.models
 from django.db import migrations, models
 
+import combo.data.models
+
 
 class Migration(migrations.Migration):
 
diff --git a/combo/data/migrations/0022_auto_20170214_2006.py b/combo/data/migrations/0022_auto_20170214_2006.py
index 983c46ec..eef46909 100644
--- a/combo/data/migrations/0022_auto_20170214_2006.py
+++ b/combo/data/migrations/0022_auto_20170214_2006.py
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import datetime
+
+from django.db import migrations, models
 from django.utils.timezone import utc
 
 
diff --git a/combo/data/migrations/0024_configjsoncell.py b/combo/data/migrations/0024_configjsoncell.py
index 65977438..8e2e4d7c 100644
--- a/combo/data/migrations/0024_configjsoncell.py
+++ b/combo/data/migrations/0024_configjsoncell.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import jsonfield.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0025_jsoncell_varnames_str.py b/combo/data/migrations/0025_jsoncell_varnames_str.py
index 52905662..e916e801 100644
--- a/combo/data/migrations/0025_jsoncell_varnames_str.py
+++ b/combo/data/migrations/0025_jsoncell_varnames_str.py
@@ -2,6 +2,7 @@
 from __future__ import unicode_literals
 
 from django.db import migrations, models
+
 import combo.data.fields
 
 
diff --git a/combo/data/migrations/0029_auto_20171022_1242.py b/combo/data/migrations/0029_auto_20171022_1242.py
index 60c2aec2..bcb7dd07 100644
--- a/combo/data/migrations/0029_auto_20171022_1242.py
+++ b/combo/data/migrations/0029_auto_20171022_1242.py
@@ -1,9 +1,10 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-import combo.data.models
 from django.db import migrations, models
 
+import combo.data.models
+
 
 class Migration(migrations.Migration):
 
diff --git a/combo/data/migrations/0033_auto_20180401_1300.py b/combo/data/migrations/0033_auto_20180401_1300.py
index 30f691de..99813c28 100644
--- a/combo/data/migrations/0033_auto_20180401_1300.py
+++ b/combo/data/migrations/0033_auto_20180401_1300.py
@@ -2,10 +2,10 @@
 # Generated by Django 1.11.8 on 2018-04-01 13:00
 from __future__ import unicode_literals
 
-from django.conf import settings
-from django.db import migrations, models
 import django.db.models.deletion
 import jsonfield.fields
+from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0034_redirect.py b/combo/data/migrations/0034_redirect.py
index cc044ece..e4dd394f 100644
--- a/combo/data/migrations/0034_redirect.py
+++ b/combo/data/migrations/0034_redirect.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.12 on 2018-07-13 06:40
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0035_page_related_cells.py b/combo/data/migrations/0035_page_related_cells.py
index 34406ceb..3b26ab9e 100644
--- a/combo/data/migrations/0035_page_related_cells.py
+++ b/combo/data/migrations/0035_page_related_cells.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.12 on 2018-06-02 11:03
 from __future__ import unicode_literals
 
-from django.db import migrations
 import jsonfield.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0039_link_list_cell.py b/combo/data/migrations/0039_link_list_cell.py
index 0bbc85c1..51aa9f7b 100644
--- a/combo/data/migrations/0039_link_list_cell.py
+++ b/combo/data/migrations/0039_link_list_cell.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0042_page_creation_timestamp.py b/combo/data/migrations/0042_page_creation_timestamp.py
index f6e754af..d4f254a8 100644
--- a/combo/data/migrations/0042_page_creation_timestamp.py
+++ b/combo/data/migrations/0042_page_creation_timestamp.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.18 on 2020-01-31 15:40
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.utils.timezone
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/migrations/0044_validity_info.py b/combo/data/migrations/0044_validity_info.py
index c181b3c8..6ee50906 100644
--- a/combo/data/migrations/0044_validity_info.py
+++ b/combo/data/migrations/0044_validity_info.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/data/models.py b/combo/data/models.py
index 04887230..938e8977 100644
--- a/combo/data/models.py
+++ b/combo/data/models.py
@@ -17,55 +17,51 @@
 import collections
 import copy
 import datetime
-import feedparser
 import hashlib
 import html
 import json
 import logging
 import os
 import re
-import requests
 import subprocess
 
+import feedparser
+import requests
+from django import forms, template
 from django.apps import apps
 from django.conf import settings
 from django.contrib import messages
 from django.contrib.auth.models import Group
-from django.contrib.contenttypes.fields import GenericForeignKey
-from django.contrib.contenttypes.fields import GenericRelation
+from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
 from django.contrib.contenttypes.models import ContentType
-from django.core.cache import cache
-from django.core.exceptions import ObjectDoesNotExist, ValidationError, PermissionDenied
 from django.core import serializers
+from django.core.cache import cache
+from django.core.exceptions import ObjectDoesNotExist, PermissionDenied, ValidationError
 from django.db import models, transaction
-from django.db.models.base import ModelBase
-from django.db.models.signals import pre_save, post_save, post_delete
 from django.db.models import Max, Q
+from django.db.models.base import ModelBase
+from django.db.models.signals import post_delete, post_save, pre_save
 from django.dispatch import receiver
 from django.forms import models as model_forms
-from django import forms
-from django import template
+from django.forms.widgets import MediaDefiningClass
+from django.template import Context, TemplateDoesNotExist, TemplateSyntaxError, engines
+from django.test.client import RequestFactory
 from django.utils import six, timezone
-from django.utils.encoding import python_2_unicode_compatible, force_text, smart_bytes
+from django.utils.encoding import force_text, python_2_unicode_compatible, smart_bytes
 from django.utils.html import strip_tags
 from django.utils.safestring import mark_safe
 from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.text import slugify
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _
-from django.forms.widgets import MediaDefiningClass
-from django.template import Context, engines, TemplateDoesNotExist, TemplateSyntaxError
-from django.test.client import RequestFactory
-
-from .fields import RichTextField, TemplatableURLField
-
 from jsonfield import JSONField
 
-from .library import register_cell_class, get_cell_classes, get_cell_class
-
 from combo import utils
 from combo.utils import NothingInCacheException
 
+from .fields import RichTextField, TemplatableURLField
+from .library import get_cell_class, get_cell_classes, register_cell_class
+
 
 class PostException(Exception):
     pass
diff --git a/combo/data/utils.py b/combo/data/utils.py
index 253b5685..cca3a8a1 100644
--- a/combo/data/utils.py
+++ b/combo/data/utils.py
@@ -26,12 +26,10 @@ from django.utils.encoding import python_2_unicode_compatible
 from django.utils.translation import ugettext_lazy as _
 
 from combo.apps.assets.models import Asset
-from combo.apps.assets.utils import add_tar_content
-from combo.apps.assets.utils import clean_assets_files
-from combo.apps.assets.utils import untar_assets_files
-from combo.apps.assets.utils import tar_assets_files
+from combo.apps.assets.utils import add_tar_content, clean_assets_files, tar_assets_files, untar_assets_files
 from combo.apps.maps.models import MapLayer
-from combo.apps.pwa.models import PwaSettings, PwaNavigationEntry
+from combo.apps.pwa.models import PwaNavigationEntry, PwaSettings
+
 from .models import Page
 
 
diff --git a/combo/manager/fields.py b/combo/manager/fields.py
index 382617d3..98340021 100644
--- a/combo/manager/fields.py
+++ b/combo/manager/fields.py
@@ -17,8 +17,8 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-from django.core import validators
 from django import forms
+from django.core import validators
 
 
 def get_available_image_extensions():
diff --git a/combo/manager/forms.py b/combo/manager/forms.py
index 6611e9f7..71b0582d 100644
--- a/combo/manager/forms.py
+++ b/combo/manager/forms.py
@@ -20,12 +20,10 @@ from django import forms
 from django.conf import settings
 from django.contrib.auth.models import Group
 from django.core.exceptions import ValidationError
-from django.template.loader import get_template, TemplateDoesNotExist
+from django.template.loader import TemplateDoesNotExist, get_template
 from django.utils.translation import ugettext_lazy as _
 
-from combo.data.models import Page
-from combo.data.models import ParentContentCell
-from combo.data.models import compile_sub_slug
+from combo.data.models import Page, ParentContentCell, compile_sub_slug
 
 from .fields import ImageIncludingSvgField
 
diff --git a/combo/manager/urls.py b/combo/manager/urls.py
index 8488d2c9..d957115e 100644
--- a/combo/manager/urls.py
+++ b/combo/manager/urls.py
@@ -14,13 +14,13 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.conf.urls import url, include
+import ckeditor.views as ckeditor_views
+from django.conf.urls import include, url
 from django.contrib.admin.views.decorators import staff_member_required
 from django.views.decorators.cache import never_cache
 
-import ckeditor.views as ckeditor_views
-
 from combo.apps.assets import views as assets_views
+
 from .. import plugins
 from . import views
 
diff --git a/combo/manager/views.py b/combo/manager/views.py
index bd6bf4a8..952fbe2a 100644
--- a/combo/manager/views.py
+++ b/combo/manager/views.py
@@ -14,56 +14,54 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-import hashlib
 import datetime
+import hashlib
 import json
-from operator import attrgetter
 import tarfile
+from operator import attrgetter
 
 from django.conf import settings
 from django.contrib import messages
 from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
+from django.http import Http404, HttpResponse, HttpResponseRedirect
+from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse, reverse_lazy
-from django.http import HttpResponse, HttpResponseRedirect, Http404
-from django.shortcuts import redirect
-from django.shortcuts import render
-from django.shortcuts import get_object_or_404
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import force_text, force_bytes
+from django.utils.encoding import force_bytes, force_text
 from django.utils.formats import date_format
 from django.utils.six import BytesIO
 from django.utils.timezone import localtime
+from django.utils.translation import ugettext_lazy as _
 from django.views.decorators.csrf import requires_csrf_token
 from django.views.generic import (
-    RedirectView,
-    DetailView,
     CreateView,
-    UpdateView,
-    ListView,
     DeleteView,
+    DetailView,
     FormView,
+    ListView,
+    RedirectView,
+    UpdateView,
 )
 
-from combo.data.models import Page, CellBase, ParentContentCell, PageSnapshot, LinkListCell
-from combo.data.library import get_cell_class
-from combo.data.utils import export_site, export_site_tar, import_site, import_site_tar, ImportSiteError
 from combo import plugins
+from combo.data.library import get_cell_class
+from combo.data.models import CellBase, LinkListCell, Page, PageSnapshot, ParentContentCell
+from combo.data.utils import ImportSiteError, export_site, export_site_tar, import_site, import_site_tar
 
 from .forms import (
+    CellVisibilityForm,
     PageAddForm,
-    PageEditTitleForm,
-    PageVisibilityForm,
-    SiteImportForm,
-    SiteExportForm,
+    PageDuplicateForm,
+    PageEditDescriptionForm,
+    PageEditIncludeInNavigationForm,
+    PageEditPictureForm,
     PageEditRedirectionForm,
-    PageSelectTemplateForm,
     PageEditSlugForm,
-    PageEditPictureForm,
-    PageEditIncludeInNavigationForm,
-    PageEditDescriptionForm,
-    CellVisibilityForm,
-    PageDuplicateForm,
+    PageEditTitleForm,
     PageExportForm,
+    PageSelectTemplateForm,
+    PageVisibilityForm,
+    SiteExportForm,
+    SiteImportForm,
 )
 
 
diff --git a/combo/middleware.py b/combo/middleware.py
index b5b3ba4c..4778cf07 100644
--- a/combo/middleware.py
+++ b/combo/middleware.py
@@ -18,7 +18,6 @@ import threading
 
 from django.utils.deprecation import MiddlewareMixin
 
-
 _requests = {}
 
 
diff --git a/combo/monkeypatch.py b/combo/monkeypatch.py
index c0c71425..127dc86f 100644
--- a/combo/monkeypatch.py
+++ b/combo/monkeypatch.py
@@ -14,18 +14,17 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from django.urls import reverse
+import ckeditor.views
+import ckeditor.widgets
+from ckeditor.image import pillow_backend
 from django.forms.utils import flatatt
 from django.template.loader import render_to_string
+from django.urls import reverse
 from django.utils.encoding import force_text
 from django.utils.html import conditional_escape
 from django.utils.safestring import mark_safe
 from django.utils.translation import get_language
 
-import ckeditor.views
-import ckeditor.widgets
-from ckeditor.image import pillow_backend
-
 
 def ckeditor_render(self, name, value, attrs=None, renderer=None):
     if value is None:
diff --git a/combo/plugins.py b/combo/plugins.py
index cd41db18..e445a73b 100644
--- a/combo/plugins.py
+++ b/combo/plugins.py
@@ -14,8 +14,8 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from functools import wraps
 import logging
+from functools import wraps
 
 from django.apps import apps
 from django.conf.urls import include, url
diff --git a/combo/profile/__init__.py b/combo/profile/__init__.py
index ae6bca2f..8bc7e072 100644
--- a/combo/profile/__init__.py
+++ b/combo/profile/__init__.py
@@ -44,9 +44,10 @@ class AppConfig(django.apps.AppConfig):
         get_user_model().add_to_class('get_name_id', user_get_name_id)
 
     def get_search_engines(self):
-        from combo.data.models import Page
         from django.conf import settings
 
+        from combo.data.models import Page
+
         user_page = Page.objects.filter(sub_slug='name_id').first()
         if not user_page:
             user_page = Page.objects.filter(sub_slug__contains='<name_id>').first()
diff --git a/combo/profile/migrations/0001_initial.py b/combo/profile/migrations/0001_initial.py
index b9101163..3c0ee90c 100644
--- a/combo/profile/migrations/0001_initial.py
+++ b/combo/profile/migrations/0001_initial.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 from django.conf import settings
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/profile/migrations/0002_profilecell.py b/combo/profile/migrations/0002_profilecell.py
index 87eef682..122049ba 100644
--- a/combo/profile/migrations/0002_profilecell.py
+++ b/combo/profile/migrations/0002_profilecell.py
@@ -2,8 +2,8 @@
 # Generated by Django 1.11.12 on 2018-08-10 13:52
 from __future__ import unicode_literals
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/combo/profile/models.py b/combo/profile/models.py
index 7edcb0ad..6e62a2b4 100644
--- a/combo/profile/models.py
+++ b/combo/profile/models.py
@@ -14,16 +14,16 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from collections import OrderedDict
 import copy
+from collections import OrderedDict
 
 from django.conf import settings
 from django.db import models
 from django.utils.dateparse import parse_date
 from django.utils.translation import ugettext_lazy as _
 
-from combo.data.models import JsonCellBase
 from combo.data.library import register_cell_class
+from combo.data.models import JsonCellBase
 
 
 class Profile(models.Model):
diff --git a/combo/public/admin.py b/combo/public/admin.py
index 3eb5e59f..604c7f2e 100644
--- a/combo/public/admin.py
+++ b/combo/public/admin.py
@@ -15,8 +15,8 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from django.contrib import admin
-from django.urls import reverse
 from django.shortcuts import redirect
+from django.urls import reverse
 from django.urls.exceptions import NoReverseMatch
 from django.views.decorators.cache import never_cache
 
diff --git a/combo/public/templatetags/combo.py b/combo/public/templatetags/combo.py
index 00f7d12a..e8c1553a 100644
--- a/combo/public/templatetags/combo.py
+++ b/combo/public/templatetags/combo.py
@@ -17,12 +17,12 @@
 from __future__ import absolute_import
 
 import datetime
-from decimal import Decimal
-from decimal import InvalidOperation as DecimalInvalidOperation
-from decimal import DivisionByZero as DecimalDivisionByZero
 import json
 import math
 import time
+from decimal import Decimal
+from decimal import DivisionByZero as DecimalDivisionByZero
+from decimal import InvalidOperation as DecimalInvalidOperation
 
 from django import template
 from django.core import signing
@@ -38,6 +38,7 @@ try:
     TOKEN_COMMENT = TokenType.COMMENT
 except ImportError:
     from django.template.base import TOKEN_BLOCK, TOKEN_VAR, TOKEN_COMMENT
+
 from django.template import defaultfilters
 from django.template.defaultfilters import stringfilter
 from django.utils import dateparse, six
@@ -46,12 +47,11 @@ from django.utils.html import format_html
 from django.utils.safestring import mark_safe
 from django.utils.timezone import is_naive, make_aware
 
+from combo.apps.dashboard.models import DashboardCell, Tile
 from combo.data.models import Page, Placeholder
 from combo.public.menu import get_menu_context
 from combo.utils import NothingInCacheException, flatten_context
 from combo.utils.date import make_date, make_datetime
-from combo.apps.dashboard.models import DashboardCell, Tile
-
 
 register = template.Library()
 
diff --git a/combo/public/urls.py b/combo/public/urls.py
index 172d94fe..7df37d35 100644
--- a/combo/public/urls.py
+++ b/combo/public/urls.py
@@ -17,6 +17,7 @@
 from django.conf.urls import url
 
 from combo.urls_utils import manager_required
+
 from . import views
 
 urlpatterns = [
diff --git a/combo/public/views.py b/combo/public/views.py
index f04a7dc3..1d568838 100644
--- a/combo/public/views.py
+++ b/combo/public/views.py
@@ -27,46 +27,45 @@ from django.contrib.auth.models import User
 from django.core import signing
 from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
 from django.db import transaction
+from django.forms.widgets import Media
 from django.http import (
     Http404,
     HttpResponse,
-    HttpResponseRedirect,
-    HttpResponsePermanentRedirect,
     HttpResponseBadRequest,
+    HttpResponsePermanentRedirect,
+    HttpResponseRedirect,
 )
 from django.shortcuts import render, resolve_url
 from django.template import engines
-from django.template.loader import get_template, TemplateDoesNotExist
+from django.template.loader import TemplateDoesNotExist, get_template
 from django.utils import lorem_ipsum, timezone
 from django.utils.encoding import force_text
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.six.moves.urllib import parse as urllib
+from django.utils.six.moves.urllib import parse as urlparse
+from django.utils.translation import ugettext as _
 from django.views.decorators.csrf import csrf_exempt
 from django.views.defaults import page_not_found
 
-from django.utils.translation import ugettext as _
-from django.forms.widgets import Media
-
 if 'mellon' in settings.INSTALLED_APPS:
     from mellon.utils import get_idps
 else:
     get_idps = lambda: []
 
+from combo import utils
 from combo.apps.assets.models import Asset
+from combo.apps.search.models import SearchCell
 from combo.data.models import (
     CellBase,
-    PostException,
     Page,
-    Redirect,
+    PageSnapshot,
     ParentContentCell,
+    PostException,
+    Redirect,
     TextCell,
-    PageSnapshot,
     extract_context_from_sub_slug,
 )
 from combo.profile.models import Profile
 from combo.profile.utils import get_user_from_name_id
-from combo.apps.search.models import SearchCell
-from combo import utils
 
 
 class LoginView(auth_views.LoginView):
diff --git a/combo/settings.py b/combo/settings.py
index 86b4e68b..8240c976 100644
--- a/combo/settings.py
+++ b/combo/settings.py
@@ -25,6 +25,7 @@ and to disable DEBUG mode in production.
 
 import copy
 import os
+
 from django.conf import global_settings
 from django.utils.translation import ugettext_lazy as _
 
diff --git a/combo/urls.py b/combo/urls.py
index e58f3b77..69aee1ec 100644
--- a/combo/urls.py
+++ b/combo/urls.py
@@ -21,12 +21,10 @@ from django.contrib import admin
 from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 from django.views.i18n import JavaScriptCatalog
 
-from .urls_utils import decorated_includes, manager_required
-
-from .public.views import login, logout, error404, mellon_page_hook
-from .manager.urls import urlpatterns as combo_manager_urls
-
 from . import plugins
+from .manager.urls import urlpatterns as combo_manager_urls
+from .public.views import error404, login, logout, mellon_page_hook
+from .urls_utils import decorated_includes, manager_required
 
 urlpatterns = [
     url(r'^manage/', decorated_includes(manager_required, include(combo_manager_urls))),
diff --git a/combo/urls_utils.py b/combo/urls_utils.py
index b4377745..b7b1bb14 100644
--- a/combo/urls_utils.py
+++ b/combo/urls_utils.py
@@ -17,7 +17,6 @@
 # Decorating URL includes, <https://djangosnippets.org/snippets/2532/>
 
 import django
-
 from django.contrib.auth.decorators import user_passes_test
 from django.core.exceptions import PermissionDenied
 
diff --git a/combo/utils/__init__.py b/combo/utils/__init__.py
index 0bec5dba..a5dc6ed3 100644
--- a/combo/utils/__init__.py
+++ b/combo/utils/__init__.py
@@ -16,8 +16,8 @@
 
 # import specific symbols for compatibility
 from .cache import cache_during_request
-from .crypto import aes_hex_decrypt, aes_hex_encrypt, DecryptionError
+from .crypto import DecryptionError, aes_hex_decrypt, aes_hex_encrypt
 from .misc import ellipsize, flatten_context
-from .requests_wrapper import requests, NothingInCacheException
+from .requests_wrapper import NothingInCacheException, requests
 from .signature import check_query, check_request_signature, sign_url
-from .urls import get_templated_url, TemplateError
+from .urls import TemplateError, get_templated_url
diff --git a/combo/utils/cache.py b/combo/utils/cache.py
index 03f5ab34..6fa2c16c 100644
--- a/combo/utils/cache.py
+++ b/combo/utils/cache.py
@@ -16,6 +16,7 @@
 
 from combo.middleware import get_request
 
+
 # _make_key and _HashedSeq imported/adapted from functools from Python 3.2+
 def _make_key(
     args,
diff --git a/combo/utils/crypto.py b/combo/utils/crypto.py
index f7ef0938..9c543477 100644
--- a/combo/utils/crypto.py
+++ b/combo/utils/crypto.py
@@ -16,10 +16,9 @@
 
 import binascii
 
+from Cryptodome import Random
 from Cryptodome.Cipher import AES
 from Cryptodome.Protocol.KDF import PBKDF2
-from Cryptodome import Random
-
 from django.utils import six
 from django.utils.encoding import force_text
 
diff --git a/combo/utils/misc.py b/combo/utils/misc.py
index 3ae9a6ad..5d31905a 100644
--- a/combo/utils/misc.py
+++ b/combo/utils/misc.py
@@ -16,11 +16,10 @@
 
 import html
 
-from django.utils.six.moves.urllib import parse as urlparse
-
 from django.conf import settings
 from django.template.context import BaseContext
 from django.utils.html import strip_tags
+from django.utils.six.moves.urllib import parse as urlparse
 
 
 def ellipsize(text, length=50):
diff --git a/combo/utils/requests_wrapper.py b/combo/utils/requests_wrapper.py
index 35933117..b5ffffbd 100644
--- a/combo/utils/requests_wrapper.py
+++ b/combo/utils/requests_wrapper.py
@@ -17,15 +17,15 @@
 import hashlib
 import logging
 
-from requests import Response, Session as RequestsSession
-from requests.auth import AuthBase
-
 from django.conf import settings
 from django.core.cache import cache
 from django.utils.encoding import smart_bytes
 from django.utils.http import urlencode
-from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.six import BytesIO
+from django.utils.six.moves.urllib import parse as urlparse
+from requests import Response
+from requests import Session as RequestsSession
+from requests.auth import AuthBase
 
 from .signature import sign_url
 
diff --git a/combo/utils/signature.py b/combo/utils/signature.py
index efd560e1..0cc74c7c 100644
--- a/combo/utils/signature.py
+++ b/combo/utils/signature.py
@@ -16,17 +16,16 @@
 
 import base64
 import datetime
-import hmac
 import hashlib
+import hmac
 import random
 
 from django.conf import settings
+from django.utils import six
 from django.utils.encoding import smart_bytes
 from django.utils.http import quote, urlencode
-from django.utils import six
 from django.utils.six.moves.urllib import parse as urlparse
 
-
 # Simple signature scheme for query strings
 
 
diff --git a/combo/utils/spooler.py b/combo/utils/spooler.py
index 3ab9d0e3..40298ccf 100644
--- a/combo/utils/spooler.py
+++ b/combo/utils/spooler.py
@@ -15,9 +15,9 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import contextlib
-from functools import wraps
 import logging
 import sys
+from functools import wraps
 
 from django.db import close_old_connections, connection
 
diff --git a/combo/utils/urls.py b/combo/utils/urls.py
index c8e5c4a1..e7426778 100644
--- a/combo/utils/urls.py
+++ b/combo/utils/urls.py
@@ -17,8 +17,8 @@
 import re
 
 from django.conf import settings
-from django.utils.encoding import force_text
 from django.template import Context, Template, TemplateSyntaxError, VariableDoesNotExist
+from django.utils.encoding import force_text
 from django.utils.http import quote
 
 
diff --git a/setup.py b/setup.py
index 4dbec0bd..0726a4a3 100644
--- a/setup.py
+++ b/setup.py
@@ -7,13 +7,13 @@ import os
 import re
 import subprocess
 import sys
-
-from setuptools.command.install_lib import install_lib as _install_lib
+from distutils.cmd import Command
 from distutils.command.build import build as _build
 from distutils.command.sdist import sdist
-from distutils.cmd import Command
 from distutils.spawn import find_executable
-from setuptools import setup, find_packages
+
+from setuptools import find_packages, setup
+from setuptools.command.install_lib import install_lib as _install_lib
 
 
 class eo_sdist(sdist):
diff --git a/tests/conftest.py b/tests/conftest.py
index 65e3ad45..e7aa5856 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,13 +1,11 @@
 import os
 import shutil
 
+import django_webtest
 import pytest
-
 from django.contrib.auth.models import User
 from django.core.files.storage import default_storage
 
-import django_webtest
-
 
 @pytest.fixture
 def clean_media():
diff --git a/tests/test_assets.py b/tests/test_assets.py
index 0bb4364a..a95062bc 100644
--- a/tests/test_assets.py
+++ b/tests/test_assets.py
@@ -4,21 +4,21 @@ import base64
 import os
 import tarfile
 
-from django.urls import reverse
-from django.core.files.storage import default_storage
+import pytest
 from django.core.files import File
+from django.core.files.storage import default_storage
+from django.urls import reverse
 from django.utils.six import BytesIO
 
-import pytest
-
 from combo.apps.assets.models import Asset
-from combo.apps.assets.utils import add_tar_content
-from combo.apps.assets.utils import clean_assets_files
-from combo.apps.assets.utils import export_assets
-from combo.apps.assets.utils import import_assets
-from combo.apps.assets.utils import untar_assets_files
-from combo.apps.assets.utils import tar_assets_files
-
+from combo.apps.assets.utils import (
+    add_tar_content,
+    clean_assets_files,
+    export_assets,
+    import_assets,
+    tar_assets_files,
+    untar_assets_files,
+)
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_calendar.py b/tests/test_calendar.py
index a80cff1d..16080d32 100644
--- a/tests/test_calendar.py
+++ b/tests/test_calendar.py
@@ -1,17 +1,16 @@
-import json
 import datetime
+import json
 
-import pytest
 import mock
-
+import pytest
 from django.contrib.auth.models import User
 from django.core.cache import cache
 from django.urls import reverse
 from django.utils.six.moves.urllib import parse as urlparse
 
-from combo.data.models import Page
 from combo.apps.calendar.models import BookingCalendar
-from combo.apps.calendar.utils import get_calendar, get_chrono_service, get_chrono_events
+from combo.apps.calendar.utils import get_calendar, get_chrono_events, get_chrono_service
+from combo.data.models import Page
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_cells.py b/tests/test_cells.py
index 4df5df4f..8bcb3b79 100644
--- a/tests/test_cells.py
+++ b/tests/test_cells.py
@@ -1,36 +1,36 @@
 import datetime
 import json
-import mock
 import os
+
+import mock
 import pytest
 import requests
-
-from combo.data.models import (
-    Page,
-    CellBase,
-    TextCell,
-    LinkCell,
-    MenuCell,
-    JsonCellBase,
-    JsonCell,
-    ConfigJsonCell,
-    LinkListCell,
-    FeedCell,
-    ValidityInfo,
-)
 from django.apps import apps
 from django.conf import settings
+from django.contrib.auth.models import User
 from django.db import connection
 from django.forms.widgets import Media
 from django.test import override_settings
 from django.test.client import RequestFactory
 from django.test.utils import CaptureQueriesContext
-from django.contrib.auth.models import User
 from django.urls import reverse
-from django.utils.encoding import force_text, force_bytes
+from django.utils.encoding import force_bytes, force_text
 from django.utils.timezone import now
 
 from combo.data.library import get_cell_classes
+from combo.data.models import (
+    CellBase,
+    ConfigJsonCell,
+    FeedCell,
+    JsonCell,
+    JsonCellBase,
+    LinkCell,
+    LinkListCell,
+    MenuCell,
+    Page,
+    TextCell,
+    ValidityInfo,
+)
 from combo.utils import NothingInCacheException
 
 from .test_manager import login
diff --git a/tests/test_cron.py b/tests/test_cron.py
index 319f5631..ae840e90 100644
--- a/tests/test_cron.py
+++ b/tests/test_cron.py
@@ -1,10 +1,9 @@
+import mock
+import pytest
 from django.core.management import call_command
 from django.core.management.base import CommandError
 from django.utils.six import StringIO
 
-import mock
-import pytest
-
 pytestmark = pytest.mark.django_db
 
 
diff --git a/tests/test_dashboard.py b/tests/test_dashboard.py
index 8a50899c..3211beed 100644
--- a/tests/test_dashboard.py
+++ b/tests/test_dashboard.py
@@ -1,21 +1,21 @@
 import datetime
 import json
-import mock
 import os
-import pytest
-from webtest import TestApp
 
+import mock
+import pytest
 from django.apps import apps
 from django.conf import settings
 from django.contrib.auth.models import User
 from django.core.management import call_command
+from django.test import override_settings
 from django.urls import reverse
 from django.utils.six.moves.urllib import parse as urlparse
-from django.test import override_settings
+from webtest import TestApp
 
-from combo.wsgi import application
-from combo.data.models import Page, CellBase, TextCell, ConfigJsonCell
 from combo.apps.dashboard.models import DashboardCell, Tile
+from combo.data.models import CellBase, ConfigJsonCell, Page, TextCell
+from combo.wsgi import application
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_dataviz.py b/tests/test_dataviz.py
index 28fec523..f8794f6d 100644
--- a/tests/test_dataviz.py
+++ b/tests/test_dataviz.py
@@ -1,21 +1,20 @@
 import json
 import urllib.parse
+from datetime import date, timedelta
 
 import mock
 import pytest
-from datetime import timedelta, date
-from httmock import HTTMock, with_httmock, remember_called, urlmatch
-from requests.exceptions import HTTPError
-
 from django.apps import apps
-from django.contrib.auth.models import User, Group
+from django.contrib.auth.models import Group, User
 from django.db import connection
 from django.db.migrations.executor import MigrationExecutor
 from django.test import override_settings
 from django.utils import timezone
+from httmock import HTTMock, remember_called, urlmatch, with_httmock
+from requests.exceptions import HTTPError
 
+from combo.apps.dataviz.models import ChartNgCell, Gauge, Statistic, UnsupportedDataSet
 from combo.data.models import Page, ValidityInfo
-from combo.apps.dataviz.models import Gauge, ChartNgCell, UnsupportedDataSet, Statistic
 
 from .test_public import login, normal_user
 
diff --git a/tests/test_fargo.py b/tests/test_fargo.py
index 295070a5..6aa56d3e 100644
--- a/tests/test_fargo.py
+++ b/tests/test_fargo.py
@@ -1,11 +1,13 @@
 import json
+import re
+
 import mock
 import pytest
-import re
 from django.test import override_settings
 
 from combo.apps.fargo.models import RecentDocumentsCell
 from combo.data.models import Page
+
 from .test_manager import login
 
 pytestmark = pytest.mark.django_db
diff --git a/tests/test_gallery_cell.py b/tests/test_gallery_cell.py
index 352f8b38..5cc375ae 100644
--- a/tests/test_gallery_cell.py
+++ b/tests/test_gallery_cell.py
@@ -1,10 +1,11 @@
 # -*- coding: utf-8 -*-
 import os
-import pytest
 
+import pytest
 from django.urls import reverse
-from combo.data.models import Page
+
 from combo.apps.gallery.models import GalleryCell, Image
+from combo.data.models import Page
 
 from .test_manager import login
 
diff --git a/tests/test_import_export.py b/tests/test_import_export.py
index 6edae6ed..22c875a0 100644
--- a/tests/test_import_export.py
+++ b/tests/test_import_export.py
@@ -18,12 +18,12 @@ from django.utils.six import BytesIO, StringIO
 
 from combo.apps.assets.models import Asset
 from combo.apps.assets.utils import clean_assets_files
-from combo.apps.gallery.models import Image, GalleryCell
+from combo.apps.gallery.models import GalleryCell, Image
 from combo.apps.lingo.models import PaymentBackend, Regie
-from combo.apps.maps.models import MapLayer, Map, MapLayerOptions
-from combo.apps.pwa.models import PwaSettings, PwaNavigationEntry
+from combo.apps.maps.models import Map, MapLayer, MapLayerOptions
+from combo.apps.pwa.models import PwaNavigationEntry, PwaSettings
 from combo.data.models import Page, TextCell
-from combo.data.utils import export_site, import_site, MissingGroups
+from combo.data.utils import MissingGroups, export_site, import_site
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_kb.py b/tests/test_kb.py
index 89ee4784..66fc940b 100644
--- a/tests/test_kb.py
+++ b/tests/test_kb.py
@@ -14,13 +14,13 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.import pytest
 
-import pytest
 import re
 
+import pytest
 from django.test.client import RequestFactory
 
-from combo.data.models import CellBase, Page, TextCell
 from combo.apps.kb.models import LatestPageUpdatesCell
+from combo.data.models import CellBase, Page, TextCell
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_lingo_cells.py b/tests/test_lingo_cells.py
index 78e0ebf3..c7c62f01 100644
--- a/tests/test_lingo_cells.py
+++ b/tests/test_lingo_cells.py
@@ -2,21 +2,22 @@
 
 import eopayment
 import pytest
-
 from django.contrib.auth.models import User
 from django.test.client import RequestFactory
 from django.utils import timezone
 from django.utils.http import quote
 
-from combo.data.models import Page
-from combo.apps.lingo.models import Regie, BasketItem, Transaction
 from combo.apps.lingo.models import (
+    BasketItem,
     LingoBasketCell,
-    PaymentBackend,
-    LingoRecentTransactionsCell,
     LingoBasketLinkCell,
+    LingoRecentTransactionsCell,
+    PaymentBackend,
+    Regie,
     TipiPaymentFormCell,
+    Transaction,
 )
+from combo.data.models import Page
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_lingo_manager.py b/tests/test_lingo_manager.py
index 1d0c82d0..b4f1939d 100644
--- a/tests/test_lingo_manager.py
+++ b/tests/test_lingo_manager.py
@@ -1,27 +1,25 @@
 # -*- coding: utf-8 -*-
 
 import datetime
+from decimal import Decimal
 
+import eopayment
+import mock
+import pytest
 from django.contrib.auth.models import User
 from django.db import connection
 from django.test.utils import CaptureQueriesContext
-from django.utils.timezone import now
-from django.utils.timezone import make_aware
-
-import mock
-import pytest
+from django.utils.timezone import make_aware, now
 
-import eopayment
-from combo.data.models import Page
 from combo.apps.lingo.models import (
-    Regie,
-    BasketItem,
-    Transaction,
     ActiveItems,
-    TipiPaymentFormCell,
+    BasketItem,
     PaymentBackend,
+    Regie,
+    TipiPaymentFormCell,
+    Transaction,
 )
-from decimal import Decimal
+from combo.data.models import Page
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_lingo_payment.py b/tests/test_lingo_payment.py
index d0d64584..dea05239 100644
--- a/tests/test_lingo_payment.py
+++ b/tests/test_lingo_payment.py
@@ -1,40 +1,38 @@
+import json
+import uuid
 from contextlib import contextmanager
-import eopayment
-import pytest
 from datetime import datetime, timedelta
 from decimal import Decimal
-import json
-import mock
-import uuid
-
-from mellon.models import UserSAMLIdentifier
-from requests.exceptions import ConnectionError
-from requests.models import Response
 
+import eopayment
+import httmock
+import mock
+import pytest
 from django.apps import apps
+from django.conf import settings
 from django.contrib.auth.models import User
 from django.http.request import QueryDict
-from django.urls import reverse
-from django.conf import settings
 from django.test import override_settings
+from django.urls import reverse
 from django.utils import timezone
 from django.utils.six.moves.urllib import parse as urlparse
 from django.utils.timezone import utc
+from mellon.models import UserSAMLIdentifier
+from requests.exceptions import ConnectionError
+from requests.models import Response
 
-from combo.data.models import Page
 from combo.apps.lingo.models import (
-    Regie,
-    BasketItem,
-    Transaction,
-    TransactionOperation,
     EXPIRED,
+    BasketItem,
     LingoBasketCell,
     PaymentBackend,
+    Regie,
+    Transaction,
+    TransactionOperation,
 )
+from combo.apps.lingo.views import signing_dumps, signing_loads
+from combo.data.models import Page
 from combo.utils import sign_url
-from combo.apps.lingo.views import signing_loads, signing_dumps
-
-import httmock
 
 from .test_manager import login
 
diff --git a/tests/test_lingo_remote_regie.py b/tests/test_lingo_remote_regie.py
index f8780db5..4b927e22 100644
--- a/tests/test_lingo_remote_regie.py
+++ b/tests/test_lingo_remote_regie.py
@@ -2,34 +2,34 @@
 
 import copy
 import json
-import pytest
-import mock
 from decimal import Decimal
-from requests.models import Response
-from requests.exceptions import ConnectionError
 
+import mock
+import pytest
 from django.apps import apps
-from django.test.client import RequestFactory
-from django.test import override_settings
-from django.urls import reverse
 from django.conf import settings
+from django.contrib.auth.models import User
 from django.core.management import call_command
+from django.test import override_settings
+from django.test.client import RequestFactory
+from django.urls import reverse
 from django.utils.encoding import force_bytes, force_text
 from django.utils.six.moves.urllib import parse as urlparse
-from django.utils.timezone import timedelta, now
-from django.contrib.auth.models import User
+from django.utils.timezone import now, timedelta
+from requests.exceptions import ConnectionError
+from requests.models import Response
 
-from combo.utils import check_query, aes_hex_encrypt
-from combo.data.models import Page
 from combo.apps.lingo.models import (
-    Regie,
     ActiveItems,
+    BasketItem,
     ItemsHistory,
+    PaymentBackend,
+    Regie,
     SelfDeclaredInvoicePayment,
     Transaction,
-    BasketItem,
-    PaymentBackend,
 )
+from combo.data.models import Page
+from combo.utils import aes_hex_encrypt, check_query
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_manager.py b/tests/test_manager.py
index e659fba0..4dba7042 100644
--- a/tests/test_manager.py
+++ b/tests/test_manager.py
@@ -1,51 +1,49 @@
 import base64
 import datetime
 import json
-import mock
 import os
 import re
 import shutil
 
+import mock
+import pytest
+from django.conf import settings
+from django.contrib.auth.models import Group
 from django.core.files import File
 from django.core.files.storage import default_storage
 from django.core.serializers.base import DeserializationError
-from django.urls import reverse
-from django.conf import settings
-from django.contrib.auth.models import Group
 from django.db import connection
 from django.template import TemplateSyntaxError
 from django.test import override_settings
 from django.test.client import RequestFactory
 from django.test.utils import CaptureQueriesContext
+from django.urls import reverse
 from django.utils.encoding import force_bytes, force_str
 from django.utils.http import urlencode
-from django.utils.timezone import now
 from django.utils.six import BytesIO
 from django.utils.six.moves.urllib import parse as urlparse
-
-import pytest
+from django.utils.timezone import now
 from webtest import Upload
 
+from combo.apps.assets.models import Asset
+from combo.apps.family.models import FamilyInfosCell
+from combo.apps.maps.models import MapLayer
+from combo.apps.search.models import SearchCell
 from combo.data.forms import LinkCellForm
 from combo.data.models import (
-    Page,
     CellBase,
-    TextCell,
-    LinkCell,
     ConfigJsonCell,
     JsonCell,
-    PageSnapshot,
+    LinkCell,
     LinkListCell,
-    ParentContentCell,
     MenuCell,
+    Page,
+    PageSnapshot,
+    ParentContentCell,
+    TextCell,
     ValidityInfo,
 )
-from combo.manager.forms import PageAddForm
-from combo.manager.forms import PageSelectTemplateForm
-from combo.apps.assets.models import Asset
-from combo.apps.maps.models import MapLayer
-from combo.apps.family.models import FamilyInfosCell
-from combo.apps.search.models import SearchCell
+from combo.manager.forms import PageAddForm, PageSelectTemplateForm
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_maps_cells.py b/tests/test_maps_cells.py
index cfa0cf6b..41fe609a 100644
--- a/tests/test_maps_cells.py
+++ b/tests/test_maps_cells.py
@@ -1,16 +1,15 @@
 # -*- coding: utf-8 -*-
 import json
+
 import mock
 import pytest
-
 from django.conf import settings
-from django.contrib.auth.models import User
-from django.contrib.auth.models import Group
-from django.urls import reverse
+from django.contrib.auth.models import Group, User
 from django.test.client import RequestFactory
+from django.urls import reverse
 
+from combo.apps.maps.models import Map, MapLayer, MapLayerOptions
 from combo.data.models import Page
-from combo.apps.maps.models import MapLayer, Map, MapLayerOptions
 
 from .test_manager import login
 
diff --git a/tests/test_maps_manager.py b/tests/test_maps_manager.py
index 57c7d90e..fb688d6e 100644
--- a/tests/test_maps_manager.py
+++ b/tests/test_maps_manager.py
@@ -1,11 +1,9 @@
 # -*- coding: utf-8 -*-
 
-import pytest
 import mock
+import pytest
 
-from combo.apps.maps.models import Map
-from combo.apps.maps.models import MapLayer
-from combo.apps.maps.models import MapLayerOptions
+from combo.apps.maps.models import Map, MapLayer, MapLayerOptions
 from combo.data.models import Page
 
 pytestmark = pytest.mark.django_db
diff --git a/tests/test_newsletters_cell.py b/tests/test_newsletters_cell.py
index 1fb9bc2d..26631621 100644
--- a/tests/test_newsletters_cell.py
+++ b/tests/test_newsletters_cell.py
@@ -1,16 +1,16 @@
 # -*- coding: utf-8 -*-
 
-import pytest
-import mock
-import requests
 import json
 
-from django.template.defaultfilters import slugify
+import mock
+import pytest
+import requests
 from django.contrib.auth.models import User
+from django.template.defaultfilters import slugify
 
-from combo.data.models import Page
-from combo.apps.newsletters.models import NewslettersCell, SubscriptionsSaveError
 from combo.apps.newsletters.forms import NewslettersManageForm
+from combo.apps.newsletters.models import NewslettersCell, SubscriptionsSaveError
+from combo.data.models import Page
 from combo.utils import check_query
 
 pytestmark = pytest.mark.django_db
diff --git a/tests/test_notification.py b/tests/test_notification.py
index 856b7835..62dc8b44 100644
--- a/tests/test_notification.py
+++ b/tests/test_notification.py
@@ -1,21 +1,19 @@
 import json
+from datetime import timedelta as timedelta
+from decimal import Decimal
 
 import mock
 import pytest
-from decimal import Decimal
-from datetime import timedelta as timedelta
-
 from django.contrib.auth.models import User
+from django.test import Client
 from django.test.client import RequestFactory
-from django.utils.encoding import force_text
-from django.utils.timezone import timedelta, now
 from django.urls import reverse
+from django.utils.encoding import force_text
+from django.utils.timezone import now, timedelta
 
-from django.test import Client
-
-from combo.data.models import Page
+from combo.apps.lingo.models import ActiveItems, PaymentBackend, Regie
 from combo.apps.notifications.models import Notification, NotificationsCell
-from combo.apps.lingo.models import Regie, ActiveItems, PaymentBackend
+from combo.data.models import Page
 
 from .test_manager import login as login_app
 
diff --git a/tests/test_pages.py b/tests/test_pages.py
index 209255df..587296ce 100644
--- a/tests/test_pages.py
+++ b/tests/test_pages.py
@@ -1,15 +1,16 @@
 import os
-import pytest
 import sys
 
+import pytest
 from django.conf import settings
-from django.contrib.auth.models import User, Group
+from django.contrib.auth.models import Group, User
 from django.test import override_settings
 from django.test.client import RequestFactory
 from django.utils.six import StringIO
-from combo.data.models import Page, PageSnapshot, CellBase, TextCell, LinkCell, LinkListCell
-from combo.data.management.commands.import_site import Command as ImportSiteCommand
+
 from combo.data.management.commands.export_site import Command as ExportSiteCommand
+from combo.data.management.commands.import_site import Command as ImportSiteCommand
+from combo.data.models import CellBase, LinkCell, LinkListCell, Page, PageSnapshot, TextCell
 from combo.manager.forms import PageVisibilityForm
 
 pytestmark = pytest.mark.django_db
diff --git a/tests/test_profile.py b/tests/test_profile.py
index b46b029e..7de3b4c9 100644
--- a/tests/test_profile.py
+++ b/tests/test_profile.py
@@ -1,8 +1,8 @@
 import datetime
 import json
+
 import mock
 import pytest
-
 from django.test import override_settings
 
 from combo.data.models import Page
diff --git a/tests/test_public.py b/tests/test_public.py
index 6657a7a4..af2e16d0 100644
--- a/tests/test_public.py
+++ b/tests/test_public.py
@@ -1,22 +1,21 @@
-import mock
-from webtest import TestApp
-
 import datetime
 import json
-import pytest
-import re
 import os
+import re
 
+import mock
+import pytest
 from django.conf import settings
-from django.contrib.auth.models import User, Group
+from django.contrib.auth.models import Group, User
 from django.core.files import File
-from django.urls import reverse
 from django.db import connection
+from django.test import override_settings
+from django.test.utils import CaptureQueriesContext
+from django.urls import reverse
 from django.utils.http import quote
 from django.utils.six import StringIO
 from django.utils.six.moves.urllib import parse as urlparse
-from django.test import override_settings
-from django.test.utils import CaptureQueriesContext
+from webtest import TestApp
 
 try:
     import mellon
@@ -24,21 +23,21 @@ except ImportError:
     mellon = None
 import requests
 
-from combo.wsgi import application
+from combo.apps.assets.models import Asset
+from combo.apps.family.models import FamilyInfosCell
 from combo.data.models import (
-    Page,
     CellBase,
-    TextCell,
-    ParentContentCell,
+    ConfigJsonCell,
     FeedCell,
+    JsonCell,
     LinkCell,
     LinkListCell,
-    ConfigJsonCell,
+    Page,
+    ParentContentCell,
     Redirect,
-    JsonCell,
+    TextCell,
 )
-from combo.apps.assets.models import Asset
-from combo.apps.family.models import FamilyInfosCell
+from combo.wsgi import application
 
 pytestmark = pytest.mark.django_db
 
diff --git a/tests/test_public_templatetags.py b/tests/test_public_templatetags.py
index 71fe61c1..d362ef00 100644
--- a/tests/test_public_templatetags.py
+++ b/tests/test_public_templatetags.py
@@ -4,19 +4,18 @@ import shutil
 import time
 
 import pytest
-
+from django.contrib.auth.models import AnonymousUser, Group, User
 from django.core.files import File
 from django.core.files.storage import default_storage
 from django.template import Context, Template
 from django.template.exceptions import TemplateSyntaxError
 from django.test import override_settings
 from django.test.client import RequestFactory
-from django.contrib.auth.models import User, Group, AnonymousUser
 from django.utils.six import StringIO
 from django.utils.timezone import now
 
-from combo.data.models import Page, TextCell
 from combo.apps.assets.models import Asset
+from combo.data.models import Page, TextCell
 from combo.profile.utils import get_user_from_name_id
 
 pytestmark = pytest.mark.django_db
diff --git a/tests/test_publik.py b/tests/test_publik.py
index dfbbda30..b2dd95e0 100644
--- a/tests/test_publik.py
+++ b/tests/test_publik.py
@@ -3,10 +3,9 @@ import json
 import re
 
 import pytest
-from webtest import TestApp
-
 from django.conf import settings
-from django.contrib.auth.models import User, Group
+from django.contrib.auth.models import Group, User
+from webtest import TestApp
 
 from combo.data.models import Page
 
diff --git a/tests/test_pwa.py b/tests/test_pwa.py
index f98d1925..1f5ec5b3 100644
--- a/tests/test_pwa.py
+++ b/tests/test_pwa.py
@@ -3,20 +3,18 @@ import os
 
 import mock
 import pytest
-from webtest import Upload
-
 import pywebpush
-
 from django.conf import settings
 from django.core.files import File
-from django.urls import reverse
 from django.template import Context, Template
 from django.test import override_settings
 from django.test.client import RequestFactory
+from django.urls import reverse
 from django.utils.six import BytesIO
+from webtest import Upload
 
 from combo.apps.notifications.models import Notification
-from combo.apps.pwa.models import PushSubscription, PwaSettings, PwaNavigationEntry
+from combo.apps.pwa.models import PushSubscription, PwaNavigationEntry, PwaSettings
 from combo.data.models import Page
 
 from .test_manager import login
diff --git a/tests/test_requests.py b/tests/test_requests.py
index 499dfb60..5b7b5747 100644
--- a/tests/test_requests.py
+++ b/tests/test_requests.py
@@ -2,11 +2,10 @@
 
 import mock
 import pytest
-
 from django.contrib.auth.models import AnonymousUser
 from django.utils.six.moves.urllib import parse as urlparse
 
-from combo.utils import requests, check_query, NothingInCacheException
+from combo.utils import NothingInCacheException, check_query, requests
 
 
 class MockUser(object):
diff --git a/tests/test_search.py b/tests/test_search.py
index 6cae04f3..0bcb993e 100644
--- a/tests/test_search.py
+++ b/tests/test_search.py
@@ -1,11 +1,11 @@
 import datetime
 import json
 import os
-import pytest
-import mock
 
+import mock
+import pytest
 from django.conf import settings
-from django.contrib.auth.models import AnonymousUser, User, Group
+from django.contrib.auth.models import AnonymousUser, Group, User
 from django.contrib.contenttypes.models import ContentType
 from django.db import connection
 from django.test import override_settings
@@ -14,18 +14,16 @@ from django.test.utils import CaptureQueriesContext
 from django.urls import reverse
 from django.utils.http import urlencode
 from django.utils.timezone import now
-
 from requests.exceptions import ConnectionError
 from requests.models import Response
 
 from combo.apps.search.engines import engines
-from combo.apps.search.models import SearchCell, IndexedCell
+from combo.apps.search.models import IndexedCell, SearchCell
 from combo.apps.search.utils import index_site, search_site
-from combo.data.models import Page, JsonCell, TextCell, MenuCell, LinkCell, PageSnapshot
+from combo.data.models import JsonCell, LinkCell, MenuCell, Page, PageSnapshot, TextCell
 
 from .test_manager import login
 
-
 pytestmark = pytest.mark.django_db
 
 
diff --git a/tests/test_utils.py b/tests/test_utils.py
index ca5af9e8..91e03922 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -1,13 +1,13 @@
 import pytest
-
-from combo.utils import aes_hex_decrypt, aes_hex_encrypt, get_templated_url, TemplateError
 from django.conf import settings
-from django.test import override_settings
+from django.contrib.auth.models import AnonymousUser
 from django.template import Context, RequestContext
+from django.test import override_settings
 from django.test.client import RequestFactory
-from django.contrib.auth.models import AnonymousUser
 from django.utils.encoding import force_bytes
 
+from combo.utils import TemplateError, aes_hex_decrypt, aes_hex_encrypt, get_templated_url
+
 
 class MockUser(object):
     email = 'foo=3@example.net'
diff --git a/tests/test_wcs.py b/tests/test_wcs.py
index a977a8fe..95835eae 100644
--- a/tests/test_wcs.py
+++ b/tests/test_wcs.py
@@ -1,45 +1,41 @@
 # -*- coding: utf-8 -*-
 
-import pytest
-
 import copy
 import json
 import re
 
+import mock
+import pytest
 from django.apps import apps
 from django.conf import settings
+from django.contrib.auth.models import AnonymousUser
 from django.core.cache import cache
-from django.urls import reverse
 from django.db import connection
 from django.test.client import RequestFactory
 from django.test.utils import CaptureQueriesContext
+from django.urls import reverse
 from django.utils.six.moves.urllib import parse as urlparse
-
-import mock
 from requests.exceptions import ConnectionError
 from requests.models import Response
 
-from combo.data.library import get_cell_classes
-from combo.data.models import CellBase, LinkListCell, Page, ValidityInfo
 from combo.apps.search.engines import engines
+from combo.apps.search.models import SearchCell
+from combo.apps.search.utils import index_site, search_site
+from combo.apps.wcs.context_processors import Cards
 from combo.apps.wcs.models import (
-    WcsFormCell,
-    WcsCurrentFormsCell,
-    WcsFormsOfCategoryCell,
-    WcsCurrentDraftsCell,
-    WcsCategoryCell,
-    TrackingCodeInputCell,
     BackofficeSubmissionCell,
-    WcsCareFormsCell,
-    WcsCardsCell,
+    TrackingCodeInputCell,
     WcsCardInfosCell,
+    WcsCardsCell,
+    WcsCareFormsCell,
+    WcsCategoryCell,
+    WcsCurrentDraftsCell,
+    WcsCurrentFormsCell,
+    WcsFormCell,
+    WcsFormsOfCategoryCell,
 )
-from combo.apps.wcs.context_processors import Cards
-
-from combo.apps.search.models import SearchCell
-from combo.apps.search.utils import index_site, search_site
-from django.contrib.auth.models import AnonymousUser
-
+from combo.data.library import get_cell_classes
+from combo.data.models import CellBase, LinkListCell, Page, ValidityInfo
 from combo.utils import NothingInCacheException
 
 from .test_manager import login
-- 
2.30.2

