Example #1
0
def sitemap():
    pages = []
    for p in Post.published():
        pages.append({'url': url_for('.post', slug=p.slug, _external=True),
                      'last_modified': p.utc_pub_date,
                      })
    # FIXME: Be lazy with the semistatic pages and categories for the moment
    awhile_ago = arrow.utcnow().replace(days=-10)
    for cat in Category.query.all():
        pages.append({'url': url_for('.category', slug=cat.title.lower(), _external=True),
                      'last_modified': awhile_ago,
                      })
    for page in ('about', 'projects'):
        pages.append({'url': url_for('.semistatic', page=page, _external=True),
                      'last_modified': awhile_ago,
                      })
    posts = (Post.query
             .filter(Post.utc_pub_date < arrow.utcnow().datetime)
             .filter_by(status=Post.PUBLISHED).count())
    last_pub_date = Post.published().order_by(Post.utc_pub_date.desc())[0].utc_pub_date
    for archive_page in xrange(posts / POSTS_PER_ARCHIVE_PAGE):
        pages.append({'url': url_for('.archive', page=archive_page + 1, _external=True),
                      'last_modified': last_pub_date,
                      })
    return render_template('sitemap.xml', pages=pages)
Example #2
0
def raw_feed():
    feed = AtomFeed('bitquabit', feed_url=request.url,
                    subtitle='Opinionated Rants on Life and Software',
                    url=request.host_url)
    for p in Post.published()[:10]:
        feed.add(p.title, enrich(p.body), content_type='html',
                 url=url_for('.post', slug=p.slug), id=url_for('.post', slug=p.slug),
                 updated=p.utc_pub_date, published=p.utc_pub_date)
    return feed.get_response()
Example #3
0
def new():
    form = PostForm(request.form)
    form.pub_date.data = datetime.now()
    form.categories.choices = [(c.id, c.title) for c in Category.query.all()]

    if form.validate_on_submit():
        post = Post()
        post.title = form.title.data
        post.slug = form.slug.data.lower()
        post.status = form.status.data
        post.body = form.body.data
        post.pub_date = form.pub_date.data
        post.categories = Category.query.filter(Category.id.in_(form.categories.data)).all()
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('admin.edit', post_id=post.id))
    return render_template('admin/edit.html', form=form)
Example #4
0
def index():
    posts = Post.published()[:10]
    return render_template('index.html', posts=posts, isindex=True)