From b28e7bbb409401f0f562b60acaf304a888acb6b5 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 21 Sep 2021 10:46:40 +0200 Subject: [PATCH 36/59] misc: fix dangerous-default-value pylint error (#56982) --- src/authentic2/idp/saml/common.py | 7 ++++--- src/authentic2/saml/common.py | 9 +++++---- src/authentic2/saml/fields.py | 3 ++- src/authentic2/saml/models.py | 3 ++- src/authentic2/utils/misc.py | 12 ++++++++---- src/authentic2/utils/template.py | 6 +++--- 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/authentic2/idp/saml/common.py b/src/authentic2/idp/saml/common.py index ec2da4b7..21f29045 100644 --- a/src/authentic2/idp/saml/common.py +++ b/src/authentic2/idp/saml/common.py @@ -23,13 +23,14 @@ from django.http import HttpResponseRedirect from django.utils.http import urlencode -def redirect_to_login(next_url, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME, other_keys={}): +def redirect_to_login(next_url, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME, other_keys=None): "Redirects the user to the login page, passing the given 'next' page" if not login_url: login_url = settings.LOGIN_URL data = {redirect_field_name: next_url} - for k, v in other_keys.items(): - data[k] = v + if other_keys: + for k, v in other_keys.items(): + data[k] = v return HttpResponseRedirect('%s?%s' % (login_url, urlencode(data))) diff --git a/src/authentic2/saml/common.py b/src/authentic2/saml/common.py index 60b659cc..e7256dec 100644 --- a/src/authentic2/saml/common.py +++ b/src/authentic2/saml/common.py @@ -101,17 +101,18 @@ soap_bindings = [lasso.SAML2_METADATA_BINDING_SOAP] all_bindings = asynchronous_bindings + [lasso.SAML2_METADATA_BINDING_SOAP] -def get_saml2_metadata(request, idp_map=None, sp_map=None, options={}): +def get_saml2_metadata(request, idp_map=None, sp_map=None, options=None): metagen = saml2utils.Saml2Metadata(get_entity_id(request), url_prefix=get_base_path(request)) if idp_map: - metagen.add_idp_descriptor(idp_map, options) + metagen.add_idp_descriptor(idp_map, options or {}) if sp_map: - metagen.add_sp_descriptor(sp_map, options) + metagen.add_sp_descriptor(sp_map, options or {}) return str(metagen) -def create_saml2_server(request, idp_map=None, sp_map=None, options={}): +def create_saml2_server(request, idp_map=None, sp_map=None, options=None): '''Create a lasso Server object for using with a profile''' + options = options or {} if app_settings.ADD_CERTIFICATE_TO_KEY_INFO: certificate_content = options.get('key') else: diff --git a/src/authentic2/saml/fields.py b/src/authentic2/saml/fields.py index e1ce2bce..ec266114 100644 --- a/src/authentic2/saml/fields.py +++ b/src/authentic2/saml/fields.py @@ -196,7 +196,8 @@ class MultiSelectField(models.Field): super().contribute_to_class(cls, name) if self.choices: - def func(self, fieldname=name, choicedict=dict(self.choices)): + def func(self, fieldname=name, choicedict=None): + choicedict = choicedict or dict(self.choices) return ",".join([choicedict.get(value, value) for value in getattr(self, fieldname)]) setattr(cls, 'get_%s_display' % self.name, func) diff --git a/src/authentic2/saml/models.py b/src/authentic2/saml/models.py index 1c7b5726..9576bff3 100644 --- a/src/authentic2/saml/models.py +++ b/src/authentic2/saml/models.py @@ -57,13 +57,14 @@ def ls_find(ls, value): return -1 -def get_prefered_content(etrees, languages=[None, 'en']): +def get_prefered_content(etrees, languages=None): """Sort XML nodes by their xml:lang attribute using languages as the ascending partial order of language identifiers Default is to prefer english, then no lang declaration, to anything else. """ + languages = languages or [None, 'en'] best = None best_score = -1 for tree in etrees: diff --git a/src/authentic2/utils/misc.py b/src/authentic2/utils/misc.py index d9906510..47048ff0 100644 --- a/src/authentic2/utils/misc.py +++ b/src/authentic2/utils/misc.py @@ -280,7 +280,7 @@ def is_valid_url(url): def make_url( to, args=(), - kwargs={}, + kwargs=None, keep_params=False, params=None, append=None, @@ -303,6 +303,7 @@ def make_url( the parameter was appended, it's just ignored. """ if resolve: + kwargs = kwargs or {} url = resolve_url(to, *args, **kwargs) else: url = to @@ -360,7 +361,7 @@ def redirect( request, to, args=(), - kwargs={}, + kwargs=None, keep_params=False, params=None, append=None, @@ -904,14 +905,17 @@ def send_password_reset_mail( from_email=None, next_url=None, context=None, - legacy_subject_templates=['registration/password_reset_subject.txt'], - legacy_body_templates=['registration/password_reset_email.html'], + legacy_subject_templates=None, + legacy_body_templates=None, set_random_password=True, sign_next_url=True, **kwargs, ): from .. import middleware + legacy_subject_templates = legacy_subject_templates or ['registration/password_reset_subject.txt'] + legacy_body_templates = legacy_body_templates or ['registration/password_reset_email.html'] + if not user.email: raise ValueError('user must have an email') logger = logging.getLogger(__name__) diff --git a/src/authentic2/utils/template.py b/src/authentic2/utils/template.py index 24b348cf..c6ce2420 100644 --- a/src/authentic2/utils/template.py +++ b/src/authentic2/utils/template.py @@ -34,12 +34,12 @@ class Template: if self.raises: raise TemplateError(_('template syntax error: %s') % e) - def render(self, context={}): + def render(self, context=None): if not hasattr(self, 'template'): # oops, silent error during initialization, let's get outta here return force_str(self.value) try: - rendered = self.template.render(context) + rendered = self.template.render(context or {}) except TemplateSyntaxError as e: if self.raises: raise TemplateError(_('template syntax error: %s') % e) @@ -50,5 +50,5 @@ class Template: return force_str(self.value) return force_str(rendered) - def null_render(self, context={}): + def null_render(self, context=None): return str(self.value) -- 2.30.2