group.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # -*- coding: utf-8 -*-
  2. """
  3. walle-web
  4. :copyright: © 2015-2017 walle-web.io
  5. :created time: 2017-03-25 11:15:01
  6. :author: wushuiyong@walle-web.io
  7. """
  8. import json
  9. from flask import request, current_app
  10. from walle.api.api import SecurityResource
  11. from walle.form.group import GroupForm
  12. from walle.model.member import MemberModel
  13. from walle.model.space import SpaceModel
  14. from walle.model.tag import TagModel
  15. from walle.service.extensions import permission
  16. from walle.service.rbac.role import *
  17. class GroupAPI(SecurityResource):
  18. def get(self, group_id=None):
  19. """
  20. 用户组列表
  21. /group/
  22. :return:
  23. """
  24. super(GroupAPI, self).get()
  25. return self.item(group_id) if group_id else self.list()
  26. def list(self):
  27. """
  28. 用户组列表
  29. /group/
  30. :return:
  31. """
  32. page = int(request.args.get('page', 0))
  33. page = page - 1 if page else 0
  34. size = int(request.args.get('size', 10))
  35. kw = request.values.get('kw', '')
  36. space_model = SpaceModel()
  37. space_list, count = space_model.list(page=page, size=size, kw=kw)
  38. return self.list_json(list=space_list, count=count, enable_create=permission.role_upper_owner())
  39. group_model, count = SpaceModel().query_paginate(page=page, limit=size, filter_name_dict=filter)
  40. groups = []
  41. for group_info in group_model:
  42. group_sub = MemberModel.query \
  43. .filter_by(group_id=group_info.id) \
  44. .count()
  45. group_info = group_info.to_json()
  46. group_info['users'] = group_sub
  47. group_info['group_id'] = group_info['id']
  48. group_info['group_name'] = group_info['name']
  49. groups.append(group_info)
  50. return self.list_json(list=groups, count=count)
  51. def item(self, group_id):
  52. """
  53. 获取某个用户组
  54. /group/<int:group_id>
  55. :param group_id:
  56. :return:
  57. """
  58. ## sqlalchemy版本
  59. group_model = MemberModel()
  60. group = group_model.members(group_id=group_id)
  61. if group:
  62. return self.render_json(data=group)
  63. return self.render_json(code=-1)
  64. def put(self, group_id):
  65. """
  66. update group
  67. /group/<int:group_id>
  68. :return:
  69. """
  70. super(GroupAPI, self).put()
  71. form = GroupForm(request.form, csrf=False)
  72. form.set_group_id(group_id)
  73. if form.validate_on_submit():
  74. # pass
  75. # user_ids = [int(uid) for uid in form.user_ids.data.split(',')]
  76. current_app.logger.info(form.uid_roles)
  77. current_app.logger.info(json.loads(form.uid_roles))
  78. group_model = MemberModel(group_id=group_id)
  79. for uid_role in json.loads(form.uid_roles):
  80. uid_role['project_id'] = 0
  81. current_app.logger.info(uid_role)
  82. group_model.create_or_update(uid_role, uid_role)
  83. return self.render_json(data=group_model.item())
  84. return self.render_error(code=Code.form_error, message=form.errors)
  85. def delete(self, group_id):
  86. """
  87. /group/<int:group_id>
  88. :return:
  89. """
  90. super(GroupAPI, self).delete()
  91. group_model = MemberModel()
  92. tag_model = TagModel()
  93. tag_model.remove(group_id)
  94. group_model.remove(group_id)
  95. return self.render_json(message='')