Beispiel #1
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='')
Beispiel #2
0
    def create_user(self):
        form = RegistrationForm(request.form, csrf_enabled=False)
        if form.validate_on_submit():
            user_info = form.form2dict()
            # add user
            user = UserModel().add(user_info)
            # send an email
            message = u"""Hi, %s
                    <br> <br>Welcome to walle, it cost a lot of time and lock to meet you, enjoy it : )
                    <br><br>name: %s<br>password: %s""" \
                              % (user.username, user.email, form.password.data)
            emails.send_email(user.email, 'Welcome to walle', message, '')

            return self.render_json(data=user.item(user_id=user.id))
        return self.render_error(code=Code.form_error, message=form.errors)
Beispiel #3
0
    def post(self, user_id=None, action=None):
        """
        create user
        /user/

        :return:
        """
        super(UserAPI, self).post()

        if action and action == 'avatar':
            return self.avatar(user_id)

        form = RegistrationForm(request.form, csrf_enabled=False)
        if form.validate_on_submit():
            user = UserModel().add(form.form2dict())
            return self.render_json(data=user.item(user_id=user.id))
        return self.render_json(code=-1, message=form.errors)
Beispiel #4
0
    def create_user(self):
        form = RegistrationForm(request.form, csrf=False)
        if form.validate_on_submit():
            user_info = form.form2dict()
            # add user
            user = UserModel().add(user_info)
            # send an email
            message = """Hi, %s
                    <br> <br>Welcome to walle, it cost a lot of time and lock to meet you, enjoy it : )
                    <br><br>name: %s<br>password: %s""" \
                              % (user.username, user.email, form.password.data)

            try:
                emails.send_email(user.email, 'Welcome to walle', message, '')
            except Exception as e:
                # todo, response error message to the front.
                current_app.logger.warning(e)

            return self.render_json(data=user.item(user_id=user.id))
        return self.render_error(code=Code.form_error, message=form.errors)
Beispiel #5
0
 def menu(self):
     role = 10
     user = UserModel(id=current_user.id).item()
     menu = MenuModel().menu(role=role)
     space = {
         'current': '',
         'available': '',
     }
     # TODO
     # 超管不需要展示空间列表
     if current_user.role != SUPER:
         space = {
             'current': session['space_info'],
             'available': session['space_list'],
         }
     data = {
         'user': user,
         'menu': menu,
         'space': space,
     }
     return self.render_json(data=data)
Beispiel #6
0
    def put(self, user_id, action=None):
        """
        edit user
        /user/<int:user_id>

        :return:
        """
        super(UserAPI, self).put()

        if action:
            if action in self.actions:
                self_action = getattr(self, action.lower(), None)
                return self_action(user_id=user_id)
            else:
                abort(404)

        form = UserUpdateForm(request.form, csrf_enabled=False)
        if form.validate_on_submit():
            user = UserModel(id=user_id)
            user.update_name_pwd(username=form.username.data, password=form.password.data)
            return self.render_json(data=user.item())

        return self.render_json(code=-1, message=form.errors)
Beispiel #7
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 = float(request.args.get('size', 10))
        kw = request.values.get('kw', '')

        uids = []
        if current_user.role <> SUPER:
            members = MemberModel(group_id=current_user.last_space).members()
            uids = members['user_ids']

        user_model = UserModel()
        user_list, count = user_model.list(uids=uids, page=page, size=size, kw=kw)
        filters = {
            'username': ['线上', '线下'],
            'status': ['正常', '禁用']
        }
        return self.list_json(list=user_list, count=count, table=self.table(filters), enable_create=permission.enable_role(MASTER))
Beispiel #8
0
    def test_add(self):

        self.user_data_login['password'] = generate_password_hash(
            user_data_login['password'])
        user = UserModel(**self.user_data_login)
        user.save()
Beispiel #9
0
 def active(self, user_id):
     user = UserModel(id=user_id)
     user.block_active(UserModel.status_active)
     return self.render_json(data=user.item())
Beispiel #10
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)
Beispiel #11
0
    def members_new(self,
                    group_id=None,
                    project_id=None,
                    page=1,
                    size=10,
                    kw=None):
        """
        获取单条记录
        :param role_id:
        :return:
        """
        group_id = group_id if group_id else self.group_id
        project_id = project_id if project_id else self.project_id
        source_id = group_id if group_id else project_id
        source_type = self.source_type_group if group_id else self.source_type_project
        query = self.query.filter(MemberModel.source_id == source_id).filter(
            MemberModel.source_type == source_type)
        query = query.join(UserModel, UserModel.id == MemberModel.user_id)
        if kw:
            query = query.filter(
                or_(UserModel.username.like('%' + kw + '%'),
                    UserModel.email.like('%' + kw + '%')))

        query = query.add_columns(UserModel.username)

        count = query.count()
        data = query.order_by(MemberModel.id.asc()).offset(
            int(size) * int(page)).limit(size).all()

        list = []
        for p in data:
            item = p[0].to_json()
            item['username'] = p[1]
            list.append(item)

        return list, count

        # TODO
        groups, count = MemberModel.query_paginate(page=page,
                                                   limit=size,
                                                   filter_name_dict=filters)

        user_ids = []
        user_role = members = {}
        current_app.logger.info(groups)

        for group_info in groups:
            user_ids.append(group_info.user_id)
            # TODO
            user_role[group_info.user_id] = group_info.access_level

        current_app.logger.info(user_ids)
        user_model = UserModel()
        user_info = user_model.fetch_by_uid(uids=set(user_ids))
        if user_info:
            for user in user_info:
                if user_role.has_key(user['id']):
                    user['role'] = user_role[user['id']]

        members['user_ids'] = user_ids
        members['members'] = user_info
        members['count'] = count
        return members
Beispiel #12
0
 def test_add_owner(self):
     self.user_owner_login['role'] = OWNER
     self.user_owner_login['password'] = generate_password_hash(
         self.user_owner_login['password'])
     user = UserModel(**self.user_owner_login)
     user.save()
Beispiel #13
0
 def test_add(self):
     self.user_super_login['role'] = SUPER
     self.user_super_login['password'] = generate_password_hash(self.user_super_login['password'])
     user = UserModel(**self.user_super_login)
     user.save()