No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

admin.py 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. from ...exceptions import *
  2. from .base import get_response
  3. from lodel.leapi.exceptions import *
  4. from lodel import logger
  5. import leapi_dyncode as dyncode
  6. import warnings
  7. from lodel import logger
  8. def index_admin(request):
  9. return get_response('admin/admin.html')
  10. def admin_update(request):
  11. msg=''
  12. if request.method == 'POST':
  13. error = None
  14. datas = list()
  15. classname = request.form['classname']
  16. uid = request.form['uid']
  17. try:
  18. target_leo = dyncode.Object.name2class(classname)
  19. except LeApiError:
  20. classname = None
  21. if classname is None or target_leo.is_abstract():
  22. raise HttpException(400)
  23. fieldnames = target_leo.fieldnames()
  24. fields = dict()
  25. for in_put, in_value in request.form.items():
  26. if in_put != 'classname' and in_put != 'uid':
  27. fields[in_put[12:]] = in_value
  28. obj = (target_leo.get(('lodel_id = %s' % (uid))))[0]
  29. inserted = obj.update(fields)
  30. if inserted==1:
  31. msg = 'Successfully updated';
  32. else:
  33. msg = 'Oops something wrong happened...object not saved'
  34. return get_response('admin/admin_edit.html', target=target_leo, lodel_id = uid, msg = msg)
  35. test_valid = 'lodel_id' in request.GET \
  36. and len(request.GET['lodel_id']) == 1
  37. if test_valid:
  38. try:
  39. lodel_id = int(request.GET['lodel_id'][0])
  40. except (ValueError, TypeError):
  41. test_valid = False
  42. if not test_valid:
  43. raise HttpException(400)
  44. else:
  45. obj = dyncode.Object.get(['lodel_id = %d' % lodel_id])
  46. if len(obj) == 0:
  47. raise HttpException(404)
  48. if 'classname' in request.GET:
  49. classname = request.GET['classname']
  50. if len(classname) > 1:
  51. raise HttpException(400)
  52. classname = classname[0]
  53. try:
  54. target_leo = dyncode.Object.name2class(classname)
  55. except LeApiError:
  56. classname = None
  57. return get_response('admin/admin_edit.html', target=target_leo, lodel_id =lodel_id)
  58. def admin_create(request):
  59. classname = None
  60. if request.method == 'POST':
  61. error = None
  62. datas = list()
  63. classname = request.form['classname']
  64. try:
  65. target_leo = dyncode.Object.name2class(classname)
  66. except LeApiError:
  67. classname = None
  68. if classname is None or target_leo.is_abstract():
  69. raise HttpException(400)
  70. fieldnames = target_leo.fieldnames()
  71. fields = dict()
  72. for in_put, in_value in request.form.items():
  73. if in_put != 'classname':
  74. fields[in_put[12:]] = in_value
  75. new_uid = target_leo.insert(fields)
  76. if not new_uid is None:
  77. msg = 'Successfull creation';
  78. else:
  79. msg = 'Oops something wrong happened...object not saved'
  80. return get_response('admin/admin_create.html', target=target_leo, msg = msg)
  81. if 'classname' in request.GET:
  82. classname = request.GET['classname']
  83. if len(classname) > 1:
  84. raise HttpException(400)
  85. classname = classname[0]
  86. try:
  87. target_leo = dyncode.Object.name2class(classname)
  88. except LeApiError:
  89. classname = None
  90. msg = None
  91. if 'msg' in request.GET:
  92. msg = request.GET['msg']
  93. if classname is None or target_leo.is_abstract():
  94. raise HttpException(400)
  95. return get_response('admin/admin_create.html', target=target_leo)
  96. def admin_classes(request):
  97. return get_response('admin/list_classes_admin.html', my_classes = dyncode.dynclasses)
  98. def admin_class(request):
  99. if 'classname' in request.GET:
  100. classname = request.GET['classname']
  101. if len(classname) > 1:
  102. raise HttpException(400)
  103. classname = classname[0]
  104. try:
  105. target_leo = dyncode.Object.name2class(classname)
  106. except LeApiError:
  107. classname = None
  108. if classname is None or target_leo.is_abstract():
  109. raise HttpException(400)
  110. return get_response('admin/show_class_admin.html', target=target_leo)
  111. def admin(request):
  112. return get_response('admin/admin.html')