views.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import random
  2. from operator import itemgetter
  3. from functools import partial
  4. from ujson import dumps as uj_dumps
  5. from django.http import HttpResponse
  6. from django.shortcuts import render
  7. from world.models import World, Fortune
  8. _random_int = partial(random.randint, 1, 10000)
  9. def _get_queries(request):
  10. try:
  11. queries = int(request.GET.get('queries', 1))
  12. except Exception:
  13. queries = 1
  14. if queries < 1:
  15. queries = 1
  16. if queries > 500:
  17. queries = 500
  18. return queries
  19. def plaintext(request):
  20. return HttpResponse("Hello, World!", content_type="text/plain")
  21. def json(request):
  22. return HttpResponse(
  23. uj_dumps({"message": "Hello, World!"}),
  24. content_type="application/json"
  25. )
  26. def db(request):
  27. r = _random_int()
  28. world = uj_dumps({
  29. 'id': r,
  30. 'randomNumber': World.objects.get(id=r).randomnumber
  31. })
  32. return HttpResponse(world, content_type="application/json")
  33. def dbs(request):
  34. queries = _get_queries(request)
  35. def caller(input_):
  36. int_ = _random_int()
  37. return {'id': int_, 'randomNumber': World.objects.get(id=int_).randomnumber}
  38. worlds = tuple(map(caller, range(queries)))
  39. return HttpResponse(uj_dumps(worlds), content_type="application/json")
  40. def fortunes(request):
  41. fortunes = list(Fortune.objects.values('id', 'message'))
  42. fortunes.append({"id": 0, 'message': "Additional fortune added at request time."})
  43. fortunes.sort(key=itemgetter('message'))
  44. return render(request, 'fortunes.html', {'fortunes': fortunes})
  45. def update(request):
  46. queries = _get_queries(request)
  47. def caller(input_):
  48. w = World.objects.get(id=_random_int())
  49. w.randomnumber = _random_int()
  50. w.save()
  51. return {'id': w.id, 'randomNumber': w.randomnumber}
  52. worlds = tuple(map(caller, range(queries)))
  53. return HttpResponse(uj_dumps(worlds), content_type="application/json")