def create_admin(): """Command for create admin""" print('Введите никнейм:') nickname = input() print('Введите логин:') login = input() print('Введите адрес электронной почты:') email = input() print('Ведите пароль:') password = input() print('Повторите пароль:') repeat_password = input() response = requests.post('http://127.0.0.1:5000/user-api', data={ 'nickname': nickname, 'login': login, 'email': email, 'password': password, 'repeat_password': repeat_password, }) if response: user_id = response.json()['user_id'] user = User.get_query().get(user_id) user.importance = 2 get_session().commit() print('Create admin success') print(f'Id for {user}: {user_id}') print('Потвердите ваш аккаунт в личном кабинете') else: print(response.json())
def delete_post(post_id): if current_user.importance == 0: return make_response( jsonify({'message': { 'Ошибка': 'У вас нет прав не это действие' }}), 400) post = Post.get_query().get_or_404(post_id) if current_user.importance == 2 or post.author.get_id( ) == current_user.get_id(): session = get_session() comments = post.comments.all() response = requests.delete( api.url_for(PostResource, post_id=post_id, _external=True)) if not response: flash(response.json()['message'], 'error') return make_response(jsonify(response.json()), response.status_code) for comment in comments: session.delete(comment) session.commit() return make_response(jsonify({'status': 'OK'}), 200) else: return make_response( jsonify({'message': { 'Ошибка': 'У вас нет прав не это действие' }}), 401)
def get_article_list(username): limit = request.args.get('limit', 10, type=int) offset = request.args.get('offset', 0, type=int) search = request.args.get('search', '', type=str) with get_session() as session: user = session.query(Users).filter_by(username=username).one_or_none() if user is not None: # 分词并构建查询 word_list = [f'%{keyword}%' for keyword in search.split(' ')] rule = and_(*[Articles.content.like(w) for w in word_list]) count = session.query(Articles.id).filter_by( user_id=user.id).filter(rule).count() article_list = session.query(Articles).filter_by(user_id=user.id).filter(rule)\ .limit(limit).offset(limit*offset).all() return jsonify({'status': 200, 'total': count, 'list': [{'aid': article.id, 'title': article.title, 'summary': article.summary_html, 'creat_time': article.create_time, 'modify_time': article.modify_time, 'PV': article.PV, 'tags': [tag.tag for tag in article.tags], 'category': article.category } for article in article_list] }) else: return jsonify(NO_USER)
def post(self): args = UserResource.parser_post.parse_args() # <class 'requests.models.Response'> if args['password'] != args['repeat_password']: abort(400, message={'Ошибка': 'Пароли не совпадают'}) repeat_user_login = User.get_query().filter(User.login == args['login']).first() if repeat_user_login: abort(400, message={'Ошибка': 'Пользователь с таким логином уже зарегистрирован'}) repeat_user_email = User.get_query().filter( User.email == args['email']).first() if repeat_user_email: abort(400, message={'Ошибка': 'Пользователь с такми email уже зарегистрирован'}) user = User() user.nickname = args['nickname'] user.login = args['login'] user.email = args['email'] user.create_date = datetime.datetime.now() user.set_password(args['password']) user.confirmed = False session = get_session() session.add(user) session.commit() return make_response( jsonify( { 'redirect': False, 'user_id': user.id } ), 200 )
def upload_img(): f = request.files['file'] user_id = get_jwt_identity() with get_session() as session: user = session.query(Users).filter_by(id=user_id).one_or_none() if user is not None: try: sImg = Image.open(f.stream) weith, height = sImg.size scale = max(weith, height) / 1000 if scale > 1: sImg = sImg.resize( (int(weith / scale), int(height / scale))) type = utils.get_file_type(f.filename) if type is not None: with BytesIO() as img_bytes: sImg.save(img_bytes, format=type) filename = "{}.{}".format( utils.get_file_sha1(img_bytes.getvalue()), type) sImg.save(path.join(img_path, filename)) return jsonify({ 'status': 200, 'msg': '上传成功', 'path': f'img/{filename}' }) else: return jsonify(ILLEGAL_TYPE) except Exception: return jsonify(FAIL_UPLOAD) else: return jsonify(NO_USER)
def delete_comment(comment_id): user_id = get_jwt_identity() with get_session() as session: comment = session.query(Comments)\ .filter_by(id=comment_id).one_or_none() if comment is not None: # 是否具有删除权限 if user_id == comment.user_id or user_id == comment.article.user_id: # 是否是一级评论 if comment.comment_level == 1: # 一级评论则删除所有子评论 session.query(Comments)\ .filter_by(parent_cid=comment_id).delete() else: # 否则父评论数量-1 parent_comment = session.query(Comments).filter_by( id=comment.parent_cid) parent_comment.reply_num -= 1 session.delete(comment) return jsonify({'status': 200, 'msg': '删除成功'}) else: return jsonify(NO_AUTH) else: return jsonify(NO_COMMENT)
def create_article(): json = request.get_json() content = json.get('content') title = json.get('title') tags = json.get('tags') category = json.get('category') if content is None: return jsonify(ILLEGAL_CONTENT) if title is None: return jsonify(ILLEGAL_TITLE) summary = utils.get_summary(content) # 获取摘要 user_id = get_jwt_identity() with get_session() as session: new_article = Articles(title=title, content=content, summary=summary, user_id=user_id) for tag in tags: session.merge(Tags(tag=tag, user_id=user_id)) new_article.tags = session.query(Tags)\ .filter_by(user_id=user_id)\ .filter(Tags.tag.in_(tags)).all() session.merge(Categories(category=category, user_id=user_id)) new_article.category_ = session.query(Categories)\ .filter_by(user_id=user_id, category=category).one_or_none() session.add(new_article) session.commit() return jsonify({'status': 200, 'msg': '创建成功', 'aid': new_article.id})
def sync_to_db(cls, name, cluster): session = get_session() datasource = session.query(cls).filter_by(datasource_name=name).first() if not datasource: datasource = cls(datasource_name=name) session.add(datasource) datasource.cluster = cluster cols = datasource.latest_metadata() if not cols: return for col in cols: col_obj = (session.query(Column).filter_by( datasource_name=name, column_name=col).first()) datatype = cols[col]['type'] if not col_obj: col_obj = Column(datasource_name=name, column_name=col) session.add(col_obj) if datatype == "STRING": col_obj.groupby = True col_obj.filterable = True if col_obj: col_obj.type = cols[col]['type'] col_obj.datasource = datasource col_obj.generate_metrics()
def get_user_tag(username): with get_session() as session: user = session.query(Users).filter_by(username=username).one_or_none() if user is not None: tags = session.query(Tags).filter_by(user_id=user.id) return jsonify({'status': 200, 'tags': [tag.tag for tag in tags]}) else: return jsonify(NO_USER)
def delete_comment(comment_id, post_id): if current_user.is_authenticated and current_user.importance in [1, 2]: comment = Comment.get_query().get(comment_id) if comment: session = get_session() session.delete(comment) session.commit() return redirect(url_for('post.view_post', post_id=post_id))
def test_should_have_an_empty_session(): """ This is a test example, please delete this test before starting the TP. This is a test example, please delete this test before starting the TP. This is a test example, please delete this test before starting the TP. This is a test example, please delete this test before starting the TP. """ assert len(app.get_session()) == 0
def clear_users(): """Delete all users""" users = get_session().query(User).all() if users: for user in users: delete_id(user.id) else: print('Users not found')
def praise_comment(comment_id): with get_session() as session: comment = session.query(Comments)\ .filter_by(id=comment_id).one_or_none() if comment is not None: comment.praise_num = comment.praise_num + 1 return jsonify({'status': 200, 'msg': '操作成功'}) else: return jsonify(NO_COMMENT)
def get_introduction_content(): user_id = get_jwt_identity() with get_session() as session: user = session.query(Users).filter_by(id=user_id).one_or_none() if user is not None: return jsonify({'status': 200, 'content': user.introduction}) else: return jsonify(NO_USER)
def delete(self, post_id): post = Post.get_query().get(post_id) if not post: abort(400, message={'Ошибка': 'Пост не найден'}) session = get_session() session.delete(post) session.commit() return make_response(jsonify({ 'status': 'OK' }), 200)
def get_user_info(username): with get_session() as session: user = session.query(Users).filter_by(username=username).one_or_none() if user is not None: return jsonify({'status': 200, 'username': user.username, 'introduction': user.introduction_html, 'avatar': 'img/{}'.format(user.avatar) }) else: return jsonify(NO_USER)
def delete(self, user_id): user = User.get_query().get(user_id) if not user: abort(400, message={'Error': 'User not found'}) else: session = get_session() session.delete(user) session.commit() return make_response(jsonify({ 'status': 'OK' }), 200)
def test_index_should_set_session_key_user(): """ This is a test example, please delete this test before starting the TP. This is a test example, please delete this test before starting the TP. This is a test example, please delete this test before starting the TP. This is a test example, please delete this test before starting the TP. """ # Call app.index() to fill the session app.index() # Assert that the session is well filled assert app.get_session()['dino'] == 'TREX'
def put(self, post_id): args = PostResource.parser_put.parse_args() post = Post.get_query().get(post_id) if not post: abort(400, message={'Ошибка': 'Пост не найден'}) for key, value in args.items(): post.__setattr__(key, value) session = get_session() session.commit() return make_response(jsonify({ 'status': 'OK' }), 200)
def modify_user_introduction(): json = request.get_json() introduction = json.get('introduction', '') user_id = get_jwt_identity() with get_session() as session: user = session.query(Users).filter_by(id=user_id).one_or_none() if user is not None: user.introduction = introduction return jsonify({'status': 200, 'msg': '修改成功'}) else: return jsonify(NO_USER)
def get_user_list(): limit = request.args.get('limit', 10, type=int) offset = request.args.get('offset', 0, type=int) with get_session() as session: count = session.query(Users.id).count() user_list = session.query(Users).limit( limit).offset(limit*offset).all() return jsonify({'status': 200, 'total': count, 'list': [{'username': user.username, 'introduction': user.introduction_html, 'avatar': 'img/{}'.format(user.avatar) } for user in user_list]})
def clear_data_base(): """Clear all data in data base""" session = get_session() comments = Comment.get_query().all() for comment in comments: session.delete(comment) posts = Post.get_query().all() for post in posts: session.delete(post) users = User.get_query().all() for user in users: session.delete(user) session.commit()
def get_comment_content(comment_id): user_id = get_jwt_identity() with get_session() as session: comment = session.query(Comments)\ .filter_by(id=comment_id).one_or_none() if comment is not None: if user_id == comment.user_id: return jsonify({'status': 200, 'content': comment.content}) else: return jsonify(NO_AUTH) else: return jsonify(NO_COMMENT)
def post(self): args = PostResource.parser_post.parse_args() post = Post() for key, item in args.items(): post.__setattr__(key, item) post.publication_date = datetime.datetime.now() post.publication_date_string = get_date_string() session = get_session() session.add(post) session.commit() return make_response(jsonify({ 'status': 'OK', 'post_id': post.id }), 200)
def put(self, user_id): args = UserResource.parser_put.parse_args() user = User.get_query().get(user_id) if args['password'] is not None: if args['password'] != args['repeat_password']: abort(400, message={'Ошибка': 'Пароли не совпадают'}) if args['email'] is not None: duplicate_email_user = User.get_query().filter(User.email == args['email']).first() if duplicate_email_user: abort(400, message={'Ошибка': 'Пользователь с такми email уже зарегистрирован'}) else: user.confirmed = False user.subscription = False for key, value in args.items(): if value is not None: if key == 'password': user.set_password(value) else: user.__setattr__(key, value) get_session().commit() return make_response(jsonify({ 'status': 'OK' }), 200)
def delete_article(article_id): user_id = get_jwt_identity() with get_session() as session: article = session.query(Articles)\ .filter_by(id=article_id).one_or_none() if article is not None: if user_id == article.user_id: session.delete(article) return jsonify({'status': 200, 'msg': '删除成功'}) else: return jsonify(NO_AUTH) else: return jsonify(NO_POST)
def create_comment(): user_id = request.form.get('user_id') post_id = request.form.get('post_id') content = request.form.get('content') comment = Comment(author_id=user_id, post_id=post_id, content=content) comment.publication_date = datetime.datetime.now() comment.publication_date_string = comment.publication_date.strftime( '%d.%m.%Y %H:%M') session = get_session() session.add(comment) session.commit() return make_response(jsonify({ 'status': 'OK', }), 200)
def top_comment(comment_id): user_id = get_jwt_identity() with get_session() as session: comment = session.query(Comments)\ .filter_by(id=comment_id).one_or_none() if comment is not None: if user_id == comment.article.user_id: # 状态取反 comment.top_status = not comment.top_status return jsonify({'status': 200, 'msg': '操作成功'}) else: return jsonify(NO_AUTH) else: return jsonify(NO_COMMENT)
def get_user_category(username): with get_session() as session: user = session.query(Users).filter_by(username=username).one_or_none() if user is not None: categories = session.query(Categories).filter_by(user_id=user.id) return jsonify({ 'status': 200, 'tags': [ category.category for category in categories if category.category ] }) else: return jsonify(NO_USER)
def confirm_email(token): email = confirm_token(token) if not email: return redirect(url_for('main.index')) user = User.get_query().filter(User.email == email).first_or_404() if current_user.email != user.email: abort(401) if user.confirmed: flash('Аккаунт уже подтвержден', 'success') else: user.confirmed = True user.confirmed_date = datetime.datetime.now() session = get_session() session.commit() flash('Учетная запись успешно подтверждена', 'success') return redirect(url_for('main.index'))