From 951b46f103c5d3d9cf9235fb075d8f27f619f92b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 14 May 2015 20:56:35 +0200 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 diff --git a/tests/test_role.py b/tests/test_role.py new file mode 100644 index 0000000..702ea81 --- /dev/null +++ b/tests/test_role.py @@ -0,0 +1,27 @@ +import cPickle + +from utilities import create_temporary_pub, clean_temporary_pub + +from qommon.storage import StorableObject +from wcs.roles import Role + +def setup_module(module): + pub = create_temporary_pub() + pub.cfg['language'] = {'language': 'en'} + +def teardown_module(module): + clean_temporary_pub() + +def test_slug(): + role = Role(name='Hello world') + role.store() + assert role.slug == 'hello-world' + +def test_migrate(): + role = Role(name='Hello world') + role.store() + obj = cPickle.load(open(role.get_object_filename())) + del obj.slug + cPickle.dump(obj, open(role.get_object_filename(), 'w')) + assert cPickle.load(open(role.get_object_filename())).slug is None + assert Role.get(role.id).slug == 'hello-world' diff --git a/wcs/roles.py b/wcs/roles.py index 98a6379..967ee46 100644 --- a/wcs/roles.py +++ b/wcs/roles.py @@ -22,6 +22,7 @@ import qommon.misc class Role(StorableObject): _names = 'roles' name = None + slug = None details = None emails = None emails_to_members = False @@ -31,6 +32,20 @@ class Role(StorableObject): StorableObject.__init__(self) self.name = name + def migrate(self): + changed = False + if not self.slug: + # .store() will take care of setting the slug + changed = True + if changed: + self.store() + + def store(self): + if self.slug is None: + # set slug if it's not yet there + self.slug = qommon.misc.simplify(self.name) + super(Role, self).store() + def get_emails(self): emails = self.emails or [] if not self.emails_to_members: -- 2.1.4