controller.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # -*- coding: utf-8 -*-
  2. from random import randint
  3. from functools import partial
  4. import json as jsonOut
  5. from gluon import current
  6. from database import Dal, RawDal, num_queries
  7. def plaintext():
  8. current.response.headers['Content-Type'] = 'text/plain'
  9. return 'Hello, World!'
  10. def json():
  11. current.response.headers['Content-Type'] = 'application/json'
  12. return jsonOut.dumps({'message': 'Hello, World!'})
  13. def db():
  14. current.response.headers['Content-Type']='application/json'
  15. return jsonOut.dumps(Dal('World').get_world(randint(1, 10000)))
  16. def queries():
  17. current.response.headers['Content-Type']='application/json'
  18. db = RawDal() if current.optimized else Dal('World')
  19. get_world = db.get_world
  20. r10k = partial(randint, 1, 10000)
  21. worlds = [get_world(r10k()) for _ in
  22. xrange(num_queries(current.request.vars.queries))]
  23. return jsonOut.dumps(worlds)
  24. def updates():
  25. current.response.headers['Content-Type']='application/json'
  26. db = RawDal() if current.optimized else Dal('World')
  27. get_world = db.get_world
  28. update_world = db.update_world
  29. r10k = partial(randint, 1, 10000)
  30. worlds = []
  31. #ids = [r10k() for _ in xrange(num_queries)]
  32. #ids.sort() # To avoid deadlock
  33. for wid in (r10k() for _ in xrange(num_queries(current.request.vars.queries))):
  34. world = get_world(wid)
  35. newNumber = r10k()
  36. world['randomNumber'] = newNumber
  37. worlds.append(world)
  38. update_world(wid, newNumber)
  39. if current.optimized:
  40. db.flush_world_updates() # Batch updates.
  41. return jsonOut.dumps(worlds)
  42. def fortune():
  43. new_message = {'id': 0, 'message': 'Additional fortune added at request time.'}
  44. db = RawDal() if current.optimized else Dal('Fortune')
  45. fortunes = db.get_fortunes(new_message=new_message)
  46. return current.response.render('fortune.html', fortunes=fortunes)