#Detour. We need a security context since ptah_cms.Container.create has security ptah.authService.setUserId('runyaga') from ptah_app.content import Page # We can use the Container API # Currently we cannot due to security if 'page1' not in foo: page1 = foo.create(Page.__type__.__uri__, 'page1', text='<p> some html</p>') # We can use SQLAlchemy and Container API, which will notify if 'page2' not in foo: page2 = Page(text='</p>page 2 html</p>') ptah_cms.Session.add(page2) foo['page2'] = page2 print 'page2', foo['page2'] # We can just use SQLAlchemy and manually notify application # This is borken as well. #if not ptah_cms.Session.query(Page).filter_by(__name__='page3').all(): if 'page3' not in foo: page3 = Page(__name__='page3', text='<p>page 3 html</p>', __parent__=foo) ptah_cms.Session.add(page3) config.notify(ptah_cms.events.ContentCreatedEvent(page3)) print 'page3', foo['page3'] #No idea why filter and filter_by not working with ApplicationRoot.__name__ serve(app, '0.0.0.0')
def initialize(ev): pconfig = ev.config pconfig.add_route('test-welcome', '/welcome.html') pconfig.add_view(route_name='test-welcome', renderer='devapp:welcome.pt') # mount cms to /second/ pconfig.add_route( 'second-app', '/second/*traverse', factory = ptah_cms.ApplicationFactory( '/second/', 'second', 'Test subpath CMS'), use_global_views = True) # mount cms to /third/cms/ pconfig.add_route( 'third-app', '/third/cms/*traverse', factory = ptah_cms.ApplicationFactory( '/third/cms/', 'third-app', 'CMS'), use_global_views = True) # mount cms to /cms/ factory = ptah_cms.ApplicationFactory('/cms/', 'root', 'Ptah CMS') pconfig.add_route( 'root-app', '/cms/*traverse', factory = factory, use_global_views = True) # mount same 'root' application to '/' location factory = ptah_cms.ApplicationFactory( '/', 'root', 'Ptah CMS', policy=ApplicationPolicy) pconfig.add_route( 'root-app2', '/*traverse', factory = factory, use_global_views = True) # some more setup root = factory(None) # admin user user = Session.query(CrowdUser).first() if user is None: user = CrowdUser('Ptah admin','admin','*****@*****.**','12345') Session.add(user) ApplicationPolicy.__local_roles__ = {user.uri: ['role:manager']} # give manager role to admin #if user.uuid not in root.__local_roles__: # root.__local_roles__[user.uuid] = ['role:manager'] #if 'simple-map' not in root.__permissions__: # root.__permissions__ = ['simple-map'] # create default page if 'front-page' not in root.keys(): page = Page(title=u'Welcome to Ptah') page.text = open( view.path('devapp:welcome.pt')[0], 'rb').read() Session.add(page) config.notify(ptah_cms.events.ContentCreatedEvent(page)) root['front-page'] = page # create folder in root if 'folder' not in root.keys(): folder = Folder(title='Test folder') root['folder'] = folder Session.add(folder) config.notify(ptah_cms.events.ContentCreatedEvent(folder)) page = Page(title=u'Welcome to Ptah') page.text = open( view.path('devapp:welcome.pt')[0], 'rb').read() Session.add(page) config.notify(ptah_cms.events.ContentCreatedEvent(page)) folder['front-page'] = page # set default view for folder folder.view = page.__uri__