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
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
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
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
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 {}
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 {}
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 {}