def test_register_workflow_two_types(self): from substanced._compat import u wf = mock.Mock() self._callFUT(self.config, wf, 'basic', 'File') self._callFUT(self.config, wf, 'basic', 'Folder') self.assertEqual({'basic': {'File': wf, 'Folder': wf}}, self.config.registry.workflow.types) self.assertEqual({'File': {u('basic'): wf}, 'Folder': {u('basic'): wf}}, self.config.registry.workflow.content_types) self.config.registry.content.exists.assert_any_call('File') self.config.registry.content.exists.assert_any_call('Folder')
def test_register_workflow_global_skip_if_exists(self): from substanced.interfaces import IDefaultWorkflow from substanced._compat import u wf = mock.Mock() self._callFUT(self.config, wf, 'basic') self.assertEqual({'basic': {IDefaultWorkflow: wf}}, self.config.registry.workflow.types) self.assertEqual({IDefaultWorkflow: {u('basic'): wf}}, self.config.registry.workflow.content_types) self._callFUT(self.config, wf, 'basic') self.assertEqual({'basic': {IDefaultWorkflow: wf}}, self.config.registry.workflow.types) self.assertEqual({IDefaultWorkflow: {u('basic'): wf}}, self.config.registry.workflow.content_types)
def rename_duplicated_resource(context, name): """Finds next available name inside container by appending dash and positive number. """ if name not in context: return name m = re.search(r'-(\d+)$', name) if m: new_id = int(m.groups()[0]) + 1 new_name = name.rsplit('-', 1)[0] + u('-%d') % new_id else: new_name = name + u('-1') if new_name in context: return rename_duplicated_resource(context, new_name) else: return new_name
def slugify_in_context(context, name, remove_extension=True): if remove_extension: name = os.path.splitext(name)[0] slug = unidecode.unidecode(u(name)).lower() orig = slug = re_word.sub('-', slug) i = 1 while True: if slug not in context: break slug = '%s-%i' % (orig, i) i += 1 return slug
def test_ctor_with_None_title(self): from substanced._compat import u inst = self._makeOne(None, None, None) self.assertEqual(inst.title, u(''))
def test_unresolveable_unicode_getitem(self): from substanced._compat import u name = u(b"La Pe\xc3\xb1a", "utf-8").encode("latin-1") folder = self._makeOne() self.assertRaises(UnicodeDecodeError, folder.__getitem__, name)
import BTrees from substanced._compat import u from logging import getLogger from substanced.util import ( get_acl, postorder, ) _SLASH = u('/') logger = getLogger(__name__) def oobtreeify_referencemap(root): # pragma: no cover objectmap = root.__objectmap__ refmap = objectmap.referencemap.refmap for k, refset in refmap.items(): refset.src2target = BTrees.family64.OO.BTree(refset.src2target) refset.target2src = BTrees.family64.OO.BTree(refset.target2src) def oobtreeify_object_to_path(root): # pragma: no cover objectmap = root.__objectmap__ oobtree = BTrees.family64.OO.BTree objectmap.objectid_to_path = oobtree(objectmap.objectid_to_path) objectmap.path_to_objectid = oobtree(objectmap.path_to_objectid) def treesetify_objectmap_pathindex(root): # pragma: no cover # to avoid having huge pickles objectmap = root.__objectmap__
def test_unresolveable_unicode_getitem(self): from substanced._compat import u name = u(b'La Pe\xc3\xb1a', 'utf-8').encode('latin-1') folder = self._makeOne() self.assertRaises(UnicodeDecodeError, folder.__getitem__, name)
def test_unresolveable_unicode_setitem(self): from substanced._compat import u name = u(b'La Pe\xc3\xb1a', 'utf-8').encode('latin-1') folder = self._makeOne() self.assertRaises(ValueError, folder.__setitem__, name, DummyModel())