示例#1
0
    #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')


示例#2
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__