service.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import jimit as ji
  4. import json
  5. from flask import Blueprint
  6. from flask import request
  7. from jimvc.api.base import Base
  8. from jimvc.models import Utils
  9. from jimvc.models import Guest
  10. from jimvc.models import Rules
  11. from jimvc.models import Service
  12. __author__ = 'James Iter'
  13. __date__ = '2018/10/7'
  14. __contact__ = 'james.iter.cn@gmail.com'
  15. __copyright__ = '(c) 2018 by James Iter.'
  16. blueprint = Blueprint(
  17. 'api_service',
  18. __name__,
  19. url_prefix='/api/service'
  20. )
  21. blueprints = Blueprint(
  22. 'api_services',
  23. __name__,
  24. url_prefix='/api/services'
  25. )
  26. service_base = Base(the_class=Service, the_blueprint=blueprint, the_blueprints=blueprints)
  27. @Utils.dumps2response
  28. def r_create():
  29. args_rules = [
  30. Rules.PROJECT_ID.value,
  31. Rules.NAME.value
  32. ]
  33. if 'description' in request.json:
  34. args_rules.append(
  35. Rules.DESCRIPTION.value,
  36. )
  37. try:
  38. ret = dict()
  39. ret['state'] = ji.Common.exchange_state(20000)
  40. ji.Check.previewing(args_rules, request.json)
  41. service = Service()
  42. service.project_id = request.json.get('project_id', None)
  43. service.name = request.json.get('name', None)
  44. service.description = request.json.get('description', '')
  45. service.create()
  46. service.get_by('create_time')
  47. ret['data'] = service.__dict__
  48. return ret
  49. except ji.PreviewingError, e:
  50. return json.loads(e.message)
  51. @Utils.dumps2response
  52. def r_update(_id):
  53. service = Service()
  54. args_rules = [
  55. Rules.ID.value
  56. ]
  57. if 'project_id' in request.json:
  58. args_rules.append(
  59. Rules.PROJECT_ID.value,
  60. )
  61. if 'name' in request.json:
  62. args_rules.append(
  63. Rules.NAME.value,
  64. )
  65. if 'description' in request.json:
  66. args_rules.append(
  67. Rules.DESCRIPTION.value,
  68. )
  69. if args_rules.__len__() < 2:
  70. ret = dict()
  71. ret['state'] = ji.Common.exchange_state(20000)
  72. return ret
  73. request.json['id'] = _id
  74. try:
  75. ji.Check.previewing(args_rules, request.json)
  76. service.id = int(request.json.get('id'))
  77. service.get()
  78. service.project_id = request.json.get('project_id', service.project_id)
  79. service.name = request.json.get('name', service.name)
  80. service.description = request.json.get('description', service.description)
  81. service.update()
  82. service.get()
  83. ret = dict()
  84. ret['state'] = ji.Common.exchange_state(20000)
  85. ret['data'] = service.__dict__
  86. return ret
  87. except ji.PreviewingError, e:
  88. return json.loads(e.message)
  89. @Utils.dumps2response
  90. def r_get(ids):
  91. return service_base.get(ids=ids, ids_rule=Rules.IDS.value, by_field='id')
  92. @Utils.dumps2response
  93. def r_get_by_filter():
  94. return service_base.get_by_filter()
  95. @Utils.dumps2response
  96. def r_content_search():
  97. return service_base.content_search()
  98. @Utils.dumps2response
  99. def r_delete(ids):
  100. args_rules = [
  101. Rules.IDS.value
  102. ]
  103. try:
  104. ji.Check.previewing(args_rules, {'ids': ids})
  105. service = Service()
  106. # 检测所指定的 项目 都存在
  107. for _id in ids.split(','):
  108. service.id = int(_id)
  109. service.get()
  110. # 执行删除操作
  111. for _id in ids.split(','):
  112. if int(_id) == 1:
  113. # 默认服务组不允许被删除
  114. continue
  115. Guest.update_by_filter({'service_id': 1}, filter_str='service_id:eq:' + _id)
  116. service.id = int(_id)
  117. service.get()
  118. service.delete()
  119. ret = dict()
  120. ret['state'] = ji.Common.exchange_state(20000)
  121. return ret
  122. except ji.PreviewingError, e:
  123. return json.loads(e.message)