Esempio n. 1
0
def add(db_session, data, username):
    logging.info(Msg.START + json.dumps(data))

    post = db_session.query(Post).filter(
        Post.id == data.get('post_id')).first()
    if post is None:
        logging.error(Msg.PARENT_INVALID + 'relative post doesnt exist')
        raise Http_error(404, Msg.PARENT_INVALID)

    model_instance = Comment()
    model_instance.id = str(uuid4())
    model_instance.message = data.get('message')
    model_instance.post_id = data.get('post_id')
    model_instance.creation_date = Now()
    model_instance.creator = username

    logging.debug(Msg.DATA_ADDITION)

    db_session.add(model_instance)

    event_data = {
        'entity_name': 'Post',
        'entity_id': post.id,
        'action': 'COMMENT',
        'target': post.creator,
    }

    add_event(event_data, username, db_session)

    logging.debug(Msg.DB_ADD + json.dumps(model_to_dict(model_instance)))

    logging.info(Msg.END)
    return model_instance
Esempio n. 2
0
def edit(id, db_session, data, username):
    logging.info(Msg.START + " user is {}".format(username))
    if "id" in data.keys():
        del data["id"]

    logging.debug(Msg.EDIT_REQUST)

    model_instance = get(id, db_session)
    if model_instance:
        logging.debug(Msg.MODEL_GETTING)
    else:
        logging.debug(Msg.MODEL_GETTING_FAILED)
        raise Http_error(404, {'comment': Msg.NOT_FOUND})

    post = db_session.query(Post).filter(
        Post.id == model_instance.post_id).first()
    if post is None:
        logging.error(Msg.NOT_FOUND + ' post no longer exists')
        raise Http_error(404, {'post': Msg.NOT_FOUND})

    if model_instance.creator != username:
        logging.error(Msg.ALTERING_AUTHORITY_FAILED)
        raise Http_error(403, {'creator': Msg.ALTERING_AUTHORITY_FAILED})

    for key, value in data.items():
        # TODO  if key is valid attribute of class
        setattr(model_instance, key, value)
    model_instance.modification_date = Now()
    model_instance.modifier = username

    logging.debug(Msg.MODEL_ALTERED)

    event_data = {
        'entity_name': 'Post',
        'entity_id': post.id,
        'action': 'RECOMMENT',
        'target': post.creator,
    }

    add_event(event_data, username, db_session)

    logging.debug(Msg.EDIT_SUCCESS + json.dumps(model_to_dict(model_instance)))

    logging.info(Msg.END)

    return model_instance
Esempio n. 3
0
def add(db_session, data, username):
    logging.info(Msg.START + json.dumps(data))
    post = db_session.query(Post).filter(
        Post.id == data.get('post_id')).first()

    if post is None:
        logging.error(Msg.POST_ALREADY_LIKED + json.dumps(data))
        raise Http_error(404, Msg.POST_NOT_FOUND)

    instance = db_session.query(Like).filter(
        Like.post_id == data.get('post_id')).filter(
            Like.creator == username).first()
    if instance is not None:
        logging.error(Msg.POST_ALREADY_LIKED)
        raise Http_error(409, Msg.POST_ALREADY_LIKED)

    model_instance = Like()

    model_instance.post_id = data.get('post_id')
    model_instance.id = str(uuid4())
    model_instance.creation_date = Now()
    model_instance.creator = username

    logging.debug(Msg.DATA_ADDITION)

    db_session.add(model_instance)

    post.likes += 1

    event_data = {
        'entity_name': 'Post',
        'entity_id': post.id,
        'action': 'LIKE',
        'target': post.creator,
    }

    add_event(event_data, username, db_session)

    logging.debug(Msg.DB_ADD + json.dumps(model_to_dict(model_instance)))

    logging.info(Msg.END)
    return model_instance
Esempio n. 4
0
def add(data, username, db_session):
    logging.info(Msg.START)

    required_data = ['message', 'reciever']

    check_schema(required_data, data.keys())

    reciever = get_profile(data['reciever'], db_session)

    logging.debug(Msg.SCHEMA_CHECKED)

    model_instance = DirectMessage()
    model_instance.sender = username
    model_instance.id = str(uuid4())
    model_instance.creation_date = Now()
    model_instance.reciever = reciever.username
    model_instance.message = data.get('message')
    model_instance.seen = False

    logging.debug(Msg.DATA_ADDITION + "  || Data :" + json.dumps(data))

    db_session.add(model_instance)

    event_data = {
        'entity_name': 'DirectMessage',
        'entity_id': model_instance.id,
        'action': 'ADD',
        'target': model_instance.reciever,
    }

    add_event(event_data, username, db_session)

    logging.debug(Msg.DB_ADD)

    logging.info(Msg.END)

    return model_instance
Esempio n. 5
0
def delete(post_id, db_session, username):
    logging.info(Msg.START + "user is {}  ".format(username) +
                 "delete like for post_id= {}".format(post_id))
    logging.debug(Msg.DELETE_REQUEST + "like of post_id= {}".format(post_id))
    like = db_session.query(Like).filter(Like.post_id == post_id).filter(
        Like.creator == username).first()
    if like is None:
        logging.error(Msg.NOT_FOUND + ' post is not liked by user yet')
        raise Http_error(404, Msg.NOT_FOUND)

    # if like.creator != username:
    #     logging.error(Msg.ALTERING_AUTHORITY_FAILED)
    #     raise Http_error(403, Msg.ALTERING_AUTHORITY_FAILED)

    # db_session.query(Like).filter(Like.post_id == post_id).filter(
    #     Like.creator == username).delete()
    db_session.query(Like).filter(Like.post_id == post_id,
                                  Like.creator == username).delete()
    post = db_session.query(Post).filter(Post.id == post_id).first()

    post.likes -= 1

    event_data = {
        'entity_name': 'Post',
        'entity_id': post.id,
        'action': 'DISLIKE',
        'target': post.creator,
    }

    add_event(event_data, username, db_session)

    logging.debug(Msg.UNLIKED_POST.format(post_id, username))

    logging.debug(Msg.DELETE_SUCCESS)
    logging.info(Msg.END)

    return {}
Esempio n. 6
0
def delete(id, db_session, username):
    logging.info(Msg.START + "user is {}  ".format(username) +
                 "comment_id= {}".format(id))
    logging.debug(Msg.DELETE_REQUEST + "comment_id= {}".format(id))

    comment = db_session.query(Comment).filter(Comment.id == id).first()

    post = db_session.query(Post).filter(Post.id == comment.post_id).first()
    if post is None:
        logging.error(Msg.NOT_FOUND + ' post no longer exists')
        raise Http_error(404, {'post': Msg.NOT_FOUND})

    if comment is None:
        logging.error(Msg.DELETE_FAILED + Msg.NOT_FOUND)
        raise Http_error(404, Msg.NOT_FOUND)

    if comment.creator != username:
        logging.error(Msg.ALTERING_AUTHORITY_FAILED)
        raise (403, Msg.ALTERING_AUTHORITY_FAILED)

    db_session.query(Comment).filter(Comment.id == id).delete()

    event_data = {
        'entity_name': 'Post',
        'entity_id': post.id,
        'action': 'DISCOMMENT',
        'target': post.creator,
    }

    add_event(event_data, username, db_session)

    logging.debug(Msg.DELETE_SUCCESS)

    logging.info(Msg.END)

    return {}
Esempio n. 7
0
def delete(direct_id, db_session, username):
    logging.info(Msg.START + 'user is {}  '.format(username) +
                 'direct_message= {}'.format(direct_id))

    logging.debug(Msg.DELETE_REQUEST + 'direct_message= {}'.format(direct_id))

    logging.debug(Msg.MODEL_GETTING)

    model_instance = db_session.query(DirectMessage).filter(
        DirectMessage.id == direct_id).first()
    if model_instance is None:
        logging.error(Msg.NOT_FOUND +
                      ' direct message by id = {}'.format(direct_id))
        raise Http_error(404, {'id': Msg.NOT_FOUND})

    if username != model_instance.sender:
        logging.error(Msg.NOT_ACCESSED)
        raise Http_error(401, {'username': Msg.NOT_ACCESSED})

    db_session.query(DirectMessage).filter(
        DirectMessage.id == direct_id).delete()

    event_data = {
        'entity_name': 'DirectMessage',
        'entity_id': model_instance.id,
        'action': 'DELETE',
        'target': model_instance.reciever,
    }

    add_event(event_data, username, db_session)

    logging.debug(Msg.DELETE_SUCCESS)

    logging.info(Msg.END)

    return {}