Ejemplo n.º 1
0
def cleaner():
    logger.info('Start cleaner!')
    published_posts = Post.select().where(Post.published_at != None)
    for post in published_posts:
        os.remove(post.file_path)
        logger.info(f'File {post.file_path} was removed')
        Post.update(file_deleted=True).where(Post.id == post.id).execute()
Ejemplo n.º 2
0
def create_post(post_in: PostIn):
    author = get_user(user_name=post_in.author)
    if author:
        post = Post(author=post_in.author,
                    title=post_in.title,
                    body=post_in.body)
        try:
            post.save()
            return post
        except:
            return False
Ejemplo n.º 3
0
 def post_exists(url):
     exists = Post.select().where(Post.url == url).exists()
     if exists:
         logger.info(f'Post exists: {url}')
     else:
         logger.info(f'Found new post: {url}')
     return exists
Ejemplo n.º 4
0
def delete_comments_by_post(post_id: str):
    post = Post.objects(pk=post_id)
    if post:
        comments = Comment.objects(post_id=post_id)
        for comment in comments:
            comment.delete()
            return True
    return False
Ejemplo n.º 5
0
def publish():
    logger.info('Start to publish')
    bot = init_bot()

    unpublished_posts = Post.select().where(
        Post.published_at == None).order_by(Post.created_at.desc()).limit(1)

    for post in unpublished_posts:
        logger.info(f'Publish {post.title}')
        msg = prepare_message(post)
        bot.send_message(chat_id=settings.tg_chat_id,
                         text=msg,
                         parse_mode='Markdown')
        bot.send_audio(chat_id=settings.tg_chat_id,
                       audio=open(post.file_path, 'rb'),
                       timeout=300,
                       title=post.title)
        Post.update(published_at=datetime.now(timezone.utc)).where(
            Post.id == post.id).execute()
        logger.info(f'Post {post.title} successfully published!')
Ejemplo n.º 6
0
def submit_post():
    req_data = get_post_data_from_req(request)
    post = Post.submit_post(current_user, req_data.get("text"),
                            req_data.get("title"))
    if isinstance(post, str):
        return transitify({"error": post, "error_type": "create-post"})

    post_id = req_data.get('parent', Post.root_post_id())
    relation = Relation.link_posts(post_id, post, current_user)
    if isinstance(relation, str):
        return transitify({"error": relation, "error_type": "link-posts"})

    app_state = {"success": "posted successfully"}
    if req_data.get('current_post') and req_data.get('ask_for'):
        page = req_data.get(
            "page",
            math.ceil(float(total_actions(post_id)) / float(ACTIONS_PER_PAGE)))
        app_state.update(
            handle_asks(req_data.get('current_post'), req_data.get('ask_for'),
                        page))
    return transitify(app_state)
Ejemplo n.º 7
0
def submit_post():
    req_data = get_post_data_from_req(request)
    post = Post.submit_post(current_user,
                     req_data.get("text"),
                     req_data.get("title"))
    if isinstance(post, basestring):
        return transitify({"error": post, "error_type": "create-post"})

    post_id = req_data.get('parent', Post.root_post_id())
    relation = Relation.link_posts(post_id, 
                                   post, 
                                   current_user)
    if isinstance(relation, basestring):
        return transitify({"error": relation, "error_type": "link-posts"})

    app_state = {"success": "posted successfully"}
    if req_data.get('current_post') and req_data.get('ask_for'):
        page = req_data.get("page", math.ceil(float(total_actions(post_id)) / 
                                              float(ACTIONS_PER_PAGE)))
        app_state.update(handle_asks(req_data.get('current_post'), 
                                    req_data.get('ask_for'), page))
    return transitify(app_state)
Ejemplo n.º 8
0
def create_or_get_post(user_id, title, text):
    session = Session()

    post = session.query(Post).filter_by(title=title).first()
    if not post:
        post = Post(title=title, text=text, user_id=user_id)
        session.add(post)
        session.commit()

    post_id = post.id
    session.close()

    return post_id
Ejemplo n.º 9
0
def get_post_id_from_text(s):
    if is_number(s):
        return int(s)
    rt = route_from(s, method="GET")
    if rt[0] == 'views.render_post':
        return rt[1]['post_id']
    elif rt[0] == 'views.post_page':
        try:
            return Post.query.filter(Post.url==rt[1]['post_url']) \
                             .with_entities(Post.id).one()[0]
        except NoResultFound:
            return None
    elif rt[0] == 'views.index':
        return Post.root_post_id()
Ejemplo n.º 10
0
def get_post_id_from_text(s):
    if is_number(s):
        return int(s)
    rt = route_from(s, method="GET")
    if rt[0] == 'views.render_post':
        return rt[1]['post_id']
    elif rt[0] == 'views.post_page':
        try:
            return Post.query.filter(Post.url==rt[1]['post_url']) \
                             .with_entities(Post.id).one()[0]
        except NoResultFound:
            return None
    elif rt[0] == 'views.index':
        return Post.root_post_id()
Ejemplo n.º 11
0
def index():
    app_state = {"user": writable_current_user()}
    return render_post(Post.root_post_id())
Ejemplo n.º 12
0
def index():
    app_state = {"user": writable_current_user()}
    return render_post(Post.root_post_id())
Ejemplo n.º 13
0
 def save_post(self, model: models.Post):
     Post.create(**model.dict())
Ejemplo n.º 14
0
def delete_post(post_id: str):
    post = Post.objects(pk=post_id).first()
    if post:
        post.delete()
        return True
    return False
Ejemplo n.º 15
0
def get_post(post_id):
    try:
        post = Post.objects(pk=post_id).first()
        return post
    except:
        return False
Ejemplo n.º 16
0
def get_posts_by_author(author: str):
    if User.objects(user_name=author).first():
        posts = Post.objects(author=author)
        return posts
    return False