ssh_key.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from flask import Blueprint
  4. from flask import request
  5. import json
  6. import jimit as ji
  7. from api.base import Base
  8. from models import SSHKey
  9. from models import Utils
  10. from models import Rules
  11. __author__ = 'James Iter'
  12. __date__ = '2018/2/26'
  13. __contact__ = 'james.iter.cn@gmail.com'
  14. __copyright__ = '(c) 2018 by James Iter.'
  15. blueprint = Blueprint(
  16. 'api_ssh_key',
  17. __name__,
  18. url_prefix='/api/ssh_key'
  19. )
  20. blueprints = Blueprint(
  21. 'api_ssh_keys',
  22. __name__,
  23. url_prefix='/api/ssh_keys'
  24. )
  25. ssh_key_base = Base(the_class=SSHKey, the_blueprint=blueprint, the_blueprints=blueprints)
  26. @Utils.dumps2response
  27. def r_create():
  28. args_rules = [
  29. Rules.LABEL.value,
  30. Rules.PUBLIC_KEY.value
  31. ]
  32. try:
  33. ret = dict()
  34. ret['state'] = ji.Common.exchange_state(20000)
  35. ji.Check.previewing(args_rules, request.json)
  36. ssh_key = SSHKey()
  37. ssh_key.label = request.json.get('label')
  38. ssh_key.public_key = request.json.get('public_key')
  39. if ssh_key.exist_by('public_key'):
  40. ret['state'] = ji.Common.exchange_state(40901)
  41. ret['state']['sub']['zh-cn'] = ''.join([ret['state']['sub']['zh-cn'], ': ', ssh_key.public_key])
  42. return ret
  43. ssh_key.create()
  44. return ret
  45. except ji.PreviewingError, e:
  46. return json.loads(e.message)
  47. @Utils.dumps2response
  48. def r_update(_id):
  49. ssh_key = SSHKey()
  50. args_rules = [
  51. Rules.ID.value
  52. ]
  53. if 'label' in request.json:
  54. args_rules.append(
  55. Rules.LABEL.value,
  56. )
  57. if 'public_key' in request.json:
  58. args_rules.append(
  59. Rules.PUBLIC_KEY.value,
  60. )
  61. if args_rules.__len__() < 2:
  62. ret = dict()
  63. ret['state'] = ji.Common.exchange_state(20000)
  64. return ret
  65. request.json['id'] = _id
  66. try:
  67. ji.Check.previewing(args_rules, request.json)
  68. ssh_key.id = request.json.get('id')
  69. ssh_key.get()
  70. ssh_key.label = request.json.get('label', ssh_key.label)
  71. ssh_key.public_key = request.json.get('public_key', ssh_key.public_key)
  72. ssh_key.update()
  73. ssh_key.get()
  74. ret = dict()
  75. ret['state'] = ji.Common.exchange_state(20000)
  76. ret['data'] = ssh_key.__dict__
  77. return ret
  78. except ji.PreviewingError, e:
  79. return json.loads(e.message)
  80. @Utils.dumps2response
  81. def r_get(ids):
  82. return ssh_key_base.get(ids=ids, ids_rule=Rules.IDS.value, by_field='id')
  83. @Utils.dumps2response
  84. def r_get_by_filter():
  85. return ssh_key_base.get_by_filter()
  86. @Utils.dumps2response
  87. def r_content_search():
  88. return ssh_key_base.content_search()
  89. @Utils.dumps2response
  90. def r_delete(ids):
  91. return ssh_key_base.delete(ids=ids, ids_rule=Rules.IDS.value, by_field='id')