Example #1
0
    def execute(self, factory, configContext=None, **kw):
        value = behavior.bind(default=_marker).get(factory)
        if value is _marker:
            return False

        name, iface, schema, type, t, d, info = value

        config.addAction(
            configContext,
            discriminator=("memphis.content:behavior", name),
            callable=registry.registerBehavior,
            args=(name, iface, factory(), schema, type, t, d),
            order=(config.moduleNum(factory.__module__), 91),
            info=info,
        )

        return True
Example #2
0
    def grok(self, name, interface, configContext=config.UNSET, **kw):
        if interface in schemaExecuted and not getattr(interface.__module__, "__fake_module__", False):
            return False
        schemaExecuted.append(interface)

        value = schema.bind(default=_marker).get(interface)
        if value is _marker:
            return False

        name, klass, type, t, d, info = value

        config.addAction(
            configContext,
            discriminator=("memphis.content:schema", name),
            callable=registry.registerSchema,
            args=(name, interface, klass, type, t, d),
            order=(config.moduleNum(interface.__module__), 90),
            info=info,
        )
        return True
Example #3
0
def registerConfiglet(
    name, schema=None, klass=None, title="", description="", category="Products", permission="Manage portal"
):

    if not title:
        title = name

    ConfigletClass = ConfigletType(str(name), schema, klass, title, description)
    interface.classImplements(ConfigletClass, schema)

    ConfigletClass.permission = permission

    def completeRegistration():
        # configlet instance
        inst = ConfigletClass()

        # register configlet as utility
        config.registerUtility(inst, schema, "")
        config.registerUtility(inst, IConfiglet, name)

        # register plone configlet
        ai = PloneConfiglet(
            name,
            id=name,
            title=title,
            description=description,
            permissions=(permission,),
            action=Expression(text=u"python:'%%s/++cp++%s/'%%%s" % (name, "portal_url")),
            category=category,
        )

        config.registerUtility(ai, IPloneConfiglet, name)

    frame = sys._getframe(1)

    config.action(
        completeRegistration,
        __frame=frame,
        __discriminator=("memphis.content:configlet", name),
        __order=(config.moduleNum(frame.f_locals["__name__"]), 992),
    )
Example #4
0
    def execute(self, klass, configContext=None, **kw):
        value = behavior.bind(default=_marker).get(klass)
        if value is _marker:
            return False

        name, iface, schema, type, t, d, info = value

        if iface is None:
            provides = list(interface.implementedBy(klass))
            if len(provides) == 1:
                iface = provides[0]
            else:
                raise TypeError("Missing 'spec' attribute")

        config.addAction(
            configContext,
            discriminator=("memphis.content:behavior", name),
            callable=registry.registerBehavior,
            args=(name, iface, klass, schema, type, t, d),
            order=(config.moduleNum(klass.__module__), 91),
            info=info,
        )

        return True
Example #5
0
def registerType(
    name,
    behavior = 'content.instance',
    factory = Instance,
    schemas = (),
    behaviors = (),
    title = '',
    description = '', 
    global_allow = True, 
    permission = 'View', 
    actions = None,
    **kw):

    if name in registered:
        raise ValueError('Content type "%s" already registered.'%name)

    if not title:
        title = name

    if 'add_view_expr' not in kw:
        kw['add_view_expr'] = 'string:${object_url}/++content++%s'%name

    if 'icon_expr' not in kw:
        kw['icon_expr'] = 'string:${portal_url}/document_icon.png'

    if actions is None:
        actions = (
            {'id': 'view',
             'title': 'View',
             'action': 'string:${object_url}',
             'visible': True,
             'permissions': ('View',)},
            {'id': 'edit',
             'title': 'Edit',
             'action': 'string:${object_url}/edit.html',
             'visible': True,
             'permissions': ('Modify portal content',)},
            )

    ti = ContentType(
        behavior, name, factory, 
        behaviors = behaviors,
        schemas = schemas,
        title = title,
        description = description,
        content_meta_type = name,
        global_allow = global_allow,
        permission = permission,
        actions = actions,
        **kw)

    registered[name] = ti

    def completeRegistration():
        config.registerUtility(ti, ITypeInformation, name)

        # register zope2 meta_type
        info = {'name': name,
                'action': '',
                'product': 'memphis.content',
                'permission': permission,
                'visibility': 'Global',
                'interfaces': interface.Interface,
                'instance': None,
                'container_filter': None}

        meta_types = getattr(Products, 'meta_types', ())
        meta_types += (info,)
        Products.meta_types = meta_types

        ti._complete()

    frame = sys._getframe(1)

    config.action(
        completeRegistration,
        __frame = frame,
        __info = config.getInfo(2),
        __discriminator = ('memphis.content:type', name),
        __order = (config.moduleNum(frame.f_locals['__name__']), 990))

    return ti
Example #6
0
 def factory(self, name, iface=None, schema=None,
             type = None, title = u'', description = u''):
     config.moduleNum(self.frame.f_locals['__module__'])
     return name, iface, schema, type, title, description, getInfo()