views.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. # coding=utf-8
  2. import traceback
  3. import json
  4. from django.db.models import ProtectedError
  5. from django.views.decorators.csrf import csrf_exempt
  6. from django.db import transaction, IntegrityError
  7. from apps.finance.filters import FinanceCategoryFilter, FinancePurposeFilter
  8. from apps.finance.models import FinanceCategory, FinancePurpose, dbFinanceIncome
  9. from apps.finance.serializers import FinanceCategorySerializer, FinancePurposeSerializer
  10. from apps.account.decorators import token_required, permission_required
  11. from apps.foundation.models import BizLog
  12. from libs.http import JSONResponse, JSONError, DataGridJSONResponse
  13. from libs import utils
  14. from apps.exceptions import CustomError
  15. @csrf_exempt
  16. @permission_required('finance.view_finance_category')
  17. def finance_category_list(request):
  18. f = FinanceCategoryFilter(request.GET, queryset=FinanceCategory.objects.filter())
  19. rows, total = utils.get_page_data(request, f.qs)
  20. serializer = FinanceCategorySerializer(rows, many=True)
  21. return DataGridJSONResponse(serializer.data, total)\
  22. @csrf_exempt
  23. @token_required
  24. def finance_category_dict(request):
  25. result = {
  26. 'category': FinanceCategorySerializer(FinanceCategory.objects.filter(enabled=True), many=True).data
  27. }
  28. return JSONResponse(result)
  29. @csrf_exempt
  30. @permission_required('finance.add_finance_category')
  31. def finance_category_save(request):
  32. id = request.GET.get('id')
  33. data = json.loads(request.body)
  34. try:
  35. with transaction.atomic():
  36. serializer = FinanceCategorySerializer.factory(request.user, data, id)
  37. serializer.validSave()
  38. except CustomError, e:
  39. return JSONError(e.get_error_msg())
  40. except Exception, e:
  41. traceback.print_exc()
  42. return JSONError(u'保存失败!')
  43. return JSONResponse({})
  44. @csrf_exempt
  45. @permission_required('finance.delete_finance_category')
  46. def finance_category_delete(request):
  47. id = request.GET.get('id')
  48. try:
  49. with transaction.atomic():
  50. instance = FinanceCategory.getById(id)
  51. BizLog.objects.addnew(request.user, BizLog.DELETE, u"删除财务收支类别[%s],id=%d" % (instance.name, instance.id))
  52. instance.delete()
  53. except CustomError, e:
  54. return JSONError(e.get_error_msg())
  55. except ProtectedError:
  56. return JSONError(u'该财务收支类别已被使用,禁止删除!')
  57. except IntegrityError:
  58. return JSONError(u'该财务收支类别已被使用,禁止删除!')
  59. except Exception, e:
  60. traceback.print_exc()
  61. return JSONError(u'删除失败!')
  62. return JSONResponse({})
  63. @csrf_exempt
  64. @permission_required('finance.view_finance_category')
  65. def finance_purpose_list(request):
  66. f = FinancePurposeFilter(request.GET, queryset=FinancePurpose.objects.filter())
  67. rows, total = utils.get_page_data(request, f.qs)
  68. serializer = FinancePurposeSerializer(rows, many=True)
  69. return DataGridJSONResponse(serializer.data, total)
  70. @csrf_exempt
  71. @permission_required('finance.add_finance_category')
  72. def finance_purpose_save(request):
  73. id = request.GET.get('id')
  74. data = json.loads(request.body)
  75. try:
  76. with transaction.atomic():
  77. serializer = FinancePurposeSerializer.factory(request.user, data, id)
  78. serializer.validSave()
  79. except CustomError, e:
  80. return JSONError(e.get_error_msg())
  81. except Exception, e:
  82. traceback.print_exc()
  83. return JSONError(u'保存失败!')
  84. return JSONResponse({})
  85. @csrf_exempt
  86. @permission_required('finance.delete_finance_category')
  87. def finance_purpose_delete(request):
  88. id = request.GET.get('id')
  89. try:
  90. with transaction.atomic():
  91. instance = FinancePurpose.getById(id)
  92. BizLog.objects.addnew(request.user, BizLog.DELETE, u"删除财务收支用途[%s],id=%d" % (instance.name, instance.id))
  93. instance.delete()
  94. except CustomError, e:
  95. return JSONError(e.get_error_msg())
  96. except ProtectedError:
  97. return JSONError(u'该财务收支用途已被使用,禁止删除!')
  98. except IntegrityError:
  99. return JSONError(u'该财务收支用途已被使用,禁止删除!')
  100. except Exception, e:
  101. traceback.print_exc()
  102. return JSONError(u'删除失败!')
  103. return JSONResponse({})