Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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='')
Esempio n. 7
0
    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)
Esempio n. 8
0
    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='')
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)
Esempio n. 11
0
 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))
Esempio n. 12
0
    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)
Esempio n. 13
0
    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)
Esempio n. 14
0
    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())
Esempio n. 15
0
    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)
Esempio n. 16
0
    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)
Esempio n. 17
0
    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='')
Esempio n. 18
0
 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())
Esempio n. 19
0
    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)
Esempio n. 20
0
    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)
Esempio n. 21
0
    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))
Esempio n. 22
0
    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)
Esempio n. 23
0
    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)