def register_type_impl( config, cls, tinfo, name, fieldset=None, fieldNames=None, **kw): # generate schema fieldset = kw.get('fieldset') if fieldset is None: kw['fieldset'] = ptah.generate_fieldset( cls, fieldNames=fieldNames, namesFilter=names_filter) log.info("Generating fieldset for %s content type.", cls) if 'global_allow' not in kw and not issubclass(cls, Content): kw['global_allow'] = False tinfo.__dict__.update(kw) tinfo.cls = cls config.get_cfg_storage(TYPES_DIR_ID)[tinfo.__uri__] = tinfo # sql query for content resolver cls.__uri_sql_get__ = ptah.QueryFreezer( lambda: ptah.get_session().query(cls) \ .filter(cls.__uri__ == sqla.sql.bindparam('uri'))) # build cms actions build_class_actions(cls)
def register_type_impl(config, cls, tinfo, name, fieldset=None, fieldNames=None, **kw): # generate schema fieldset = kw.get('fieldset') if fieldset is None: kw['fieldset'] = ptah.generate_fieldset(cls, fieldNames=fieldNames, namesFilter=names_filter) log.info("Generating fieldset for %s content type.", cls) if 'global_allow' not in kw and not issubclass(cls, Content): kw['global_allow'] = False tinfo.__dict__.update(kw) tinfo.cls = cls config.get_cfg_storage(TYPES_DIR_ID)[tinfo.__uri__] = tinfo # sql query for content resolver cls.__uri_sql_get__ = ptah.QueryFreezer( lambda: ptah.get_session().query(cls) \ .filter(cls.__uri__ == sqla.sql.bindparam('uri'))) # build cms actions build_class_actions(cls)
def test_cms_action_inherit(self): import ptahcms from ptahcms.security import build_class_actions class Test(object): @ptahcms.action(permission='perm') def update(self, **data): # pragma: no cover pass class Test2(Test): pass build_class_actions(Test2) actions = Test2.__ptahcms_actions__ self.assertEqual(actions['update'], ('update', 'perm')) self.assertIsNot(actions, Test.__ptahcms_actions__)
def test_cms_action_inherit2(self): import ptahcms from ptahcms.security import build_class_actions class Test(object): @ptahcms.action def update(self, **data): # pragma: no cover pass class Test2(Test): @ptahcms.action def create(self, **data): # pragma: no cover pass build_class_actions(Test2) actions = Test2.__ptahcms_actions__ self.assertEqual(len(actions), 2) self.assertIn('update', actions) self.assertIn('create', actions)