ooze/example.py

132 lines
3.0 KiB
Python

import ooze
app = ooze.Application()
@app.route('')
def front(request):
return "<html>Fröntpage</html>"
@app.route('foo')
def foo(request):
return "Foo"
@app.route('foo/bar')
def foo_bar(request):
return "FooBar"
@app.route('bing/bong/fnord')
def bing_bong_fnord(request):
return "BingBongFnord"
@app.route('echoint/<int:x>')
def echo_int(request, x):
return x
@app.expose('renderthing')
class RenderThing(ooze.rendering.Renderable):
def __init__(self):
self.thing = "I'm a string coming from a renderable object!"
@app.expose('renderparam/<str:param>')
class RenderParam(ooze.rendering.Renderable):
def __init__(self, param):
self.param = param
@app.route('thing/<str:name>')
def thing(request, name):
return name
@app.route('thing/<str:name>/<str:option>')
def thing_option(request, name, option):
return f"{name}: {option}"
@app.route('cookie/set/<str:value>')
def cookie_set(request, value):
response = app.response_class(request)
response.cookies['cookie-foo'] = value
return response
@app.route('cookie/get')
def cookie_get(request):
return request.cookies['cookie-foo']
#@app.route('asdf/<path:bonk>/more') # fails because path is multipart, TODO: make this a test
#def asdf(request, bonk):
# return bonk
#from ooze import dominion
#renderer = dominion.Renderer(['ooze/themes/default/templates'])
#@app.route('dominiontest/<content>')
#def dominiontest(request, content):
#
# return renderer.template_render('main', content=content)
fnord = ooze.Subsite()
app.register_subsite('fnord', fnord)
@fnord.route('')
def fnord_front(request):
return "FNORD"
@fnord.expose('bong/<time>')
class Bong(ooze.rendering.Renderable):
def __init__(self, time):
self.time = time
if time == '4:20':
self.message = 'BLAZE IT!!'
elif time == '13:12':
self.message = "ACAB O'Glock!"
else:
self.message = 'ZZZZZZZZ…'
whoop = ooze.Subsite()
@whoop.route('bonk')
def whoo_bonk(request):
return request.path # /fnord/whoop/bonk/
fnord.register_subsite('whoop', whoop)
multipath = ooze.Subsite()
app.register_subsite('multi/path', multipath)
@multipath.route('running-out-of-stupid-ideas')
def medumb(request):
return request.path # /multi/path/running-out-of-stupid-ideas
@app.route('session/<key>')
def sessionget(request, key):
return request.session[key]
@app.route('session/<key>/<value>')
def sessionset(request, key, value):
request.session[key] = value
return f"Set '{key}' to '{value}'."
@app.expose('exampleform') # <- auto-sets action
class ExampleForm(ooze.forms.Form):
warning = ooze.dominion.elements.P("This will florp your shpergle! Proceed?")
name = ooze.forms.fields.Text(label='Name of the shpergle to florp')
florp = ooze.forms.fields.Button('Florp')
@app.expose('dynamicform')
class DynamicForm(ooze.forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['bongo'] = ooze.forms.fields.Text(label="Bongo")