Exemple #1
0
def posts_add(page=False):
    post = Post()

    if page: urls = 'admin.pages'
    else: urls = 'admin.posts'

    if request.args.get('edit'):
        post = Post.query.get(request.args.get('edit'))
        if post:
            if post.parent:
                return redirect(url_for(urls+'_add', edit=post.parent))
            if request.form:
                post_id = Post.update(request.form, post)
                flash(messages['updated']+' ('+str(post)+')')
                return redirect(url_for(urls+'_add', edit=post_id))
        else:
            return handle_404()
    else:
        if request.form:
            post_id = Post.create(request.form)
            flash(messages['added']+' ('+str(post)+')')
            return redirect(url_for(urls+'_add', edit=post_id))

    folders = Folder.get_all()

    if page:
        title = gettext('New - Page')
    else:
        title = gettext('New - Post')


    return render_template('admin/posts_new.html', folders=folders, post=post, title=title, page=page, urls=urls)
Exemple #2
0
def sitemap():
    posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).all()
    folders = Folder.get_all()

    pages = []

    # home
    pages.append({'url': request.url_root, 'freq': 'daily', 'prio': '1'})

    # folders
    for folder in folders:
        if folder.guid != '':
            url = request.url_root + folder.guid + '/'
            modified = folder.modified.strftime('%Y-%m-%d')
            pages.append({'url': url, 'mod': modified, 'freq': 'weekly', 'prio': '0.6'})

    # pages
    posts = Post.filter(Post.status == 'published', Post.type == 'page').order_by(Post.created).limit(20)
    for post in posts:
        if post.slug != 'index':
            url = request.url_root + post.guid + '.html'
            modified = post.modified.strftime('%Y-%m-%d')
            pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.9'})

    # posts
    posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20,)
    for post in posts:
        url = request.url_root + post.guid + '.html'
        modified = post.modified.strftime('%Y-%m-%d')
        pages.append({'url': url, 'mod': modified, 'freq': 'monthly', 'prio': '0.8'})

    response = make_response(render_template(Theme.get_template('_sitemap.xml'), pages=pages))
    response.headers["Content-Type"] = 'application/xml'
    return response
Exemple #3
0
def posts(page=False):
    numbers = Post.count_by_status(page)
    if not request.args.get('filter'):
        query = Post.filter(
            Post.status << ['draft', 'published'],
            Post.type == ('page' if page else 'post')).order_by(Post.created)
    else:
        query = Post.filter(
            Post.status == request.args.get('filter'),
            Post.type == ('page' if page else 'post')).order_by(Post.created)

    if page:
        title = gettext('Page')
    else:
        title = gettext('Posts')

    paginator = Paginator(query=query, page=request.args.get('page'))

    if page:
        urls = 'admin.pages'
    else:
        urls = 'admin.posts'

    return render_template('admin/posts.html',
                           pages=paginator.links,
                           title=title,
                           posts=paginator.items,
                           numbers=numbers,
                           filter=request.args.get('filter'),
                           page=page,
                           urls=urls)
Exemple #4
0
def is_post(slug):
    post = Post.get(Post.guid == slug)
    if post:
        if post.slug == 'index' and post.id_folder != 0:
            return redirect('/' + post.folder.guid + '/')

        post.views += 1
        post.save()

        if post.type == 'post':
            post.is_post = True
            post.comments = SimpleComment.filter(SimpleComment.id_post == post.id, SimpleComment.status == 'valid').order_by(SimpleComment.created, 'asc').all()

            if session.get('user_id'):
                form = LoggedCommentForm()
            else:
                form = GuestCommentForm()

            if form.validate_on_submit():
                comment = SimpleComment.add(request.form, post.id)
                if fypress.cache:
                    fypress.cache.delete(get_cache_key())

                return redirect(request.url + '#comment_%s' % comment.id)

            return render_template(Theme.get_template('post.html'), this=post, show_sidebar=False, comment_form=form)
        else:
            post.is_page = True
            post.pages = Post.filter(Post.id_folder == post.id_folder, Post.status == 'published', Post.type == 'page').order_by(Post.created).all()
            return render_template(Theme.get_template('page.html'), this=post)
    else:
        return is_404()
Exemple #5
0
def posts_delete():
    post = Post.query.get(request.args.get('id'))
    if post:
        Post.delete(post)
        flash(messages['deleted']+' ('+str(post)+')')
        return redirect(get_redirect_target())
    else:
        return handle_404()
Exemple #6
0
 def _ctx_get_posts(order='post.created DESC',
                    limit=5,
                    type='post',
                    folder=False):
     if not folder:
         return Post.filter(Post.status == 'published',
                            Post.type == type).order_by(order).limit(
                                limit, 0)
     else:
         return Post.filter(Post.status == 'published', Post.type == type,
                            Post.id_folder == folder).order_by(order).limit(
                                limit, 0)
Exemple #7
0
def posts(page=False):
    numbers = Post.count_by_status(page)
    if not request.args.get('filter'):
        if page:
            query = Post.query.where(' _table_.post_status IN ("draft", "published") AND _table_.post_type="page"').order_by('created')
        else:
            query = Post.query.where(' _table_.post_status IN ("draft", "published") AND _table_.post_type="post"').order_by('created')
    else:
        if page:
            query   = Post.query.filter(status=request.args.get('filter'), type='page').order_by('created')
        else:
            query   = Post.query.filter(status=request.args.get('filter'), type='post').order_by('created')

    if page:
        title = gettext('Page')
    else:
        title = gettext('Posts')

    paginator = Paginator(
        query    = query,
        page     = request.args.get('page')
    )

    if page: urls = 'admin.pages'
    else: urls = 'admin.posts'

    return render_template('admin/posts.html', pages=paginator.links, title=title, posts=paginator.items, numbers=numbers, filter=request.args.get('filter'), page=page, urls=urls)
Exemple #8
0
def feed_folder(folder):
    if folder.split('/')[0] != 'admin':
        folder = Folder.get(Folder.guid == folder)
        if folder:
            posts = Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20)

            feed = AtomFeed(
                fypress.options['name'] + ' • ' + folder.name,
                subtitle=folder.seo_content,
                feed_url=request.url_root + 'feed/',
                url=request.url_root,
                generator=None
            )

            for post in posts:
                feed.add(
                    post.title,
                    post.content,
                    content_type='html',
                    author=post.user.nicename,
                    url=request.url_root + post.guid,
                    updated=post.modified,
                    published=post.created
                )

            response = feed.get_response()
            response.headers["Content-Type"] = 'application/xml'

            return response
        else:
            return is_404()
    else:
        return is_admin_404()
Exemple #9
0
def feed():

    feed = AtomFeed(
        fypress.options['name'],
        subtitle=fypress.options['slogan'],
        feed_url=request.url_root + 'feed/',
        url=request.url_root,
        generator=None
    )

    posts = Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created).limit(20)
    for post in posts:
        feed.add(
            post.title,
            post.content,
            content_type='html',
            author=post.user.nicename,
            url=request.url_root + post.guid,
            updated=post.modified,
            published=post.created
        )

    response = feed.get_response()
    response.headers["Content-Type"] = 'application/xml'

    return response
Exemple #10
0
    def _ctx_image(item=False):
        if request.path == '/articles/':
            return False
        elif isinstance(item, Folder):
            index = Post.filter(Post.id_folder == item.id, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one()
            if index and index.id_image != 0:
                return index.image
            return False
        elif isinstance(item, Post):
            if item.id_image != 0:
                return item.image

            index = Post.filter(Post.id_folder == item.id_folder, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one()
            if index and index.id_image != 0:
                return index.image

        return False
Exemple #11
0
def posts_move():
    post = Post.get(Post.id == request.args.get('id'))
    if post:
        post.move(request.args.get('status'))
        flash(messages['moved'] + ' to ' + request.args.get('status') + ' (' + str(post) + ')')
        return redirect(get_redirect_target())
    else:
        return handle_404()
Exemple #12
0
def posts_move():
    post = Post.get(Post.id == request.args.get('id'))
    if post:
        post.move(request.args.get('status'))
        flash(messages['moved'] + ' to ' + request.args.get('status') + ' (' +
              str(post) + ')')
        return redirect(get_redirect_target())
    else:
        return handle_404()
Exemple #13
0
def is_folder(slug):
    if slug.split('/')[0] != 'admin':
        folder = Folder.get(Folder.guid == slug)
        if folder:
            folder.is_folder = True
            folder.pages = Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'page').order_by(Post.created).all()
            folder.index = Post.filter(Post.id_folder == folder.id, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one()
            folder.posts = Paginator(
                query=Post.filter(Post.id_folder == folder.id, Post.status == 'published', Post.type == 'post').order_by(Post.created),
                page=request.args.get('page'),
                theme='bootstrap',
                per_page=4
            )

            return render_template(Theme.get_template('folder.html'), this=folder)
        else:
            return is_404()
    else:
        return is_admin_404()
Exemple #14
0
 def _ctx_description(item=False):
     if request.path == '/articles/':
         return False
     elif isinstance(item, Folder):
         index = Post.filter(Post.id_folder == item.id, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one()
         if index:
             return index.get_excerpt(155)
         return item.seo_content
     elif isinstance(item, Post):
         return item.get_excerpt(155)
     else:
         return fypress.options['slogan']
Exemple #15
0
def posts():
    folder = Folder()
    folder.name = 'Articles'
    folder.guid = 'articles'
    folder.is_folder = True
    folder.posts = Paginator(
        query=Post.filter(Post.status == 'published', Post.type == 'post').order_by(Post.created, 'DESC'),
        page=request.args.get('page'),
        theme='bootstrap',
        per_page=5
    )
    return render_template(Theme.get_template('articles.html'), this=folder)
Exemple #16
0
def posts(page=False):
    numbers = Post.count_by_status(page)
    if not request.args.get('filter'):
        query = Post.filter(Post.status << ['draft', 'published'], Post.type == ('page' if page else 'post')).order_by(Post.created)
    else:
        query = Post.filter(Post.status == request.args.get('filter'), Post.type == ('page' if page else 'post')).order_by(Post.created)

    if page:
        title = gettext('Page')
    else:
        title = gettext('Posts')

    paginator = Paginator(
        query=query,
        page=request.args.get('page')
    )

    if page:
        urls = 'admin.pages'
    else:
        urls = 'admin.posts'

    return render_template('admin/posts.html', pages=paginator.links, title=title, posts=paginator.items, numbers=numbers, filter=request.args.get('filter'), page=page, urls=urls)
Exemple #17
0
    def _ctx_image(item=False):
        if request.path == '/articles/':
            return False
        elif isinstance(item, Folder):
            index = Post.filter(Post.id_folder == item.id,
                                Post.slug == 'index',
                                Post.status == 'published',
                                Post.type == 'page').one()
            if index and index.id_image != 0:
                return index.image
            return False
        elif isinstance(item, Post):
            if item.id_image != 0:
                return item.image

            index = Post.filter(Post.id_folder == item.id_folder,
                                Post.slug == 'index',
                                Post.status == 'published',
                                Post.type == 'page').one()
            if index and index.id_image != 0:
                return index.image

        return False
Exemple #18
0
    def update_all(data):
        if data:
            exist = []
            for item in data:
                if item.has_key('id') and item['id'] != '1':
                    exist.append(int(item['id']))
                    folder = Folder.query.get(item['id'])
                    folder.depth = item['depth']
                    folder.left = item['left']
                    folder.right = item['right']
                    folder.parent = item['parent_id']

                    folder.modified = 'NOW()'
                    Folder.query.update(folder)

            all_folders = []
            folders = Folder.query.get_all(array=True)
            for folder in folders:
                all_folders.append(int(folder.id))

            diff = [item for item in all_folders if item not in exist]
            for item in diff:
                if item != 1:
                    from fypress.post import Post
                    posts = Post.query.filter(folder_id=item).all(array=True)
                    for post in posts:
                        post.folder_id = 1
                        Post.query.update(post)
                    Folder.query.delete(Folder.query.get(item))

            for folder in folders:
                folder.count_posts()

            Folder.build_guid()
            from fypress.post import Post

            Post.link_posts()
Exemple #19
0
    def update_all(data):
        if data:
            exist = []
            for item in data:
                if item.has_key('id') and item['id'] != '1':
                    exist.append(int(item['id']))
                    folder = Folder.get(Folder.id == item['id'])
                    folder.depth = item['depth']
                    folder.left = item['left']
                    folder.right = item['right']
                    folder.parent = item['parent_id']

                    folder.modified = datetime.datetime.now()
                    folder.save()

            all_folders = []
            folders = Folder.all()
            for folder in folders:
                all_folders.append(int(folder.id))

            diff = [item for item in all_folders if item not in exist]
            for item in diff:
                if item != 1:
                    from fypress.post import Post
                    posts = Post.filter(Post.id_folder == item).all()
                    for post in posts:
                        post.id_folder = 1
                        post.save()
                    Folder.get(Folder.id == item).remove()

            for folder in folders:
                folder.count_posts()

            Folder.build_guid()
            from fypress.post import Post

            Post.link_posts()
Exemple #20
0
    def update_all(data):
        if data:
            exist = []
            for item in data:
                if item.has_key('id') and item['id'] != '1':
                    exist.append(int(item['id']))
                    folder = Folder.get(Folder.id == item['id'])
                    folder.depth = item['depth']
                    folder.left = item['left']
                    folder.right = item['right']
                    folder.parent = item['parent_id']

                    folder.modified = datetime.datetime.now()
                    folder.save()

            all_folders = []
            folders = Folder.all()
            for folder in folders:
                all_folders.append(int(folder.id))

            diff = [item for item in all_folders if item not in exist]
            for item in diff:
                if item != 1:
                    from fypress.post import Post
                    posts = Post.filter(Post.id_folder == item).all()
                    for post in posts:
                        post.id_folder = 1
                        post.save()
                    Folder.get(Folder.id == item).remove()

            for folder in folders:
                folder.count_posts()

            Folder.build_guid()
            from fypress.post import Post

            Post.link_posts()
Exemple #21
0
    def update_all(data):
        if data:
            exist = []
            for item in data:
                if item.has_key('id') and item['id'] != '1':
                    exist.append(int(item['id']))
                    folder = Folder.query.get(item['id'])
                    folder.depth    = item['depth']
                    folder.left     = item['left']
                    folder.right    = item['right']
                    folder.parent   = item['parent_id']

                    folder.modified = 'NOW()'
                    Folder.query.update(folder)

            all_folders = []
            folders = Folder.query.get_all(array=True)
            for folder in folders:
                all_folders.append(int(folder.id))

            diff = [item for item in all_folders if item not in exist]
            for item in diff:
                if item != 1:
                    from fypress.post import Post 
                    posts = Post.query.filter(folder_id=item).all(array=True)
                    for post in posts:
                        post.folder_id = 1
                        Post.query.update(post)
                    Folder.query.delete(Folder.query.get(item))

            for folder in folders:
                folder.count_posts()

            Folder.build_guid()
            from fypress.post import Post
            
            Post.link_posts()        
Exemple #22
0
 def _ctx_description(item=False):
     if request.path == '/articles/':
         return False
     elif isinstance(item, Folder):
         index = Post.filter(Post.id_folder == item.id,
                             Post.slug == 'index',
                             Post.status == 'published',
                             Post.type == 'page').one()
         if index:
             return index.get_excerpt(155)
         return item.seo_content
     elif isinstance(item, Post):
         return item.get_excerpt(155)
     else:
         return fypress.options['slogan']
Exemple #23
0
def root():
    index = Post.filter(Post.id_folder == 1, Post.slug == 'index', Post.status == 'published', Post.type == 'page').one()
    return render_template(Theme.get_template('index.html'), index=index, this=False)
Exemple #24
0
 def _ctx_get_posts(order='post.created DESC', limit=5, type='post', folder=False):
     if not folder:
         return Post.filter(Post.status == 'published', Post.type == type).order_by(order).limit(limit, 0)
     else:
         return Post.filter(Post.status == 'published', Post.type == type, Post.id_folder == folder).order_by(order).limit(limit, 0)