Projet

Général

Profil

0001-misc-add-slug-to-roles-7180.patch

Frédéric Péters, 14 mai 2015 21:05

Télécharger (2,22 ko)

Voir les différences:

Subject: [PATCH 1/2] misc: add slug to roles (#7180)

 tests/test_role.py | 27 +++++++++++++++++++++++++++
 wcs/roles.py       | 15 +++++++++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 tests/test_role.py
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
-