def load_values_for_side(): g.recent_entries = Entry.fetch_recent_entries( max(g.items_for_side, g.entries_per_page)) g.recent_comments = Comment.fetch_recent_comments( max(g.items_for_side, g.entries_per_page)) g.tag_counts = Tag.fetch_tag_counts() g.archives = Entry.fetch_archives()
def day_page(year, month, day, page = 1): if page < 1: return redirect(url_for('day_page', year = year, month = month, day = day)) try: posted_on = datetime(year, month, day) except ValueError: return abort(400) else: g.posted_on = posted_on g.page = page g.entries = Entry.fetch_day_entries( posted_on = posted_on, page = page, limit = g.entries_per_page) if g.entries_per_page * (page - 1) + len(g.entries) < \ Entry.n_day_entries(posted_on): g.has_older = True else: g.has_older = False g.has_newer = True if page > 1 else False return render_template('day_page.html')
def entry_editing_page(): g.active = {'entry': True} if request.method == 'GET': entry_id = request.args.get('entry_id', '').strip() else: entry_id = request.form.get('entry_id', '').strip() entry = Entry.get_by_id(int(entry_id)) if entry_id.isdigit() else None if request.method == 'POST': if entry is None: return abort(400) title = request.form.get('title', '').strip() subtitle = request.form.get('subtitle', '').strip() body = request.form.get('body', '').strip() extend = request.form.get('extend', '').strip() s_tags = request.form.get('tags', '').strip() to_save = False if title != entry.title: entry.title = title to_save = True if subtitle != entry.subtitle: entry.subtitle = subtitle to_save = True if body != entry.body: entry.body = body to_save = True if extend != entry.extend: entry.extend = extend to_save = True if to_save: entry.save() labels = list(set([t.strip() for t in s_tags.split(',')])) tags = [tag for tag in entry.tags] if labels != [tag.label for tag in tags]: for tag in tags: tag.delete() for label in labels: Tag(entry.id, label).save(clear_cache = False) g.entry = entry return render_template('admin/edit_entry_page.html')
def delete_entry(): entry_id = request.form.get('entry_id', '').strip() if entry_id and entry_id.isdigit(): entry = Entry.get_by_id(int(entry_id)) if entry: entry.delete() return redirect(url_for('admin_top_page')) else: return abort(404) else: return abort(400)
def entry_page(entry_id): mc_key = 'Entry_%d' % entry_id html = g.mc.get(mc_key) if html is None: entry = Entry.get_by_id(entry_id) if entry: g.entry = entry html = render_template('entry_page.html') g.mc.set(mc_key, html) else: return abort(404) return html
def tag_page(label, page = 1): if page < 1: return redirect(url_for('tag_page', label = label)) g.label = label g.page = page g.entries = Entry.fetch_tagged_entries( label = label, page = page, limit = g.entries_per_page) if g.entries_per_page * (page - 1) + len(g.entries) < Tag.n_entries(label): g.has_older = True else: g.has_older = False g.has_newer = True if page > 1 else False return render_template('tag_page.html')
def admin_top_page(): g.active = {"top": True} g.sqlalchemy_database_uri = app.config["SQLALCHEMY_DATABASE_URI"].replace("sqlite:///", "") g.n_total_comments = Comment.n_total_count() g.n_total_entries = Entry.n_total_count() g.n_total_tags = Tag.n_total_count() g.n_total_users = User.n_total_count() g.db_updated_at = datetime.fromtimestamp(getmtime(g.sqlalchemy_database_uri)) g.db_bytes = getsize(g.sqlalchemy_database_uri) g.mc_stats = {} for server, stats in g.mc.get_stats(): d = dict( cmd_get=int(stats[b"cmd_get"]), get_hits=int(stats[b"get_hits"]), total_items=int(stats[b"total_items"]) ) d["hit_ratio"] = "%5.2lf %%" % (d["get_hits"] / d["cmd_get"] * 100) g.mc_stats[server.decode("utf-8")] = d return render_template("admin/top.html")
def post_comment(): entry_id = request.form.get('entry_id', '').strip() author_name = request.form.get('author_name', '').strip() title = request.form.get('comment_title', '').strip() body = request.form.get('comment_body', '').strip() if entry_id and entry_id.isdigit(): entry = Entry.get_by_id(int(entry_id)) if entry: pass else: return abort(400) else: return abort(400) if author_name and title and body: Comment(entry_id = entry.id, author_name = author_name, title = title, body = body).save(clear_cache = False) return redirect(url_for('entry_page', entry_id = entry.id)) else: return abort(400)