diff --git a/setup.py b/setup.py
index f4fbefabc..adf182090 100644
--- a/setup.py
+++ b/setup.py
@@ -9,8 +9,7 @@ from distutils.command.sdist import sdist
from distutils.errors import CompileError
from distutils.spawn import find_executable
-from setuptools import find_packages
-from setuptools import setup
+from setuptools import find_packages, setup
from setuptools.command.install_lib import install_lib as _install_lib
local_cfg = None
diff --git a/tests/admin_pages/test_all.py b/tests/admin_pages/test_all.py
index 79c1722c3..6c4e918fe 100644
--- a/tests/admin_pages/test_all.py
+++ b/tests/admin_pages/test_all.py
@@ -3,10 +3,7 @@
import os
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.ident.password_accounts import PasswordAccount
diff --git a/tests/admin_pages/test_api_access.py b/tests/admin_pages/test_api_access.py
index 4c5772134..522c05e78 100644
--- a/tests/admin_pages/test_api_access.py
+++ b/tests/admin_pages/test_api_access.py
@@ -15,10 +15,7 @@
# along with this program; if not, see .
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.api_access import ApiAccess
from wcs.qommon.http_request import HTTPRequest
diff --git a/tests/admin_pages/test_block.py b/tests/admin_pages/test_block.py
index 29fe89b65..f2afb06f6 100644
--- a/tests/admin_pages/test_block.py
+++ b/tests/admin_pages/test_block.py
@@ -8,10 +8,7 @@ except ImportError:
lasso = None
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
@@ -19,8 +16,7 @@ from wcs.blocks import BlockDef
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
-from .test_all import create_role
-from .test_all import create_superuser
+from .test_all import create_role, create_superuser
def pytest_generate_tests(metafunc):
diff --git a/tests/admin_pages/test_card.py b/tests/admin_pages/test_card.py
index 6ab5b2b1e..43e4d1a7a 100644
--- a/tests/admin_pages/test_card.py
+++ b/tests/admin_pages/test_card.py
@@ -3,10 +3,7 @@
import re
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.admin.settings import UserFieldsFormDef
@@ -14,11 +11,8 @@ from wcs.carddef import CardDef
from wcs.categories import CardDefCategory
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowVariablesFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
+from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef, WorkflowVariablesFieldsFormDef
from .test_all import create_superuser
diff --git a/tests/admin_pages/test_carddefcategory.py b/tests/admin_pages/test_carddefcategory.py
index 34736099f..19f5936b9 100644
--- a/tests/admin_pages/test_carddefcategory.py
+++ b/tests/admin_pages/test_carddefcategory.py
@@ -1,10 +1,7 @@
# -*- coding: utf-8 -*-
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.carddef import CardDef
from wcs.categories import CardDefCategory
diff --git a/tests/admin_pages/test_category.py b/tests/admin_pages/test_category.py
index a6a8cec4f..2cdcd752a 100644
--- a/tests/admin_pages/test_category.py
+++ b/tests/admin_pages/test_category.py
@@ -1,10 +1,7 @@
# -*- coding: utf-8 -*-
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.categories import Category
from wcs.formdef import FormDef
diff --git a/tests/admin_pages/test_datasource.py b/tests/admin_pages/test_datasource.py
index 6ea09a70b..2c265b0e4 100644
--- a/tests/admin_pages/test_datasource.py
+++ b/tests/admin_pages/test_datasource.py
@@ -13,11 +13,7 @@ except ImportError:
lasso = None
import pytest
-from utilities import HttpRequestsMocking
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import HttpRequestsMocking, clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
@@ -26,8 +22,7 @@ from wcs.carddef import CardDef
from wcs.data_sources import NamedDataSource
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
from .test_all import create_superuser
@@ -347,8 +342,7 @@ def test_data_sources_view(pub):
fields.ItemField(id='1', type='item', label='item', data_source={'type': data_source.slug})
)
- from wcs.wf.form import FormWorkflowStatusItem
- from wcs.wf.form import WorkflowFormFieldsFormDef
+ from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
baz_status = workflow.add_status(name='baz')
display_form = FormWorkflowStatusItem()
diff --git a/tests/admin_pages/test_form.py b/tests/admin_pages/test_form.py
index 9c2920341..97bd184e1 100644
--- a/tests/admin_pages/test_form.py
+++ b/tests/admin_pages/test_form.py
@@ -10,10 +10,7 @@ import xml.etree.ElementTree as ET
import mock
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
@@ -26,8 +23,7 @@ from wcs.qommon.http_request import HTTPRequest
from wcs.workflows import Workflow
from wcs.wscalls import NamedWsCall
-from .test_all import create_role
-from .test_all import create_superuser
+from .test_all import create_role, create_superuser
def pytest_generate_tests(metafunc):
diff --git a/tests/admin_pages/test_logged_errors.py b/tests/admin_pages/test_logged_errors.py
index 3db1ff565..e598c6905 100644
--- a/tests/admin_pages/test_logged_errors.py
+++ b/tests/admin_pages/test_logged_errors.py
@@ -3,10 +3,7 @@
import datetime
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.carddef import CardDef
from wcs.formdef import FormDef
diff --git a/tests/admin_pages/test_role.py b/tests/admin_pages/test_role.py
index c32e83790..d4fb401a9 100644
--- a/tests/admin_pages/test_role.py
+++ b/tests/admin_pages/test_role.py
@@ -1,10 +1,7 @@
# -*- coding: utf-8 -*-
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
diff --git a/tests/admin_pages/test_settings.py b/tests/admin_pages/test_settings.py
index 0ba938290..61a614aa1 100644
--- a/tests/admin_pages/test_settings.py
+++ b/tests/admin_pages/test_settings.py
@@ -14,25 +14,20 @@ except ImportError:
import mock
import pytest
from quixote.http_request import Upload as QuixoteUpload
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
from wcs.api_access import ApiAccess
from wcs.carddef import CardDef
-from wcs.categories import CardDefCategory
-from wcs.categories import Category
+from wcs.categories import CardDefCategory, Category
from wcs.data_sources import NamedDataSource
from wcs.formdef import FormDef
from wcs.qommon.form import UploadedFile
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.template import get_current_theme
from wcs.wf.export_to_model import ExportToModel
-from wcs.workflows import CommentableWorkflowStatusItem
-from wcs.workflows import Workflow
+from wcs.workflows import CommentableWorkflowStatusItem, Workflow
from wcs.wscalls import NamedWsCall
from .test_all import create_superuser
diff --git a/tests/admin_pages/test_user.py b/tests/admin_pages/test_user.py
index 8d73a59d7..efb6f35c6 100644
--- a/tests/admin_pages/test_user.py
+++ b/tests/admin_pages/test_user.py
@@ -1,18 +1,14 @@
# -*- coding: utf-8 -*-
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.admin.settings import UserFieldsFormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.ident.password_accounts import PasswordAccount
-from .test_all import create_role
-from .test_all import create_superuser
+from .test_all import create_role, create_superuser
def pytest_generate_tests(metafunc):
diff --git a/tests/admin_pages/test_workflow.py b/tests/admin_pages/test_workflow.py
index 75daa5bf9..b1c9a4313 100644
--- a/tests/admin_pages/test_workflow.py
+++ b/tests/admin_pages/test_workflow.py
@@ -12,10 +12,7 @@ except ImportError:
lasso = None
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
@@ -24,27 +21,27 @@ from wcs.formdef import FormDef
from wcs.qommon.errors import ConnectionError
from wcs.qommon.http_request import HTTPRequest
from wcs.wf.create_carddata import CreateCarddataWorkflowStatusItem
-from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem
-from wcs.wf.create_formdata import Mapping
+from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
from wcs.wf.dispatch import DispatchWorkflowStatusItem
from wcs.wf.edit_carddata import EditCarddataWorkflowStatusItem
from wcs.wf.export_to_model import ExportToModel
from wcs.wf.external_workflow import ExternalWorkflowGlobalAction
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
from wcs.wf.wscall import WebserviceCallStatusItem
-from wcs.workflows import ChoiceWorkflowStatusItem
-from wcs.workflows import CommentableWorkflowStatusItem
-from wcs.workflows import DisplayMessageWorkflowStatusItem
-from wcs.workflows import JumpOnSubmitWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowCriticalityLevel
-from wcs.workflows import WorkflowVariablesFieldsFormDef
-from wcs.workflows import item_classes
+from wcs.workflows import (
+ ChoiceWorkflowStatusItem,
+ CommentableWorkflowStatusItem,
+ DisplayMessageWorkflowStatusItem,
+ JumpOnSubmitWorkflowStatusItem,
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+ WorkflowCriticalityLevel,
+ WorkflowVariablesFieldsFormDef,
+ item_classes,
+)
from .test_all import create_superuser
diff --git a/tests/admin_pages/test_wscall.py b/tests/admin_pages/test_wscall.py
index c80028220..9e51e1109 100644
--- a/tests/admin_pages/test_wscall.py
+++ b/tests/admin_pages/test_wscall.py
@@ -4,10 +4,7 @@ import io
import xml.etree.ElementTree as ET
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs.qommon.http_request import HTTPRequest
diff --git a/tests/api/test_access.py b/tests/api/test_access.py
index 2509c56a3..fd0b32c90 100644
--- a/tests/api/test_access.py
+++ b/tests/api/test_access.py
@@ -11,14 +11,9 @@ import urllib.parse
import pytest
from django.utils.encoding import force_bytes
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
-from wcs.api_utils import get_secret_and_orig
-from wcs.api_utils import is_url_signed
-from wcs.api_utils import sign_url
+from wcs.api_utils import get_secret_and_orig, is_url_signed, sign_url
from wcs.qommon.errors import AccessForbiddenError
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.ident.password_accounts import PasswordAccount
diff --git a/tests/api/test_all.py b/tests/api/test_all.py
index 6416a60cc..c9287f5f8 100644
--- a/tests/api/test_all.py
+++ b/tests/api/test_all.py
@@ -7,9 +7,7 @@ import os
import mock
import pytest
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
from wcs.api_utils import sign_url
from wcs.formdef import FormDef
diff --git a/tests/api/test_carddef.py b/tests/api/test_carddef.py
index 551f2570d..2fac97de1 100644
--- a/tests/api/test_carddef.py
+++ b/tests/api/test_carddef.py
@@ -11,12 +11,9 @@ import mock
import pytest
from django.utils.encoding import force_text
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
-from wcs import fields
-from wcs import qommon
+from wcs import fields, qommon
from wcs.api_utils import sign_url
from wcs.carddef import CardDef
from wcs.categories import CardDefCategory
@@ -24,8 +21,7 @@ from wcs.data_sources import NamedDataSource
from wcs.qommon.afterjobs import AfterJob
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.upload_storage import PicklableUpload
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
from .utils import sign_uri
diff --git a/tests/api/test_category.py b/tests/api/test_category.py
index e1b024ce0..00d7b4dfe 100644
--- a/tests/api/test_category.py
+++ b/tests/api/test_category.py
@@ -4,9 +4,7 @@ import os
import pytest
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
from wcs.categories import Category
from wcs.formdef import FormDef
diff --git a/tests/api/test_custom_view.py b/tests/api/test_custom_view.py
index 0c96d80ec..1dc91fa17 100644
--- a/tests/api/test_custom_view.py
+++ b/tests/api/test_custom_view.py
@@ -7,9 +7,7 @@ import zipfile
import pytest
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
from wcs import fields
from wcs.carddef import CardDef
diff --git a/tests/api/test_formdata.py b/tests/api/test_formdata.py
index 4fe300dec..3aa1eb625 100644
--- a/tests/api/test_formdata.py
+++ b/tests/api/test_formdata.py
@@ -12,10 +12,7 @@ import zipfile
import pytest
from django.utils.encoding import force_bytes
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.blocks import BlockDef
@@ -26,9 +23,7 @@ from wcs.qommon import ods
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.ident.password_accounts import PasswordAccount
from wcs.qommon.upload_storage import PicklableUpload
-from wcs.workflows import EditableWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.workflows import EditableWorkflowStatusItem, Workflow, WorkflowBackofficeFieldsFormDef
from .utils import sign_uri
diff --git a/tests/api/test_formdef.py b/tests/api/test_formdef.py
index 529cb1a48..fe34f4c92 100644
--- a/tests/api/test_formdef.py
+++ b/tests/api/test_formdef.py
@@ -12,20 +12,16 @@ import mock
import pytest
from django.utils.encoding import force_text
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
-from wcs import fields
-from wcs import qommon
+from wcs import fields, qommon
from wcs.api_utils import sign_url
from wcs.data_sources import NamedDataSource
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.upload_storage import PicklableUpload
from wcs.wf.jump import JumpWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
from .utils import sign_uri
diff --git a/tests/api/test_user.py b/tests/api/test_user.py
index c4fd95063..27d44f310 100644
--- a/tests/api/test_user.py
+++ b/tests/api/test_user.py
@@ -5,17 +5,14 @@ import os
import pytest
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
from wcs import fields
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.ident.password_accounts import PasswordAccount
from wcs.qommon.upload_storage import PicklableUpload
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowVariablesFieldsFormDef
+from wcs.workflows import Workflow, WorkflowVariablesFieldsFormDef
from .utils import sign_uri
diff --git a/tests/api/test_utils.py b/tests/api/test_utils.py
index 9e32d1a11..00503a7bf 100644
--- a/tests/api/test_utils.py
+++ b/tests/api/test_utils.py
@@ -1,8 +1,6 @@
import pytest
-from quixote import cleanup
-from quixote import get_response
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from quixote import cleanup, get_response
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs import sessions
from wcs.api_utils import get_query_flag
diff --git a/tests/api/test_workflow.py b/tests/api/test_workflow.py
index 7b67a89df..f431747ba 100644
--- a/tests/api/test_workflow.py
+++ b/tests/api/test_workflow.py
@@ -4,9 +4,7 @@ import os
import pytest
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
from wcs import fields
from wcs.formdef import FormDef
diff --git a/tests/backoffice_pages/test_all.py b/tests/backoffice_pages/test_all.py
index 3ed1fbe52..23fc24ed5 100644
--- a/tests/backoffice_pages/test_all.py
+++ b/tests/backoffice_pages/test_all.py
@@ -13,10 +13,7 @@ import mock
import pytest
from quixote import get_publisher
from quixote.http_request import Upload as QuixoteUpload
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
import wcs.qommon.storage as st
from wcs import fields
@@ -31,24 +28,24 @@ from wcs.qommon.upload_storage import PicklableUpload
from wcs.roles import logged_users_role
from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
from wcs.wf.create_carddata import CreateCarddataWorkflowStatusItem
-from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem
-from wcs.wf.create_formdata import Mapping
+from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
from wcs.wf.export_to_model import ExportToModel
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
from wcs.wf.resubmit import ResubmitWorkflowStatusItem
from wcs.wf.wscall import WebserviceCallStatusItem
-from wcs.workflows import ChoiceWorkflowStatusItem
-from wcs.workflows import CommentableWorkflowStatusItem
-from wcs.workflows import DisplayMessageWorkflowStatusItem
-from wcs.workflows import EditableWorkflowStatusItem
-from wcs.workflows import JumpOnSubmitWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowCriticalityLevel
+from wcs.workflows import (
+ ChoiceWorkflowStatusItem,
+ CommentableWorkflowStatusItem,
+ DisplayMessageWorkflowStatusItem,
+ EditableWorkflowStatusItem,
+ JumpOnSubmitWorkflowStatusItem,
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+ WorkflowCriticalityLevel,
+)
from wcs.wscalls import NamedWsCall
@@ -1757,8 +1754,7 @@ def test_backoffice_statistics_with_no_formdefs(pub):
create_environment(pub)
FormDef.wipe()
if pub.is_using_postgresql():
- from wcs.sql import drop_global_views
- from wcs.sql import get_connection_and_cursor
+ from wcs.sql import drop_global_views, get_connection_and_cursor
conn, cur = get_connection_and_cursor()
drop_global_views(conn, cur)
@@ -3147,8 +3143,7 @@ def test_management_views_with_no_formdefs(pub):
create_environment(pub)
FormDef.wipe()
- from wcs.sql import drop_global_views
- from wcs.sql import get_connection_and_cursor
+ from wcs.sql import drop_global_views, get_connection_and_cursor
conn, cur = get_connection_and_cursor()
drop_global_views(conn, cur)
diff --git a/tests/backoffice_pages/test_carddata.py b/tests/backoffice_pages/test_carddata.py
index 829a5ad15..bb7bd9c21 100644
--- a/tests/backoffice_pages/test_carddata.py
+++ b/tests/backoffice_pages/test_carddata.py
@@ -4,10 +4,7 @@ import os
import uuid
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
@@ -17,8 +14,7 @@ from wcs.categories import CardDefCategory
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.wf.wscall import WebserviceCallStatusItem
-from wcs.workflows import ChoiceWorkflowStatusItem
-from wcs.workflows import Workflow
+from wcs.workflows import ChoiceWorkflowStatusItem, Workflow
from .test_all import create_user
diff --git a/tests/backoffice_pages/test_custom_view.py b/tests/backoffice_pages/test_custom_view.py
index 58a6ea11f..120ee650c 100644
--- a/tests/backoffice_pages/test_custom_view.py
+++ b/tests/backoffice_pages/test_custom_view.py
@@ -4,10 +4,7 @@ import re
import pytest
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.carddef import CardDef
@@ -15,8 +12,7 @@ from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.ident.password_accounts import PasswordAccount
-from .test_all import create_superuser
-from .test_all import create_user
+from .test_all import create_superuser, create_user
def pytest_generate_tests(metafunc):
diff --git a/tests/backoffice_pages/test_export.py b/tests/backoffice_pages/test_export.py
index 3ddea5af6..94898ad1a 100644
--- a/tests/backoffice_pages/test_export.py
+++ b/tests/backoffice_pages/test_export.py
@@ -9,10 +9,7 @@ import xml.etree.ElementTree as ET
import zipfile
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.blocks import BlockDef
diff --git a/tests/backoffice_pages/test_submission.py b/tests/backoffice_pages/test_submission.py
index 57b159b18..453e2984c 100644
--- a/tests/backoffice_pages/test_submission.py
+++ b/tests/backoffice_pages/test_submission.py
@@ -6,10 +6,7 @@ import time
import urllib.parse
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.api_utils import sign_url
@@ -19,11 +16,9 @@ from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
from wcs.wf.dispatch import DispatchWorkflowStatusItem
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
-from .test_all import create_superuser
-from .test_all import create_user
+from .test_all import create_superuser, create_user
def pytest_generate_tests(metafunc):
diff --git a/tests/conftest.py b/tests/conftest.py
index a663d5ac5..06c24e236 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -2,9 +2,7 @@ import configparser
import os
import pytest
-from utilities import EmailsMocking
-from utilities import HttpRequestsMocking
-from utilities import SMSMocking
+from utilities import EmailsMocking, HttpRequestsMocking, SMSMocking
def site_options(request, pub, section, variable, value):
diff --git a/tests/form_pages/test_all.py b/tests/form_pages/test_all.py
index 467001215..4221a642f 100644
--- a/tests/form_pages/test_all.py
+++ b/tests/form_pages/test_all.py
@@ -12,21 +12,15 @@ import zipfile
import mock
import pytest
-from webtest import Hidden
-from webtest import Radio
-from webtest import Upload
+from webtest import Hidden, Radio, Upload
try:
from PIL import Image
except ImportError:
Image = None
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from django.utils.encoding import force_bytes, force_text
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.blocks import BlockDef
@@ -42,22 +36,22 @@ from wcs.qommon.misc import ConnectionError
from wcs.roles import logged_users_role
from wcs.tracking_code import TrackingCode
from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
-from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem
-from wcs.wf.create_formdata import Mapping
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
from wcs.wf.resubmit import ResubmitWorkflowStatusItem
-from wcs.workflows import ChoiceWorkflowStatusItem
-from wcs.workflows import CommentableWorkflowStatusItem
-from wcs.workflows import DisplayMessageWorkflowStatusItem
-from wcs.workflows import EditableWorkflowStatusItem
-from wcs.workflows import JumpOnSubmitWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowVariablesFieldsFormDef
+from wcs.workflows import (
+ ChoiceWorkflowStatusItem,
+ CommentableWorkflowStatusItem,
+ DisplayMessageWorkflowStatusItem,
+ EditableWorkflowStatusItem,
+ JumpOnSubmitWorkflowStatusItem,
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+ WorkflowVariablesFieldsFormDef,
+)
def assert_equal_zip(stream1, stream2):
diff --git a/tests/form_pages/test_block.py b/tests/form_pages/test_block.py
index 36b894c9a..6262bd065 100644
--- a/tests/form_pages/test_block.py
+++ b/tests/form_pages/test_block.py
@@ -5,10 +5,7 @@ import json
import mock
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
@@ -16,8 +13,7 @@ from wcs.blocks import BlockDef
from wcs.categories import Category
from wcs.data_sources import NamedDataSource
from wcs.formdef import FormDef
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.workflows import Workflow
from .test_all import create_user
diff --git a/tests/form_pages/test_formdata.py b/tests/form_pages/test_formdata.py
index 8a00dbbfb..0a6e907df 100644
--- a/tests/form_pages/test_formdata.py
+++ b/tests/form_pages/test_formdata.py
@@ -13,32 +13,27 @@ import mock
import pytest
from django.utils.encoding import force_bytes
from quixote.http_request import Upload as QuixoteUpload
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
-from webtest import Hidden
-from webtest import Upload
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
+from webtest import Hidden, Upload
from wcs import fields
from wcs.data_sources import NamedDataSource
from wcs.formdef import FormDef
from wcs.qommon.form import UploadedFile
from wcs.wf.attachment import AddAttachmentWorkflowStatusItem
-from wcs.wf.export_to_model import ExportToModel
-from wcs.wf.export_to_model import transform_to_pdf
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.export_to_model import ExportToModel, transform_to_pdf
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
-from wcs.workflows import ChoiceWorkflowStatusItem
-from wcs.workflows import DisplayMessageWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.workflows import (
+ ChoiceWorkflowStatusItem,
+ DisplayMessageWorkflowStatusItem,
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+)
from wcs.wscalls import NamedWsCall
-from .test_all import create_user
-from .test_all import create_user_and_admin
+from .test_all import create_user, create_user_and_admin
def pytest_generate_tests(metafunc):
diff --git a/tests/test_auth_pages.py b/tests/test_auth_pages.py
index 4e1350756..d6b34c89f 100644
--- a/tests/test_auth_pages.py
+++ b/tests/test_auth_pages.py
@@ -1,8 +1,5 @@
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.qommon.ident.password_accounts import PasswordAccount
diff --git a/tests/test_carddef.py b/tests/test_carddef.py
index e9114cbea..02eac3d8b 100644
--- a/tests/test_carddef.py
+++ b/tests/test_carddef.py
@@ -2,13 +2,11 @@ import io
import xml.etree.ElementTree as ET
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs.carddef import CardDef
from wcs.categories import CardDefCategory
-from wcs.fields import ItemField
-from wcs.fields import StringField
+from wcs.fields import ItemField, StringField
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.misc import indent_xml as indent
from wcs.qommon.template import Template
diff --git a/tests/test_categories.py b/tests/test_categories.py
index 97f9a3031..5dd0fc6c6 100644
--- a/tests/test_categories.py
+++ b/tests/test_categories.py
@@ -7,8 +7,7 @@ import pytest
from quixote import cleanup
from utilities import create_temporary_pub
-from wcs.categories import CardDefCategory
-from wcs.categories import Category
+from wcs.categories import CardDefCategory, Category
def setup_module(module):
diff --git a/tests/test_convert_to_sql.py b/tests/test_convert_to_sql.py
index d87acdf81..124a36144 100644
--- a/tests/test_convert_to_sql.py
+++ b/tests/test_convert_to_sql.py
@@ -4,13 +4,10 @@ import random
import psycopg2
import pytest
-from django.core.management import call_command
-from django.core.management import get_commands
+from django.core.management import call_command, get_commands
from django.core.management.base import CommandError
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import force_connections_close
+from utilities import clean_temporary_pub, create_temporary_pub, force_connections_close
from wcs.fields import BoolField
from wcs.formdef import FormDef
diff --git a/tests/test_ctl.py b/tests/test_ctl.py
index 46055fe08..49bd9ebf4 100644
--- a/tests/test_ctl.py
+++ b/tests/test_ctl.py
@@ -6,10 +6,8 @@ from email.mime.text import MIMEText
import psycopg2
import pytest
-from django.core.management import CommandError
-from django.core.management import call_command
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from django.core.management import CommandError, call_command
+from utilities import clean_temporary_pub, create_temporary_pub
import wcs.qommon.ctl
from wcs.ctl.delete_tenant import CmdDeleteTenant
@@ -17,19 +15,16 @@ from wcs.ctl.management.commands.runscript import Command as CmdRunScript
from wcs.ctl.management.commands.trigger_jumps import select_and_jump_formdata
from wcs.ctl.rebuild_indexes import rebuild_vhost_indexes
from wcs.ctl.wipe_data import CmdWipeData
-from wcs.fields import EmailField
-from wcs.fields import StringField
+from wcs.fields import EmailField, StringField
from wcs.formdef import FormDef
from wcs.qommon.afterjobs import AfterJob
from wcs.qommon.management.commands.collectstatic import Command as CmdCollectStatic
from wcs.qommon.management.commands.makemessages import Command as CmdMakeMessages
from wcs.qommon.management.commands.migrate import Command as CmdMigrate
from wcs.qommon.management.commands.migrate_schemas import Command as CmdMigrateSchemas
-from wcs.sql import cleanup_connection
-from wcs.sql import get_connection_and_cursor
+from wcs.sql import cleanup_connection, get_connection_and_cursor
from wcs.wf.jump import JumpWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowStatusItem
+from wcs.workflows import Workflow, WorkflowStatusItem
@pytest.fixture
diff --git a/tests/test_datasource.py b/tests/test_datasource.py
index 21e92aee6..9b8b7ce2a 100644
--- a/tests/test_datasource.py
+++ b/tests/test_datasource.py
@@ -10,17 +10,12 @@ import urllib.parse
import mock
import pytest
from quixote import cleanup
-from test_widgets import MockHtmlForm
-from test_widgets import mock_form_submission
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from test_widgets import MockHtmlForm, mock_form_submission
+from utilities import clean_temporary_pub, create_temporary_pub
-from wcs import data_sources
-from wcs import fields
-from wcs.data_sources import NamedDataSource
-from wcs.data_sources import register_data_source_function
-from wcs.qommon.form import Form
-from wcs.qommon.form import get_request
+from wcs import data_sources, fields
+from wcs.data_sources import NamedDataSource, register_data_source_function
+from wcs.qommon.form import Form, get_request
from wcs.qommon.http_request import HTTPRequest
diff --git a/tests/test_datasource_chrono.py b/tests/test_datasource_chrono.py
index 6f0a1721c..6e5769823 100644
--- a/tests/test_datasource_chrono.py
+++ b/tests/test_datasource_chrono.py
@@ -10,9 +10,7 @@ from quixote import cleanup
from utilities import create_temporary_pub
from wcs import fields
-from wcs.data_sources import NamedDataSource
-from wcs.data_sources import build_agenda_datasources
-from wcs.data_sources import collect_agenda_data
+from wcs.data_sources import NamedDataSource, build_agenda_datasources, collect_agenda_data
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.misc import ConnectionError
diff --git a/tests/test_ezt.py b/tests/test_ezt.py
index c2bd37c5c..15955c5b7 100644
--- a/tests/test_ezt.py
+++ b/tests/test_ezt.py
@@ -4,16 +4,16 @@ import os
import pytest
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
-from wcs.qommon.ezt import ArgCountSyntaxError
-from wcs.qommon.ezt import Template
-from wcs.qommon.ezt import UnclosedBlocksError
-from wcs.qommon.ezt import UnmatchedElseError
-from wcs.qommon.ezt import UnmatchedEndError
-from wcs.qommon.ezt import _re_parse
+from wcs.qommon.ezt import (
+ ArgCountSyntaxError,
+ Template,
+ UnclosedBlocksError,
+ UnmatchedElseError,
+ UnmatchedEndError,
+ _re_parse,
+)
from wcs.scripts import ScriptsSubstitutionProxy
diff --git a/tests/test_fc_auth.py b/tests/test_fc_auth.py
index a715e8c10..3ecee4509 100644
--- a/tests/test_fc_auth.py
+++ b/tests/test_fc_auth.py
@@ -3,12 +3,9 @@ import json
import urllib.parse
import mock
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import cleanup
-from quixote import get_session_manager
-from utilities import create_temporary_pub
-from utilities import get_app
+from django.utils.encoding import force_bytes, force_text
+from quixote import cleanup, get_session_manager
+from utilities import create_temporary_pub, get_app
PROFILE = {
'fields': [
diff --git a/tests/test_fields.py b/tests/test_fields.py
index 04717028d..a4aff58e7 100644
--- a/tests/test_fields.py
+++ b/tests/test_fields.py
@@ -7,8 +7,7 @@ import pytest
from bs4 import BeautifulSoup
from quixote import cleanup
from quixote.http_request import Upload
-from utilities import MockSubstitutionVariables
-from utilities import create_temporary_pub
+from utilities import MockSubstitutionVariables, create_temporary_pub
from wcs import fields
from wcs.formdef import FormDef
diff --git a/tests/test_formdata.py b/tests/test_formdata.py
index 3612912d9..328b8d428 100644
--- a/tests/test_formdata.py
+++ b/tests/test_formdata.py
@@ -8,12 +8,9 @@ import mock
import pytest
from quixote import get_publisher
from quixote.http_request import Upload
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
-from wcs import fields
-from wcs import formdef
-from wcs import sessions
+from wcs import fields, formdef, sessions
from wcs.blocks import BlockDef
from wcs.carddef import CardDef
from wcs.categories import Category
@@ -27,10 +24,12 @@ from wcs.qommon.upload_storage import PicklableUpload
from wcs.variables import LazyFormData
from wcs.wf.register_comment import JournalEvolutionPart
from wcs.wf.wscall import JournalWsCallErrorPart
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowCriticalityLevel
-from wcs.workflows import WorkflowStatusItem
+from wcs.workflows import (
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+ WorkflowCriticalityLevel,
+ WorkflowStatusItem,
+)
def pytest_generate_tests(metafunc):
diff --git a/tests/test_formdef.py b/tests/test_formdef.py
index 976f0b987..a9449fd45 100644
--- a/tests/test_formdef.py
+++ b/tests/test_formdef.py
@@ -11,25 +11,16 @@ import time
import pytest
from django.utils.encoding import force_bytes
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs import fields
from wcs.blocks import BlockDef
-from wcs.fields import DateField
-from wcs.fields import FileField
-from wcs.fields import ItemField
-from wcs.fields import PageField
-from wcs.fields import StringField
-from wcs.formdef import FormDef
-from wcs.formdef import get_formdefs_of_all_kinds
+from wcs.fields import DateField, FileField, ItemField, PageField, StringField
+from wcs.formdef import FormDef, get_formdefs_of_all_kinds
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.upload_storage import PicklableUpload
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
-from wcs.workflows import AttachmentEvolutionPart
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
+from wcs.workflows import AttachmentEvolutionPart, Workflow, WorkflowBackofficeFieldsFormDef
def pytest_generate_tests(metafunc):
@@ -504,10 +495,8 @@ def test_unused_file_removal_job(pub):
def test_get_formdefs_of_all_kinds(pub):
from wcs.admin.settings import UserFieldsFormDef
from wcs.carddef import CardDef
- from wcs.wf.form import FormWorkflowStatusItem
- from wcs.wf.form import WorkflowFormFieldsFormDef
- from wcs.workflows import WorkflowBackofficeFieldsFormDef
- from wcs.workflows import WorkflowVariablesFieldsFormDef
+ from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
+ from wcs.workflows import WorkflowBackofficeFieldsFormDef, WorkflowVariablesFieldsFormDef
BlockDef.wipe()
FormDef.wipe()
diff --git a/tests/test_formdef_import.py b/tests/test_formdef_import.py
index 597f6d693..ad7b2008b 100644
--- a/tests/test_formdef_import.py
+++ b/tests/test_formdef_import.py
@@ -11,9 +11,7 @@ from utilities import create_temporary_pub
from wcs.carddef import CardDef
from wcs.categories import Category
-from wcs.formdef import FormDef
-from wcs.formdef import FormdefImportError
-from wcs.formdef import fields
+from wcs.formdef import FormDef, FormdefImportError, fields
from wcs.qommon.misc import indent_xml as indent
from wcs.workflows import Workflow
diff --git a/tests/test_hobo.py b/tests/test_hobo.py
index fb076b96b..6723728f1 100644
--- a/tests/test_hobo.py
+++ b/tests/test_hobo.py
@@ -12,11 +12,9 @@ import urllib.parse
import mock
import pytest
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
-from wcs import fields
-from wcs import sql
+from wcs import fields, sql
from wcs.ctl.check_hobos import CmdCheckHobos
from wcs.publisher import WcsPublisher
from wcs.qommon import force_str
diff --git a/tests/test_mail_templates.py b/tests/test_mail_templates.py
index 419767f85..dac434ceb 100644
--- a/tests/test_mail_templates.py
+++ b/tests/test_mail_templates.py
@@ -8,10 +8,7 @@ import xml.etree.ElementTree as ET
import pytest
from django.utils.encoding import force_bytes
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs.fields import FileField
@@ -20,8 +17,7 @@ from wcs.mail_templates import MailTemplate
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.ident.password_accounts import PasswordAccount
from wcs.qommon.upload_storage import PicklableUpload
-from wcs.workflows import SendmailWorkflowStatusItem
-from wcs.workflows import Workflow
+from wcs.workflows import SendmailWorkflowStatusItem, Workflow
def setup_module(module):
diff --git a/tests/test_misc.py b/tests/test_misc.py
index 44a174252..d3d5e07b0 100644
--- a/tests/test_misc.py
+++ b/tests/test_misc.py
@@ -15,31 +15,29 @@ import pytest
from django.core.cache import cache
from django.utils import translation
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
import wcs.api # workaround against circular dependencies :/
import wcs.qommon.storage
from wcs.admin.settings import FileTypesDirectory
from wcs.fields import StringField
-from wcs.qommon import evalutils
-from wcs.qommon import force_str
+from wcs.qommon import evalutils, force_str
from wcs.qommon.backoffice.listing import pagination_links
from wcs.qommon.emails import docutils
from wcs.qommon.emails import email as send_email
from wcs.qommon.form import FileSizeWidget
from wcs.qommon.http_request import HTTPRequest
-from wcs.qommon.humantime import humanduration2seconds
-from wcs.qommon.humantime import seconds2humanduration
-from wcs.qommon.misc import date_format
-from wcs.qommon.misc import ellipsize
-from wcs.qommon.misc import format_time
-from wcs.qommon.misc import get_as_datetime
-from wcs.qommon.misc import json_loads
-from wcs.qommon.misc import normalize_geolocation
-from wcs.qommon.misc import parse_isotime
-from wcs.qommon.misc import simplify
+from wcs.qommon.humantime import humanduration2seconds, seconds2humanduration
+from wcs.qommon.misc import (
+ date_format,
+ ellipsize,
+ format_time,
+ get_as_datetime,
+ json_loads,
+ normalize_geolocation,
+ parse_isotime,
+ simplify,
+)
from wcs.qommon.upload_storage import PicklableUpload
from wcs.scripts import Script
from wcs.wf.jump import JumpWorkflowStatusItem
diff --git a/tests/test_prefill.py b/tests/test_prefill.py
index a23e34762..07de3cfc0 100644
--- a/tests/test_prefill.py
+++ b/tests/test_prefill.py
@@ -2,8 +2,7 @@ import datetime
import shutil
import pytest
-from quixote import cleanup
-from quixote import get_request
+from quixote import cleanup, get_request
from utilities import create_temporary_pub
from wcs import fields
diff --git a/tests/test_register.py b/tests/test_register.py
index f7f57b1fe..761e84888 100644
--- a/tests/test_register.py
+++ b/tests/test_register.py
@@ -6,9 +6,7 @@ import shutil
import pytest
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
from wcs.qommon import force_str
from wcs.qommon.http_request import HTTPRequest
diff --git a/tests/test_role.py b/tests/test_role.py
index 3a93921f4..3c4f36f4f 100644
--- a/tests/test_role.py
+++ b/tests/test_role.py
@@ -3,8 +3,7 @@
import pickle
from quixote import get_publisher
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs.roles import get_user_roles
diff --git a/tests/test_rootdirectory.py b/tests/test_rootdirectory.py
index ed27938f6..04fb25ec2 100644
--- a/tests/test_rootdirectory.py
+++ b/tests/test_rootdirectory.py
@@ -4,8 +4,7 @@ import sys
import pytest
from quixote import cleanup
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import create_temporary_pub, get_app
import wcs.forms.root
from wcs import formdef
diff --git a/tests/test_saml_auth.py b/tests/test_saml_auth.py
index d59c5da70..082e27dcc 100644
--- a/tests/test_saml_auth.py
+++ b/tests/test_saml_auth.py
@@ -10,20 +10,14 @@ except ImportError:
lasso = None
import pytest
-from quixote import cleanup
-from quixote import get_session
-from quixote import get_session_manager
+from quixote import cleanup, get_session, get_session_manager
from quixote.errors import RequestError
from test_hobo_notify import PROFILE
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
-from wcs.qommon import sessions
-from wcs.qommon import x509utils
+from wcs.qommon import sessions, x509utils
from wcs.qommon.http_request import HTTPRequest
-from wcs.qommon.ident.idp import AdminIDPDir
-from wcs.qommon.ident.idp import MethodAdminDirectory
+from wcs.qommon.ident.idp import AdminIDPDir, MethodAdminDirectory
from wcs.qommon.misc import get_lasso_server
from wcs.qommon.saml2 import Saml2Directory
diff --git a/tests/test_sessions.py b/tests/test_sessions.py
index 133f52c6e..c13d310ec 100644
--- a/tests/test_sessions.py
+++ b/tests/test_sessions.py
@@ -5,10 +5,7 @@ import time
import pytest
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs import fields
from wcs.formdef import FormDef
diff --git a/tests/test_snapshots.py b/tests/test_snapshots.py
index 1f31fd398..111dd2267 100644
--- a/tests/test_snapshots.py
+++ b/tests/test_snapshots.py
@@ -4,13 +4,9 @@ import shutil
import xml.etree.ElementTree as ET
import pytest
-from admin_pages.test_all import create_role
-from admin_pages.test_all import create_superuser
+from admin_pages.test_all import create_role, create_superuser
from quixote.http_request import Upload
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from wcs.blocks import BlockDef
from wcs.carddef import CardDef
@@ -20,8 +16,7 @@ from wcs.formdef import FormDef
from wcs.qommon.form import UploadedFile
from wcs.qommon.misc import localstrftime
from wcs.wf.export_to_model import ExportToModel
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.workflows import Workflow
from wcs.wscalls import NamedWsCall
diff --git a/tests/test_sql.py b/tests/test_sql.py
index 9fd609074..0feb50791 100644
--- a/tests/test_sql.py
+++ b/tests/test_sql.py
@@ -13,21 +13,16 @@ import time
import pytest
from django.core.management import call_command
from quixote import cleanup
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
import wcs.qommon.storage as st
-from wcs import fields
-from wcs import publisher
-from wcs import sql
+from wcs import fields, publisher, sql
from wcs.formdata import Evolution
from wcs.formdef import FormDef
from wcs.qommon import force_str
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
-from wcs.workflows import CommentableWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowCriticalityLevel
+from wcs.workflows import CommentableWorkflowStatusItem, Workflow, WorkflowCriticalityLevel
postgresql = pytest.mark.postgresql
diff --git a/tests/test_storage.py b/tests/test_storage.py
index 9bdcceaf6..706e96a9b 100644
--- a/tests/test_storage.py
+++ b/tests/test_storage.py
@@ -11,8 +11,7 @@ from utilities import create_temporary_pub
import wcs.qommon.storage as st
from wcs.carddef import CardDef
from wcs.formdef import FormDef
-from wcs.qommon.storage import StorableObject
-from wcs.qommon.storage import cache_umask
+from wcs.qommon.storage import StorableObject, cache_umask
def setup_module(module):
diff --git a/tests/test_templates.py b/tests/test_templates.py
index 8d73cc4ff..2c3509a4e 100644
--- a/tests/test_templates.py
+++ b/tests/test_templates.py
@@ -13,15 +13,13 @@ except ImportError:
from django.test import override_settings
from django.utils.timezone import now
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs import fields
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.substitution import CompatibilityNamesDict
-from wcs.qommon.template import Template
-from wcs.qommon.template import TemplateError
+from wcs.qommon.template import Template, TemplateError
from wcs.variables import LazyFormData
diff --git a/tests/test_texts.py b/tests/test_texts.py
index 186acce7e..6b410116f 100644
--- a/tests/test_texts.py
+++ b/tests/test_texts.py
@@ -2,8 +2,7 @@ import shutil
import sys
from quixote import cleanup
-from utilities import MockSubstitutionVariables
-from utilities import create_temporary_pub
+from utilities import MockSubstitutionVariables, create_temporary_pub
from wcs.qommon.admin.texts import TextsDirectory
from wcs.qommon.http_request import HTTPRequest
diff --git a/tests/test_tracking_code.py b/tests/test_tracking_code.py
index 75402c7cb..b5409c9cb 100644
--- a/tests/test_tracking_code.py
+++ b/tests/test_tracking_code.py
@@ -1,6 +1,5 @@
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs.formdef import FormDef
diff --git a/tests/test_upload_storage.py b/tests/test_upload_storage.py
index 6c6f77a69..1f2a6595d 100644
--- a/tests/test_upload_storage.py
+++ b/tests/test_upload_storage.py
@@ -5,10 +5,7 @@ import os
import mock
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
-from utilities import login
+from utilities import clean_temporary_pub, create_temporary_pub, get_app, login
from webtest import Upload
from wcs import fields
diff --git a/tests/test_users.py b/tests/test_users.py
index 65b55c302..8eaa01eb5 100644
--- a/tests/test_users.py
+++ b/tests/test_users.py
@@ -9,8 +9,7 @@ import pytest
from quixote import cleanup
from utilities import create_temporary_pub
-from wcs import fields
-from wcs import publisher
+from wcs import fields, publisher
from wcs.variables import LazyUser
diff --git a/tests/test_variadic_url.py b/tests/test_variadic_url.py
index c6d8391bb..5cc4daae6 100644
--- a/tests/test_variadic_url.py
+++ b/tests/test_variadic_url.py
@@ -1,6 +1,5 @@
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs.qommon.ezt import EZTException
from wcs.qommon.misc import get_variadic_url
diff --git a/tests/test_widgets.py b/tests/test_widgets.py
index 470e05c20..70da66265 100644
--- a/tests/test_widgets.py
+++ b/tests/test_widgets.py
@@ -6,8 +6,7 @@ import shutil
import mechanize
import pytest
-from quixote import cleanup
-from quixote import get_response
+from quixote import cleanup, get_response
from quixote.http_request import parse_query
from utilities import create_temporary_pub
diff --git a/tests/test_workflow_import.py b/tests/test_workflow_import.py
index b1e526a56..f10d8beca 100644
--- a/tests/test_workflow_import.py
+++ b/tests/test_workflow_import.py
@@ -5,41 +5,39 @@ import xml.etree.ElementTree as ET
import pytest
from quixote.http_request import Upload
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import clean_temporary_pub, create_temporary_pub
from wcs.carddef import CardDef
-from wcs.fields import FileField
-from wcs.fields import StringField
+from wcs.fields import FileField, StringField
from wcs.formdef import FormDef
from wcs.mail_templates import MailTemplate
from wcs.qommon.form import UploadedFile
from wcs.qommon.misc import indent_xml as indent
from wcs.wf.attachment import AddAttachmentWorkflowStatusItem
from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
-from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem
-from wcs.wf.create_formdata import Mapping
+from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
from wcs.wf.dispatch import DispatchWorkflowStatusItem
from wcs.wf.export_to_model import ExportToModel
from wcs.wf.external_workflow import ExternalWorkflowGlobalAction
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.wf.jump import JumpWorkflowStatusItem
from wcs.wf.profile import UpdateUserProfileStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
from wcs.wf.wscall import WebserviceCallStatusItem
-from wcs.workflows import ChoiceWorkflowStatusItem
-from wcs.workflows import CommentableWorkflowStatusItem
-from wcs.workflows import DisplayMessageWorkflowStatusItem
-from wcs.workflows import JumpOnSubmitWorkflowStatusItem
-from wcs.workflows import SendmailWorkflowStatusItem
-from wcs.workflows import SendSMSWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowCriticalityLevel
-from wcs.workflows import WorkflowImportError
-from wcs.workflows import WorkflowVariablesFieldsFormDef
+from wcs.workflows import (
+ ChoiceWorkflowStatusItem,
+ CommentableWorkflowStatusItem,
+ DisplayMessageWorkflowStatusItem,
+ JumpOnSubmitWorkflowStatusItem,
+ SendmailWorkflowStatusItem,
+ SendSMSWorkflowStatusItem,
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+ WorkflowCriticalityLevel,
+ WorkflowImportError,
+ WorkflowVariablesFieldsFormDef,
+)
@pytest.fixture
diff --git a/tests/test_workflows.py b/tests/test_workflows.py
index e056167a8..eb7c5f54a 100644
--- a/tests/test_workflows.py
+++ b/tests/test_workflows.py
@@ -16,84 +16,77 @@ try:
except ImportError:
Image = None
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import cleanup
-from quixote import get_response
+from django.utils.encoding import force_bytes, force_text
+from quixote import cleanup, get_response
from quixote.http_request import Upload as QuixoteUpload
-from utilities import MockSubstitutionVariables
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
+from utilities import MockSubstitutionVariables, clean_temporary_pub, create_temporary_pub
from wcs import sessions
from wcs.blocks import BlockDef
from wcs.carddef import CardDef
-from wcs.fields import BlockField
-from wcs.fields import BoolField
-from wcs.fields import CommentField
-from wcs.fields import DateField
-from wcs.fields import EmailField
-from wcs.fields import FileField
-from wcs.fields import ItemField
-from wcs.fields import ItemsField
-from wcs.fields import MapField
-from wcs.fields import PageField
-from wcs.fields import StringField
-from wcs.fields import SubtitleField
-from wcs.fields import TableField
-from wcs.fields import TextField
-from wcs.fields import TitleField
+from wcs.fields import (
+ BlockField,
+ BoolField,
+ CommentField,
+ DateField,
+ EmailField,
+ FileField,
+ ItemField,
+ ItemsField,
+ MapField,
+ PageField,
+ StringField,
+ SubtitleField,
+ TableField,
+ TextField,
+ TitleField,
+)
from wcs.formdata import Evolution
from wcs.formdef import FormDef
from wcs.qommon.errors import ConnectionError
from wcs.qommon.form import *
from wcs.qommon.http_request import HTTPRequest
from wcs.qommon.upload_storage import PicklableUpload
-from wcs.wf.aggregation_email import AggregationEmail
-from wcs.wf.aggregation_email import AggregationEmailWorkflowStatusItem
-from wcs.wf.aggregation_email import send_aggregation_emails
+from wcs.wf.aggregation_email import (
+ AggregationEmail,
+ AggregationEmailWorkflowStatusItem,
+ send_aggregation_emails,
+)
from wcs.wf.anonymise import AnonymiseWorkflowStatusItem
from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
from wcs.wf.create_carddata import CreateCarddataWorkflowStatusItem
-from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem
-from wcs.wf.create_formdata import Mapping
-from wcs.wf.criticality import MODE_DEC
-from wcs.wf.criticality import MODE_INC
-from wcs.wf.criticality import MODE_SET
-from wcs.wf.criticality import ModifyCriticalityWorkflowStatusItem
+from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
+from wcs.wf.criticality import MODE_DEC, MODE_INC, MODE_SET, ModifyCriticalityWorkflowStatusItem
from wcs.wf.dispatch import DispatchWorkflowStatusItem
from wcs.wf.edit_carddata import EditCarddataWorkflowStatusItem
-from wcs.wf.export_to_model import ExportToModel
-from wcs.wf.export_to_model import transform_to_pdf
+from wcs.wf.export_to_model import ExportToModel, transform_to_pdf
from wcs.wf.external_workflow import ExternalWorkflowGlobalAction
-from wcs.wf.form import FormWorkflowStatusItem
-from wcs.wf.form import WorkflowFormFieldsFormDef
+from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.wf.geolocate import GeolocateWorkflowStatusItem
-from wcs.wf.jump import JumpWorkflowStatusItem
-from wcs.wf.jump import _apply_timeouts
+from wcs.wf.jump import JumpWorkflowStatusItem, _apply_timeouts
from wcs.wf.notification import SendNotificationWorkflowStatusItem
from wcs.wf.profile import UpdateUserProfileStatusItem
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
-from wcs.wf.register_comment import JournalEvolutionPart
-from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
+from wcs.wf.register_comment import JournalEvolutionPart, RegisterCommenterWorkflowStatusItem
from wcs.wf.remove import RemoveWorkflowStatusItem
-from wcs.wf.roles import AddRoleWorkflowStatusItem
-from wcs.wf.roles import RemoveRoleWorkflowStatusItem
+from wcs.wf.roles import AddRoleWorkflowStatusItem, RemoveRoleWorkflowStatusItem
from wcs.wf.timeout_jump import TimeoutWorkflowStatusItem
from wcs.wf.wscall import WebserviceCallStatusItem
-from wcs.workflows import AbortActionException
-from wcs.workflows import AttachmentEvolutionPart
-from wcs.workflows import ChoiceWorkflowStatusItem
-from wcs.workflows import CommentableWorkflowStatusItem
-from wcs.workflows import DisplayMessageWorkflowStatusItem
-from wcs.workflows import SendmailWorkflowStatusItem
-from wcs.workflows import SendSMSWorkflowStatusItem
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowCriticalityLevel
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import WorkflowVariablesFieldsFormDef
-from wcs.workflows import perform_items
+from wcs.workflows import (
+ AbortActionException,
+ AttachmentEvolutionPart,
+ ChoiceWorkflowStatusItem,
+ CommentableWorkflowStatusItem,
+ DisplayMessageWorkflowStatusItem,
+ SendmailWorkflowStatusItem,
+ SendSMSWorkflowStatusItem,
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+ WorkflowCriticalityLevel,
+ WorkflowStatusItem,
+ WorkflowVariablesFieldsFormDef,
+ perform_items,
+)
def setup_module(module):
diff --git a/tests/test_wscall.py b/tests/test_wscall.py
index c4b5266cc..3c78af5e8 100644
--- a/tests/test_wscall.py
+++ b/tests/test_wscall.py
@@ -1,9 +1,7 @@
import json
import pytest
-from utilities import clean_temporary_pub
-from utilities import create_temporary_pub
-from utilities import get_app
+from utilities import clean_temporary_pub, create_temporary_pub, get_app
from wcs import fields
from wcs.formdef import FormDef
diff --git a/tests/utilities.py b/tests/utilities.py
index cc4b1d842..7e0c73a21 100644
--- a/tests/utilities.py
+++ b/tests/utilities.py
@@ -10,10 +10,8 @@ import urllib.parse
import psycopg2
from django.conf import settings
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import cleanup
-from quixote import get_publisher
+from django.utils.encoding import force_bytes, force_text
+from quixote import cleanup, get_publisher
from webtest import TestApp
import wcs
@@ -21,10 +19,7 @@ import wcs.middleware
import wcs.qommon.emails
import wcs.qommon.sms
import wcs.wsgi
-from wcs import compat
-from wcs import custom_views
-from wcs import sessions
-from wcs import sql
+from wcs import compat, custom_views, sessions, sql
from wcs.qommon import force_str
from wcs.qommon.errors import ConnectionError
from wcs.roles import Role
diff --git a/wcs/admin/api_access.py b/wcs/admin/api_access.py
index d4538ad0a..0f0730c44 100644
--- a/wcs/admin/api_access.py
+++ b/wcs/admin/api_access.py
@@ -16,21 +16,14 @@
import uuid
-from quixote import get_response
-from quixote import redirect
+from quixote import get_response, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.api_access import ApiAccess
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import template
+from wcs.qommon import _, errors, template
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import TextWidget
+from wcs.qommon.form import Form, HtmlWidget, StringWidget, TextWidget
class ApiAccessUI:
diff --git a/wcs/admin/blocks.py b/wcs/admin/blocks.py
index 93e760b3a..d260eb4a2 100644
--- a/wcs/admin/blocks.py
+++ b/wcs/admin/blocks.py
@@ -16,29 +16,17 @@
import xml.etree.ElementTree as ET
-from quixote import get_publisher
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.admin import utils
-from wcs.admin.fields import FieldDefPage
-from wcs.admin.fields import FieldsDirectory
+from wcs.admin.fields import FieldDefPage, FieldsDirectory
from wcs.backoffice.snapshots import SnapshotsDirectory
-from wcs.blocks import BlockDef
-from wcs.blocks import BlockdefImportError
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon import misc
-from wcs.qommon import template
+from wcs.blocks import BlockDef, BlockdefImportError
+from wcs.qommon import N_, _, misc, template
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import FileWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import StringWidget
+from wcs.qommon.form import FileWidget, Form, HtmlWidget, StringWidget
class BlockFieldDefPage(FieldDefPage):
diff --git a/wcs/admin/categories.py b/wcs/admin/categories.py
index 12bbd0197..b5bb1f622 100644
--- a/wcs/admin/categories.py
+++ b/wcs/admin/categories.py
@@ -14,24 +14,16 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_request
-from quixote import get_response
-from quixote import redirect
+from quixote import get_request, get_response, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.carddef import CardDef
-from wcs.categories import CardDefCategory
-from wcs.categories import Category
+from wcs.categories import CardDefCategory, Category
from wcs.formdef import FormDef
-from wcs.qommon import N_
-from wcs.qommon import _
+from wcs.qommon import N_, _
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import WysiwygTextWidget
+from wcs.qommon.form import Form, HtmlWidget, StringWidget, WysiwygTextWidget
class CategoryUI:
diff --git a/wcs/admin/data_sources.py b/wcs/admin/data_sources.py
index e484b90eb..46184547a 100644
--- a/wcs/admin/data_sources.py
+++ b/wcs/admin/data_sources.py
@@ -16,36 +16,34 @@
import xml.etree.ElementTree as ET
-from quixote import get_publisher
-from quixote import redirect
+from quixote import get_publisher, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.admin import utils
from wcs.backoffice.snapshots import SnapshotsDirectory
from wcs.carddef import CardDef
-from wcs.data_sources import DataSourceSelectionWidget
-from wcs.data_sources import NamedDataSource
-from wcs.data_sources import RefreshAgendas
-from wcs.data_sources import get_structured_items
-from wcs.data_sources import has_chrono
+from wcs.data_sources import (
+ DataSourceSelectionWidget,
+ NamedDataSource,
+ RefreshAgendas,
+ get_structured_items,
+ has_chrono,
+)
from wcs.formdef import get_formdefs_of_all_kinds
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import force_str
-from wcs.qommon import misc
-from wcs.qommon import template
+from wcs.qommon import _, errors, force_str, misc, template
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import DurationWidget
-from wcs.qommon.form import FileWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import TextWidget
-from wcs.qommon.form import get_response
-from wcs.qommon.form import get_session
+from wcs.qommon.form import (
+ CheckboxWidget,
+ DurationWidget,
+ FileWidget,
+ Form,
+ HtmlWidget,
+ StringWidget,
+ TextWidget,
+ get_response,
+ get_session,
+)
class NamedDataSourceUI:
diff --git a/wcs/admin/fields.py b/wcs/admin/fields.py
index 7323fd1a1..d448e5c44 100644
--- a/wcs/admin/fields.py
+++ b/wcs/admin/fields.py
@@ -19,31 +19,18 @@
import copy
import json
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmlescape
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmlescape, htmltext
from wcs import fields
from wcs.admin import utils
from wcs.fields import get_field_options
from wcs.formdef import FormDef
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import get_cfg
-from wcs.qommon import misc
+from wcs.qommon import N_, _, errors, get_cfg, misc
from wcs.qommon.admin.menu import command_icon
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import SingleSelectWidget
-from wcs.qommon.form import StringWidget
+from wcs.qommon.form import CheckboxWidget, Form, HtmlWidget, SingleSelectWidget, StringWidget
class FieldDefPage(Directory):
diff --git a/wcs/admin/forms.py b/wcs/admin/forms.py
index 58ad31348..04b04e946 100644
--- a/wcs/admin/forms.py
+++ b/wcs/admin/forms.py
@@ -23,61 +23,45 @@ import tarfile
import time
import xml.etree.ElementTree as ET
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
-from quixote.directory import AccessControlled
-from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request, get_response, get_session, redirect
+from quixote.directory import AccessControlled, Directory
+from quixote.html import TemplateIO, htmltext
from wcs.backoffice.snapshots import SnapshotsDirectory
from wcs.carddef import CardDef
from wcs.categories import Category
-from wcs.formdef import DRAFTS_DEFAULT_LIFESPAN
-from wcs.formdef import FormDef
-from wcs.formdef import FormdefImportError
-from wcs.formdef import FormdefImportRecoverableError
+from wcs.formdef import DRAFTS_DEFAULT_LIFESPAN, FormDef, FormdefImportError, FormdefImportRecoverableError
from wcs.forms.root import qrcode
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon import force_str
-from wcs.qommon import get_logger
-from wcs.qommon import misc
-from wcs.qommon import template
+from wcs.qommon import N_, _, force_str, get_logger, misc, template
from wcs.qommon.afterjobs import AfterJob
from wcs.qommon.backoffice.menu import html_top
from wcs.qommon.errors import TraversalError
-from wcs.qommon.form import CheckboxesWidget
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import DateTimeWidget
-from wcs.qommon.form import DateWidget
-from wcs.qommon.form import FileWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import SingleSelectWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import UrlWidget
-from wcs.qommon.form import ValidatedStringWidget
-from wcs.qommon.form import WcsExtraStringWidget
-from wcs.qommon.form import WidgetList
-from wcs.qommon.form import WysiwygTextWidget
+from wcs.qommon.form import (
+ CheckboxesWidget,
+ CheckboxWidget,
+ DateTimeWidget,
+ DateWidget,
+ FileWidget,
+ Form,
+ HtmlWidget,
+ SingleSelectWidget,
+ StringWidget,
+ UrlWidget,
+ ValidatedStringWidget,
+ WcsExtraStringWidget,
+ WidgetList,
+ WysiwygTextWidget,
+)
from wcs.qommon.misc import C_
-from wcs.qommon.storage import Equal
-from wcs.qommon.storage import NotEqual
-from wcs.qommon.storage import Null
-from wcs.roles import get_user_roles
-from wcs.roles import logged_users_role
+from wcs.qommon.storage import Equal, NotEqual, Null
+from wcs.roles import get_user_roles, logged_users_role
from wcs.workflows import Workflow
from . import utils
from .blocks import BlocksDirectory
from .categories import CategoriesDirectory
from .data_sources import NamedDataSourcesDirectory
-from .fields import FieldDefPage
-from .fields import FieldsDirectory
+from .fields import FieldDefPage, FieldsDirectory
from .logged_errors import LoggedErrorsDirectory
diff --git a/wcs/admin/logged_errors.py b/wcs/admin/logged_errors.py
index 0d01b0bf9..1c08c8acd 100644
--- a/wcs/admin/logged_errors.py
+++ b/wcs/admin/logged_errors.py
@@ -17,26 +17,13 @@
import re
from django.utils.text import Truncator
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import misc
-from wcs.qommon import ngettext
-from wcs.qommon import template
+from wcs.qommon import N_, _, errors, misc, ngettext, template
from wcs.qommon.backoffice.listing import pagination_links
-from wcs.qommon.storage import Equal
-from wcs.qommon.storage import NotEqual
-from wcs.qommon.storage import NotNull
-from wcs.qommon.storage import Null
-from wcs.qommon.storage import Or
+from wcs.qommon.storage import Equal, NotEqual, NotNull, Null, Or
class LoggedErrorDirectory(Directory):
diff --git a/wcs/admin/mail_templates.py b/wcs/admin/mail_templates.py
index 549b538f7..0ba9f22aa 100644
--- a/wcs/admin/mail_templates.py
+++ b/wcs/admin/mail_templates.py
@@ -16,28 +16,23 @@
import xml.etree.ElementTree as ET
-from quixote import get_publisher
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_response, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.mail_templates import MailTemplate
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import force_str
-from wcs.qommon import misc
-from wcs.qommon import template
+from wcs.qommon import _, errors, force_str, misc, template
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import ComputedExpressionWidget
-from wcs.qommon.form import FileWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import TextWidget
-from wcs.qommon.form import WidgetList
-from wcs.qommon.form import get_session
+from wcs.qommon.form import (
+ ComputedExpressionWidget,
+ FileWidget,
+ Form,
+ HtmlWidget,
+ StringWidget,
+ TextWidget,
+ WidgetList,
+ get_session,
+)
class MailTemplatesDirectory(Directory):
diff --git a/wcs/admin/roles.py b/wcs/admin/roles.py
index 86b67a65b..955e1c65b 100644
--- a/wcs/admin/roles.py
+++ b/wcs/admin/roles.py
@@ -14,24 +14,14 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_response, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.formdef import FormDef
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import get_cfg
+from wcs.qommon import _, errors, get_cfg
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import TextWidget
-from wcs.qommon.form import WidgetList
+from wcs.qommon.form import CheckboxWidget, Form, HtmlWidget, StringWidget, TextWidget, WidgetList
from wcs.roles import get_user_roles
diff --git a/wcs/admin/root.py b/wcs/admin/root.py
index 89a99c542..f4de3559e 100644
--- a/wcs/admin/root.py
+++ b/wcs/admin/root.py
@@ -14,8 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_request
-from quixote import redirect
+from quixote import get_request, redirect
from quixote.directory import Directory
diff --git a/wcs/admin/settings.py b/wcs/admin/settings.py
index be87b7f28..3c9b6c3b3 100644
--- a/wcs/admin/settings.py
+++ b/wcs/admin/settings.py
@@ -28,29 +28,17 @@ import shutil
import xml.etree.ElementTree as ET
import zipfile
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from django.utils.encoding import force_bytes, force_text
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.backoffice.studio import StudioDirectory
from wcs.blocks import BlockDef
from wcs.carddef import CardDef
from wcs.data_sources import NamedDataSource
from wcs.formdef import FormDef
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import get_cfg
-from wcs.qommon import ident
-from wcs.qommon import misc
-from wcs.qommon import template
+from wcs.qommon import N_, _, errors, get_cfg, ident, misc, template
from wcs.qommon.admin.cfg import cfg_submit
from wcs.qommon.admin.emails import EmailsDirectory
from wcs.qommon.admin.logger import LoggerDirectory
@@ -59,27 +47,27 @@ from wcs.qommon.admin.settings import SettingsDirectory as QommonSettingsDirecto
from wcs.qommon.admin.texts import TextsDirectory
from wcs.qommon.afterjobs import AfterJob
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import CheckboxesTableWidget
-from wcs.qommon.form import CheckboxesWidget
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import ComputedExpressionWidget
-from wcs.qommon.form import FileWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import IntWidget
-from wcs.qommon.form import MapWidget
-from wcs.qommon.form import PasswordWidget
-from wcs.qommon.form import SingleSelectWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import TextWidget
-from wcs.qommon.form import UrlWidget
-from wcs.qommon.form import WidgetList
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowImportError
+from wcs.qommon.form import (
+ CheckboxesTableWidget,
+ CheckboxesWidget,
+ CheckboxWidget,
+ ComputedExpressionWidget,
+ FileWidget,
+ Form,
+ IntWidget,
+ MapWidget,
+ PasswordWidget,
+ SingleSelectWidget,
+ StringWidget,
+ TextWidget,
+ UrlWidget,
+ WidgetList,
+)
+from wcs.workflows import Workflow, WorkflowImportError
from .api_access import ApiAccessDirectory
from .data_sources import NamedDataSourcesDirectory
-from .fields import FieldDefPage
-from .fields import FieldsDirectory
+from .fields import FieldDefPage, FieldsDirectory
from .wscalls import NamedWsCallsDirectory
@@ -953,8 +941,7 @@ class SettingsDirectory(QommonSettingsDirectory):
return r.getvalue()
def template_submit(self, form=None):
- from wcs.qommon.template import DEFAULT_TEMPLATE_EZT
- from wcs.qommon.template import get_default_ezt_template
+ from wcs.qommon.template import DEFAULT_TEMPLATE_EZT, get_default_ezt_template
theme_default_template_ezt = get_default_ezt_template()
diff --git a/wcs/admin/users.py b/wcs/admin/users.py
index 97129a0d2..70ea271a4 100644
--- a/wcs/admin/users.py
+++ b/wcs/admin/users.py
@@ -14,36 +14,26 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
import wcs.qommon.storage as st
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import force_str
-from wcs.qommon import get_cfg
-from wcs.qommon import ident
-from wcs.qommon import misc
+from wcs.qommon import N_, _, errors, force_str, get_cfg, ident, misc
from wcs.qommon.admin.emails import EmailsDirectory
from wcs.qommon.admin.menu import error_page
from wcs.qommon.backoffice.listing import pagination_links
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import EmailWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import SingleSelectWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import WidgetList
-from wcs.qommon.ident.idp import is_idp_managing_user_attributes
-from wcs.qommon.ident.idp import is_idp_managing_user_roles
+from wcs.qommon.form import (
+ CheckboxWidget,
+ EmailWidget,
+ Form,
+ HtmlWidget,
+ SingleSelectWidget,
+ StringWidget,
+ WidgetList,
+)
+from wcs.qommon.ident.idp import is_idp_managing_user_attributes, is_idp_managing_user_roles
class UserUI:
diff --git a/wcs/admin/utils.py b/wcs/admin/utils.py
index 0bd031296..ffdcc00f4 100644
--- a/wcs/admin/utils.py
+++ b/wcs/admin/utils.py
@@ -18,10 +18,8 @@
import time
-from quixote import get_publisher
-from quixote import get_request
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request
+from quixote.html import TemplateIO, htmltext
from wcs.qommon import _
from wcs.qommon.misc import localstrftime
diff --git a/wcs/admin/workflows.py b/wcs/admin/workflows.py
index 40e92811c..9f506909a 100644
--- a/wcs/admin/workflows.py
+++ b/wcs/admin/workflows.py
@@ -22,56 +22,48 @@ import io
import textwrap
import time
import xml.etree.ElementTree as ET
-from subprocess import PIPE
-from subprocess import Popen
+from subprocess import PIPE, Popen
from django.utils.encoding import force_bytes
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.backoffice.snapshots import SnapshotsDirectory
from wcs.backoffice.studio import StudioDirectory
from wcs.carddef import CardDef
from wcs.formdata import Evolution
from wcs.formdef import FormDef
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import force_str
-from wcs.qommon import get_logger
-from wcs.qommon import misc
+from wcs.qommon import N_, _, errors, force_str, get_logger, misc
from wcs.qommon.admin.menu import command_icon
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import ColourWidget
-from wcs.qommon.form import CompositeWidget
-from wcs.qommon.form import FileWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import SingleSelectWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import UrlWidget
-from wcs.qommon.form import VarnameWidget
-from wcs.qommon.form import WysiwygTextWidget
-from wcs.workflows import DuplicateGlobalActionNameError
-from wcs.workflows import DuplicateStatusNameError
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
-from wcs.workflows import WorkflowCriticalityLevel
-from wcs.workflows import WorkflowImportError
-from wcs.workflows import WorkflowVariablesFieldsFormDef
-from wcs.workflows import item_classes
+from wcs.qommon.form import (
+ CheckboxWidget,
+ ColourWidget,
+ CompositeWidget,
+ FileWidget,
+ Form,
+ HtmlWidget,
+ SingleSelectWidget,
+ StringWidget,
+ UrlWidget,
+ VarnameWidget,
+ WysiwygTextWidget,
+)
+from wcs.workflows import (
+ DuplicateGlobalActionNameError,
+ DuplicateStatusNameError,
+ Workflow,
+ WorkflowBackofficeFieldsFormDef,
+ WorkflowCriticalityLevel,
+ WorkflowImportError,
+ WorkflowVariablesFieldsFormDef,
+ item_classes,
+)
from . import utils
from .data_sources import NamedDataSourcesDirectory
-from .fields import FieldDefPage
-from .fields import FieldsDirectory
+from .fields import FieldDefPage, FieldsDirectory
from .logged_errors import LoggedErrorsDirectory
from .mail_templates import MailTemplatesDirectory
diff --git a/wcs/admin/wscalls.py b/wcs/admin/wscalls.py
index ae14cf62f..e6d28889c 100644
--- a/wcs/admin/wscalls.py
+++ b/wcs/admin/wscalls.py
@@ -16,30 +16,16 @@
import xml.etree.ElementTree as ET
-from quixote import get_publisher
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.admin import utils
from wcs.backoffice.snapshots import SnapshotsDirectory
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import force_str
-from wcs.qommon import misc
-from wcs.qommon import template
+from wcs.qommon import _, errors, force_str, misc, template
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import FileWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import TextWidget
-from wcs.wscalls import NamedWsCall
-from wcs.wscalls import WsCallRequestWidget
+from wcs.qommon.form import CheckboxWidget, FileWidget, Form, HtmlWidget, StringWidget, TextWidget
+from wcs.wscalls import NamedWsCall, WsCallRequestWidget
class NamedWsCallUI:
diff --git a/wcs/api.py b/wcs/api.py
index a1004f0d8..879d83422 100644
--- a/wcs/api.py
+++ b/wcs/api.py
@@ -21,27 +21,18 @@ import sys
import time
import urllib.parse
-from django.http import HttpResponse
-from django.http import HttpResponseBadRequest
-from django.http import JsonResponse
+from django.http import HttpResponse, HttpResponseBadRequest, JsonResponse
from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
+from quixote import get_publisher, get_request, get_response, get_session
from quixote.directory import Directory
from quixote.errors import MethodNotAllowedError
import wcs.qommon.storage as st
from wcs.admin.settings import UserFieldsFormDef
-from wcs.api_utils import get_query_flag
-from wcs.api_utils import get_user_from_api_query_string
-from wcs.api_utils import is_url_signed
-from wcs.api_utils import sign_url_auto_orig
+from wcs.api_utils import get_query_flag, get_user_from_api_query_string, is_url_signed, sign_url_auto_orig
from wcs.carddef import CardDef
from wcs.categories import Category
-from wcs.conditions import Condition
-from wcs.conditions import ValidationError
+from wcs.conditions import Condition, ValidationError
from wcs.data_sources import NamedDataSource
from wcs.data_sources import get_object as get_data_source_object
from wcs.formdef import FormDef
@@ -53,15 +44,15 @@ from .backoffice.data_management import CardPage as BackofficeCardPage
from .backoffice.management import FormPage as BackofficeFormPage
from .backoffice.management import ManagementDirectory
from .backoffice.submission import SubmissionDirectory
-from .qommon import _
-from .qommon import misc
-from .qommon.errors import AccessForbiddenError
-from .qommon.errors import ConnectionError
-from .qommon.errors import TraversalError
-from .qommon.errors import UnknownNameIdAccessForbiddenError
+from .qommon import _, misc
+from .qommon.errors import (
+ AccessForbiddenError,
+ ConnectionError,
+ TraversalError,
+ UnknownNameIdAccessForbiddenError,
+)
from .qommon.form import ComputedExpressionWidget
-from .qommon.storage import Equal
-from .qommon.storage import NotEqual
+from .qommon.storage import Equal, NotEqual
def posted_json_data_to_formdata_data(formdef, data):
diff --git a/wcs/api_utils.py b/wcs/api_utils.py
index 25f9c7d4b..01978c434 100644
--- a/wcs/api_utils.py
+++ b/wcs/api_utils.py
@@ -24,15 +24,11 @@ import os
import random
import urllib.parse
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
+from django.utils.encoding import force_bytes, force_text
+from quixote import get_publisher, get_request
from .api_access import ApiAccess
-from .qommon.errors import AccessForbiddenError
-from .qommon.errors import HttpResponse401Error
-from .qommon.errors import UnknownNameIdAccessForbiddenError
+from .qommon.errors import AccessForbiddenError, HttpResponse401Error, UnknownNameIdAccessForbiddenError
from .qommon.misc import simplify
DEFAULT_DURATION = 30
diff --git a/wcs/backoffice/cards.py b/wcs/backoffice/cards.py
index afd3da4fd..8430c0f10 100644
--- a/wcs/backoffice/cards.py
+++ b/wcs/backoffice/cards.py
@@ -16,31 +16,21 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.admin import utils
from wcs.admin.categories import CardDefCategoriesDirectory
-from wcs.admin.forms import FormDefPage
-from wcs.admin.forms import FormDefUI
-from wcs.admin.forms import FormsDirectory
-from wcs.admin.forms import OptionsDirectory
-from wcs.admin.forms import html_top
+from wcs.admin.forms import FormDefPage, FormDefUI, FormsDirectory, OptionsDirectory, html_top
from wcs.admin.logged_errors import LoggedErrorsDirectory
from wcs.carddef import CardDef
from wcs.categories import CardDefCategory
from wcs.workflows import Workflow
-from ..qommon import N_
-from ..qommon import _
+from ..qommon import N_, _
from ..qommon.misc import C_
-from ..qommon.storage import NotEqual
-from ..qommon.storage import Null
+from ..qommon.storage import NotEqual, Null
class CardDefUI(FormDefUI):
diff --git a/wcs/backoffice/data_management.py b/wcs/backoffice/data_management.py
index afb3f8041..906ddebc7 100644
--- a/wcs/backoffice/data_management.py
+++ b/wcs/backoffice/data_management.py
@@ -18,28 +18,18 @@ import csv
import datetime
import io
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, redirect
from quixote.html import htmltext
from wcs import fields
from wcs.carddef import CardDef
from wcs.categories import CardDefCategory
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import errors
-from ..qommon import template
+from ..qommon import N_, _, errors, template
from ..qommon.afterjobs import AfterJob
from ..qommon.backoffice.menu import html_top
-from ..qommon.form import FileWidget
-from ..qommon.form import Form
-from .management import FormBackOfficeStatusPage
-from .management import FormFillPage
-from .management import FormPage
-from .management import ManagementDirectory
+from ..qommon.form import FileWidget, Form
+from .management import FormBackOfficeStatusPage, FormFillPage, FormPage, ManagementDirectory
class DataManagementDirectory(ManagementDirectory):
diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py
index 59f418ebf..1b3ecb33d 100644
--- a/wcs/backoffice/management.py
+++ b/wcs/backoffice/management.py
@@ -26,15 +26,9 @@ import zipfile
import vobject
from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmlescape
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmlescape, htmltext
from wcs.admin.settings import UserFieldsFormDef
from wcs.api_utils import get_user_from_api_query_string
@@ -47,52 +41,43 @@ from wcs.forms.backoffice import FormDefUI
from wcs.forms.common import FormStatusPage
from wcs.roles import logged_users_role
from wcs.variables import LazyFieldVar
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import template_on_formdata
+from wcs.workflows import WorkflowStatusItem, template_on_formdata
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import emails
-from ..qommon import errors
-from ..qommon import ezt
-from ..qommon import force_str
-from ..qommon import get_cfg
-from ..qommon import get_logger
-from ..qommon import misc
-from ..qommon import ngettext
-from ..qommon import ods
-from ..qommon import sms
+from ..qommon import N_, _, emails, errors, ezt, force_str, get_cfg, get_logger, misc, ngettext, ods, sms
from ..qommon.admin.emails import EmailsDirectory
from ..qommon.admin.menu import command_icon
from ..qommon.afterjobs import AfterJob
from ..qommon.backoffice.listing import pagination_links
from ..qommon.backoffice.menu import html_top
from ..qommon.evalutils import make_datetime
-from ..qommon.form import CheckboxWidget
-from ..qommon.form import DateWidget
-from ..qommon.form import EmailWidget
-from ..qommon.form import Form
-from ..qommon.form import HiddenWidget
-from ..qommon.form import HtmlWidget
-from ..qommon.form import MapWidget
-from ..qommon.form import RadiobuttonsWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import StringWidget
-from ..qommon.form import TextWidget
-from ..qommon.form import WysiwygTextWidget
-from ..qommon.misc import C_
-from ..qommon.misc import ellipsize
-from ..qommon.storage import Contains
-from ..qommon.storage import Equal
-from ..qommon.storage import FtsMatch
-from ..qommon.storage import GreaterOrEqual
-from ..qommon.storage import ILike
-from ..qommon.storage import Intersects
-from ..qommon.storage import LessOrEqual
-from ..qommon.storage import NotEqual
-from ..qommon.storage import NotNull
-from ..qommon.storage import Null
-from ..qommon.storage import Or
+from ..qommon.form import (
+ CheckboxWidget,
+ DateWidget,
+ EmailWidget,
+ Form,
+ HiddenWidget,
+ HtmlWidget,
+ MapWidget,
+ RadiobuttonsWidget,
+ SingleSelectWidget,
+ StringWidget,
+ TextWidget,
+ WysiwygTextWidget,
+)
+from ..qommon.misc import C_, ellipsize
+from ..qommon.storage import (
+ Contains,
+ Equal,
+ FtsMatch,
+ GreaterOrEqual,
+ ILike,
+ Intersects,
+ LessOrEqual,
+ NotEqual,
+ NotNull,
+ Null,
+ Or,
+)
from ..qommon.substitution import CompatibilityNamesDict
from ..qommon.template import Template
from ..qommon.upload_storage import PicklableUpload
diff --git a/wcs/backoffice/root.py b/wcs/backoffice/root.py
index afe4eee17..73d79292e 100644
--- a/wcs/backoffice/root.py
+++ b/wcs/backoffice/root.py
@@ -17,12 +17,8 @@
import os
from django.utils.translation import pgettext
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import redirect
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request, get_response, redirect
+from quixote.html import TemplateIO, htmltext
import wcs.admin.categories
import wcs.admin.forms
@@ -32,12 +28,7 @@ import wcs.admin.users
import wcs.admin.workflows
from wcs.formdef import FormDef
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import errors
-from ..qommon import get_cfg
-from ..qommon import misc
-from ..qommon import template
+from ..qommon import N_, _, errors, get_cfg, misc, template
from ..qommon.afterjobs import AfterJob
from ..qommon.backoffice import BackofficeRootDirectory
from ..qommon.backoffice.menu import html_top
diff --git a/wcs/backoffice/snapshots.py b/wcs/backoffice/snapshots.py
index 6bc347de0..ba3d024cc 100644
--- a/wcs/backoffice/snapshots.py
+++ b/wcs/backoffice/snapshots.py
@@ -14,27 +14,17 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.blocks import BlockDef
from wcs.carddef import CardDef
from wcs.data_sources import NamedDataSource
-from wcs.formdef import FormDef
-from wcs.formdef import FormdefImportError
-from wcs.qommon import _
-from wcs.qommon import errors
-from wcs.qommon import misc
-from wcs.qommon import template
+from wcs.formdef import FormDef, FormdefImportError
+from wcs.qommon import _, errors, misc, template
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import Form
-from wcs.qommon.form import RadiobuttonsWidget
-from wcs.qommon.form import StringWidget
+from wcs.qommon.form import Form, RadiobuttonsWidget, StringWidget
from wcs.workflows import Workflow
from wcs.wscalls import NamedWsCall
diff --git a/wcs/backoffice/studio.py b/wcs/backoffice/studio.py
index 7a54f0038..d8b692949 100644
--- a/wcs/backoffice/studio.py
+++ b/wcs/backoffice/studio.py
@@ -18,8 +18,7 @@ from quixote import get_publisher
from quixote.directory import Directory
from wcs.admin.logged_errors import LoggedErrorsDirectory
-from wcs.qommon import _
-from wcs.qommon import template
+from wcs.qommon import _, template
from wcs.qommon.backoffice.menu import html_top
from wcs.qommon.form import get_response
diff --git a/wcs/backoffice/submission.py b/wcs/backoffice/submission.py
index bca749eff..f7206ba96 100644
--- a/wcs/backoffice/submission.py
+++ b/wcs/backoffice/submission.py
@@ -17,14 +17,9 @@
import time
from django.utils.safestring import mark_safe
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.categories import Category
from wcs.formdata import FormData
@@ -32,14 +27,10 @@ from wcs.formdef import FormDef
from wcs.forms.common import FormStatusPage
from wcs.forms.root import FormPage as PublicFormFillPage
-from ..qommon import _
-from ..qommon import errors
-from ..qommon import misc
+from ..qommon import _, errors, misc
from ..qommon.backoffice.menu import html_top
-from ..qommon.form import Form
-from ..qommon.form import HtmlWidget
-from ..qommon.storage import Equal
-from ..qommon.storage import NotEqual
+from ..qommon.form import Form, HtmlWidget
+from ..qommon.storage import Equal, NotEqual
class RemoveDraftDirectory(Directory):
diff --git a/wcs/blocks.py b/wcs/blocks.py
index e75e61c6f..7934b0c08 100644
--- a/wcs/blocks.py
+++ b/wcs/blocks.py
@@ -17,18 +17,12 @@
import uuid
import xml.etree.ElementTree as ET
-from quixote import get_publisher
-from quixote import get_request
-from quixote.html import htmltag
-from quixote.html import htmltext
+from quixote import get_publisher, get_request
+from quixote.html import htmltag, htmltext
-from . import data_sources
-from . import fields
-from .qommon import N_
-from .qommon import _
-from .qommon import misc
-from .qommon.form import CompositeWidget
-from .qommon.form import WidgetList
+from . import data_sources, fields
+from .qommon import N_, _, misc
+from .qommon.form import CompositeWidget, WidgetList
from .qommon.storage import StorableObject
from .qommon.template import Template
diff --git a/wcs/carddef.py b/wcs/carddef.py
index 387d6c370..df39ff6ec 100644
--- a/wcs/carddef.py
+++ b/wcs/carddef.py
@@ -21,15 +21,10 @@ from quixote import get_publisher
from wcs.carddata import CardData
from wcs.categories import CardDefCategory
-from wcs.formdef import FormDef
-from wcs.formdef import get_formdefs_of_all_kinds
+from wcs.formdef import FormDef, get_formdefs_of_all_kinds
-from .qommon import N_
-from .qommon import _
-from .qommon import misc
-from .qommon.storage import Equal
-from .qommon.storage import ILike
-from .qommon.storage import NotEqual
+from .qommon import N_, _, misc
+from .qommon.storage import Equal, ILike, NotEqual
from .qommon.template import Template
if not hasattr(types, 'ClassType'):
@@ -96,9 +91,7 @@ class CardDef(FormDef):
@classmethod
def get_default_workflow(cls):
from wcs.wf.remove import RemoveWorkflowStatusItem
- from wcs.workflows import ChoiceWorkflowStatusItem
- from wcs.workflows import EditableWorkflowStatusItem
- from wcs.workflows import Workflow
+ from wcs.workflows import ChoiceWorkflowStatusItem, EditableWorkflowStatusItem, Workflow
workflow = Workflow(name=_('Default (cards)'))
workflow.id = '_carddef_default'
diff --git a/wcs/compat.py b/wcs/compat.py
index 4365f24a6..65f9c5297 100644
--- a/wcs/compat.py
+++ b/wcs/compat.py
@@ -20,22 +20,18 @@ from threading import Lock
from django.conf import settings
from django.http import HttpResponse
-from django.template import TemplateDoesNotExist
-from django.template import loader
+from django.template import TemplateDoesNotExist, loader
from django.template.response import TemplateResponse
from django.utils.deprecation import MiddlewareMixin
from django.views.generic.base import TemplateView
-from quixote import get_publisher
-from quixote import get_request
+from quixote import get_publisher, get_request
from quixote.errors import PublishError
from quixote.http_request import Upload
from .publisher import WcsPublisher
-from .qommon import force_str
-from .qommon import template
+from .qommon import force_str, template
from .qommon.http_request import HTTPRequest
-from .qommon.publisher import get_cfg
-from .qommon.publisher import set_publisher_class
+from .qommon.publisher import get_cfg, set_publisher_class
try:
import sentry_sdk
diff --git a/wcs/conditions.py b/wcs/conditions.py
index 8d513e0c6..f31c7d630 100644
--- a/wcs/conditions.py
+++ b/wcs/conditions.py
@@ -15,15 +15,11 @@
# along with this program; if not, see .
import django.template.smartif
-from django.template import Context
-from django.template import Template
-from django.template import TemplateSyntaxError
+from django.template import Context, Template, TemplateSyntaxError
from django.utils.encoding import force_text
from quixote import get_publisher
-from .qommon import _
-from .qommon import force_str
-from .qommon import get_logger
+from .qommon import _, force_str, get_logger
class ValidationError(ValueError):
diff --git a/wcs/context_processors.py b/wcs/context_processors.py
index 289b2e620..dfcebfb5f 100644
--- a/wcs/context_processors.py
+++ b/wcs/context_processors.py
@@ -14,10 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
+from quixote import get_publisher, get_request, get_response, get_session
def get_global_context():
diff --git a/wcs/ctl/backup.py b/wcs/ctl/backup.py
index 214b8a44d..c8d29bfb8 100644
--- a/wcs/ctl/backup.py
+++ b/wcs/ctl/backup.py
@@ -18,8 +18,7 @@ import os
import tarfile
import time
-from ..qommon.ctl import Command
-from ..qommon.ctl import make_option
+from ..qommon.ctl import Command, make_option
class CmdBackup(Command):
diff --git a/wcs/ctl/check_hobos.py b/wcs/ctl/check_hobos.py
index a65079d12..5c8a7d9a8 100644
--- a/wcs/ctl/check_hobos.py
+++ b/wcs/ctl/check_hobos.py
@@ -29,14 +29,11 @@ from django.utils.encoding import force_bytes
from quixote import cleanup
from wcs.admin.settings import UserFieldsFormDef
-from wcs.fields import DateField
-from wcs.fields import EmailField
-from wcs.fields import StringField
+from wcs.fields import DateField, EmailField, StringField
from wcs.qommon import force_str
from ..qommon import misc
-from ..qommon.ctl import Command
-from ..qommon.ctl import make_option
+from ..qommon.ctl import Command, make_option
from ..qommon.storage import atomic_write
diff --git a/wcs/ctl/delete_tenant.py b/wcs/ctl/delete_tenant.py
index 1eb3fa708..82a1be9e6 100644
--- a/wcs/ctl/delete_tenant.py
+++ b/wcs/ctl/delete_tenant.py
@@ -24,8 +24,7 @@ from shutil import rmtree
import psycopg2
import psycopg2.errorcodes
-from ..qommon.ctl import Command
-from ..qommon.ctl import make_option
+from ..qommon.ctl import Command, make_option
class CmdDeleteTenant(Command):
diff --git a/wcs/ctl/management/commands/__init__.py b/wcs/ctl/management/commands/__init__.py
index 6040e1e90..8a056a306 100644
--- a/wcs/ctl/management/commands/__init__.py
+++ b/wcs/ctl/management/commands/__init__.py
@@ -16,8 +16,7 @@
import os
-from django.core.management.base import BaseCommand
-from django.core.management.base import CommandError
+from django.core.management.base import BaseCommand, CommandError
from wcs.qommon.publisher import get_publisher_class
diff --git a/wcs/ctl/management/commands/convert_to_sql.py b/wcs/ctl/management/commands/convert_to_sql.py
index 88cba87af..f1b639381 100644
--- a/wcs/ctl/management/commands/convert_to_sql.py
+++ b/wcs/ctl/management/commands/convert_to_sql.py
@@ -20,8 +20,7 @@ import sys
import traceback
import psycopg2
-from django.core.management.base import BaseCommand
-from django.core.management.base import CommandError
+from django.core.management.base import BaseCommand, CommandError
from django.utils.encoding import force_bytes
from wcs import sql
diff --git a/wcs/ctl/rebuild_indexes.py b/wcs/ctl/rebuild_indexes.py
index f6189cf37..83e1bd0b4 100644
--- a/wcs/ctl/rebuild_indexes.py
+++ b/wcs/ctl/rebuild_indexes.py
@@ -16,8 +16,7 @@
import os
-from ..qommon.ctl import Command
-from ..qommon.ctl import make_option
+from ..qommon.ctl import Command, make_option
def rebuild_vhost_indexes(pub, destroy=False):
diff --git a/wcs/ctl/restore.py b/wcs/ctl/restore.py
index 11c9d6d15..94d923819 100644
--- a/wcs/ctl/restore.py
+++ b/wcs/ctl/restore.py
@@ -20,8 +20,7 @@ import os
import sys
import tarfile
-from ..qommon.ctl import Command
-from ..qommon.ctl import make_option
+from ..qommon.ctl import Command, make_option
class CmdRestore(Command):
diff --git a/wcs/ctl/runscript.py b/wcs/ctl/runscript.py
index d747679e6..6b3a506dc 100644
--- a/wcs/ctl/runscript.py
+++ b/wcs/ctl/runscript.py
@@ -19,8 +19,7 @@ import runpy
import sys
import warnings
-from ..qommon.ctl import Command
-from ..qommon.ctl import make_option
+from ..qommon.ctl import Command, make_option
class CmdRunScript(Command):
diff --git a/wcs/ctl/wipe_data.py b/wcs/ctl/wipe_data.py
index f32d9dfda..782e06c23 100644
--- a/wcs/ctl/wipe_data.py
+++ b/wcs/ctl/wipe_data.py
@@ -19,8 +19,7 @@ from __future__ import print_function
import os
import sys
-from ..qommon.ctl import Command
-from ..qommon.ctl import make_option
+from ..qommon.ctl import Command, make_option
class CmdWipeData(Command):
diff --git a/wcs/custom_views.py b/wcs/custom_views.py
index 2162515aa..b087da18d 100644
--- a/wcs/custom_views.py
+++ b/wcs/custom_views.py
@@ -23,9 +23,7 @@ from quixote import get_publisher
from wcs.carddef import CardDef
from wcs.formdef import FormDef
from wcs.qommon.misc import simplify
-from wcs.qommon.storage import Contains
-from wcs.qommon.storage import Equal
-from wcs.qommon.storage import StorableObject
+from wcs.qommon.storage import Contains, Equal, StorableObject
from .qommon.misc import xml_node_text
diff --git a/wcs/data_sources.py b/wcs/data_sources.py
index bf7d2f597..459e496a2 100644
--- a/wcs/data_sources.py
+++ b/wcs/data_sources.py
@@ -20,27 +20,16 @@ import sys
import urllib.parse
import xml.etree.ElementTree as ET
-from django.template import TemplateSyntaxError
-from django.template import VariableDoesNotExist
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
+from django.template import TemplateSyntaxError, VariableDoesNotExist
+from django.utils.encoding import force_bytes, force_text
+from quixote import get_publisher, get_request, get_session
from quixote.html import TemplateIO
from .api_utils import sign_url_auto_orig
-from .qommon import N_
-from .qommon import _
-from .qommon import force_str
-from .qommon import get_logger
-from .qommon import misc
+from .qommon import N_, _, force_str, get_logger, misc
from .qommon.afterjobs import AfterJob
from .qommon.cron import CronJob
-from .qommon.form import CompositeWidget
-from .qommon.form import OptGroup
-from .qommon.form import SingleSelectWidget
-from .qommon.form import StringWidget
+from .qommon.form import CompositeWidget, OptGroup, SingleSelectWidget, StringWidget
from .qommon.humantime import seconds2humanduration
from .qommon.misc import get_variadic_url
from .qommon.publisher import get_publisher_class
diff --git a/wcs/fields.py b/wcs/fields.py
index 5b4ebbfb7..bd3bf320e 100644
--- a/wcs/fields.py
+++ b/wcs/fields.py
@@ -28,74 +28,63 @@ import sys
import time
import xml.etree.ElementTree as ET
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from django.utils.encoding import smart_text
+from django.utils.encoding import force_bytes, force_text, smart_text
from django.utils.formats import date_format as django_date_format
from django.utils.html import urlize
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
-from quixote.html import TemplateIO
-from quixote.html import htmlescape
-from quixote.html import htmltag
-from quixote.html import htmltext
+from quixote import get_publisher, get_request, get_session
+from quixote.html import TemplateIO, htmlescape, htmltag, htmltext
-from . import data_sources
-from . import portfolio
-from .blocks import BlockDef
-from .blocks import BlockWidget
+from . import data_sources, portfolio
+from .blocks import BlockDef, BlockWidget
from .conditions import Condition
-from .qommon import N_
-from .qommon import _
-from .qommon import evalutils
-from .qommon import force_str
-from .qommon import get_cfg
-from .qommon import misc
-from .qommon.form import AutocompleteStringWidget
-from .qommon.form import CheckboxesWidget
-from .qommon.form import CheckboxWidget
-from .qommon.form import CommentWidget
-from .qommon.form import CompositeWidget
-from .qommon.form import ComputedExpressionWidget
-from .qommon.form import ConditionWidget
-from .qommon.form import DateWidget
-from .qommon.form import EmailWidget
-from .qommon.form import FileSizeWidget
-from .qommon.form import FileWithPreviewWidget
-from .qommon.form import HiddenWidget
-from .qommon.form import HtmlWidget
-from .qommon.form import IntWidget
-from .qommon.form import JsonpSingleSelectWidget
-from .qommon.form import MapMarkerSelectionWidget
-from .qommon.form import MapWidget
-from .qommon.form import PasswordEntryWidget
-from .qommon.form import RadiobuttonsWidget
-from .qommon.form import RankedItemsWidget
-from .qommon.form import SingleSelectHintWidget
-from .qommon.form import SingleSelectTableWidget
-from .qommon.form import SingleSelectWidget
-from .qommon.form import StringWidget
-from .qommon.form import TableListRowsWidget
-from .qommon.form import TableWidget
-from .qommon.form import TextWidget
-from .qommon.form import ValidationWidget
-from .qommon.form import VarnameWidget
-from .qommon.form import WcsExtraStringWidget
-from .qommon.form import WidgetList
-from .qommon.form import WidgetListAsTable
-from .qommon.form import WysiwygTextWidget
-from .qommon.misc import date_format
-from .qommon.misc import ellipsize
-from .qommon.misc import get_as_datetime
-from .qommon.misc import get_document_type_value_options
-from .qommon.misc import get_document_types
-from .qommon.misc import strftime
-from .qommon.misc import xml_node_text
+from .qommon import N_, _, evalutils, force_str, get_cfg, misc
+from .qommon.form import (
+ AutocompleteStringWidget,
+ CheckboxesWidget,
+ CheckboxWidget,
+ CommentWidget,
+ CompositeWidget,
+ ComputedExpressionWidget,
+ ConditionWidget,
+ DateWidget,
+ EmailWidget,
+ FileSizeWidget,
+ FileWithPreviewWidget,
+ HiddenWidget,
+ HtmlWidget,
+ IntWidget,
+ JsonpSingleSelectWidget,
+ MapMarkerSelectionWidget,
+ MapWidget,
+ PasswordEntryWidget,
+ RadiobuttonsWidget,
+ RankedItemsWidget,
+ SingleSelectHintWidget,
+ SingleSelectTableWidget,
+ SingleSelectWidget,
+ StringWidget,
+ TableListRowsWidget,
+ TableWidget,
+ TextWidget,
+ ValidationWidget,
+ VarnameWidget,
+ WcsExtraStringWidget,
+ WidgetList,
+ WidgetListAsTable,
+ WysiwygTextWidget,
+)
+from .qommon.misc import (
+ date_format,
+ ellipsize,
+ get_as_datetime,
+ get_document_type_value_options,
+ get_document_types,
+ strftime,
+ xml_node_text,
+)
from .qommon.ods import NS as OD_NS
from .qommon.ods import clean_text as od_clean_text
-from .qommon.template import Template
-from .qommon.template import TemplateError
+from .qommon.template import Template, TemplateError
from .qommon.upload_storage import PicklableUpload
diff --git a/wcs/formdata.py b/wcs/formdata.py
index a75758c89..a0f369cfe 100644
--- a/wcs/formdata.py
+++ b/wcs/formdata.py
@@ -22,22 +22,14 @@ import re
import sys
import time
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
+from quixote import get_publisher, get_request, get_session
from quixote.http_request import Upload
-from .qommon import N_
-from .qommon import _
-from .qommon import misc
+from .qommon import N_, _, misc
from .qommon.evalutils import make_datetime
from .qommon.publisher import get_cfg
-from .qommon.storage import Contains
-from .qommon.storage import Intersects
-from .qommon.storage import Null
-from .qommon.storage import StorableObject
-from .qommon.substitution import Substitutions
-from .qommon.substitution import invalidate_substitution_cache
+from .qommon.storage import Contains, Intersects, Null, StorableObject
+from .qommon.substitution import Substitutions, invalidate_substitution_cache
from .qommon.template import Template
diff --git a/wcs/formdef.py b/wcs/formdef.py
index 5b969ed68..7d71d6c07 100644
--- a/wcs/formdef.py
+++ b/wcs/formdef.py
@@ -27,35 +27,21 @@ import time
import types
import xml.etree.ElementTree as ET
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_session
+from django.utils.encoding import force_bytes, force_text
+from quixote import get_publisher, get_session
from quixote.html import htmltext
from quixote.http_request import Upload
-from . import data_sources
-from . import fields
+from . import data_sources, fields
from .categories import Category
from .formdata import FormData
-from .qommon import N_
-from .qommon import PICKLE_KWARGS
-from .qommon import _
-from .qommon import force_str
-from .qommon import get_cfg
+from .qommon import N_, PICKLE_KWARGS, _, force_str, get_cfg
from .qommon.admin.emails import EmailsDirectory
from .qommon.cron import CronJob
-from .qommon.form import Form
-from .qommon.form import HtmlWidget
-from .qommon.form import UploadedFile
-from .qommon.misc import JSONEncoder
-from .qommon.misc import get_as_datetime
-from .qommon.misc import simplify
-from .qommon.misc import xml_node_text
+from .qommon.form import Form, HtmlWidget, UploadedFile
+from .qommon.misc import JSONEncoder, get_as_datetime, simplify, xml_node_text
from .qommon.publisher import get_publisher_class
-from .qommon.storage import Equal
-from .qommon.storage import StorableObject
-from .qommon.storage import fix_key
+from .qommon.storage import Equal, StorableObject, fix_key
from .qommon.substitution import Substitutions
from .qommon.template import Template
from .roles import logged_users_role
diff --git a/wcs/forms/actions.py b/wcs/forms/actions.py
index 3c05a38ea..3544d25fe 100644
--- a/wcs/forms/actions.py
+++ b/wcs/forms/actions.py
@@ -22,11 +22,7 @@ from wcs.formdef import FormDef
from wcs.forms.common import FormTemplateMixin
from wcs.wf.jump import jump_and_perform
-from ..qommon import N_
-from ..qommon import errors
-from ..qommon import misc
-from ..qommon import template
-from ..qommon import tokens
+from ..qommon import N_, errors, misc, template, tokens
from ..qommon.form import Form
diff --git a/wcs/forms/backoffice.py b/wcs/forms/backoffice.py
index 8fc64edbd..6ac1bd8d0 100644
--- a/wcs/forms/backoffice.py
+++ b/wcs/forms/backoffice.py
@@ -16,18 +16,13 @@
import urllib.parse
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
-from quixote import redirect
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request, get_session, redirect
+from quixote.html import TemplateIO, htmltext
from wcs.qommon.storage import Null
from wcs.roles import logged_users_role
-from ..qommon import _
-from ..qommon import misc
+from ..qommon import _, misc
from ..qommon.backoffice.listing import pagination_links
diff --git a/wcs/forms/common.py b/wcs/forms/common.py
index ef6377645..a4ade3cd6 100644
--- a/wcs/forms/common.py
+++ b/wcs/forms/common.py
@@ -19,30 +19,18 @@ import os
import time
import urllib.parse
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from quixote.util import randbytes
from wcs import data_sources
-from wcs.api_utils import get_user_from_api_query_string
-from wcs.api_utils import is_url_signed
-from wcs.api_utils import sign_url_auto_orig
-from wcs.blocks import BlockSubWidget
-from wcs.blocks import BlockWidget
+from wcs.api_utils import get_user_from_api_query_string, is_url_signed, sign_url_auto_orig
+from wcs.blocks import BlockSubWidget, BlockWidget
from wcs.qommon.admin.texts import TextsDirectory
from wcs.workflows import EditableWorkflowStatusItem
-from ..qommon import _
-from ..qommon import errors
-from ..qommon import get_logger
-from ..qommon import misc
-from ..qommon import template
+from ..qommon import _, errors, get_logger, misc, template
class FileDirectory(Directory):
diff --git a/wcs/forms/preview.py b/wcs/forms/preview.py
index a9097e409..17b50c105 100644
--- a/wcs/forms/preview.py
+++ b/wcs/forms/preview.py
@@ -15,13 +15,10 @@
# along with this program; if not, see .
from quixote import get_publisher
-from quixote.directory import AccessControlled
-from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.directory import AccessControlled, Directory
+from quixote.html import TemplateIO, htmltext
-from ..qommon import _
-from ..qommon import errors
+from ..qommon import _, errors
from .root import FormPage
diff --git a/wcs/forms/root.py b/wcs/forms/root.py
index 60ffe0caa..d17053ead 100644
--- a/wcs/forms/root.py
+++ b/wcs/forms/root.py
@@ -27,46 +27,25 @@ except ImportError:
import ratelimit.utils
from django.utils.http import quote
from django.utils.safestring import mark_safe
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import get_session_manager
-from quixote import redirect
-from quixote.directory import AccessControlled
-from quixote.directory import Directory
+from quixote import get_publisher, get_request, get_response, get_session, get_session_manager, redirect
+from quixote.directory import AccessControlled, Directory
from quixote.errors import RequestError
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from quixote.util import randbytes
from wcs.categories import Category
from wcs.formdata import FormData
from wcs.formdef import FormDef
-from wcs.forms.common import FormStatusPage
-from wcs.forms.common import FormTemplateMixin
+from wcs.forms.common import FormStatusPage, FormTemplateMixin
from wcs.qommon.admin.texts import TextsDirectory
from wcs.qommon.form import get_selection_error_text
from wcs.roles import logged_users_role
from wcs.variables import LazyFormDef
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowBackofficeFieldsFormDef
+from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import emails
-from ..qommon import errors
-from ..qommon import get_cfg
-from ..qommon import get_logger
-from ..qommon import misc
-from ..qommon import template
+from ..qommon import N_, _, emails, errors, get_cfg, get_logger, misc, template
from ..qommon.admin.emails import EmailsDirectory
-from ..qommon.form import CheckboxWidget
-from ..qommon.form import EmailWidget
-from ..qommon.form import Form
-from ..qommon.form import HiddenErrorWidget
-from ..qommon.form import HtmlWidget
-from ..qommon.form import StringWidget
+from ..qommon.form import CheckboxWidget, EmailWidget, Form, HiddenErrorWidget, HtmlWidget, StringWidget
class SubmittedDraftException(Exception):
diff --git a/wcs/forms/workflows.py b/wcs/forms/workflows.py
index d9bdae536..38bfea737 100644
--- a/wcs/forms/workflows.py
+++ b/wcs/forms/workflows.py
@@ -16,15 +16,12 @@
import json
-from quixote import get_request
-from quixote import get_response
+from quixote import get_request, get_response
from quixote.directory import Directory
-from wcs.api import get_user_from_api_query_string
-from wcs.api import is_url_signed
+from wcs.api import get_user_from_api_query_string, is_url_signed
from wcs.roles import logged_users_role
-from wcs.workflows import WorkflowGlobalActionWebserviceTrigger
-from wcs.workflows import perform_items
+from wcs.workflows import WorkflowGlobalActionWebserviceTrigger, perform_items
from ..qommon import errors
diff --git a/wcs/mail_templates.py b/wcs/mail_templates.py
index a568b9d11..28774a0b2 100644
--- a/wcs/mail_templates.py
+++ b/wcs/mail_templates.py
@@ -14,8 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from wcs.qommon import get_logger
-from wcs.qommon import misc
+from wcs.qommon import get_logger, misc
from wcs.qommon.xml_storage import XmlStorableObject
diff --git a/wcs/middleware.py b/wcs/middleware.py
index ed07a3c50..d43c23459 100644
--- a/wcs/middleware.py
+++ b/wcs/middleware.py
@@ -19,14 +19,12 @@ import threading
import time
import urllib.parse
-from django.http import HttpResponseBadRequest
-from django.http import HttpResponseRedirect
+from django.http import HttpResponseBadRequest, HttpResponseRedirect
from django.utils.deprecation import MiddlewareMixin
from quixote import get_publisher
from quixote.errors import RequestError
-from .compat import CompatHTTPRequest
-from .compat import CompatWcsPublisher
+from .compat import CompatHTTPRequest, CompatWcsPublisher
from .qommon.http_response import HTTPResponse
from .qommon.publisher import ImmediateRedirectException
diff --git a/wcs/myspace.py b/wcs/myspace.py
index 92b1737b4..e4bbd2519 100644
--- a/wcs/myspace.py
+++ b/wcs/myspace.py
@@ -14,8 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_request
-from quixote import redirect
+from quixote import get_request, redirect
from .qommon import myspace
diff --git a/wcs/portfolio.py b/wcs/portfolio.py
index c99db74fb..52354daf7 100644
--- a/wcs/portfolio.py
+++ b/wcs/portfolio.py
@@ -19,23 +19,14 @@ import json
import urllib.parse
from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
-from wcs.api_utils import get_secret_and_orig
-from wcs.api_utils import sign_url
+from wcs.api_utils import get_secret_and_orig, sign_url
-from .qommon import N_
-from .qommon import get_logger
-from .qommon.misc import http_post_request
-from .qommon.misc import json_loads
-from .qommon.misc import urlopen
+from .qommon import N_, get_logger
+from .qommon.misc import http_post_request, json_loads, urlopen
def has_portfolio():
diff --git a/wcs/publisher.py b/wcs/publisher.py
index de5c7dd4d..4dd588817 100644
--- a/wcs/publisher.py
+++ b/wcs/publisher.py
@@ -28,15 +28,12 @@ from django.utils.encoding import force_text
from wcs.qommon import force_str
-from . import custom_views
-from . import sessions
+from . import custom_views, sessions
from .admin import RootDirectory as AdminRootDirectory
from .backoffice import RootDirectory as BackofficeRootDirectory
from .Defaults import * # noqa pylint: disable=wildcard-import
from .qommon.cron import CronJob
-from .qommon.publisher import QommonPublisher
-from .qommon.publisher import get_request
-from .qommon.publisher import set_publisher_class
+from .qommon.publisher import QommonPublisher, get_request, set_publisher_class
from .roles import Role
from .root import RootDirectory
from .tracking_code import TrackingCode
@@ -397,8 +394,7 @@ class WcsPublisher(StubWcsPublisher):
self.loggederror_class.record(*args, **kwargs)
def apply_global_action_timeouts(self):
- from wcs.workflows import Workflow
- from wcs.workflows import WorkflowGlobalActionTimeoutTrigger
+ from wcs.workflows import Workflow, WorkflowGlobalActionTimeoutTrigger
for workflow in Workflow.select():
WorkflowGlobalActionTimeoutTrigger.apply(workflow)
diff --git a/wcs/qommon/admin/emails.py b/wcs/qommon/admin/emails.py
index 518be1d80..6b022b2a6 100644
--- a/wcs/qommon/admin/emails.py
+++ b/wcs/qommon/admin/emails.py
@@ -14,22 +14,14 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_response, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
-from .. import _
-from .. import get_cfg
+from .. import _, get_cfg
from ..admin.cfg import cfg_submit
from ..backoffice.menu import html_top
-from ..form import CheckboxWidget
-from ..form import Form
-from ..form import StringWidget
-from ..form import TextWidget
-from ..form import WidgetList
+from ..form import CheckboxWidget, Form, StringWidget, TextWidget, WidgetList
class EmailsDirectory(Directory):
diff --git a/wcs/qommon/admin/logger.py b/wcs/qommon/admin/logger.py
index 3a163e8c2..b5f597885 100644
--- a/wcs/qommon/admin/logger.py
+++ b/wcs/qommon/admin/logger.py
@@ -17,16 +17,11 @@
import os
import random
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
+from quixote import get_publisher, get_request, get_response
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
-from .. import _
-from .. import errors
-from .. import logger
+from .. import _, errors, logger
from ..admin.menu import error_page
from ..backoffice.menu import html_top
diff --git a/wcs/qommon/admin/menu.py b/wcs/qommon/admin/menu.py
index efb375a5e..7898b0605 100644
--- a/wcs/qommon/admin/menu.py
+++ b/wcs/qommon/admin/menu.py
@@ -16,13 +16,10 @@
import re
-from quixote import get_publisher
-from quixote import get_request
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request
+from quixote.html import TemplateIO, htmltext
-from .. import N_
-from .. import _
+from .. import N_, _
from ..backoffice.menu import html_top
diff --git a/wcs/qommon/admin/settings.py b/wcs/qommon/admin/settings.py
index 879125d31..9a1bac48b 100644
--- a/wcs/qommon/admin/settings.py
+++ b/wcs/qommon/admin/settings.py
@@ -14,23 +14,16 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_response
-from quixote import redirect
-from quixote.directory import AccessControlled
-from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_response, redirect
+from quixote.directory import AccessControlled, Directory
+from quixote.html import TemplateIO, htmltext
from wcs.qommon import get_cfg
-from .. import N_
-from .. import _
+from .. import N_, _
from ..admin.cfg import cfg_submit
from ..backoffice.menu import html_top
-from ..form import CheckboxWidget
-from ..form import Form
-from ..form import SingleSelectWidget
-from ..form import StringWidget
+from ..form import CheckboxWidget, Form, SingleSelectWidget, StringWidget
class SettingsDirectory(AccessControlled, Directory):
diff --git a/wcs/qommon/admin/texts.py b/wcs/qommon/admin/texts.py
index fb6e189d9..99ee3d8a2 100644
--- a/wcs/qommon/admin/texts.py
+++ b/wcs/qommon/admin/texts.py
@@ -16,19 +16,13 @@
import os
-from quixote import get_publisher
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_response, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
-from wcs.qommon import _
-from wcs.qommon import ezt
-from wcs.qommon import get_cfg
+from wcs.qommon import _, ezt, get_cfg
from wcs.qommon.backoffice.menu import html_top
-from wcs.qommon.form import Form
-from wcs.qommon.form import WysiwygTextWidget
+from wcs.qommon.form import Form, WysiwygTextWidget
from wcs.qommon.template import Template
diff --git a/wcs/qommon/afterjobs.py b/wcs/qommon/afterjobs.py
index 213d76c4b..571ba30d1 100644
--- a/wcs/qommon/afterjobs.py
+++ b/wcs/qommon/afterjobs.py
@@ -19,13 +19,10 @@ import time
import traceback
import uuid
-from quixote import get_publisher
-from quixote import get_response
+from quixote import get_publisher, get_response
from quixote.directory import Directory
-from . import N_
-from . import _
-from . import errors
+from . import N_, _, errors
from .storage import StorableObject
diff --git a/wcs/qommon/backoffice/listing.py b/wcs/qommon/backoffice/listing.py
index d73c200b3..5ece59eae 100644
--- a/wcs/qommon/backoffice/listing.py
+++ b/wcs/qommon/backoffice/listing.py
@@ -16,11 +16,8 @@
import urllib.parse
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request, get_response
+from quixote.html import TemplateIO, htmltext
from .. import _
diff --git a/wcs/qommon/backoffice/menu.py b/wcs/qommon/backoffice/menu.py
index c09bcc635..69c9abe24 100644
--- a/wcs/qommon/backoffice/menu.py
+++ b/wcs/qommon/backoffice/menu.py
@@ -14,11 +14,9 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_response
+from quixote import get_publisher, get_response
-from .. import _
-from .. import get_cfg
+from .. import _, get_cfg
def generate_header_menu(selected=None):
diff --git a/wcs/qommon/backoffice/root.py b/wcs/qommon/backoffice/root.py
index b148b8cf1..48070a40f 100644
--- a/wcs/qommon/backoffice/root.py
+++ b/wcs/qommon/backoffice/root.py
@@ -14,8 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote.directory import AccessControlled
-from quixote.directory import Directory
+from quixote.directory import AccessControlled, Directory
class BackofficeRootDirectory(AccessControlled, Directory):
diff --git a/wcs/qommon/emails.py b/wcs/qommon/emails.py
index 30ff2d342..ce4398f3d 100644
--- a/wcs/qommon/emails.py
+++ b/wcs/qommon/emails.py
@@ -41,15 +41,11 @@ except ImportError:
from django.template.loader import render_to_string
from django.utils.safestring import mark_safe
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
+from quixote import get_publisher, get_request, get_response
-from . import errors
-from . import force_str
+from . import errors, force_str
from .admin.emails import EmailsDirectory
-from .publisher import get_cfg
-from .publisher import get_logger
+from .publisher import get_cfg, get_logger
from .template import Template
try:
diff --git a/wcs/qommon/errors.py b/wcs/qommon/errors.py
index c0f351db5..0a6b53089 100644
--- a/wcs/qommon/errors.py
+++ b/wcs/qommon/errors.py
@@ -18,13 +18,10 @@ import urllib.parse
import quixote
from quixote import get_publisher
-from quixote.errors import AccessError
-from quixote.errors import TraversalError
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.errors import AccessError, TraversalError
+from quixote.html import TemplateIO, htmltext
-from . import N_
-from . import template
+from . import N_, template
class AccessForbiddenError(AccessError):
diff --git a/wcs/qommon/ezt.py b/wcs/qommon/ezt.py
index fa9db3573..27999d832 100644
--- a/wcs/qommon/ezt.py
+++ b/wcs/qommon/ezt.py
@@ -734,8 +734,7 @@ def _write_value(valrefs, fp, ctx, format=lambda s: s):
fp.write(localstrftime(value))
elif isinstance(value, datetime.date):
- from .misc import date_format
- from .misc import strftime
+ from .misc import date_format, strftime
fp.write(strftime(date_format(), value))
# plain old value, write to output
diff --git a/wcs/qommon/form.py b/wcs/qommon/form.py
index fd17f1423..c2a892740 100644
--- a/wcs/qommon/form.py
+++ b/wcs/qommon/form.py
@@ -54,47 +54,26 @@ except ImportError:
import quixote
import quixote.form.widget
from django.conf import settings
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
+from django.utils.encoding import force_bytes, force_text
from django.utils.safestring import mark_safe
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
+from quixote import get_publisher, get_request, get_response, get_session
from quixote.form import CheckboxWidget as QuixoteCheckboxWidget
from quixote.form import FileWidget
from quixote.form import Form as QuixoteForm
-from quixote.form import HiddenWidget
-from quixote.form import IntWidget
-from quixote.form import PasswordWidget
-from quixote.form import SelectWidget
+from quixote.form import HiddenWidget, IntWidget, PasswordWidget, SelectWidget
from quixote.form import StringWidget as QuixoteStringWidget
from quixote.form import TextWidget as QuixoteTextWidget
from quixote.form import Widget
-from quixote.html import TemplateIO
-from quixote.html import htmlescape
-from quixote.html import htmltag
-from quixote.html import htmltext
-from quixote.html import stringify
+from quixote.html import TemplateIO, htmlescape, htmltag, htmltext, stringify
-from wcs.conditions import Condition
-from wcs.conditions import ValidationError
+from wcs.conditions import Condition, ValidationError
from ..portfolio import has_portfolio
-from . import N_
-from . import _
-from . import force_str
-from . import misc
-from . import ngettext
-from .humantime import humanduration2seconds
-from .humantime import seconds2humanduration
-from .humantime import timewords
-from .misc import HAS_PDFTOPPM
-from .misc import json_loads
-from .misc import strftime
+from . import N_, _, force_str, misc, ngettext
+from .humantime import humanduration2seconds, seconds2humanduration, timewords
+from .misc import HAS_PDFTOPPM, json_loads, strftime
from .publisher import get_cfg
-from .template import Template
-from .template import TemplateError
+from .template import Template, TemplateError
from .template import render as render_template
from .template_utils import render_block_to_string
from .upload_storage import PicklableUpload # noqa pylint: disable=unused-import
diff --git a/wcs/qommon/http_request.py b/wcs/qommon/http_request.py
index b99e686b9..624234b55 100644
--- a/wcs/qommon/http_request.py
+++ b/wcs/qommon/http_request.py
@@ -20,10 +20,8 @@ import re
import time
import quixote.http_request
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_session
+from django.utils.encoding import force_bytes, force_text
+from quixote import get_publisher, get_session
from quixote.errors import RequestError
from .http_response import HTTPResponse
diff --git a/wcs/qommon/http_response.py b/wcs/qommon/http_response.py
index 09fcee250..992bb59f7 100644
--- a/wcs/qommon/http_response.py
+++ b/wcs/qommon/http_response.py
@@ -18,8 +18,7 @@ import hashlib
import quixote.http_response
from django.utils.encoding import force_bytes
-from quixote import get_publisher
-from quixote import get_request
+from quixote import get_publisher, get_request
from .afterjobs import AfterJob
diff --git a/wcs/qommon/humantime.py b/wcs/qommon/humantime.py
index 402e1b070..50535b58c 100644
--- a/wcs/qommon/humantime.py
+++ b/wcs/qommon/humantime.py
@@ -16,9 +16,7 @@
import re
-from . import N_
-from . import _
-from . import ngettext
+from . import N_, _, ngettext
_minute = 60
_hour = 60 * 60
diff --git a/wcs/qommon/ident/franceconnect.py b/wcs/qommon/ident/franceconnect.py
index c53407e28..fcc062eb3 100644
--- a/wcs/qommon/ident/franceconnect.py
+++ b/wcs/qommon/ident/franceconnect.py
@@ -21,34 +21,25 @@ import urllib.parse
import uuid
from django.utils.encoding import force_bytes
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
-from quixote import get_session_manager
-from quixote import redirect
+from quixote import get_publisher, get_request, get_session, get_session_manager, redirect
from quixote.directory import Directory
from quixote.errors import QueryError
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.formdata import flatten_dict
from wcs.workflows import WorkflowStatusItem
-from .. import N_
-from .. import _
-from .. import get_cfg
-from .. import get_logger
-from .. import template
+from .. import N_, _, get_cfg, get_logger, template
from ..backoffice.menu import html_top
-from ..form import CompositeWidget
-from ..form import ComputedExpressionWidget
-from ..form import Form
-from ..form import SingleSelectWidget
-from ..form import StringWidget
-from ..form import WidgetListAsTable
-from ..misc import http_get_page
-from ..misc import http_post_request
-from ..misc import json_loads
+from ..form import (
+ CompositeWidget,
+ ComputedExpressionWidget,
+ Form,
+ SingleSelectWidget,
+ StringWidget,
+ WidgetListAsTable,
+)
+from ..misc import http_get_page, http_post_request, json_loads
from .base import AuthMethod
ADMIN_TITLE = N_('FranceConnect')
diff --git a/wcs/qommon/ident/idp.py b/wcs/qommon/ident/idp.py
index b812cae04..1c788e2aa 100644
--- a/wcs/qommon/ident/idp.py
+++ b/wcs/qommon/ident/idp.py
@@ -24,37 +24,25 @@ try:
except ImportError:
lasso = None
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from django.utils.encoding import force_bytes, force_text
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
-from .. import N_
-from .. import _
-from .. import errors
-from .. import get_cfg
-from .. import get_logger
-from .. import misc
-from .. import saml2utils
-from .. import template
-from .. import x509utils
+from .. import N_, _, errors, get_cfg, get_logger, misc, saml2utils, template, x509utils
from ..admin.menu import command_icon
from ..backoffice.menu import html_top
-from ..form import CheckboxWidget
-from ..form import EmailWidget
-from ..form import FileWidget
-from ..form import Form
-from ..form import HtmlWidget
-from ..form import RadiobuttonsWidget
-from ..form import SingleSelectWidget
-from ..form import StringWidget
-from ..form import WidgetDict
+from ..form import (
+ CheckboxWidget,
+ EmailWidget,
+ FileWidget,
+ Form,
+ HtmlWidget,
+ RadiobuttonsWidget,
+ SingleSelectWidget,
+ StringWidget,
+ WidgetDict,
+)
from ..storage import atomic_write
from ..tokens import Token
from .base import AuthMethod
diff --git a/wcs/qommon/ident/password.py b/wcs/qommon/ident/password.py
index 6025f64bc..5b12c5870 100644
--- a/wcs/qommon/ident/password.py
+++ b/wcs/qommon/ident/password.py
@@ -17,47 +17,34 @@
import random
import time
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.qommon.admin.texts import TextsDirectory
-from .. import N_
-from .. import _
-from .. import emails
-from .. import errors
-from .. import get_cfg
-from .. import get_logger
-from .. import misc
-from .. import ngettext
+from .. import N_, _, emails, errors, get_cfg, get_logger, misc, ngettext
from .. import storage as st
-from .. import template
-from .. import tokens
+from .. import template, tokens
from ..admin.emails import EmailsDirectory
from ..backoffice.menu import html_top
from ..cron import CronJob
-from ..form import CheckboxWidget
-from ..form import CompositeWidget
-from ..form import EmailWidget
-from ..form import Form
-from ..form import HiddenWidget
-from ..form import IntWidget
-from ..form import PasswordEntryWidget
-from ..form import PasswordWidget
-from ..form import RadiobuttonsWidget
-from ..form import SingleSelectWidget
-from ..form import StringWidget
+from ..form import (
+ CheckboxWidget,
+ CompositeWidget,
+ EmailWidget,
+ Form,
+ HiddenWidget,
+ IntWidget,
+ PasswordEntryWidget,
+ PasswordWidget,
+ RadiobuttonsWidget,
+ SingleSelectWidget,
+ StringWidget,
+)
from ..publisher import get_publisher_class
-from .base import AuthMethod
-from .base import NoSuchMethodForUserError
-from .password_accounts import HASHING_ALGOS
-from .password_accounts import PasswordAccount
+from .base import AuthMethod, NoSuchMethodForUserError
+from .password_accounts import HASHING_ALGOS, PasswordAccount
def notify_admins_user_registered(account):
diff --git a/wcs/qommon/ident/password_accounts.py b/wcs/qommon/ident/password_accounts.py
index 3ba3b39a9..517fa9f1b 100644
--- a/wcs/qommon/ident/password_accounts.py
+++ b/wcs/qommon/ident/password_accounts.py
@@ -16,8 +16,7 @@
import hashlib
-from django.contrib.auth.hashers import check_password
-from django.contrib.auth.hashers import make_password
+from django.contrib.auth.hashers import check_password, make_password
from django.utils.encoding import force_bytes
from quixote import get_publisher
diff --git a/wcs/qommon/logger.py b/wcs/qommon/logger.py
index 721196fe3..3085d9f0e 100644
--- a/wcs/qommon/logger.py
+++ b/wcs/qommon/logger.py
@@ -17,9 +17,7 @@
import logging
import os
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
+from quixote import get_publisher, get_request, get_session
from quixote.logger import DefaultLogger
diff --git a/wcs/qommon/management/commands/cron.py b/wcs/qommon/management/commands/cron.py
index b92f3d402..1313cc05b 100644
--- a/wcs/qommon/management/commands/cron.py
+++ b/wcs/qommon/management/commands/cron.py
@@ -21,8 +21,7 @@ import tempfile
import time
from django.conf import settings
-from django.core.management.base import BaseCommand
-from django.core.management.base import CommandError
+from django.core.management.base import BaseCommand, CommandError
from wcs.qommon.cron import cron_worker
from wcs.qommon.publisher import get_publisher_class
diff --git a/wcs/qommon/misc.py b/wcs/qommon/misc.py
index c77d7f9b9..a8f1e30bc 100644
--- a/wcs/qommon/misc.py
+++ b/wcs/qommon/misc.py
@@ -38,25 +38,17 @@ except ImportError:
Image = None
from django.conf import settings
-from django.template import TemplateSyntaxError
-from django.template import VariableDoesNotExist
+from django.template import TemplateSyntaxError, VariableDoesNotExist
from django.utils import datetime_safe
from django.utils.encoding import force_text
from django.utils.formats import localize
from django.utils.html import strip_tags
from django.utils.text import Truncator
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, redirect
from quixote.errors import RequestError
from quixote.html import htmltext
-from . import _
-from . import ezt
-from . import force_str
-from . import get_cfg
-from . import get_logger
+from . import _, ezt, force_str, get_cfg, get_logger
from .errors import ConnectionError
from .template import Template
diff --git a/wcs/qommon/myspace.py b/wcs/qommon/myspace.py
index 8149535fb..1a226b99f 100644
--- a/wcs/qommon/myspace.py
+++ b/wcs/qommon/myspace.py
@@ -14,26 +14,14 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import get_session_manager
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, get_session_manager, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from wcs.qommon.admin.texts import TextsDirectory
-from . import N_
-from . import _
-from . import errors
-from . import get_cfg
-from . import template
-from .form import Form
-from .form import HtmlWidget
-from .form import PasswordWidget
+from . import N_, _, errors, get_cfg, template
+from .form import Form, HtmlWidget, PasswordWidget
from .ident.password import check_password
from .ident.password_accounts import PasswordAccount
diff --git a/wcs/qommon/ods.py b/wcs/qommon/ods.py
index 09684a2c9..4c18efe94 100644
--- a/wcs/qommon/ods.py
+++ b/wcs/qommon/ods.py
@@ -22,11 +22,8 @@ import zipfile
from django.utils.encoding import force_text
-from .evalutils import make_date
-from .evalutils import make_datetime
-from .misc import date_format
-from .misc import datetime_format
-from .misc import strftime
+from .evalutils import make_date, make_datetime
+from .misc import date_format, datetime_format, strftime
NS = {
'fo': 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0',
diff --git a/wcs/qommon/pages.py b/wcs/qommon/pages.py
index a46fac292..f13922a33 100644
--- a/wcs/qommon/pages.py
+++ b/wcs/qommon/pages.py
@@ -16,13 +16,11 @@
import os
-from quixote import get_publisher
-from quixote import redirect
+from quixote import get_publisher, redirect
from quixote.directory import Directory
from quixote.util import StaticDirectory
-from . import errors
-from . import template
+from . import errors, template
class PagesDirectory(Directory):
diff --git a/wcs/qommon/publisher.py b/wcs/qommon/publisher.py
index 109c40e2d..5460af0b9 100644
--- a/wcs/qommon/publisher.py
+++ b/wcs/qommon/publisher.py
@@ -44,26 +44,14 @@ from decimal import Decimal
from django.conf import settings
from django.http import Http404
from django.utils import translation
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote.publish import Publisher
-from quixote.publish import get_publisher
-from quixote.publish import get_request
-from quixote.publish import get_response
+from django.utils.encoding import force_bytes, force_text
+from quixote.publish import Publisher, get_publisher, get_request, get_response
-from . import N_
-from . import _
-from . import errors
-from . import force_str
-from . import logger
-from . import storage
-from . import template
+from . import N_, _, errors, force_str, logger, storage, template
from .cron import CronJob
from .http_request import HTTPRequest
-from .http_response import AfterJob
-from .http_response import HTTPResponse
-from .substitution import CompatibilityNamesDict
-from .substitution import Substitutions
+from .http_response import AfterJob, HTTPResponse
+from .substitution import CompatibilityNamesDict, Substitutions
from .vendor import locket
diff --git a/wcs/qommon/saml2.py b/wcs/qommon/saml2.py
index 467ef3a2e..a162d29b7 100644
--- a/wcs/qommon/saml2.py
+++ b/wcs/qommon/saml2.py
@@ -26,23 +26,21 @@ except ImportError:
lasso = None
from django.utils.encoding import force_text
-from quixote import get_field
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import get_session_manager
-from quixote import redirect
+from quixote import (
+ get_field,
+ get_publisher,
+ get_request,
+ get_response,
+ get_session,
+ get_session_manager,
+ redirect,
+)
from quixote.directory import Directory
from quixote.errors import RequestError
from quixote.http_request import parse_header
-from . import _
-from . import errors
-from . import force_str
-from . import misc
-from .publisher import get_cfg
-from .publisher import get_logger
+from . import _, errors, force_str, misc
+from .publisher import get_cfg, get_logger
from .template import error_page
diff --git a/wcs/qommon/saml2utils.py b/wcs/qommon/saml2utils.py
index 9eafd5c3b..1ab9ce791 100644
--- a/wcs/qommon/saml2utils.py
+++ b/wcs/qommon/saml2utils.py
@@ -16,8 +16,7 @@
import os
-from . import force_str
-from . import x509utils
+from . import force_str, x509utils
def bool2xs(boolean):
diff --git a/wcs/qommon/sessions.py b/wcs/qommon/sessions.py
index 17ae0b03c..3729d5c69 100644
--- a/wcs/qommon/sessions.py
+++ b/wcs/qommon/sessions.py
@@ -21,14 +21,10 @@ import os
import time
from django.conf import settings
-from django.core.signing import BadSignature
-from django.core.signing import Signer
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
+from django.core.signing import BadSignature, Signer
+from django.utils.encoding import force_bytes, force_text
from quixote import get_publisher
-from quixote.publish import get_request
-from quixote.publish import get_session
-from quixote.publish import get_session_manager
+from quixote.publish import get_request, get_session, get_session_manager
from quixote.session import Session as QuixoteSession
from quixote.session import SessionManager as QuixoteSessionManager
from quixote.util import randbytes
diff --git a/wcs/qommon/sms.py b/wcs/qommon/sms.py
index 94f45ed54..3f5296dfa 100644
--- a/wcs/qommon/sms.py
+++ b/wcs/qommon/sms.py
@@ -16,8 +16,7 @@
from wcs.wscalls import call_webservice
-from . import get_cfg
-from . import get_logger
+from . import get_cfg, get_logger
class PasserelleSMS:
diff --git a/wcs/qommon/storage.py b/wcs/qommon/storage.py
index 3e7dfaede..2a732c39d 100644
--- a/wcs/qommon/storage.py
+++ b/wcs/qommon/storage.py
@@ -30,8 +30,7 @@ import time
from django.utils.encoding import force_bytes
from quixote import get_publisher
-from . import PICKLE_KWARGS
-from . import force_str
+from . import PICKLE_KWARGS, force_str
from .vendor import locket
# add compatibility names in case those were stored in pickles
diff --git a/wcs/qommon/substitution.py b/wcs/qommon/substitution.py
index a83439860..09aea0e0c 100644
--- a/wcs/qommon/substitution.py
+++ b/wcs/qommon/substitution.py
@@ -17,8 +17,7 @@
from contextlib import contextmanager
from quixote import get_publisher
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
def invalidate_substitution_cache(func):
@@ -44,8 +43,7 @@ class Substitutions:
def set_empty(self):
from wcs.data_sources import NamedDataSource
from wcs.scripts import Script
- from wcs.variables import CardsSource
- from wcs.variables import FormsSource
+ from wcs.variables import CardsSource, FormsSource
from wcs.wscalls import NamedWsCall
self.sources = [NamedDataSource, NamedWsCall, CardsSource, FormsSource, Script]
diff --git a/wcs/qommon/template.py b/wcs/qommon/template.py
index 12bc38558..4214abd3a 100644
--- a/wcs/qommon/template.py
+++ b/wcs/qommon/template.py
@@ -25,21 +25,13 @@ from django.template import TemplateSyntaxError as DjangoTemplateSyntaxError
from django.template import VariableDoesNotExist as DjangoVariableDoesNotExist
from django.template import engines
from django.template.loader import render_to_string
-from django.utils.encoding import force_text
-from django.utils.encoding import smart_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
+from django.utils.encoding import force_text, smart_text
+from quixote import get_publisher, get_request, get_response, get_session
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmlescape
-from quixote.html import htmltext
-from quixote.util import StaticDirectory
-from quixote.util import StaticFile
+from quixote.html import TemplateIO, htmlescape, htmltext
+from quixote.util import StaticDirectory, StaticFile
-from . import ezt
-from . import force_str
+from . import ezt, force_str
def get_template_from_script(filename):
diff --git a/wcs/qommon/template_utils.py b/wcs/qommon/template_utils.py
index fa24c06ee..1cd792258 100644
--- a/wcs/qommon/template_utils.py
+++ b/wcs/qommon/template_utils.py
@@ -21,13 +21,9 @@
from __future__ import absolute_import
-from django.template import Context
-from django.template import loader
+from django.template import Context, loader
from django.template.base import TextNode
-from django.template.loader_tags import BLOCK_CONTEXT_KEY
-from django.template.loader_tags import BlockContext
-from django.template.loader_tags import BlockNode
-from django.template.loader_tags import ExtendsNode
+from django.template.loader_tags import BLOCK_CONTEXT_KEY, BlockContext, BlockNode, ExtendsNode
class BlockNotFound(Exception):
diff --git a/wcs/qommon/templatetags/qommon.py b/wcs/qommon/templatetags/qommon.py
index c89a9ae40..97e3d6ec6 100644
--- a/wcs/qommon/templatetags/qommon.py
+++ b/wcs/qommon/templatetags/qommon.py
@@ -38,15 +38,11 @@ except ImportError:
from django import template
from django.template import defaultfilters
from django.utils import dateparse
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
+from django.utils.encoding import force_bytes, force_text
from django.utils.safestring import mark_safe
-from django.utils.timezone import is_naive
-from django.utils.timezone import make_aware
+from django.utils.timezone import is_naive, make_aware
-from wcs.qommon import calendar
-from wcs.qommon import evalutils
-from wcs.qommon import tokens
+from wcs.qommon import calendar, evalutils, tokens
from wcs.qommon.admin.texts import TextsDirectory
register = template.Library()
@@ -769,8 +765,7 @@ def phonenumber_fr(value, separator=' '):
@register.filter
def is_empty(value):
- from wcs.variables import LazyFormDefObjectsManager
- from wcs.variables import LazyList
+ from wcs.variables import LazyFormDefObjectsManager, LazyList
if isinstance(value, (str, list, dict)):
return not value
diff --git a/wcs/qommon/upload_storage.py b/wcs/qommon/upload_storage.py
index 05b09e06d..c2524bc1c 100644
--- a/wcs/qommon/upload_storage.py
+++ b/wcs/qommon/upload_storage.py
@@ -24,9 +24,7 @@ from quixote import get_publisher
from quixote.http_request import Upload
from .errors import ConnectionError
-from .misc import can_thumbnail
-from .misc import file_digest
-from .misc import json_loads
+from .misc import can_thumbnail, file_digest, json_loads
from .storage import atomic_write
diff --git a/wcs/qommon/xml_storage.py b/wcs/qommon/xml_storage.py
index 0c454aa8f..fad238db6 100644
--- a/wcs/qommon/xml_storage.py
+++ b/wcs/qommon/xml_storage.py
@@ -20,8 +20,7 @@ import xml.etree.ElementTree as ET
from django.utils.encoding import force_text
from quixote import get_publisher
-from .misc import indent_xml
-from .misc import xml_node_text
+from .misc import indent_xml, xml_node_text
from .storage import StorableObject
diff --git a/wcs/roles.py b/wcs/roles.py
index 79d5e7cda..b0ded6892 100644
--- a/wcs/roles.py
+++ b/wcs/roles.py
@@ -19,8 +19,7 @@ import xml.etree.ElementTree as ET
from django.utils.encoding import force_text
from quixote import get_publisher
-from .qommon import _
-from .qommon import misc
+from .qommon import _, misc
from .qommon.storage import StorableObject
diff --git a/wcs/root.py b/wcs/root.py
index 03a993232..6c370e51e 100644
--- a/wcs/root.py
+++ b/wcs/root.py
@@ -20,15 +20,9 @@ import re
import urllib.parse
from importlib import import_module
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
-from quixote import get_session_manager
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, get_session, get_session_manager, redirect
from quixote.directory import Directory
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
from quixote.util import StaticDirectory
from . import portfolio
@@ -39,16 +33,9 @@ from .forms import root
from .forms.actions import ActionsDirectory
from .forms.preview import PreviewDirectory
from .myspace import MyspaceDirectory
-from .qommon import _
-from .qommon import errors
-from .qommon import get_cfg
-from .qommon import get_logger
-from .qommon import ident
-from .qommon import saml2
-from .qommon import template
+from .qommon import _, errors, get_cfg, get_logger, ident, saml2, template
from .qommon.afterjobs import AfterJobStatusDirectory
-from .qommon.form import Form
-from .qommon.form import RadiobuttonsWidget
+from .qommon.form import Form, RadiobuttonsWidget
from .qommon.pages import PagesDirectory
from .qommon.upload_storage import UploadStorageError
diff --git a/wcs/snapshots.py b/wcs/snapshots.py
index 774c87a07..725f8a4fe 100644
--- a/wcs/snapshots.py
+++ b/wcs/snapshots.py
@@ -17,11 +17,9 @@
import xml.etree.ElementTree as ET
from django.utils.timezone import now
-from quixote import get_publisher
-from quixote import get_session
+from quixote import get_publisher, get_session
-from wcs.qommon import _
-from wcs.qommon import misc
+from wcs.qommon import _, misc
from wcs.qommon.storage import Null
diff --git a/wcs/sql.py b/wcs/sql.py
index 288e58859..d08e8472d 100644
--- a/wcs/sql.py
+++ b/wcs/sql.py
@@ -30,8 +30,7 @@ try:
except ImportError:
import pickle
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
+from django.utils.encoding import force_bytes, force_text
from quixote import get_publisher
import wcs.carddata
@@ -43,15 +42,13 @@ import wcs.roles
import wcs.snapshots
import wcs.tracking_code
import wcs.users
-from wcs.qommon import PICKLE_KWARGS
-from wcs.qommon import force_str
+from wcs.qommon import PICKLE_KWARGS, force_str
from . import qommon
from .publisher import UnpicklerClass
from .qommon import get_cfg
from .qommon.misc import strftime
-from .qommon.storage import _take
-from .qommon.storage import deep_bytes2str
+from .qommon.storage import _take, deep_bytes2str
from .qommon.storage import parse_clause as parse_storage_clause
from .qommon.substitution import invalidate_substitution_cache
from .qommon.upload_storage import PicklableUpload
diff --git a/wcs/urls.py b/wcs/urls.py
index a4873557d..7e7528d24 100644
--- a/wcs/urls.py
+++ b/wcs/urls.py
@@ -16,9 +16,7 @@
from django.conf.urls import url
-from . import api
-from . import compat
-from . import views
+from . import api, compat, views
urlpatterns = [
url(r'^robots.txt$', views.robots_txt),
diff --git a/wcs/users.py b/wcs/users.py
index 295193e1b..0f63dd0a6 100644
--- a/wcs/users.py
+++ b/wcs/users.py
@@ -20,13 +20,10 @@ from quixote import get_publisher
import wcs.qommon.storage as st
-from .qommon import N_
-from .qommon import _
-from .qommon import get_cfg
+from .qommon import N_, _, get_cfg
from .qommon.misc import simplify
from .qommon.storage import StorableObject
-from .qommon.substitution import Substitutions
-from .qommon.substitution import invalidate_substitution_cache
+from .qommon.substitution import Substitutions, invalidate_substitution_cache
class User(StorableObject):
diff --git a/wcs/utils.py b/wcs/utils.py
index ccf065cbd..8bb0822f0 100644
--- a/wcs/utils.py
+++ b/wcs/utils.py
@@ -18,8 +18,7 @@ import os
import django.template.loaders.filesystem
-from .qommon.publisher import get_cfg
-from .qommon.publisher import get_publisher
+from .qommon.publisher import get_cfg, get_publisher
from .qommon.template import get_theme_directory
diff --git a/wcs/variables.py b/wcs/variables.py
index 5fa07a7b3..965fe5fa0 100644
--- a/wcs/variables.py
+++ b/wcs/variables.py
@@ -19,19 +19,13 @@ import warnings
from django.utils.encoding import force_text
from django.utils.functional import SimpleLazyObject
from pyproj import Geod
-from quixote import get_publisher
-from quixote import get_request
+from quixote import get_publisher, get_request
from .carddef import CardDef
from .formdef import FormDef
-from .qommon import _
-from .qommon import force_str
-from .qommon import misc
+from .qommon import _, force_str, misc
from .qommon.evalutils import make_datetime
-from .qommon.storage import Equal
-from .qommon.storage import NotEqual
-from .qommon.storage import Null
-from .qommon.storage import Or
+from .qommon.storage import Equal, NotEqual, Null, Or
from .qommon.substitution import CompatibilityNamesDict
from .qommon.templatetags.qommon import parse_datetime
diff --git a/wcs/views.py b/wcs/views.py
index 55d595418..8c9ed2c46 100644
--- a/wcs/views.py
+++ b/wcs/views.py
@@ -15,9 +15,7 @@
# along with this program; if not, see .
from django.http import HttpResponse
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
+from quixote import get_publisher, get_request, get_response
from . import compat
from .qommon import template
diff --git a/wcs/wf/aggregation_email.py b/wcs/wf/aggregation_email.py
index f2dc5f425..daf1af5c0 100644
--- a/wcs/wf/aggregation_email.py
+++ b/wcs/wf/aggregation_email.py
@@ -16,15 +16,11 @@
from quixote import get_publisher
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import emails
+from ..qommon import N_, _, emails
from ..qommon.cron import CronJob
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import WidgetList
+from ..qommon.form import SingleSelectWidget, WidgetList
from ..qommon.publisher import get_publisher_class
from ..qommon.storage import StorableObject
diff --git a/wcs/wf/anonymise.py b/wcs/wf/anonymise.py
index 15bed1566..5db0e149f 100644
--- a/wcs/wf/anonymise.py
+++ b/wcs/wf/anonymise.py
@@ -15,8 +15,7 @@
# along with this program; if not, see .
from wcs.qommon import N_
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
class AnonymiseWorkflowStatusItem(WorkflowStatusItem):
diff --git a/wcs/wf/attachment.py b/wcs/wf/attachment.py
index 2d6a56c2c..4b41d1da3 100644
--- a/wcs/wf/attachment.py
+++ b/wcs/wf/attachment.py
@@ -18,30 +18,25 @@ import os
import urllib.parse
import xml.etree.ElementTree as ET
-from quixote import get_request
-from quixote import redirect
+from quixote import get_request, redirect
-from wcs.forms.common import FileDirectory
-from wcs.forms.common import FormStatusPage
-from wcs.portfolio import has_portfolio
-from wcs.portfolio import push_document
-from wcs.workflows import AttachmentEvolutionPart
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.forms.common import FileDirectory, FormStatusPage
+from wcs.portfolio import has_portfolio, push_document
+from wcs.workflows import AttachmentEvolutionPart, WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
+from ..qommon import N_, _
from ..qommon.errors import TraversalError
-from ..qommon.form import CheckboxWidget
-from ..qommon.form import FileSizeWidget
-from ..qommon.form import FileWithPreviewWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import StringWidget
-from ..qommon.form import VarnameWidget
-from ..qommon.form import WidgetList
-from ..qommon.form import WysiwygTextWidget
-from ..qommon.misc import get_document_type_value_options
-from ..qommon.misc import xml_node_text
+from ..qommon.form import (
+ CheckboxWidget,
+ FileSizeWidget,
+ FileWithPreviewWidget,
+ SingleSelectWidget,
+ StringWidget,
+ VarnameWidget,
+ WidgetList,
+ WysiwygTextWidget,
+)
+from ..qommon.misc import get_document_type_value_options, xml_node_text
def lookup_wf_attachment(self, filename):
diff --git a/wcs/wf/backoffice_fields.py b/wcs/wf/backoffice_fields.py
index f7458f6a2..c9a0e9728 100644
--- a/wcs/wf/backoffice_fields.py
+++ b/wcs/wf/backoffice_fields.py
@@ -21,16 +21,16 @@ from quixote.html import htmltext
from wcs.fields import WidgetField
from wcs.wf.profile import FieldNode
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
-from ..qommon.form import CompositeWidget
-from ..qommon.form import ComputedExpressionWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import StringWidget
-from ..qommon.form import WidgetListAsTable
+from ..qommon import N_, _
+from ..qommon.form import (
+ CompositeWidget,
+ ComputedExpressionWidget,
+ SingleSelectWidget,
+ StringWidget,
+ WidgetListAsTable,
+)
class SetBackofficeFieldRowWidget(CompositeWidget):
diff --git a/wcs/wf/create_carddata.py b/wcs/wf/create_carddata.py
index 04773b4d3..69e7900d6 100644
--- a/wcs/wf/create_carddata.py
+++ b/wcs/wf/create_carddata.py
@@ -18,8 +18,7 @@ from quixote import get_publisher
from wcs.carddef import CardDef
from wcs.qommon import N_
-from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem
-from wcs.wf.create_formdata import LinkedFormdataEvolutionPart
+from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, LinkedFormdataEvolutionPart
from wcs.workflows import register_item_class
diff --git a/wcs/wf/create_formdata.py b/wcs/wf/create_formdata.py
index 668a9da7d..84388b5fe 100644
--- a/wcs/wf/create_formdata.py
+++ b/wcs/wf/create_formdata.py
@@ -18,25 +18,23 @@ import time
import xml.etree.ElementTree as ET
from django.utils.functional import cached_property
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
+from quixote import get_publisher, get_request, get_session
from quixote.html import htmltext
from wcs.formdef import FormDef
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon.form import CheckboxWidget
-from wcs.qommon.form import CompositeWidget
-from wcs.qommon.form import ComputedExpressionWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import HtmlWidget
-from wcs.qommon.form import RadiobuttonsWidget
-from wcs.qommon.form import SingleSelectWidget
-from wcs.qommon.form import VarnameWidget
-from wcs.qommon.form import WidgetListAsTable
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.qommon import N_, _
+from wcs.qommon.form import (
+ CheckboxWidget,
+ CompositeWidget,
+ ComputedExpressionWidget,
+ Form,
+ HtmlWidget,
+ RadiobuttonsWidget,
+ SingleSelectWidget,
+ VarnameWidget,
+ WidgetListAsTable,
+)
+from wcs.workflows import WorkflowStatusItem, register_item_class
class Mapping:
diff --git a/wcs/wf/criticality.py b/wcs/wf/criticality.py
index 442811050..8a6531c90 100644
--- a/wcs/wf/criticality.py
+++ b/wcs/wf/criticality.py
@@ -15,11 +15,9 @@
# along with this program; if not, see .
from wcs.qommon.form import SingleSelectWidget
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
+from ..qommon import N_, _
MODE_INC = '1'
MODE_DEC = '2'
diff --git a/wcs/wf/dispatch.py b/wcs/wf/dispatch.py
index c3ff49712..b5c32c1c4 100644
--- a/wcs/wf/dispatch.py
+++ b/wcs/wf/dispatch.py
@@ -21,19 +21,17 @@ from quixote import get_publisher
from quixote.html import htmltext
from wcs.roles import get_user_roles
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import XmlSerialisable
-from wcs.workflows import get_role_name
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, XmlSerialisable, get_role_name, register_item_class
-from ..qommon import N_
-from ..qommon import _
-from ..qommon.form import CompositeWidget
-from ..qommon.form import RadiobuttonsWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import SingleSelectWidgetWithOther
-from ..qommon.form import StringWidget
-from ..qommon.form import WidgetListAsTable
+from ..qommon import N_, _
+from ..qommon.form import (
+ CompositeWidget,
+ RadiobuttonsWidget,
+ SingleSelectWidget,
+ SingleSelectWidgetWithOther,
+ StringWidget,
+ WidgetListAsTable,
+)
from ..qommon.template import Template
diff --git a/wcs/wf/edit_carddata.py b/wcs/wf/edit_carddata.py
index 3f3085b5c..1edaa85c6 100644
--- a/wcs/wf/edit_carddata.py
+++ b/wcs/wf/edit_carddata.py
@@ -16,8 +16,7 @@
from quixote import get_publisher
-from wcs.qommon import N_
-from wcs.qommon import _
+from wcs.qommon import N_, _
from wcs.wf.create_carddata import CreateCarddataWorkflowStatusItem
from wcs.wf.external_workflow import ExternalWorkflowGlobalAction
from wcs.workflows import register_item_class
diff --git a/wcs/wf/export_to_model.py b/wcs/wf/export_to_model.py
index 8e8c4e61e..bc2253e55 100644
--- a/wcs/wf/export_to_model.py
+++ b/wcs/wf/export_to_model.py
@@ -26,46 +26,38 @@ import time
import zipfile
from xml.etree import ElementTree as ET
-from django.utils.encoding import force_bytes
-from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
+from django.utils.encoding import force_bytes, force_text
+from quixote import get_publisher, get_request, get_response
from quixote.directory import Directory
from quixote.errors import PublishError
from quixote.html import htmltext
from quixote.http_request import Upload
-from wcs.fields import CommentField
-from wcs.fields import PageField
-from wcs.fields import SubtitleField
-from wcs.fields import TitleField
-from wcs.portfolio import has_portfolio
-from wcs.portfolio import push_document
-from wcs.workflows import AttachmentEvolutionPart
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import get_formdata_template_context
-from wcs.workflows import register_item_class
-from wcs.workflows import template_on_context
-from wcs.workflows import template_on_formdata
+from wcs.fields import CommentField, PageField, SubtitleField, TitleField
+from wcs.portfolio import has_portfolio, push_document
+from wcs.workflows import (
+ AttachmentEvolutionPart,
+ WorkflowStatusItem,
+ get_formdata_template_context,
+ register_item_class,
+ template_on_context,
+ template_on_formdata,
+)
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import ezt
-from ..qommon import force_str
-from ..qommon import get_logger
-from ..qommon import misc
-from ..qommon.form import CheckboxWidget
-from ..qommon.form import ComputedExpressionWidget
-from ..qommon.form import RadiobuttonsWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import StringWidget
-from ..qommon.form import UploadedFile
-from ..qommon.form import UploadValidationError
-from ..qommon.form import UploadWidget
-from ..qommon.form import VarnameWidget
-from ..qommon.form import WidgetList
-from ..qommon.form import WysiwygTextWidget
+from ..qommon import N_, _, ezt, force_str, get_logger, misc
+from ..qommon.form import (
+ CheckboxWidget,
+ ComputedExpressionWidget,
+ RadiobuttonsWidget,
+ SingleSelectWidget,
+ StringWidget,
+ UploadedFile,
+ UploadValidationError,
+ UploadWidget,
+ VarnameWidget,
+ WidgetList,
+ WysiwygTextWidget,
+)
from ..qommon.template import TemplateError
OO_TEXT_NS = 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'
diff --git a/wcs/wf/external_workflow.py b/wcs/wf/external_workflow.py
index 345b6337f..1f8e18ec6 100644
--- a/wcs/wf/external_workflow.py
+++ b/wcs/wf/external_workflow.py
@@ -18,17 +18,15 @@ from quixote import get_publisher
from wcs.carddef import CardDef
from wcs.formdef import FormDef
-from wcs.qommon import N_
-from wcs.qommon import _
-from wcs.qommon.form import ComputedExpressionWidget
-from wcs.qommon.form import Form
-from wcs.qommon.form import RadiobuttonsWidget
-from wcs.qommon.form import SingleSelectWidget
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowGlobalActionWebserviceTrigger
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import perform_items
-from wcs.workflows import register_item_class
+from wcs.qommon import N_, _
+from wcs.qommon.form import ComputedExpressionWidget, Form, RadiobuttonsWidget, SingleSelectWidget
+from wcs.workflows import (
+ Workflow,
+ WorkflowGlobalActionWebserviceTrigger,
+ WorkflowStatusItem,
+ perform_items,
+ register_item_class,
+)
class ExternalWorkflowGlobalAction(WorkflowStatusItem):
diff --git a/wcs/wf/form.py b/wcs/wf/form.py
index 9a3861da3..764bed353 100644
--- a/wcs/wf/form.py
+++ b/wcs/wf/form.py
@@ -17,24 +17,17 @@
import xml.etree.ElementTree as ET
from quixote import get_publisher
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote.html import TemplateIO, htmltext
-from wcs.admin.fields import FieldDefPage
-from wcs.admin.fields import FieldsDirectory
+from wcs.admin.fields import FieldDefPage, FieldsDirectory
from wcs.formdata import get_dict_with_varnames
-from wcs.formdef import FormDef
-from wcs.formdef import lax_int
+from wcs.formdef import FormDef, lax_int
from wcs.forms.common import FileDirectory
from wcs.forms.root import FormPage
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import VarnameWidget
-from ..qommon.form import WidgetList
+from ..qommon import N_, _
+from ..qommon.form import SingleSelectWidget, VarnameWidget, WidgetList
def lookup_wf_form_file(self, filename):
diff --git a/wcs/wf/geolocate.py b/wcs/wf/geolocate.py
index 8830457c7..5a761a058 100644
--- a/wcs/wf/geolocate.py
+++ b/wcs/wf/geolocate.py
@@ -26,19 +26,12 @@ except ImportError:
from quixote import get_publisher
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import force_str
-from ..qommon import get_logger
+from ..qommon import N_, _, force_str, get_logger
from ..qommon.errors import ConnectionError
-from ..qommon.form import CheckboxWidget
-from ..qommon.form import ComputedExpressionWidget
-from ..qommon.form import RadiobuttonsWidget
-from ..qommon.misc import http_get_page
-from ..qommon.misc import normalize_geolocation
+from ..qommon.form import CheckboxWidget, ComputedExpressionWidget, RadiobuttonsWidget
+from ..qommon.misc import http_get_page, normalize_geolocation
class GeolocateWorkflowStatusItem(WorkflowStatusItem):
diff --git a/wcs/wf/jump.py b/wcs/wf/jump.py
index 3711e5446..9370a66f9 100644
--- a/wcs/wf/jump.py
+++ b/wcs/wf/jump.py
@@ -19,33 +19,18 @@ import json
import os
import time
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import redirect
+from quixote import get_publisher, get_request, get_response, redirect
from quixote.directory import Directory
from quixote.html import htmltext
-from wcs.api import get_user_from_api_query_string
-from wcs.api import is_url_signed
+from wcs.api import get_user_from_api_query_string, is_url_signed
from wcs.conditions import Condition
-from wcs.workflows import Workflow
-from wcs.workflows import WorkflowGlobalAction
-from wcs.workflows import WorkflowStatusJumpItem
-from wcs.workflows import register_item_class
+from wcs.workflows import Workflow, WorkflowGlobalAction, WorkflowStatusJumpItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import errors
-from ..qommon import force_str
+from ..qommon import N_, _, errors, force_str
from ..qommon.cron import CronJob
-from ..qommon.form import ComputedExpressionWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import StringWidget
-from ..qommon.form import WidgetList
-from ..qommon.humantime import humanduration2seconds
-from ..qommon.humantime import seconds2humanduration
-from ..qommon.humantime import timewords
+from ..qommon.form import ComputedExpressionWidget, SingleSelectWidget, StringWidget, WidgetList
+from ..qommon.humantime import humanduration2seconds, seconds2humanduration, timewords
from ..qommon.publisher import get_publisher_class
JUMP_TIMEOUT_INTERVAL = max((60 // int(os.environ.get('WCS_JUMP_TIMEOUT_CHECKS', '3')), 1))
diff --git a/wcs/wf/notification.py b/wcs/wf/notification.py
index 0e8551bfb..a00995944 100644
--- a/wcs/wf/notification.py
+++ b/wcs/wf/notification.py
@@ -18,18 +18,10 @@ import urllib.parse
from quixote import get_publisher
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
-from wcs.workflows import template_on_formdata
+from wcs.workflows import WorkflowStatusItem, register_item_class, template_on_formdata
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import get_logger
-from ..qommon.form import ComputedExpressionWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import StringWidget
-from ..qommon.form import TextWidget
-from ..qommon.form import WidgetList
+from ..qommon import N_, _, get_logger
+from ..qommon.form import ComputedExpressionWidget, SingleSelectWidget, StringWidget, TextWidget, WidgetList
from ..qommon.template import TemplateError
from .wscall import WebserviceCallStatusItem
diff --git a/wcs/wf/profile.py b/wcs/wf/profile.py
index 18c2628d6..f8bdeda75 100644
--- a/wcs/wf/profile.py
+++ b/wcs/wf/profile.py
@@ -21,28 +21,16 @@ import time
import urllib.parse
import xml.etree.ElementTree as ET
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
+from quixote import get_publisher, get_request, get_response
-from wcs.api_utils import MissingSecret
-from wcs.api_utils import get_secret_and_orig
-from wcs.api_utils import sign_url
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import XmlSerialisable
-from wcs.workflows import register_item_class
+from wcs.api_utils import MissingSecret, get_secret_and_orig, sign_url
+from wcs.workflows import WorkflowStatusItem, XmlSerialisable, register_item_class
-from ..qommon import N_
-from ..qommon import _
-from ..qommon.form import CompositeWidget
-from ..qommon.form import ComputedExpressionWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import WidgetListAsTable
+from ..qommon import N_, _
+from ..qommon.form import CompositeWidget, ComputedExpressionWidget, SingleSelectWidget, WidgetListAsTable
from ..qommon.ident.idp import is_idp_managing_user_attributes
-from ..qommon.misc import JSONEncoder
-from ..qommon.misc import http_patch_request
-from ..qommon.publisher import get_cfg
-from ..qommon.publisher import get_logger
+from ..qommon.misc import JSONEncoder, http_patch_request
+from ..qommon.publisher import get_cfg, get_logger
def user_ws_url(user_uuid):
diff --git a/wcs/wf/redirect_to_url.py b/wcs/wf/redirect_to_url.py
index 0f4d90f0b..a7d3006d8 100644
--- a/wcs/wf/redirect_to_url.py
+++ b/wcs/wf/redirect_to_url.py
@@ -14,11 +14,9 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
+from ..qommon import N_, _
from ..qommon.form import ComputedExpressionWidget
diff --git a/wcs/wf/register_comment.py b/wcs/wf/register_comment.py
index 91fd99b4d..8549713ec 100644
--- a/wcs/wf/register_comment.py
+++ b/wcs/wf/register_comment.py
@@ -19,18 +19,15 @@ import sys
from quixote import get_publisher
from quixote.html import htmltext
-from wcs.workflows import AttachmentEvolutionPart
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
-from wcs.workflows import template_on_formdata
+from wcs.workflows import (
+ AttachmentEvolutionPart,
+ WorkflowStatusItem,
+ register_item_class,
+ template_on_formdata,
+)
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import ezt
-from ..qommon import get_logger
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import TextWidget
-from ..qommon.form import WidgetList
+from ..qommon import N_, _, ezt, get_logger
+from ..qommon.form import SingleSelectWidget, TextWidget, WidgetList
from ..qommon.template import TemplateError
diff --git a/wcs/wf/remove.py b/wcs/wf/remove.py
index 5a7d9bea2..ea0b89c49 100644
--- a/wcs/wf/remove.py
+++ b/wcs/wf/remove.py
@@ -14,16 +14,11 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote import get_session
+from quixote import get_publisher, get_request, get_response, get_session
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
+from ..qommon import N_, _
class RemoveWorkflowStatusItem(WorkflowStatusItem):
diff --git a/wcs/wf/resubmit.py b/wcs/wf/resubmit.py
index bdd588062..b36fa59ac 100644
--- a/wcs/wf/resubmit.py
+++ b/wcs/wf/resubmit.py
@@ -14,20 +14,13 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_session
+from quixote import get_publisher, get_request, get_session
from wcs.formdef import FormDef
-from wcs.qommon.form import SingleSelectWidget
-from wcs.qommon.form import StringWidget
-from wcs.qommon.form import WidgetList
-from wcs.qommon.form import WysiwygTextWidget
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.qommon.form import SingleSelectWidget, StringWidget, WidgetList, WysiwygTextWidget
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
+from ..qommon import N_, _
class ResubmitWorkflowStatusItem(WorkflowStatusItem):
diff --git a/wcs/wf/roles.py b/wcs/wf/roles.py
index 96a6a5023..c1463c8e0 100644
--- a/wcs/wf/roles.py
+++ b/wcs/wf/roles.py
@@ -17,25 +17,17 @@
import sys
import urllib.parse
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
+from quixote import get_publisher, get_request, get_response
-from wcs.api_utils import MissingSecret
-from wcs.api_utils import get_secret_and_orig
-from wcs.api_utils import sign_url
+from wcs.api_utils import MissingSecret, get_secret_and_orig, sign_url
from wcs.roles import get_user_roles
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
+from wcs.workflows import WorkflowStatusItem, register_item_class
-from ..qommon import N_
-from ..qommon import _
+from ..qommon import N_, _
from ..qommon.form import SingleSelectWidgetWithOther
from ..qommon.ident.idp import is_idp_managing_user_attributes
-from ..qommon.misc import http_delete_request
-from ..qommon.misc import http_post_request
-from ..qommon.publisher import get_cfg
-from ..qommon.publisher import get_logger
+from ..qommon.misc import http_delete_request, http_post_request
+from ..qommon.publisher import get_cfg, get_logger
def roles_ws_url(role_uuid, user_uuid):
diff --git a/wcs/wf/timeout_jump.py b/wcs/wf/timeout_jump.py
index 9bca40017..1c69e82f0 100644
--- a/wcs/wf/timeout_jump.py
+++ b/wcs/wf/timeout_jump.py
@@ -16,8 +16,7 @@
from wcs.qommon import N_
-from .jump import JumpWorkflowStatusItem
-from .jump import register_item_class
+from .jump import JumpWorkflowStatusItem, register_item_class
class TimeoutWorkflowStatusItem(JumpWorkflowStatusItem):
diff --git a/wcs/wf/wscall.py b/wcs/wf/wscall.py
index c66ddd8e7..6fd8d792c 100644
--- a/wcs/wf/wscall.py
+++ b/wcs/wf/wscall.py
@@ -23,30 +23,29 @@ import traceback
import xml.etree.ElementTree as ET
from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request
+from quixote.html import TemplateIO, htmltext
-from wcs.workflows import AbortActionException
-from wcs.workflows import AttachmentEvolutionPart
-from wcs.workflows import WorkflowStatusItem
-from wcs.workflows import register_item_class
-from wcs.wscalls import call_webservice
-from wcs.wscalls import get_app_error_code
+from wcs.workflows import (
+ AbortActionException,
+ AttachmentEvolutionPart,
+ WorkflowStatusItem,
+ register_item_class,
+)
+from wcs.wscalls import call_webservice, get_app_error_code
-from ..qommon import N_
-from ..qommon import _
-from ..qommon import force_str
+from ..qommon import N_, _, force_str
from ..qommon.errors import ConnectionError
-from ..qommon.form import CheckboxWidget
-from ..qommon.form import ComputedExpressionWidget
-from ..qommon.form import HtmlWidget
-from ..qommon.form import RadiobuttonsWidget
-from ..qommon.form import SingleSelectWidget
-from ..qommon.form import StringWidget
-from ..qommon.form import VarnameWidget
-from ..qommon.form import WidgetDict
+from ..qommon.form import (
+ CheckboxWidget,
+ ComputedExpressionWidget,
+ HtmlWidget,
+ RadiobuttonsWidget,
+ SingleSelectWidget,
+ StringWidget,
+ VarnameWidget,
+ WidgetDict,
+)
from ..qommon.misc import json_loads
diff --git a/wcs/workflows.py b/wcs/workflows.py
index fd19d29c8..154b8c553 100644
--- a/wcs/workflows.py
+++ b/wcs/workflows.py
@@ -26,57 +26,36 @@ import uuid
import xml.etree.ElementTree as ET
from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
-from quixote import get_response
-from quixote.html import TemplateIO
-from quixote.html import htmltext
+from quixote import get_publisher, get_request, get_response
+from quixote.html import TemplateIO, htmltext
from .carddef import CardDef
from .conditions import Condition
from .fields import FileField
from .formdata import Evolution
-from .formdef import FormDef
-from .formdef import FormdefImportError
+from .formdef import FormDef, FormdefImportError
from .mail_templates import MailTemplate
-from .qommon import N_
-from .qommon import _
-from .qommon import emails
-from .qommon import errors
-from .qommon import ezt
-from .qommon import force_str
-from .qommon import get_cfg
-from .qommon import get_logger
-from .qommon import misc
-from .qommon.form import CheckboxWidget
-from .qommon.form import ComputedExpressionWidget
-from .qommon.form import ConditionWidget
-from .qommon.form import Form
-from .qommon.form import SingleSelectWidget
-from .qommon.form import SingleSelectWidgetWithOther
-from .qommon.form import StringWidget
-from .qommon.form import TextWidget
-from .qommon.form import ValidatedStringWidget
-from .qommon.form import VarnameWidget
-from .qommon.form import WidgetList
-from .qommon.form import WysiwygTextWidget
+from .qommon import N_, _, emails, errors, ezt, force_str, get_cfg, get_logger, misc
+from .qommon.form import (
+ CheckboxWidget,
+ ComputedExpressionWidget,
+ ConditionWidget,
+ Form,
+ SingleSelectWidget,
+ SingleSelectWidgetWithOther,
+ StringWidget,
+ TextWidget,
+ ValidatedStringWidget,
+ VarnameWidget,
+ WidgetList,
+ WysiwygTextWidget,
+)
from .qommon.humantime import seconds2humanduration
-from .qommon.misc import C_
-from .qommon.misc import file_digest
-from .qommon.misc import get_as_datetime
-from .qommon.misc import xml_node_text
-from .qommon.storage import Contains
-from .qommon.storage import NotEqual
-from .qommon.storage import Null
-from .qommon.storage import StorableObject
-from .qommon.storage import atomic_write
-from .qommon.storage import pickle_2to3_conversion
-from .qommon.template import Template
-from .qommon.template import TemplateError
-from .qommon.upload_storage import PicklableUpload
-from .qommon.upload_storage import get_storage_object
-from .roles import get_user_roles
-from .roles import logged_users_role
+from .qommon.misc import C_, file_digest, get_as_datetime, xml_node_text
+from .qommon.storage import Contains, NotEqual, Null, StorableObject, atomic_write, pickle_2to3_conversion
+from .qommon.template import Template, TemplateError
+from .qommon.upload_storage import PicklableUpload, get_storage_object
+from .roles import get_user_roles, logged_users_role
if not __name__.startswith('wcs.') and __name__ != "__main__":
raise ImportError('Import of workflows module must be absolute (import wcs.workflows)')
diff --git a/wcs/wscalls.py b/wcs/wscalls.py
index 96447dfea..0aa3243a1 100644
--- a/wcs/wscalls.py
+++ b/wcs/wscalls.py
@@ -21,27 +21,21 @@ import urllib.parse
import xml.etree.ElementTree as ET
from django.utils.encoding import force_text
-from quixote import get_publisher
-from quixote import get_request
+from quixote import get_publisher, get_request
-from wcs.api_utils import MissingSecret
-from wcs.api_utils import get_secret_and_orig
-from wcs.api_utils import sign_url
+from wcs.api_utils import MissingSecret, get_secret_and_orig, sign_url
from wcs.workflows import WorkflowStatusItem
-from .qommon import _
-from .qommon import force_str
-from .qommon import misc
-from .qommon.form import CheckboxWidget
-from .qommon.form import CompositeWidget
-from .qommon.form import ComputedExpressionWidget
-from .qommon.form import RadiobuttonsWidget
-from .qommon.form import StringWidget
-from .qommon.form import WidgetDict
-from .qommon.misc import JSONEncoder
-from .qommon.misc import get_variadic_url
-from .qommon.misc import json_loads
-from .qommon.misc import simplify
+from .qommon import _, force_str, misc
+from .qommon.form import (
+ CheckboxWidget,
+ CompositeWidget,
+ ComputedExpressionWidget,
+ RadiobuttonsWidget,
+ StringWidget,
+ WidgetDict,
+)
+from .qommon.misc import JSONEncoder, get_variadic_url, json_loads, simplify
from .qommon.template import Template
from .qommon.xml_storage import XmlStorableObject