def item(self, group_id): """ 获取某个用户组 /group/<int:group_id> :param group_id: :return: """ ## sqlalchemy版本 group_model = MemberModel() group = group_model.members(group_id=group_id) if group: return self.render_json(data=group) return self.render_json(code=-1) ## mixin 版本 group_model = TagModel().get_by_id(group_id) if not group_model: return self.render_json(code=-1) user_model = UserModel() user_info = user_model.fetch_by_uid(uids=group_model.users) group_info = group_model.to_dict() group_info['members'] = user_info group_info['users'] = len(user_info) group_info['group_name'] = group_info['name'] group_info['group_id'] = group_info['id'] return self.render_json(data=group_info)
def put(self, group_id): """ update group /group/<int:group_id> :return: """ super(GroupAPI, self).put() form = GroupForm(request.form, csrf_enabled=False) form.set_group_id(group_id) if form.validate_on_submit(): # pass # user_ids = [int(uid) for uid in form.user_ids.data.split(',')] current_app.logger.info(form.uid_roles) current_app.logger.info(json.loads(form.uid_roles)) group_model = MemberModel(group_id=group_id) for uid_role in json.loads(form.uid_roles): uid_role['project_id'] = 0 current_app.logger.info(uid_role) group_model.create_or_update(uid_role, uid_role) return self.render_json(data=group_model.item()) return self.render_json(code=-1, message=form.errors)
def item(self, group_id): """ 获取某个用户组 /group/<int:group_id> :param group_id: :return: """ ## sqlalchemy版本 group_model = MemberModel() group = group_model.members(group_id=group_id) if group: return self.render_json(data=group) return self.render_json(code=-1) ## mixin 版本 group_model = TagModel().get_by_id(group_id) if not group_model: return self.render_json(code=-1) user_model = UserModel() user_info = user_model.fetch_by_uid(uids=group_model.users) group_info = group_model.to_dict() group_info['members'] = user_info group_info['users'] = len(user_info) group_info['group_name'] = group_info['name'] group_info['group_id'] = group_info['id'] return self.render_json(data=group_info)
def put(self, group_id): """ update group /group/<int:group_id> :return: """ super(GroupAPI, self).put() form = GroupForm(request.form, csrf=False) form.set_group_id(group_id) if form.validate_on_submit(): # pass # user_ids = [int(uid) for uid in form.user_ids.data.split(',')] current_app.logger.info(form.uid_roles) current_app.logger.info(json.loads(form.uid_roles)) group_model = MemberModel(group_id=group_id) for uid_role in json.loads(form.uid_roles): uid_role['project_id'] = 0 current_app.logger.info(uid_role) group_model.create_or_update(uid_role, uid_role) return self.render_json(data=group_model.item()) return self.render_error(code=Code.form_error, message=form.errors)
def members(self, project_id, members): """ :param project_id: :param members: :return: """ group_model = MemberModel(project_id=project_id) ret = group_model.update_project(project_id=project_id, members=members) item, count, user_ids = group_model.members() return self.render_json(data=item)
def delete(self, group_id): """ /group/<int:group_id> :return: """ super(GroupAPI, self).delete() group_model = MemberModel() tag_model = TagModel() tag_model.remove(group_id) group_model.remove(group_id) return self.render_json(message='')
def item(self, group_id): """ 获取某个用户组 /group/<int:group_id> :param group_id: :return: """ ## sqlalchemy版本 group_model = MemberModel() group = group_model.members(group_id=group_id) if group: return self.render_json(data=group) return self.render_json(code=-1)
def delete(self, group_id): """ /group/<int:group_id> :return: """ super(GroupAPI, self).delete() group_model = MemberModel() tag_model = TagModel() tag_model.remove(group_id) group_model.remove(group_id) return self.render_json(message='')
def item(self, group_id): """ 获取某个用户组 /group/<int:group_id> :param group_id: :return: """ ## sqlalchemy版本 group_model = MemberModel() group = group_model.members(group_id=group_id) if group: return self.render_json(data=group) return self.render_json(code=-1)
def put(self, space_id, action=None): """ update environment /environment/<int:id> :return: """ super(SpaceAPI, self).put() if action and action == 'switch': return self.switch(space_id) current_app.logger.info(json.loads(request.form['members'])) form = SpaceForm(request.form, csrf_enabled=False) form.set_id(space_id) if form.validate_on_submit(): space = SpaceModel().get_by_id(space_id) data = form.form2dict() current_app.logger.info(data) # a new type to update a model ret = space.update(data) # create group if 'members' in request.form: MemberModel(group_id=space_id).update_group(members=json.loads(request.form['members'])) return self.render_json(data=space.item()) else: return self.render_json(code=-1, message=form.errors)
def members(self, space_id): page = int(request.args.get('page', 1)) page = page - 1 if page else 0 size = int(request.args.get('size', 10)) kw = request.values.get('kw', '') members, count, user_ids = MemberModel(group_id=space_id).members(page=page, size=size, kw=kw) return self.list_json(list=members, count=count, enable_create=permission.enable_role(MASTER))
def member(self, space_id): space_id = session['space_id'] user_id = request.form['user_id'] role = request.form['role'] members = MemberModel(group_id=space_id).member(user_id=user_id, role=role, group_id=space_id) return self.render_json(data=members)
def post(self): """ create a space /environment/ :return: """ super(SpaceAPI, self).post() form = SpaceForm(request.form, csrf_enabled=False) # return self.render_json(code=-1, data = form.form2dict()) if form.validate_on_submit(): # create space space_new = SpaceModel() data = form.form2dict() id = space_new.add(data) if not id: return self.render_json(code=-1) current_app.logger.info(request.json) # create group data['role'] = OWNER members = [data] MemberModel(group_id=id).update_group(members=members) return self.render_json(data=space_new.item()) else: return self.render_json(code=-1, message=form.errors)
def list(self): """ fetch user list or one user :return: """ page = int(request.args.get('page', 0)) page = page - 1 if page else 0 size = int(request.args.get('size', 10)) space_id = int(request.args.get('space_id', 0)) kw = request.values.get('kw', '') user_ids = [] if current_user.role != SUPER and space_id: members = MemberModel(group_id=current_user.last_space).members() user_ids = members['user_ids'] user_model = UserModel() user_list, count = user_model.list(uids=user_ids, page=page, size=size, space_id=space_id, kw=kw) filters = {'username': ['线上', '线下'], 'status': ['正常', '禁用']} return self.list_json(list=user_list, count=count, table=self.table(filters), enable_create=permission.role_upper_master())
def members(self, project_id, members): """ :param project_id: :param members: :return: """ # TODO login for group id group_id = 1 group_model = MemberModel(project_id=project_id) ret = group_model.update_project(project_id=project_id, members=members) item = group_model.members() return self.render_json(data=item)
def update(self, space_id): form = SpaceForm(request.form, csrf=False) form.set_id(space_id) if form.validate_on_submit(): space = SpaceModel().get_by_id(space_id) data = form.form2dict() current_app.logger.info(data) member_model = MemberModel(group_id=space_id) old_owner = space.user_id new_owner = data['user_id'] # a new type to update a model space.update(data) if str(old_owner) != str(new_owner): # owner has changed member_model.change_owner(old_owner, new_owner) # create group current_owner = {"user_id": new_owner, "role": OWNER} if 'members' in request.form: members = json.loads(request.form['members']) members.append(current_owner) member_model.update_group(members=members) return self.render_json(data=space.item()) else: return self.render_error(code=Code.form_error, message=form.errors)
def delete(self, user_id): """ remove a user with his group relation /user/<int:user_id> :param user_id: :return: """ super(UserAPI, self).delete() UserModel(id=user_id).remove() MemberModel().remove(user_id=user_id) return self.render_json(message='')
def members(self, space_id): ''' 更新组成员 @param space_id: @return: ''' page = int(request.args.get('page', 1)) page = page - 1 if page else 0 size = int(request.args.get('size', 10)) kw = request.values.get('kw', '') members, count, user_ids = MemberModel(group_id=space_id).members( page=page, size=size, kw=kw) return self.list_json(list=members, count=count, enable_create=permission.role_upper_master())
def update(self, space_id): form = SpaceForm(request.form, csrf_enabled=False) form.set_id(space_id) if form.validate_on_submit(): space = SpaceModel().get_by_id(space_id) data = form.form2dict() current_app.logger.info(data) # a new type to update a model ret = space.update(data) # create group if 'members' in request.form: MemberModel(group_id=space_id).update_group(members=json.loads(request.form['members'])) return self.render_json(data=space.item()) else: return self.render_json(code=-1, message=form.errors)
def item(self, project_id): """ 获取某个用户组 :param id: :return: """ project_model = ProjectModel(id=project_id) project_info = project_model.item() if not project_info: return self.render_json(code=-1) project_info['members'], count, project_info[ 'user_uids'] = MemberModel().members(project_id=project_id) return self.render_json(data=project_info)
def item(self, project_id): """ 获取某个用户组 :param id: :return: """ project_model = ProjectModel(id=project_id) project_info = project_model.item() if not project_info: return self.render_json(code=-1) group_info = MemberModel().members(project_id=project_id) current_app.logger.info(group_info) return self.render_json(data=dict(project_info, **group_info))
def update(self, space_id): form = SpaceForm(request.form, csrf=False) form.set_id(space_id) if form.validate_on_submit(): space = SpaceModel().get_by_id(space_id) data = form.form2dict() current_app.logger.info(data) # a new type to update a model ret = space.update(data) # create group member = {"user_id": data['user_id'], "role": OWNER} if 'members' in request.form: members = json.loads(request.form['members']) members.append(member) 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)
def login(self): """ user login /passport/ :return: """ form = LoginForm(request.form, csrf=False) if form.validate_on_submit(): if current_app.config['LDAP']: ldap = LDAP(current_app) if form.password.data == '': userbind = None else: userbind = ldap.bind_user(form.email.data, form.password.data) else: ldap = current_app.config['LDAP'] userbind = None if form.email.data in current_app.config['LDAP_PRIVILEGE']: ldap = False if ldap: if userbind: user = UserModel.query.filter_by( email=form.email.data).first() if user is not None: login_user(user) user.fresh_session() return self.render_json(data=current_user.to_json()) else: # ldap验证成功,取信息入库 ldap_user = ldap.get_object_details(form.email.data) user_info = { 'username': ldap_user['displayName'][0].decode(), 'password': generate_password_hash(form.password.data), 'email': form.email.data, 'role': '', 'last_space': 1, 'created_at': datetime.now(), 'updated_at': datetime.now(), } user = UserModel().add(user_info) member_info = { 'user_id': user.id, 'source_id': 1, 'source_type': 'group', 'access_level': 'DEVELOPER', 'status': MemberModel.status_available } m = MemberModel(**member_info) db.session.add(m) db.session.commit() login_user(user) user.fresh_session() return self.render_json(data=current_user.to_json()) else: return self.render_json(code=Code.error_pwd, data=form.errors) else: user = UserModel.query.filter_by(email=form.email.data).first() if user is not None and user.verify_password( form.password.data): login_user(user) user.fresh_session() return self.render_json(data=current_user.to_json()) return self.render_json(code=Code.error_pwd, data=form.errors)