views.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # coding=utf-8
  2. import traceback
  3. import json
  4. from django.views.decorators.csrf import csrf_exempt
  5. from django.db import transaction,IntegrityError
  6. from django.db.models import ProtectedError
  7. from apps.foundation.filters import OptionFilter
  8. from libs.http import JSONResponse, JSONError, DataGridJSONResponse
  9. from libs import utils
  10. from apps.exceptions import CustomError
  11. from apps.account.decorators import token_required,permission_required
  12. from models import Option
  13. from serializers import OptionSerializer
  14. from resources import OptionResource
  15. from apps.dashboard.forms import fetch_license
  16. from django.core.cache import cache
  17. @csrf_exempt
  18. @permission_required('foundation.view_option')
  19. def option_list(request):
  20. f = OptionFilter(request.GET, queryset=Option.objects.all())
  21. rows, total = utils.get_page_data(request, f.qs)
  22. serializer = OptionSerializer(rows, many=True)
  23. return DataGridJSONResponse(serializer.data, total)
  24. @csrf_exempt
  25. @permission_required('foundation.add_option')
  26. def option_save(request):
  27. id = request.GET.get('id')
  28. data = json.loads(request.body)
  29. try:
  30. with transaction.atomic():
  31. serializer = OptionSerializer.factory(request.user,data,id)
  32. serializer.validSave()
  33. except CustomError, e:
  34. return JSONError(e.get_error_msg())
  35. except Exception, e:
  36. traceback.print_exc()
  37. return JSONError(u'保存失败!')
  38. return JSONResponse()
  39. @permission_required('foundation.delete_option')
  40. def option_delete(request):
  41. id = request.GET.get('id')
  42. try:
  43. with transaction.atomic():
  44. option = Option.getById(id)
  45. option.delete()
  46. except CustomError, e:
  47. return JSONError(e.get_error_msg())
  48. except ProtectedError:
  49. return JSONError(u'该自定义项已被使用,禁止删除!')
  50. except IntegrityError:
  51. return JSONError(u'该自定义项已被使用,禁止删除!')
  52. except Exception, e:
  53. traceback.print_exc()
  54. return JSONError(u'删除失败!')
  55. return JSONResponse({})
  56. @csrf_exempt
  57. @token_required
  58. def option_types(request):
  59. data = []
  60. for row in Option.TYPE_CHOICES:
  61. data.append(
  62. {'id': row[0], 'value': row[1]}
  63. )
  64. return JSONResponse(data)
  65. @csrf_exempt
  66. @token_required
  67. def log_list(request):
  68. pass
  69. def mobile_license(request):
  70. try:
  71. fetch_license()
  72. except Exception, e:
  73. return JSONError(e.message)
  74. license = cache.get('license')
  75. result = {
  76. 'allow_app':license['allow_app'],
  77. }
  78. return JSONResponse(result)
  79. @csrf_exempt
  80. @token_required
  81. def search_options(request):
  82. type = int(request.GET.get('type'))
  83. rows = Option.objects.filter(type=type, enabled=True)
  84. data = []
  85. for row in rows:
  86. item = {
  87. 'id': row.id,
  88. 'name': row.name
  89. }
  90. data.append(item)
  91. return JSONResponse(data)