app.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from flask import Blueprint
  2. from public import db
  3. from libs.tools import json_response, JsonParser, Argument
  4. from apps.configuration.models import AppConfigRel
  5. from collections import defaultdict
  6. from libs.decorators import require_permission
  7. blueprint = Blueprint(__name__, __name__)
  8. @blueprint.route('/<int:app_id>/bind/relationship', methods=['POST'])
  9. @require_permission('config_app_rel_edit')
  10. def bind_relationship(app_id):
  11. form, error = JsonParser(Argument('app_ids', type=list), Argument('service_ids', type=list)).parse()
  12. if error is None:
  13. old_relationships = AppConfigRel.query.filter_by(s_id=app_id).all()[:]
  14. for key, value in [('app', x) for x in form.app_ids] + [('ser', x) for x in form.service_ids]:
  15. rel = AppConfigRel(s_id=app_id, d_id=value, d_type=key)
  16. if rel in old_relationships:
  17. old_relationships.remove(rel)
  18. else:
  19. rel.add()
  20. for old_rel in old_relationships:
  21. old_rel.delete(commit=False)
  22. db.session.commit()
  23. return json_response(message=error)
  24. @blueprint.route('/<int:app_id>/bind/relationship', methods=['GET'])
  25. @require_permission('config_app_rel_view')
  26. def get_relationship(app_id):
  27. relationships = AppConfigRel.query.filter_by(s_id=app_id).all()
  28. result = defaultdict(list)
  29. for item in relationships:
  30. if item.d_type == 'app':
  31. result['app_ids'].append(item.d_id)
  32. elif item.d_type == 'ser':
  33. result['service_ids'].append(item.d_id)
  34. return json_response(result)