コード例 #1
0
def get_simpleapps():
    return (
        views.Application('/bla/',
            name = 'app2',
            routes = (views.View(renderer = lambda djp : 'ciao bla'),
                      views.View('pluto/',\
                                    renderer = lambda djp : 'ciao bla view2'))
        ),
        views.Application('/',
            name = 'app1',
            routes = (views.View(renderer = lambda djp : 'ciao'),)
        ),
    )
コード例 #2
0
ファイル: chat.py プロジェクト: pombredanne/djpcms
class ChatApplication(views.Application):
    _media = media.Media(js=['djpsite/chat.js'])
    home = views.View()
    chat = views.View('chat', form=ChatFormHtml, has_plugins=True)

    def publish(self, channels, text):
        p = pubsub_server(self.settings)
        return p.publish(channels, text)

    def render(self, request, **kwargs):
        return html.Widget('div', cn='chatroom').render(request)

    def media(self, request):
        return self._media
コード例 #3
0
class ApplicationGroup(views.Application):
    '''An :class:`djpcms.views.Application` class for
administer a group of :class:`djpcms.views.Applications`.'''
    has_plugins = False
    pagination = html.Pagination(('name','actions'),
                                 ajax=False,
                                 html_data={'options':{'sDom':'t'}})

    home = views.View(in_nav=1,
                      methods=('get',),
                      renderer=lambda request, **kwargs:\
                            request.appmodel.models_list(request, **kwargs))

    @html.render_block
    def models_list(self, request, **kwargs):
        all = []
        for c in self.query(request):
            links = Widget('div',
                           views.application_views_links(c),
                           cn=classes.button_holder)
            all.append(Widget('dl', (Widget('a', c.title, href=c.url), links)))
        if all:
            return Widget('div', all, cn=classes.object_definition)
        else:
            return ''
コード例 #4
0
class AdminSite(views.Application):
    '''A :class:`djpcms.views.Application` for an Admin site. It
contains several :class:`ApplicationGroup`.'''
    has_plugins = False
    in_nav = 1000
    home = views.View(in_nav=1, icon='admin')

    def groups(self, request):
        for child in request.auth_children():
            body = child.render(block=True)
            if body:
                yield {'body': body,
                       'title': child.title,
                       'url': child.url}

    def query(self, request, **kwargs):
        for g in sorted(self.groups(request), key = lambda x : x['title']):
            url = g['url']
            if url:
                a = Widget('a', g['title'], href=url)
            else:
                a = g['title']
            yield a, g['body']

    def render(self, request, **kwargs):
        return html.accordion(self.query(request))
コード例 #5
0
    def urls(self, site):
        '''This should be configured by tests requiring the web
site interface. By default it return a simple view.'''
        return views.Application('/',
                    routes = (
                        views.View('/', renderer = lambda request: 'Hello!'),)
                ),
コード例 #6
0
ファイル: vanilla.py プロジェクト: pombredanne/djpcms
class GroupApplication(views.Application):
    '''An application group. NOT YET READ NOR TESTED'''
    home = views.View()
    search = views.SearchView('<group>')
    add = views.AddView()
    view = views.ViewView()
    change = views.ChangeView()
    delete = views.DeleteView()
コード例 #7
0
ファイル: design.py プロジェクト: pombredanne/djpcms
class DesignApplication(views.Application):
    pagination = html.Pagination(('id', 'timestamp'))
    home = views.SearchView()
    add = views.AddView(form=AddThemeHtml, has_plugins=True, name='Add theme')
    view = views.ViewView()
    forms_view = views.View('/forms')

    def render_instance_default(self, request, instance, **kwargs):
        return get_form(request, ThemeInputsHtml)
コード例 #8
0
 def testContruction1(self):
     '''Construct an Application with 1 view'''
     app = views.Application('/',
                 name = 'luca',
                 routes = (views.View(renderer=lambda request: 'ciao'),))
     self.assertFalse(app.isbound)
     self.assertEqual(app.parent, None)
     app.load()
     self.assertEqual(app.count(),1)
     self.assertEqual(len(app),1)
     self.assertTrue(app.isbound)
コード例 #9
0
 def testDefaultView(self):
     '''Construct a simple view'''
     v = views.View('foo/', renderer = lambda djp : 'foo')
     self.assertEqual(v.name,'foo')
     self.assertEqual(v.description,'Foo')
     self.assertEqual(v.path,'/foo/')
     self.assertEqual(v.route.path,'/foo/')
     self.assertEqual(v.form,None)
     self.assertEqual(v.in_nav,0)
     self.assertFalse(v.isbound)
     self.assertEqual(v.render(None),'foo')
コード例 #10
0
 def testViewLevel2(self):
     v = views.View('foo/bla/', renderer = lambda djp : 'foo')
     self.assertEqual(v.name,'foo_bla')
     self.assertEqual(v.description,'Foo bla')
     self.assertEqual(v.path,'/foo/bla/')
     self.assertEqual(v.route.path,'/foo/bla/')
     self.assertEqual(v.route.level,2)
     self.assertEqual(v.form,None)
     self.assertEqual(v.in_nav,0)
     self.assertFalse(v.isbound)
     self.assertEqual(v.render(None),'foo')
コード例 #11
0
 def testViewWithInputs1(self):
     v = views.View('foo/',
                    name = 'home',
                    description = 'Home Page',
                    renderer = lambda djp : 'foo home')
     self.assertEqual(v.name,'home')
     self.assertEqual(v.description,'Home Page')
     self.assertEqual(v.path,'/foo/')
     self.assertEqual(v.route.path,'/foo/')
     self.assertEqual(v.form,None)
     self.assertEqual(v.in_nav,0)
     self.assertFalse(v.isbound)
     self.assertEqual(v.render(None),'foo home')
コード例 #12
0
 def testContruction2(self):
     '''Construct an Application with 2 views'''
     view1 = views.View(renderer=lambda request: 'ciao')
     view2 = views.View('foo/', renderer=lambda request: 'foo')
     self.assertEqual(view1.appmodel,None)
     self.assertEqual(view2.appmodel,None)
     self.assertEqual(view1.path,'/')
     self.assertEqual(view2.path,'/foo/')
     app = views.Application('/', routes=(view2,view1))
     self.assertEqual(view1.appmodel,None)
     self.assertEqual(view2.appmodel,None)
     self.assertFalse(app.isbound)
     self.assertEqual(app.parent, None)
     self.assertEqual(app.root, app)
     self.assertEqual(app.count(), 0)
     self.assertEqual(len(app), 0)
     site = cms.Site(routes=(app,))
     site.load()
     self.assertEqual(app.count(), 2)
     self.assertEqual(len(app), 2)
     self.assertFalse(app.base_routes) # no base routes from metaclass
     # views get copied so instances are not the same
     self.assertNotEqual(app.root_view,view1)
     self.assertEqual(app.root_view.path,view1.path)
コード例 #13
0
class Application(views.Application):
    form = search.search_form(placeholder='Type a geographical place',
                              choices=search.Search(autocomplete=True,
                                                    search=True,
                                                    model=Geo))
    main = views.View()
    view = views.ViewView()
    tsp = TspView('/tsp', has_plugins=True)

    def render(self, request, query=None, **context):
        # Render the main view by rendering the search form
        return self.get_form(request, **context).render(request)

    def post_response(self, request):
        # the default post response
        return self.get_form(request).render(request)

    def render_instance_default(self, request, instance, **kwargs):
        # render the default instance view
        maker = GeoEntry()
        return maker(instance=instance, appmodel=self)
コード例 #14
0
ファイル: manage.py プロジェクト: pombredanne/djpcms
class MainApplication(views.Application):
    home = views.View('/')
    favicon = static.FavIconView()
コード例 #15
0
ファイル: helloworld.py プロジェクト: pombredanne/djpcms
 def urls(self, site):
     '''Create a tuple with one application containing one view'''
     return (views.Application(
         '/',
         routes=(views.View(renderer=lambda request: 'Hello World!'), )), )