From 9cabbc197acadbf24a2ec75cbf67e0a708adf3b1 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 27 Jul 2021 16:37:16 +0200 Subject: [PATCH 1/2] profile: add required_on_login flag to AttributeDefinition (#55865) --- .../migrations/0005_auto_20210727_1633.py | 18 ++++++++++++++++++ hobo/profile/models.py | 1 + hobo/profile/views.py | 2 ++ tests/test_hobo_json.py | 7 +++++++ tests/test_manager.py | 1 + tests_schemas/example_env.json | 11 +++++++++++ 6 files changed, 40 insertions(+) create mode 100644 hobo/profile/migrations/0005_auto_20210727_1633.py diff --git a/hobo/profile/migrations/0005_auto_20210727_1633.py b/hobo/profile/migrations/0005_auto_20210727_1633.py new file mode 100644 index 0000000..9b99aa0 --- /dev/null +++ b/hobo/profile/migrations/0005_auto_20210727_1633.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.19 on 2021-07-27 14:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('profile', '0004_auto_20200518_1810'), + ] + + operations = [ + migrations.AddField( + model_name='attributedefinition', + name='required_on_login', + field=models.BooleanField(blank=True, default=False, verbose_name='required on login'), + ), + ] diff --git a/hobo/profile/models.py b/hobo/profile/models.py index 1d78732..aedeb98 100644 --- a/hobo/profile/models.py +++ b/hobo/profile/models.py @@ -36,6 +36,7 @@ class AttributeDefinition(models.Model): error_messages={'unique': _('Field names must be unique.')}, ) required = models.BooleanField(verbose_name=_('required'), blank=True, default=False) + required_on_login = models.BooleanField(verbose_name=_('required on login'), blank=True, default=False) asked_on_registration = models.BooleanField( verbose_name=_('asked on registration'), blank=True, default=False ) diff --git a/hobo/profile/views.py b/hobo/profile/views.py index c7fb46c..5891577 100644 --- a/hobo/profile/views.py +++ b/hobo/profile/views.py @@ -37,6 +37,7 @@ class AddAttributeView(CreateView): 'name', 'description', 'required', + 'required_on_login', 'asked_on_registration', 'user_editable', 'user_visible', @@ -58,6 +59,7 @@ class OptionsView(UpdateView): 'label', 'description', 'required', + 'required_on_login', 'asked_on_registration', 'user_editable', 'user_visible', diff --git a/tests/test_hobo_json.py b/tests/test_hobo_json.py index 9ced191..82d2a96 100644 --- a/tests/test_hobo_json.py +++ b/tests/test_hobo_json.py @@ -54,3 +54,10 @@ def test_profile(request, empty_site): assert hobo_json['profile']['fields'][1]['name'] == 'first_name' assert hobo_json['profile']['fields'][1]['required'] is True + + +def test_required_on_login(request, empty_site): + AttributeDefinition.objects.create(name='cgu', label='CGU', required_on_login=True) + hobo_json = get_hobo_json() + assert hobo_json['profile']['fields'][-1]['name'] == 'cgu' + assert hobo_json['profile']['fields'][-1]['required_on_login'] is True diff --git a/tests/test_manager.py b/tests/test_manager.py index d354821..c6519fb 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -68,6 +68,7 @@ def test_add_attribute(logged_app, admin_user, kind): page.form['name'] = 'test' page.form['description'] = 'test' page.form['required'] = True + page.form['required_on_login'] = True page.form['asked_on_registration'] = False page.form['user_editable'] = False page.form['user_visible'] = False diff --git a/tests_schemas/example_env.json b/tests_schemas/example_env.json index 9069eab..68717a6 100644 --- a/tests_schemas/example_env.json +++ b/tests_schemas/example_env.json @@ -9,6 +9,7 @@ "label": "Civilit\u00e9", "name": "title", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -21,6 +22,7 @@ "label": "Pr\u00e9nom", "name": "first_name", "required": true, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -33,6 +35,7 @@ "label": "Nom", "name": "last_name", "required": true, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -45,6 +48,7 @@ "label": "Adresse \u00e9lectronique", "name": "email", "required": true, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -57,6 +61,7 @@ "label": "Adresse", "name": "address", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -69,6 +74,7 @@ "label": "Code postal", "name": "zipcode", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -81,6 +87,7 @@ "label": "Commune", "name": "city", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -93,6 +100,7 @@ "label": "Pays", "name": "country", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -105,6 +113,7 @@ "label": "Date de naissance", "name": "birthdate", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -117,6 +126,7 @@ "label": "T\u00e9l\u00e9phone", "name": "phone", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true @@ -129,6 +139,7 @@ "label": "Mobile", "name": "mobile", "required": false, + "required_on_login": false, "searchable": false, "user_editable": true, "user_visible": true -- 2.32.0.rc0