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.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. elif in_put == 'classname':
  29. fields['classname'] = in_value
  30. obj = (target_leo.get(('lodel_id = %s' % (uid))))[0]
  31. inserted = obj.update(fields)
  32. if inserted==1:
  33. msg = 'Successfully updated';
  34. else:
  35. msg = 'Oops something wrong happened...object not saved'
  36. return get_response('admin/admin_edit.html', target=target_leo, lodel_id = uid, msg = msg)
  37. test_valid = 'lodel_id' in request.GET \
  38. and len(request.GET['lodel_id']) == 1
  39. if test_valid:
  40. try:
  41. lodel_id = int(request.GET['lodel_id'][0])
  42. except (ValueError, TypeError):
  43. test_valid = False
  44. if not test_valid:
  45. raise HttpException(400)
  46. else:
  47. obj = dyncode.Object.get(['lodel_id = %d' % lodel_id])
  48. if len(obj) == 0:
  49. raise HttpException(404)
  50. if 'classname' in request.GET:
  51. classname = request.GET['classname']
  52. if len(classname) > 1:
  53. raise HttpException(400)
  54. classname = classname[0]
  55. try:
  56. target_leo = dyncode.Object.name2class(classname)
  57. except LeApiError:
  58. classname = None
  59. return get_response('admin/admin_edit.html', target=target_leo, lodel_id =lodel_id)
  60. def admin_create(request):
  61. classname = None
  62. if request.method == 'POST':
  63. error = None
  64. datas = list()
  65. classname = request.form['classname']
  66. try:
  67. target_leo = dyncode.Object.name2class(classname)
  68. except LeApiError:
  69. classname = None
  70. if classname is None or target_leo.is_abstract():
  71. raise HttpException(400)
  72. fieldnames = target_leo.fieldnames()
  73. fields = dict()
  74. for in_put, in_value in request.form.items():
  75. if in_put != 'classname':
  76. fields[in_put[12:]] = in_value
  77. else:
  78. fields[in_put] = in_value
  79. new_uid = target_leo.insert(fields)
  80. if not new_uid is None:
  81. msg = 'Successfull creation';
  82. else:
  83. msg = 'Oops something wrong happened...object not saved'
  84. return get_response('admin/admin_create.html', target=target_leo, msg = msg)
  85. if 'classname' in request.GET:
  86. classname = request.GET['classname']
  87. if len(classname) > 1:
  88. raise HttpException(400)
  89. classname = classname[0]
  90. try:
  91. target_leo = dyncode.Object.name2class(classname)
  92. except LeApiError:
  93. classname = None
  94. msg = None
  95. if 'msg' in request.GET:
  96. msg = request.GET['msg']
  97. if classname is None or target_leo.is_abstract():
  98. raise HttpException(400)
  99. return get_response('admin/admin_create.html', target=target_leo)
  100. def admin_classes(request):
  101. return get_response('admin/list_classes_admin.html', my_classes = dyncode.dynclasses)
  102. def create_object(request):
  103. return get_response('admin/list_classes_create.html', my_classes = dyncode.dynclasses)
  104. def admin_class(request):
  105. if 'classname' in request.GET:
  106. classname = request.GET['classname']
  107. if len(classname) > 1:
  108. raise HttpException(400)
  109. classname = classname[0]
  110. try:
  111. target_leo = dyncode.Object.name2class(classname)
  112. except LeApiError:
  113. classname = None
  114. if classname is None or target_leo.is_abstract():
  115. raise HttpException(400)
  116. return get_response('admin/show_class_admin.html', target=target_leo)
  117. def admin(request):
  118. return get_response('admin/admin.html')