misc: change django-upgrade target version to 3.2 (#75442)
This commit is contained in:
parent
95d05a0f87
commit
cebdcf5bbf
|
@ -7,10 +7,10 @@ repos:
|
|||
- id: pyupgrade
|
||||
args: ['--keep-percent-format', '--py37-plus']
|
||||
- repo: https://github.com/adamchainz/django-upgrade
|
||||
rev: 1.10.0
|
||||
rev: 1.13.0
|
||||
hooks:
|
||||
- id: django-upgrade
|
||||
args: ['--target-version', '2.2']
|
||||
args: ['--target-version', '3.2']
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 22.3.0
|
||||
hooks:
|
||||
|
|
2
README
2
README
|
@ -194,7 +194,7 @@ djhtml is used to automatically indent html files, using those parameters:
|
|||
|
||||
django-upgrade is used to automatically upgrade Django syntax, using those parameters:
|
||||
|
||||
django-upgrade --target-version 2.2
|
||||
django-upgrade --target-version 3.2
|
||||
|
||||
There is .pre-commit-config.yaml to use pre-commit to automatically run these tools
|
||||
before commits. (execute `pre-commit install` to install the git hook.)
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
default_app_config = 'hobo.agent.authentic2.apps.Authentic2AgentConfig'
|
|
@ -15,7 +15,7 @@ from django.contrib.auth import get_user_model
|
|||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core import serializers
|
||||
from django.utils.translation import activate
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import gettext as _
|
||||
from tenant_schemas.utils import tenant_context
|
||||
|
||||
from hobo.agent.authentic2.provisionning import Provisionning
|
||||
|
|
|
@ -15,7 +15,7 @@ from django.conf import settings
|
|||
from django.contrib.auth import get_user_model
|
||||
from django.db import connection, transaction
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
|
||||
from hobo.agent.common import notify_agents
|
||||
from hobo.signature import sign_url
|
||||
|
@ -141,7 +141,7 @@ class Provisionning(threading.local):
|
|||
tuple(allowed_technical_roles_prefixes)
|
||||
)
|
||||
|
||||
issuer = force_text(self.get_entity_id())
|
||||
issuer = force_str(self.get_entity_id())
|
||||
if mode == 'provision':
|
||||
|
||||
def user_to_json(ou, service, user, user_roles):
|
||||
|
@ -245,7 +245,7 @@ class Provisionning(threading.local):
|
|||
continue
|
||||
logger.info(
|
||||
'provisionning users %s to %s',
|
||||
', '.join(map(force_text, users)),
|
||||
', '.join(map(force_str, users)),
|
||||
', '.join(audience),
|
||||
)
|
||||
self.notify_agents(
|
||||
|
@ -264,7 +264,7 @@ class Provisionning(threading.local):
|
|||
elif users:
|
||||
audience = [audience for ou in ous.keys() for s, audience in self.get_audience(ou)]
|
||||
logger.info(
|
||||
'deprovisionning users %s from %s', ', '.join(map(force_text, users)), ', '.join(audience)
|
||||
'deprovisionning users %s from %s', ', '.join(map(force_str, users)), ', '.join(audience)
|
||||
)
|
||||
self.notify_agents(
|
||||
{
|
||||
|
|
|
@ -9,7 +9,7 @@ import requests
|
|||
from django.conf import settings
|
||||
from django.core.management import call_command, get_commands
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
from tenant_schemas.utils import tenant_context
|
||||
|
||||
from hobo.multitenant.middleware import TenantMiddleware, TenantNotFound
|
||||
|
@ -23,7 +23,7 @@ def replace_file(path, content):
|
|||
dirname = os.path.dirname(path)
|
||||
fd, temp = tempfile.mkstemp(dir=dirname, prefix='.tmp-' + os.path.basename(path) + '-')
|
||||
f = os.fdopen(fd, 'w')
|
||||
f.write(force_text(content))
|
||||
f.write(force_str(content))
|
||||
f.flush()
|
||||
os.fsync(f.fileno())
|
||||
f.close()
|
||||
|
@ -32,7 +32,7 @@ def replace_file(path, content):
|
|||
|
||||
class Command(BaseCommand):
|
||||
early_secondary_exit = True
|
||||
requires_system_checks = False
|
||||
requires_system_checks = []
|
||||
me = None
|
||||
|
||||
def add_arguments(self, parser):
|
||||
|
|
|
@ -29,7 +29,7 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
class Command(BaseCommand, NotificationProcessing):
|
||||
requires_system_checks = False
|
||||
requires_system_checks = []
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('notification', metavar='NOTIFICATION', type=str)
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import Group
|
||||
from django.contrib.postgres.fields import ArrayField, JSONField
|
||||
from django.contrib.postgres.fields import ArrayField
|
||||
from django.db import models
|
||||
from django.db.models import JSONField
|
||||
|
||||
|
||||
class Role(Group):
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
default_app_config = 'hobo.agent.hobo.apps.HoboAgentConfig'
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from hobo.applications.models import Application
|
||||
|
||||
|
|
|
@ -23,12 +23,12 @@ import traceback
|
|||
import urllib.parse
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
from django.core.files.base import ContentFile
|
||||
from django.db import connection, models
|
||||
from django.db.models import JSONField
|
||||
from django.utils.text import slugify
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from hobo.environment.utils import get_installed_services
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ from django.shortcuts import get_object_or_404
|
|||
from django.urls import reverse, reverse_lazy
|
||||
from django.utils.text import slugify
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.generic import DetailView, FormView, ListView, TemplateView
|
||||
from django.views.generic.edit import CreateView, DeleteView, UpdateView
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import validate_ipv46_address
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
def validate_space_separated_ips(value):
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
# hobo - portal to configure and deploy applications
|
||||
# Copyright (C) 2015 Entr'ouvert
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Affero General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import django.apps
|
||||
|
||||
|
||||
class AppConfig(django.apps.AppConfig):
|
||||
name = 'hobo.deploy'
|
||||
|
||||
def ready(self):
|
||||
from . import signals
|
||||
|
||||
|
||||
default_app_config = 'hobo.deploy.AppConfig'
|
|
@ -0,0 +1,24 @@
|
|||
# hobo - portal to configure and deploy applications
|
||||
# Copyright (C) 2015 Entr'ouvert
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Affero General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import django.apps
|
||||
|
||||
|
||||
class AppConfig(django.apps.AppConfig):
|
||||
name = 'hobo.deploy'
|
||||
|
||||
def ready(self):
|
||||
from . import signals
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from django import forms
|
||||
from django.core.validators import validate_email
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from hobo.emails.validators import validate_email_address, validate_email_domain, validate_email_spf
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import dns.resolver
|
|||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from hobo.environment.utils import get_operational_services
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import gettext as _
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from hobo.environment.forms import VariablesFormMixin
|
||||
|
|
|
@ -19,7 +19,7 @@ from django.conf import settings
|
|||
from django.contrib import messages
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.template.defaultfilters import slugify
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .models import Authentic, BiJoe, Chrono, Combo, Fargo, Hobo, Lingo, Passerelle, Variable, Wcs, Welco
|
||||
from .utils import get_variable
|
||||
|
|
|
@ -25,15 +25,15 @@ import requests
|
|||
from django.conf import settings
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
from django.core.cache import cache
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import URLValidator
|
||||
from django.db import models
|
||||
from django.db.models import JSONField
|
||||
from django.utils.crypto import get_random_string
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .utils import Zone, get_installed_services, get_local_key
|
||||
|
||||
|
@ -188,7 +188,7 @@ class ServiceBase(models.Model):
|
|||
if self.legacy_urls:
|
||||
as_dict['legacy_urls'] = self.legacy_urls
|
||||
as_dict['service-id'] = self.Extra.service_id
|
||||
as_dict['service-label'] = force_text(self.Extra.service_label)
|
||||
as_dict['service-label'] = force_str(self.Extra.service_label)
|
||||
as_dict['variables'] = {v.name: v.json for v in self.variables.all()}
|
||||
as_dict['secondary'] = self.secondary
|
||||
if self.get_saml_sp_metadata_url():
|
||||
|
|
|
@ -22,7 +22,7 @@ from django.conf import settings
|
|||
from django.core.management.base import CommandError
|
||||
from django.db import connection, transaction
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
|
||||
from hobo.middleware.utils import StoreRequestMiddleware
|
||||
from hobo.multitenant.settings_loaders import KnownServices
|
||||
|
@ -48,7 +48,7 @@ def get_operational_services():
|
|||
|
||||
|
||||
def get_local_key(url):
|
||||
secret1 = force_text(settings.SECRET_KEY)
|
||||
secret1 = force_str(settings.SECRET_KEY)
|
||||
secret2 = url
|
||||
return KnownServices.shared_secret(secret1, secret2)[:40]
|
||||
|
||||
|
|
|
@ -23,8 +23,8 @@ from django.contrib.contenttypes.models import ContentType
|
|||
from django.http import Http404, HttpResponse, HttpResponseRedirect, JsonResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse_lazy
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.generic import View
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView
|
||||
|
@ -213,7 +213,7 @@ class ImportView(FormView):
|
|||
|
||||
def form_valid(self, form):
|
||||
try:
|
||||
parameters_json = json.loads(force_text(self.request.FILES['parameters_json'].read()))
|
||||
parameters_json = json.loads(force_str(self.request.FILES['parameters_json'].read()))
|
||||
except ValueError:
|
||||
form.add_error('parameters_json', _('File is not in the expected JSON format.'))
|
||||
return self.form_invalid(form)
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class MaintenanceForm(forms.Form):
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
import xml.etree.ElementTree as etree
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class SettingsForm(forms.Form):
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import django
|
||||
from django.http import JsonResponse
|
||||
from django.middleware.common import CommonMiddleware
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class HoboCommonMiddleware(CommonMiddleware):
|
||||
|
|
|
@ -14,7 +14,7 @@ class CORSMiddleware(MiddlewareMixin):
|
|||
view/exception middleware along with the requested view;
|
||||
it will call any response middlewares
|
||||
"""
|
||||
if request.method == 'OPTIONS' and "HTTP_ACCESS_CONTROL_REQUEST_METHOD" in request.META:
|
||||
if request.method == 'OPTIONS' and "access-control-request-method" in request.headers:
|
||||
response = HttpResponse()
|
||||
return response
|
||||
return None
|
||||
|
|
|
@ -18,7 +18,7 @@ from ipaddress import ip_address, ip_network
|
|||
|
||||
from django.conf import settings
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
|
||||
def pass_through(request):
|
||||
|
|
|
@ -10,7 +10,7 @@ class XForwardedForMiddleware(MiddlewareMixin):
|
|||
|
||||
def process_request(self, request):
|
||||
if getattr(settings, 'USE_X_FORWARDED_FOR', False):
|
||||
if 'HTTP_X_FORWARDED_FOR' in request.META:
|
||||
if 'x-forwarded-for' in request.headers:
|
||||
ip = request.headers.get('X-Forwarded-For', '').split(",")[0].strip()
|
||||
if ip:
|
||||
request.META['REMOTE_ADDR'] = ip
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
default_app_config = 'hobo.multitenant.apps.MultitenantAppConfig'
|
||||
|
||||
# import the context_processors module so it gets to compute the versions hash
|
||||
# early on.
|
||||
from hobo import context_processors
|
||||
|
|
|
@ -13,7 +13,7 @@ from django.core.exceptions import ImproperlyConfigured
|
|||
from django.core.management import call_command, get_commands, load_command_class
|
||||
from django.core.management.base import BaseCommand, CommandError, SystemCheckError, handle_default_options
|
||||
from django.db import connection, connections
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
|
||||
from hobo.multitenant.management.commands import InteractiveTenantOption
|
||||
from hobo.multitenant.middleware import TenantMiddleware
|
||||
|
@ -26,12 +26,12 @@ def exception_to_text(e):
|
|||
pass
|
||||
|
||||
try:
|
||||
return force_text(str(e), errors='ignore')
|
||||
return force_str(str(e), errors='ignore')
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
return force_text(repr(e), errors='ignore')
|
||||
return force_str(repr(e), errors='ignore')
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class EditFullNameTemplateForm(forms.Form):
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
from django.core.validators import RegexValidator
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
validate_attribute_name = RegexValidator(
|
||||
r'^[a-z][a-z0-9_]*\Z',
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse, reverse_lazy
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import gettext as _
|
||||
from django.views.generic import CreateView, ListView, RedirectView, TemplateView, UpdateView
|
||||
|
||||
from hobo.deploy.signals import notify_agents
|
||||
|
|
|
@ -23,7 +23,7 @@ from django.conf import settings
|
|||
from django.db import connection
|
||||
from django.http import HttpResponseBadRequest, HttpResponseForbidden, JsonResponse
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.encoding import force_bytes, force_text
|
||||
from django.utils.encoding import force_bytes, force_str
|
||||
|
||||
from hobo.provisionning.utils import NotificationProcessing
|
||||
from hobo.rest_authentication import PublikAuthentication, PublikAuthenticationFailed
|
||||
|
@ -46,7 +46,7 @@ class ProvisionningMiddleware(MiddlewareMixin, NotificationProcessing):
|
|||
return HttpResponseForbidden()
|
||||
|
||||
try:
|
||||
notification = json.loads(force_text(request.body))
|
||||
notification = json.loads(force_str(request.body))
|
||||
except ValueError:
|
||||
return HttpResponseBadRequest()
|
||||
if not isinstance(notification, dict) or 'objects' not in notification:
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class RobotsTxtForm(forms.Form):
|
||||
|
|
|
@ -10,7 +10,7 @@ and to disable DEBUG mode in production.
|
|||
import os
|
||||
|
||||
from django.conf import global_settings
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import RegexValidator
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from hobo.utils import TemplateError, get_templated_url
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import gettext as _
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from hobo.environment.forms import VariablesFormMixin
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class ThemeOptionsForm(forms.Form):
|
||||
|
|
|
@ -19,7 +19,7 @@ import random
|
|||
|
||||
from django.contrib import messages
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import gettext as _
|
||||
from django.views.generic import RedirectView, TemplateView
|
||||
|
||||
from hobo.environment.forms import VariablesFormMixin
|
||||
|
|
|
@ -56,12 +56,12 @@ urlpatterns += [
|
|||
path('logout/', logout, name='logout'),
|
||||
path('login/', login, name='auth_login'),
|
||||
path('login/local/', login_local), # to be used as backup, in case of idp down
|
||||
re_path(r'^accounts/mellon/', include('mellon.urls')),
|
||||
path('accounts/mellon/', include('mellon.urls')),
|
||||
]
|
||||
|
||||
if settings.DEBUG and 'debug_toolbar' in settings.INSTALLED_APPS:
|
||||
import debug_toolbar # pylint: disable=import-error
|
||||
|
||||
urlpatterns = [
|
||||
re_path(r'^__debug__/', include(debug_toolbar.urls)),
|
||||
path('__debug__/', include(debug_toolbar.urls)),
|
||||
] + urlpatterns
|
||||
|
|
|
@ -9,8 +9,8 @@ from django.core.exceptions import PermissionDenied
|
|||
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
||||
from django.shortcuts import resolve_url
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import gettext as _
|
||||
from django.views.generic import edit
|
||||
from django.views.generic.base import TemplateView
|
||||
|
||||
|
@ -89,7 +89,7 @@ def health_json(request):
|
|||
def menu_json(request):
|
||||
label = _('System')
|
||||
json_str = json.dumps(
|
||||
[{'label': force_text(label), 'slug': 'system', 'url': request.build_absolute_uri(reverse('home'))}]
|
||||
[{'label': force_str(label), 'slug': 'system', 'url': request.build_absolute_uri(reverse('home'))}]
|
||||
)
|
||||
content_type = 'application/json'
|
||||
for variable in ('jsonpCallback', 'callback'):
|
||||
|
|
|
@ -9,7 +9,7 @@ from unittest import mock
|
|||
import dns.resolver
|
||||
import pytest
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
from dns import name
|
||||
from dns.rdtypes.ANY import MX, TXT
|
||||
from test_manager import login
|
||||
|
@ -129,7 +129,7 @@ def test_invalid_address(client, admin_user):
|
|||
client.post('/login/', {'username': 'admin', 'password': 'password'})
|
||||
response = client.post('/emails/', {'default_from_email': 'foobar'})
|
||||
assert response.status_code == 200
|
||||
assert 'Enter a valid email address' in force_text(response.content)
|
||||
assert 'Enter a valid email address' in force_str(response.content)
|
||||
|
||||
|
||||
def test_unkown_address(client, admin_user, dns_resolver, smtp_server, settings):
|
||||
|
@ -137,7 +137,7 @@ def test_unkown_address(client, admin_user, dns_resolver, smtp_server, settings)
|
|||
client.post('/login/', {'username': 'admin', 'password': 'password'})
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@unknown.com'})
|
||||
assert response.status_code == 200
|
||||
assert 'Email address not found' in force_text(response.content)
|
||||
assert 'Email address not found' in force_str(response.content)
|
||||
|
||||
|
||||
def test_kown_address_nospf(client, admin_user, dns_resolver, smtp_server, settings):
|
||||
|
@ -145,7 +145,7 @@ def test_kown_address_nospf(client, admin_user, dns_resolver, smtp_server, setti
|
|||
client.post('/login/', {'username': 'admin', 'password': 'password'})
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example.com'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_text(
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_str(
|
||||
response.content
|
||||
)
|
||||
|
||||
|
@ -157,7 +157,7 @@ def test_spf_allow_all_mail(client, admin_user, dns_resolver, smtp_server, setti
|
|||
'/emails/', {'default_from_email': 'john.doe@example-spf-allow-all.com'}, follow=True
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_text(
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_str(
|
||||
response.content
|
||||
)
|
||||
|
||||
|
@ -168,7 +168,7 @@ def test_invalid_spf(client, admin_user, dns_resolver, smtp_server, settings):
|
|||
client.post('/login/', {'username': 'admin', 'password': 'password'})
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example-invalid-spf.com'})
|
||||
assert response.status_code == 200
|
||||
assert 'No suitable SPF record found' in force_text(response.content)
|
||||
assert 'No suitable SPF record found' in force_str(response.content)
|
||||
|
||||
|
||||
def test_strict_nospf(client, admin_user, dns_resolver, smtp_server, monkeypatch, settings):
|
||||
|
@ -178,7 +178,7 @@ def test_strict_nospf(client, admin_user, dns_resolver, smtp_server, monkeypatch
|
|||
client.post('/login/', {'username': 'admin', 'password': 'password'})
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example.com'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'No suitable SPF record found' in force_text(response.content)
|
||||
assert 'No suitable SPF record found' in force_str(response.content)
|
||||
|
||||
|
||||
def test_valid_spf(client, admin_user, dns_resolver, smtp_server, settings):
|
||||
|
@ -187,7 +187,7 @@ def test_valid_spf(client, admin_user, dns_resolver, smtp_server, settings):
|
|||
client.post('/login/', {'username': 'admin', 'password': 'password'})
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example-spf.com'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_text(
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_str(
|
||||
response.content
|
||||
)
|
||||
|
||||
|
@ -200,7 +200,7 @@ def test_no_spf_validation(client, admin_user, dns_resolver, smtp_server, settin
|
|||
'/emails/', {'default_from_email': 'john.doe@example-invalid-spf.com'}, follow=True
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_text(
|
||||
assert 'Emails settings have been updated. It will take a few seconds to be effective.' in force_str(
|
||||
response.content
|
||||
)
|
||||
|
||||
|
@ -211,14 +211,14 @@ def test_sender_allowed_domains(client, admin_user, dns_resolver, smtp_server, s
|
|||
client.post('/login/', {'username': 'admin', 'password': 'password'})
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example.com'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Domain example.com is not allowed' in force_text(response.content)
|
||||
assert 'Emails settings have been updated.' not in force_text(response.content)
|
||||
assert 'Domain example.com is not allowed' in force_str(response.content)
|
||||
assert 'Emails settings have been updated.' not in force_str(response.content)
|
||||
|
||||
settings.EMAIL_FROM_ALLOWED_DOMAINS = ['example.com', 'foo.bar']
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example.com'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Emails settings have been updated.' in force_text(response.content)
|
||||
assert 'Domain example.com is not allowed' not in force_text(response.content)
|
||||
assert 'Emails settings have been updated.' in force_str(response.content)
|
||||
assert 'Domain example.com is not allowed' not in force_str(response.content)
|
||||
|
||||
settings.EMAIL_FROM_ALLOWED_DOMAINS = []
|
||||
combo = Combo(base_url='https://example.org/test')
|
||||
|
@ -227,21 +227,21 @@ def test_sender_allowed_domains(client, admin_user, dns_resolver, smtp_server, s
|
|||
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example.org'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Emails settings have been updated.' in force_text(response.content)
|
||||
assert 'Emails settings have been updated.' in force_str(response.content)
|
||||
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example.com'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Domain example.com is not allowed' in force_text(response.content)
|
||||
assert 'Domain example.com is not allowed' in force_str(response.content)
|
||||
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@brother.example.org'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Domain brother.example.org is not allowed' in force_text(response.content)
|
||||
assert 'Domain brother.example.org is not allowed' in force_str(response.content)
|
||||
|
||||
combo.base_url = 'https://www.example.com'
|
||||
combo.save()
|
||||
response = client.post('/emails/', {'default_from_email': 'john.doe@example.com'}, follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Emails settings have been updated.' in force_text(response.content)
|
||||
assert 'Emails settings have been updated.' in force_str(response.content)
|
||||
|
||||
|
||||
def test_emails_view(app, admin_user, dns_resolver, smtp_server, settings):
|
||||
|
|
|
@ -3,7 +3,7 @@ from unittest import mock
|
|||
|
||||
import pytest
|
||||
from django.test import override_settings
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
from requests import Response
|
||||
|
||||
from hobo.environment.models import Combo, Fargo, Hobo, Variable, Wcs
|
||||
|
@ -727,7 +727,7 @@ def test_upgrade_user(mocked_post):
|
|||
|
||||
def test_compute_cnil_acknowledgment_level():
|
||||
"""function use to inspect javascript content"""
|
||||
warning_content = force_text(JAVASCRIPT_TAG)
|
||||
warning_content = force_str(JAVASCRIPT_TAG)
|
||||
|
||||
# can't find cookie's life time extension prevention
|
||||
assert compute_cnil_acknowledgment_level(warning_content) == 'good'
|
||||
|
|
|
@ -4,7 +4,7 @@ import os
|
|||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
|
||||
from hobo.agent.worker import settings
|
||||
from hobo.agent.worker.services import deploy, notify
|
||||
|
@ -106,7 +106,7 @@ def test_deploy(mocked_subprocess, mocked_exists):
|
|||
mock_calls = mocked_communicate.mock_calls
|
||||
assert len(mock_calls) == 4
|
||||
for i in range(0, len(mock_calls)):
|
||||
assert json.loads(force_text(mock_calls[0][2]['input'])) == ENVIRONMENT
|
||||
assert json.loads(force_str(mock_calls[0][2]['input'])) == ENVIRONMENT
|
||||
|
||||
mocked_opened.returncode = 1
|
||||
with pytest.raises(RuntimeError, match='failed: '):
|
||||
|
@ -151,7 +151,7 @@ def test_notify(mocked_subprocess, mocked_listdir, mocked_exists):
|
|||
# notification sent
|
||||
mock_calls = mocked_communicate.mock_calls
|
||||
assert len(mock_calls) == 1
|
||||
assert json.loads(force_text(mock_calls[0][2]['input']))['objects']['data'][0]['uuid'] == '12345'
|
||||
assert json.loads(force_str(mock_calls[0][2]['input']))['objects']['data'][0]['uuid'] == '12345'
|
||||
|
||||
mocked_opened.returncode = 1
|
||||
with pytest.raises(RuntimeError, match='failed: '):
|
||||
|
|
Loading…
Reference in New Issue