Projet

Général

Profil

0001-allow-string-or-boolean-kind-for-attribute-definitio.patch

Emmanuel Cazenave, 05 juin 2018 17:03

Télécharger (4,33 ko)

Voir les différences:

Subject: [PATCH] allow string or boolean kind for attribute definition
 (#23306)

 hobo/profile/migrations/0001_initial.py |  4 +++-
 hobo/profile/models.py                  |  4 ++--
 hobo/profile/views.py                   |  2 +-
 tests/test_manager.py                   | 23 +++++++++++++++++++++++
 4 files changed, 29 insertions(+), 4 deletions(-)
hobo/profile/migrations/0001_initial.py
21 21
                ('asked_on_registration', models.BooleanField(default=False, verbose_name='asked on registration')),
22 22
                ('user_editable', models.BooleanField(default=True, verbose_name='user editable')),
23 23
                ('user_visible', models.BooleanField(default=True, verbose_name='user visible')),
24
                ('kind', models.CharField(default=b'string', max_length=16, verbose_name='kind')),
24
                ('kind', models.CharField(
25
                    default=b'string', max_length=16, verbose_name='kind',
26
                    choices=[(b'string', 'String'), (b'boolean', 'Boolean')])),
25 27
                ('disabled', models.BooleanField(default=False, verbose_name='disabled')),
26 28
                ('order', models.PositiveIntegerField()),
27 29
                ('last_update_timestamp', models.DateTimeField(auto_now=True)),
hobo/profile/models.py
33 33
            blank=True, default=True)
34 34
    user_visible = models.BooleanField(verbose_name=_('user visible'),
35 35
            blank=True, default=True)
36
    kind = models.CharField(max_length=16, verbose_name=_('kind'),
37
            default='string')
36
    kind = models.CharField(max_length=16, verbose_name=_('kind'), default='string',
37
                            choices=(('string', _('String')), ('boolean', _('Boolean'))))
38 38
    disabled = models.BooleanField(verbose_name=_('disabled'),
39 39
            default=False)
40 40
    order = models.PositiveIntegerField()
hobo/profile/views.py
32 32
class AddAttributeView(CreateView):
33 33
    model = AttributeDefinition
34 34
    fields = ['label', 'name', 'description', 'required', 'asked_on_registration',
35
              'user_editable', 'user_visible', 'disabled']
35
              'user_editable', 'user_visible', 'disabled', 'kind']
36 36
    success_url = reverse_lazy('profile-home')
37 37

  
38 38
add_attribute = AddAttributeView.as_view()
tests/test_manager.py
7 7
import pytest
8 8
from webtest import TestApp
9 9

  
10
from hobo.profile import models
10 11
from hobo.wsgi import application
11 12

  
12 13
pytestmark = pytest.mark.django_db
......
44 45
    app = login(TestApp(application))
45 46
    app.get('/logout/')
46 47
    assert app.get('/', status=302).location.endswith('/login/?next=/')
48

  
49

  
50
@pytest.mark.parametrize('kind', ['boolean', 'string'])
51
def test_add_attribute(admin_user, kind):
52
    app = login(TestApp(application))
53
    assert models.AttributeDefinition.objects.filter(kind=kind).filter(name='test').count() == 0
54
    page = app.get('/profile/add-attribute', status=200)
55
    page.form['label'] = 'test'
56
    page.form['name'] = 'test'
57
    page.form['description'] = 'test'
58
    page.form['required'] = True
59
    page.form['asked_on_registration'] = False
60
    page.form['user_editable'] = False
61
    page.form['user_visible'] = False
62
    page.form['disabled'] = False
63
    page.form['kind'] = kind
64
    page.form.submit()
65
    assert models.AttributeDefinition.objects.filter(kind=kind).filter(name='test').count() == 1
66

  
67

  
68
def test_attribute_kind_not_restricted_at_model_level():
69
    assert models.AttributeDefinition.objects.create(label='test', kind='somestring')
47
-