0001-misc-add-slug-to-roles-7180.patch
tests/test_role.py | ||
---|---|---|
1 |
import cPickle |
|
2 | ||
3 |
from utilities import create_temporary_pub, clean_temporary_pub |
|
4 | ||
5 |
from qommon.storage import StorableObject |
|
6 |
from wcs.roles import Role |
|
7 | ||
8 |
def setup_module(module): |
|
9 |
pub = create_temporary_pub() |
|
10 |
pub.cfg['language'] = {'language': 'en'} |
|
11 | ||
12 |
def teardown_module(module): |
|
13 |
clean_temporary_pub() |
|
14 | ||
15 |
def test_slug(): |
|
16 |
role = Role(name='Hello world') |
|
17 |
role.store() |
|
18 |
assert role.slug == 'hello-world' |
|
19 | ||
20 |
def test_migrate(): |
|
21 |
role = Role(name='Hello world') |
|
22 |
role.store() |
|
23 |
obj = cPickle.load(open(role.get_object_filename())) |
|
24 |
del obj.slug |
|
25 |
cPickle.dump(obj, open(role.get_object_filename(), 'w')) |
|
26 |
assert cPickle.load(open(role.get_object_filename())).slug is None |
|
27 |
assert Role.get(role.id).slug == 'hello-world' |
wcs/roles.py | ||
---|---|---|
22 | 22 |
class Role(StorableObject): |
23 | 23 |
_names = 'roles' |
24 | 24 |
name = None |
25 |
slug = None |
|
25 | 26 |
details = None |
26 | 27 |
emails = None |
27 | 28 |
emails_to_members = False |
... | ... | |
31 | 32 |
StorableObject.__init__(self) |
32 | 33 |
self.name = name |
33 | 34 | |
35 |
def migrate(self): |
|
36 |
changed = False |
|
37 |
if not self.slug: |
|
38 |
# .store() will take care of setting the slug |
|
39 |
changed = True |
|
40 |
if changed: |
|
41 |
self.store() |
|
42 | ||
43 |
def store(self): |
|
44 |
if self.slug is None: |
|
45 |
# set slug if it's not yet there |
|
46 |
self.slug = qommon.misc.simplify(self.name) |
|
47 |
super(Role, self).store() |
|
48 | ||
34 | 49 |
def get_emails(self): |
35 | 50 |
emails = self.emails or [] |
36 | 51 |
if not self.emails_to_members: |
37 |
- |