瀏覽代碼

Merge pull request #769 from meolu/2.0/bugfix/members-cover-error

fix #745 向空间添加成员,会产生替换
walle-web.io 6 年之前
父節點
當前提交
163e9ee7bf
共有 2 個文件被更改,包括 11 次插入3 次删除
  1. 1 1
      walle/api/space.py
  2. 10 2
      walle/model/member.py

+ 1 - 1
walle/api/space.py

@@ -134,7 +134,7 @@ class SpaceAPI(SecurityResource):
             if 'members' in request.form:
                 members = json.loads(request.form['members'])
                 members.append(member)
-            MemberModel(group_id=space_id).update_group(members=members)
+                MemberModel(group_id=space_id).update_group(members=members)
             return self.render_json(data=space.item())
         else:
             return self.render_error(code=Code.form_error, message=form.errors)

+ 10 - 2
walle/model/member.py

@@ -114,11 +114,19 @@ class MemberModel(SurrogatePK, Model):
         }
         MemberModel.query.filter(*filters).delete()
 
+        member_role = []
+
         current_app.logger.info(members)
         # insert all
         for member in members:
             current_app.logger.info(member)
             current_app.logger.info(member['role'])
+
+            # 过滤重复数据 同一空间下同一用户不能有同样的角色
+            if (int(member['user_id']), str(member['role']).upper()) in member_role:
+                continue
+            member_role.append((member['user_id'], member['role'].upper()))
+
             update = {
                 'user_id': member['user_id'],
                 'source_id': self.group_id,
@@ -172,7 +180,7 @@ class MemberModel(SurrogatePK, Model):
 
         return ret
 
-    def members(self, group_id=None, project_id=None, page=0, size=10, kw=None):
+    def members(self, group_id=None, project_id=None, page=0, size=None, kw=None):
         """
         获取单条记录
         :param role_id:
@@ -194,7 +202,7 @@ class MemberModel(SurrogatePK, Model):
 
         count = query.count()
         query = query.order_by(MemberModel.id.asc())
-        if size > 0:
+        if size:
             query = query.offset(int(size) * int(page)).limit(size)
         data = query.all()