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
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
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), )
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
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
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()