project.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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 Rules
  10. from jimvc.models import Project
  11. __author__ = 'James Iter'
  12. __date__ = '2018/10/7'
  13. __contact__ = 'james.iter.cn@gmail.com'
  14. __copyright__ = '(c) 2018 by James Iter.'
  15. blueprint = Blueprint(
  16. 'api_project',
  17. __name__,
  18. url_prefix='/api/project'
  19. )
  20. blueprints = Blueprint(
  21. 'api_projects',
  22. __name__,
  23. url_prefix='/api/projects'
  24. )
  25. project_base = Base(the_class=Project, the_blueprint=blueprint, the_blueprints=blueprints)
  26. @Utils.dumps2response
  27. def r_create():
  28. args_rules = [
  29. Rules.NAME.value
  30. ]
  31. if 'description' in request.json:
  32. args_rules.append(
  33. Rules.DESCRIPTION.value,
  34. )
  35. try:
  36. ret = dict()
  37. ret['state'] = ji.Common.exchange_state(20000)
  38. ji.Check.previewing(args_rules, request.json)
  39. project = Project()
  40. project.name = request.json.get('name', None)
  41. project.description = request.json.get('description', '')
  42. project.create()
  43. project.get_by('create_time')
  44. ret['data'] = project.__dict__
  45. return ret
  46. except ji.PreviewingError, e:
  47. return json.loads(e.message)
  48. @Utils.dumps2response
  49. def r_update(_id):
  50. project = Project()
  51. args_rules = [
  52. Rules.ID.value
  53. ]
  54. if 'name' in request.json:
  55. args_rules.append(
  56. Rules.NAME.value,
  57. )
  58. if 'description' in request.json:
  59. args_rules.append(
  60. Rules.DESCRIPTION.value,
  61. )
  62. if args_rules.__len__() < 2:
  63. ret = dict()
  64. ret['state'] = ji.Common.exchange_state(20000)
  65. return ret
  66. request.json['id'] = _id
  67. try:
  68. ji.Check.previewing(args_rules, request.json)
  69. project.id = int(request.json.get('id'))
  70. project.get()
  71. project.name = request.json.get('name', project.name)
  72. project.description = request.json.get('description', project.description)
  73. project.update()
  74. project.get()
  75. ret = dict()
  76. ret['state'] = ji.Common.exchange_state(20000)
  77. ret['data'] = project.__dict__
  78. return ret
  79. except ji.PreviewingError, e:
  80. return json.loads(e.message)
  81. @Utils.dumps2response
  82. def r_get(ids):
  83. return project_base.get(ids=ids, ids_rule=Rules.IDS.value, by_field='id')
  84. @Utils.dumps2response
  85. def r_get_by_filter():
  86. return project_base.get_by_filter()
  87. @Utils.dumps2response
  88. def r_content_search():
  89. return project_base.content_search()
  90. @Utils.dumps2response
  91. def r_delete(ids):
  92. args_rules = [
  93. Rules.IDS.value
  94. ]
  95. try:
  96. ji.Check.previewing(args_rules, {'ids': ids})
  97. project = Project()
  98. # 检测所指定的 项目 都存在
  99. for _id in ids.split(','):
  100. project.id = int(_id)
  101. project.get()
  102. # 执行删除操作
  103. for _id in ids.split(','):
  104. project.id = int(_id)
  105. project.get()
  106. project.delete()
  107. ret = dict()
  108. ret['state'] = ji.Common.exchange_state(20000)
  109. return ret
  110. except ji.PreviewingError, e:
  111. return json.loads(e.message)