Example #1
0
def create_comment():
    result = comment_schema.load(request.get_json())

    if result.errors:
        return result.errors, 400

    comment = Comment(**result.data)

    db.session.add(comment)
    db.session.commit()
    return comment.to_json().data, 200
Example #2
0
def save_comment(id=None):
    user = auth.service.get_user()
    data = dict(request.form)
    data['upload'] = request.files.getlist('upload')

    v = Validator(data)
    v.fields('upload').image()
    v.fields('file.id').integer(nullable=True)
    if v.is_valid():
        if not id:
            v.field('entity_name').required()
            v.field('entity_id').integer(nullable=True).required()
            if not v.valid_data.list('url') and not v.valid_data.list('upload'):
                v.field('comment').required(message="Напишите хоть что-нибудь...")
        if v.is_valid() and user.is_authorized():
            data = v.valid_data
            if not id:
                comment = Comment()
                comment.author_id = user.id
                comment.entity = data.entity_name
                comment.entity_id = data.entity_id
            else:
                comment = Comment.get(id)
                if comment:
                    comment.modify_datetime = datetime.datetime.now()
                    comment.status = Comment.Status.MODIFIED

            if comment:
                return save(comment, data)

        v.add_error('comment', 'Что-то пошло не так... Попробуйте позже.')
    return jsonify({'status': 'fail',
                    'errors': v.errors})
Example #3
0
def create_comments(meal_date_id, request_user_id=None):
    request_params = request.get_json()
    content = request_params.get('content')
    request_params['mealDateId'] = meal_date_id
    request_params['userId'] = request_user_id

    if content is None:
        return jsonify(
            userMessage="내용을 입력해주세요."
        ), 400

    if meal_date_id is None:
        return jsonify(
            userMessage="댓글을 작성할 식단날짜를 입력해주세요."
        ), 400

    try:
        meal_date = db.session.query(MealDate).filter(MealDate.id == meal_date_id).one()
    except:
        return jsonify(
            userMessage="댓글 작성할 식단날짜를 잘못 선택하셨습니다."
        )

    if request_user_id is None:
        return jsonify(
            userMessage="유저 정보가 없습니다."
        ), 400

    try:
        comment = Comment()
        comment = comment.update_data(**request_params)
        db.session.add(comment)
        db.session.commit()

        q = db.session.query(Comment, User) \
            .outerjoin(User, User.id == Comment.user_id) \
            .filter(Comment.id == comment.id)

        return jsonify(
            data=SerializableModelMixin.serialize_row(q.one())
        ), 200
    except:
        return jsonify(
            userMessage="server deny your request, check param value"
        ), 403
Example #4
0
def delete(id):
    user = auth.service.get_user()
    if user.is_authorized():
        comment = Comment.get(id)
        if comment and (user.is_admin or comment.author == user or 'manage_comments' in user.get_permissions()):
            comment_json = None

            def delete_parent(comment):
                should_delete = True

                if comment is not None and comment.status == Comment.Status.DELETED:
                    for quote in comment.quotes:
                        if quote.status != Comment.Status.DELETED:
                            should_delete = False
                    if should_delete:
                        db.session.delete(comment)
                        db.session.flush()
                        delete_parent(comment.quote_for)

            if comment.quotes:
                comment.status = Comment.Status.DELETED
                comment_json = get_comment_json(comment)
            else:
                db.session.delete(comment)
                db.session.flush()
                delete_parent(comment.quote_for)

            db.session.flush()
            entity = comment.get_entity()

            if entity:
                entity.after_delete_comment(comment)

            db.session.commit()
            return jsonify({'status': 'ok',
                            'comment': comment_json})

    return jsonify({'status': 'fail'})
Example #5
0
def json_all_comments(entity, entity_id):
    comments = Comment.get_for(entity, entity_id, lazy=False)

    comments = {'data': [get_comment_json(comment) for comment in comments]}
    return jsonify(comments)
Example #6
0
def test_destroy(client):
    topic = Topic.create({'title': 'title1', 'body': 'body1'})
    comment = Comment.create({'topic_id': topic.id(), 'body': 'body1'})
    comment.destroy()
    assert (Topic.is_exists(topic.id()))
    assert (not Comment.is_exists(comment.id()))
Example #7
0
def all(request):
    twitter_id = int(request.query.get('twitter_id'))
    cs = Comment.find_all(twitter_id=twitter_id)
    cs_json = [c.json() for c in cs]
    return json_response(cs_json)
Example #8
0
def update(request):
    form = request.json()
    id = int(form.get('id'))
    t = Comment.update(id, form)
    return json_response(t.json())
Example #9
0
def delete(request):
    comment_id = int(request.query.get('id'))
    c = Comment.delete(comment_id)
    return json_response(c.json())
Example #10
0
def add(request):
    u = current_user(request)
    form = request.json()
    c = Comment.new(form, u.id)
    return json_response(c.json())