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 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)
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)
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)
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)
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)
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))
def test_add(self): self.user_data_login['password'] = generate_password_hash( user_data_login['password']) user = UserModel(**self.user_data_login) user.save()
def active(self, user_id): user = UserModel(id=user_id) user.block_active(UserModel.status_active) return self.render_json(data=user.item())
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)
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
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()
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()