Exemplo n.º 1
0
    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')
Exemplo n.º 2
0
    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')
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
 def test_ctor_with_None_title(self):
     from substanced._compat import u
     inst = self._makeOne(None, None, None)
     self.assertEqual(inst.title, u(''))
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
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__
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
 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())
Exemplo n.º 14
0
 def test_ctor_with_None_title(self):
     from substanced._compat import u
     inst = self._makeOne(None, None, None)
     self.assertEqual(inst.title, u(''))