From a1581536a53952169119911f30c8d93e2169b49a Mon Sep 17 00:00:00 2001 From: Emmanuel Cazenave Date: Mon, 4 Jun 2018 16:46:07 +0200 Subject: [PATCH] allow string or boolean kind for attribute definition (#23306) --- hobo/profile/models.py | 4 ++-- hobo/profile/views.py | 2 +- tests/test_manager.py | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/hobo/profile/models.py b/hobo/profile/models.py index 12c816b..8bf95fb 100644 --- a/hobo/profile/models.py +++ b/hobo/profile/models.py @@ -33,8 +33,8 @@ class AttributeDefinition(models.Model): blank=True, default=True) user_visible = models.BooleanField(verbose_name=_('user visible'), blank=True, default=True) - kind = models.CharField(max_length=16, verbose_name=_('kind'), - default='string') + kind = models.CharField(max_length=16, verbose_name=_('kind'), default='string', + choices=(('string', _('string')), ('boolean', _('boolean')))) disabled = models.BooleanField(verbose_name=_('disabled'), default=False) order = models.PositiveIntegerField() diff --git a/hobo/profile/views.py b/hobo/profile/views.py index b301e68..af5beca 100644 --- a/hobo/profile/views.py +++ b/hobo/profile/views.py @@ -32,7 +32,7 @@ home = HomeView.as_view() class AddAttributeView(CreateView): model = AttributeDefinition fields = ['label', 'name', 'description', 'required', 'asked_on_registration', - 'user_editable', 'user_visible', 'disabled'] + 'user_editable', 'user_visible', 'disabled', 'kind'] success_url = reverse_lazy('profile-home') add_attribute = AddAttributeView.as_view() diff --git a/tests/test_manager.py b/tests/test_manager.py index f18b1a0..639867a 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -7,6 +7,7 @@ from django.contrib.auth.models import User import pytest from webtest import TestApp +from hobo.profile import models from hobo.wsgi import application pytestmark = pytest.mark.django_db @@ -44,3 +45,20 @@ def test_logout(admin_user): app = login(TestApp(application)) app.get('/logout/') assert app.get('/', status=302).location.endswith('/login/?next=/') + + +def test_add_attribute(admin_user): + app = login(TestApp(application)) + assert models.AttributeDefinition.objects.filter(kind='boolean').count() == 0 + page = app.get('/profile/add-attribute', status=200) + page.form['label'] = 'test' + page.form['name'] = 'test' + page.form['description'] = 'test' + page.form['required'] = True + page.form['asked_on_registration'] = False + page.form['user_editable'] = False + page.form['user_visible'] = False + page.form['disabled'] = False + page.form['kind'] = 'boolean' + page.form.submit() + assert models.AttributeDefinition.objects.filter(kind='boolean').count() == 1 -- 2.17.0