def index(self, q=None): def serializable(i): _, v = i try: json.dumps(v) return True except TypeError: return False request = self.request links = link_to('hello', '/hello') tpl = links + '<pre>{}</pre>' request_values = dict(filter(serializable, request.__dict__.items())) values = dict( request_values, data=request.data, a_url=url_for('howdy', name='Joe Smith'), a_rooted_url=url_for('/howdy', name='Joe Smith'), ) actions = 'New', return page(tpl.format(json.dumps(values, indent=4)), title='System Info', actions=actions, search=request.data.get('q', ''), subtitle='this is the subtitle') return page('overview', title='my page')
def as_actions(items): """returns actions >>> from zoom.context import context as ctx >>> ctx.site = lambda: None >>> ctx.site.url = '' >>> as_actions(['New']) '<div class="actions"><ul><li><a class="action" href="<dz:request_path>/new" id="new-action">New</a></li></ul></div>' >>> as_actions(['New','Delete']) '<div class="actions"><ul><li><a class="action" href="<dz:request_path>/delete" id="delete-action">Delete</a></li><li><a class="action" href="<dz:request_path>/new" id="new-action">New</a></li></ul></div>' """ if not items: return '' result = [] for item in reversed(items): if type(item) == str: text = item url = url_for('./' + id_for(item)) elif hasattr(item, '__iter__'): text, url = item[:2] else: raise Exception('actions require str or (str,url)') result.append( a( text, Class='action', id=id_for(text)+'-action', href=url ) ) return div(ul(result), Class='actions')
def delete_form(name, cancel=None): """produce a delete form""" css = """ .delete-card { border: thin solid #ddd; margin: 10% auto; width: 50%; padding: 3em; background: white; box-shadow: 3px 3px 3px #ddd; } .delete-card p { font-size: 1.8rem; } @media (max-width: 600px) { .delete-card { padding: 1em; width: 100%; } } """ return zoom.Component(html.div(Form( MarkdownText('Are you sure you want to delete **%s**?' % name), Hidden(name='confirm', value='no'), Button('Yes, I\'m sure. Please delete.', name='delete_button', cancel=cancel or url_for('..'))).edit(), classed='delete-card'), css=css)
def delete_form(name, cancel=None): """produce a delete form""" return Form( MarkdownText('Are you sure you want to delete **%s**?' % name), Hidden(name='confirm', value='no'), Button('Yes, I\'m sure. Please delete.', name='delete_button', cancel=cancel or url_for('..'))).edit()
def render(self, request): """render redirect""" location = url_for(*self.args, **self.kwargs) location = zoom.render.render(location) location = abs_url_for(location) location = zoom.render.render(location) logger = logging.getLogger(__name__) logger.debug('redirecting to: %r', location) return RedirectResponse(location)
def test_basic(self): self.assertEqual(url_for(), '') self.assertEqual(url_for(''), '') # self.assertEqual(url_for('/'), '/') self.assertEqual(url_for('/', 'home'), '/home') self.assertEqual(url_for('/home'), '/home') self.assertEqual(url_for('home'), 'home') self.assertEqual(url_for('/user', 1234), '/user/1234')
def test_site_specified_urls(self): context.site.url = 'mysite.com/app' self.assertEqual(url_for(), '') self.assertEqual(url_for(''), '') # self.assertEqual(url_for('/'), '/') self.assertEqual(url_for('/', 'home'), 'mysite.com/app/home') self.assertEqual(url_for('/home'), 'mysite.com/app/home') self.assertEqual(url_for('home'), 'home') self.assertEqual(url_for('/user', 1234), 'mysite.com/app/user/1234')
def url(self): """user view url""" return url_for('/admin/users/{}'.format(self.key))
def url(self): """return the group URL""" return url_for('/admin/groups/{}'.format(self.key))