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'),) ), )
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
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 ''
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))
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!'),) ),
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()
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)
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)
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')
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')
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')
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)
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)
class MainApplication(views.Application): home = views.View('/') favicon = static.FavIconView()
def urls(self, site): '''Create a tuple with one application containing one view''' return (views.Application( '/', routes=(views.View(renderer=lambda request: 'Hello World!'), )), )