Exemple #1
0
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())
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #4
0
 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)
Exemple #6
0
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)
Exemple #7
0
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})
Exemple #8
0
    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()
Exemple #9
0
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)
Exemple #10
0
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))
Exemple #11
0
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
Exemple #12
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')
Exemple #13
0
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)
Exemple #15
0
 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)
Exemple #17
0
 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)
Exemple #18
0
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'
Exemple #19
0
 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]})
Exemple #22
0
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()
Exemple #23
0
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)
Exemple #24
0
 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)
Exemple #25
0
 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)
Exemple #26
0
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)
Exemple #27
0
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)
Exemple #28
0
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)
Exemple #29
0
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)
Exemple #30
0
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'))