0001-allow-string-or-boolean-kind-for-attribute-definitio.patch
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 |
- |