def register_ctype(self, name, **kwargs): if name in self.registry: self.registry[name].update(kwargs) else: self.registry[name] = kwargs if kwargs.get('factory', None): clazz = kwargs['factory'] path, clazz = ".".join(clazz.split(".")[:-1]), clazz.split(".")[-1] exec("from %s import %s" % (path, clazz)) Registry.register(name, eval(clazz))
def __call__(self): ctype = self.request.params.get("ctype", None) clazz = Registry.get(ctype) initial_data = self.request.params.copy() del initial_data['ctype'] content = clazz("_TMP", data=initial_data) content.owner = self.user content_id = str(uuid.uuid1()) content.set_id(content_id) alsoProvides(content, ITemporaryObject) self.context.add_content(content) self.request.registry.notify( TemporaryObjectCreated(content, self.request)) return HTTPFound(location='%sedit' % self.request.resource_url(content))
def setup_class(self): self.config = testing.setUp() self.root = BaseFolder("root") self.root.__name__ = 'root' self.f0 = BaseFolder("f0") self.f1 = BaseFolder("f1") self.x0 = TestContent("x0") self.x1 = TestContent("x1") self.f0.add_content(self.x0) self.f0.add_content(self.x1) self.root.add_content(self.f0) self.root.add_content(self.f1) Registry.register('testcontent', TestContent)
def __init__(self, context, request): BaseView.__init__(self, context, request) ctype = request.params.get("ctype", None) clazz = Registry.get(ctype) tmp_obj = clazz("TMP") form = tmp_obj.__form__(request) # note: If you want to prefill the formdata, you can use # the __form__ override, or if in pycms, use the IFormModifier pyramidformview.__init__(self, context, request, form, retrieve_data=False) self.ctype = ctype self.clazz = clazz