écran de configuration de l’apparence par défaut des pages de login/authz (#75139) #35

Merged
pmarillonnet merged 3 commits from wip/75139-neutral-authz-theme-bo-config into main 2023-05-02 09:22:01 +02:00
Owner
No description provided.
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from 1d0c49a61e to e80fdbe1e0 2023-04-11 10:53:25 +02:00 Compare
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from e80fdbe1e0 to a32c8f8402 2023-04-11 11:10:03 +02:00 Compare
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from a32c8f8402 to 1a99c7a53a 2023-04-11 11:27:34 +02:00 Compare
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from 1a99c7a53a to a3b58adccf 2023-04-11 11:58:09 +02:00 Compare
pmarillonnet changed title from WIP: wip/75139-neutral-authz-theme-bo-config to écran de configuration de l’apparence par défaut des pages de login/authz (#75139) 2023-04-11 12:00:35 +02:00
Author
Owner

Sur le salon tech a été discutée la pertinence d’avoir un nouveau modèle juste pour ça, alors qu’on pourrait imaginer cela géré directement dans les options d’apparence de l’OU par défaut.

Ma réponse à cette objection :
· dans le cas général (et notamment si l’on se rapproche de ce qui existe coté GLC) les services tiers raccordés disposent chacun de leur OU propre. Le fallback sur l’apparence de l’OU par défaut ne fonctionnerait pas dans ce cas général ;
· l’idée est que ce modèle RuntimeSetting nouvellement introduit serve par ailleurs dans les écrans BO a2 (dans le ticket dont s’origine cette PR il est question d’avoir des écrans de gestion des options de complexité des mots de passe etc).

Sur le salon tech a été discutée la pertinence d’avoir un nouveau modèle juste pour ça, alors qu’on pourrait imaginer cela géré directement dans les options d’apparence de l’OU par défaut. Ma réponse à cette objection : · dans le cas général (et notamment si l’on se rapproche de ce qui existe coté GLC) les services tiers raccordés disposent chacun de leur OU propre. Le fallback sur l’apparence de l’OU par défaut ne fonctionnerait pas dans ce cas général ; · l’idée est que ce modèle RuntimeSetting nouvellement introduit serve par ailleurs dans les écrans BO a2 (dans le ticket dont s’origine cette PR il est question d’avoir des écrans de gestion des options de complexité des mots de passe etc).
bdauvergne requested changes 2023-04-24 17:09:00 +02:00
@ -0,0 +8,4 @@
if RuntimeSetting.objects.filter(key__startswith='sso:').count() == 4:
return
settings_init_data = (
Owner

Je ne mettrai pas ça en base, je ferai plutôt un dictionnaire global avec la déclaration des settings disponibles.

SETTINGS = [
   'sso:default_service_colour': {
        'name': _('Default service colour'),
        'type': 'colour',
   },
}

Un peu comme les types d'attributs, on devrait d'ailleurs essayer de partager quelque chose ici à terme, mais là pour 4 attributs de type url, string et couleur on s'en passera.

Je ne mettrai pas ça en base, je ferai plutôt un dictionnaire global avec la déclaration des settings disponibles. ``` SETTINGS = [ 'sso:default_service_colour': { 'name': _('Default service colour'), 'type': 'colour', }, } ``` Un peu comme les types d'attributs, on devrait d'ailleurs essayer de partager quelque chose ici à terme, mais là pour 4 attributs de type url, string et couleur on s'en passera.
Owner

Plutôt une liste quand même si on veut être certain que l'ordre soit conservé (les dicos sont ordonnées depuis python 3.x mais bon je ne mettrai pas ma main à couper que ça ne changera pas, je ne sais pas si on peut vraiment en dépendre), une liste de :

import typing

class SettingDescriptor(typing.NamedTuple):
    name: str
    label: str
    type: str

par exemple.

Plutôt une liste quand même si on veut être certain que l'ordre soit conservé (les dicos sont ordonnées depuis python 3.x mais bon je ne mettrai pas ma main à couper que ça ne changera pas, je ne sais pas si on peut vraiment en dépendre), une liste de : ``` import typing class SettingDescriptor(typing.NamedTuple): name: str label: str type: str ``` par exemple.
Owner

Plutôt une liste quand même si on veut être certain que l'ordre soit conservé (les dicos sont ordonnées depuis python 3.x mais bon je ne mettrai pas ma main à couper que ça ne changera pas, je ne sais pas si on peut vraiment en dépendre),

On peut vraiment en dépendre.

Changed in version 3.7: Dictionary order is guaranteed to be insertion order. This behavior was an implementation detail of CPython from 3.6. -- https://docs.python.org/3/library/stdtypes.html#dict

> Plutôt une liste quand même si on veut être certain que l'ordre soit conservé (les dicos sont ordonnées depuis python 3.x mais bon je ne mettrai pas ma main à couper que ça ne changera pas, je ne sais pas si on peut vraiment en dépendre), On peut vraiment en dépendre. Changed in version 3.7: Dictionary order is guaranteed to be insertion order. This behavior was an implementation detail of CPython from 3.6. -- https://docs.python.org/3/library/stdtypes.html#dict
Owner

Va pour le dico alors.

Va pour le dico alors.
@ -845,1 +845,4 @@
return cls.objects.create(kind=kind, phone=phone, expires=expires)
class RuntimeSetting(models.Model):
Owner

Appeler ça setting ou config j'ai déjà mal aux doigts de devoir écrire Runtime :)

Appeler ça setting ou config j'ai déjà mal aux doigts de devoir écrire Runtime :)
@ -846,0 +850,4 @@
key = models.CharField(verbose_name=_('key'), max_length=128, unique=True)
value = JSONField(verbose_name=_('value'), blank=True)
setting_type = models.CharField(verbose_name=_('type'), null=True, blank=True, max_length=128)
widget = models.CharField(verbose_name=_('widget'), null=True, blank=True, max_length=128)
Owner

name, setting_type et widget sont dans le registre global, pas la peine de les reprendre ici.

name, setting_type et widget sont dans le registre global, pas la peine de les reprendre ici.
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from a3b58adccf to fd606f1929 2023-04-25 09:50:32 +02:00 Compare
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from fd606f1929 to 536f608c66 2023-04-25 09:54:40 +02:00 Compare
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from 536f608c66 to 1f28b7d60c 2023-04-25 11:32:47 +02:00 Compare
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from 88dfc80857 to f118ca37ff 2023-04-26 08:37:13 +02:00 Compare
Author
Owner

Ok, c’est modifié dans la branche.

Ok, c’est modifié dans la branche.
pmarillonnet requested review from bdauvergne 2023-04-26 08:38:26 +02:00
bdauvergne requested changes 2023-04-26 10:18:01 +02:00
@ -1355,0 +1371,4 @@
'sso:default_service_name': {
'name': _('Default service name'),
'value': '',
'setting_type': None,
Owner

La différence setting_type/widget ne me paraît pas utile à ce stade, on peu se contenter d'un champ type avec trois valeurs url, colour et text, text étant la valeur par défaut si c'est None / absent.

La différence setting_type/widget ne me paraît pas utile à ce stade, on peu se contenter d'un champ type avec trois valeurs url, colour et text, text étant la valeur par défaut si c'est None / absent.
Author
Owner

Ok, j’ai fait la modif.

Ok, j’ai fait la modif.
pmarillonnet force-pushed wip/75139-neutral-authz-theme-bo-config from f118ca37ff to 4fda95dffd 2023-04-26 10:44:22 +02:00 Compare
pmarillonnet requested review from bdauvergne 2023-04-26 10:44:47 +02:00
bdauvergne approved these changes 2023-04-26 10:55:51 +02:00
bdauvergne left a comment
Owner

Ok.

Ok.
pmarillonnet merged commit 4fda95dffd into main 2023-05-02 09:22:01 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/authentic#35
No description provided.