def archive(): db = g.db dates = db.query(Post.published).all() month = {} for d in dates: date_str = d.published.strftime('%Y-%m') if month.get(date_str, None) is None: month[date_str] = 1 else: month[date_str] += 1 tags = db.query(Tag.id, Tag.name, func.count(Tag.id).label('count'))\ .join(PostTag, Tag.id == PostTag.tag_id)\ .group_by(Tag.id).all() for t in tags: t.idstr = Obfuscator.obfuscate(t.id) return render_template('archive.html', month=month, tags=tags, title=SITE['title'])
__author__ = 'wangdai' import os from flask import Flask, g from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base JERRY_DIR = os.path.dirname(__file__) DB_PATH = 'sqlite:///%s/jerry.db' % JERRY_DIR DB_ENGINE = create_engine(DB_PATH) MODEL_BASE = declarative_base(bind=DB_ENGINE) DB_SESSION = sessionmaker(bind=DB_ENGINE) APP = Flask(__name__) APP.secret_key = os.urandom(24) # APP.permanent_session_lifetime = 10 APP.jinja_env.filters['date_format'] = lambda date, format_string='%Y-%m-%d': date.strftime(format_string) import jerry.views # register routes to APP import jerry.models # register models to MODEL_BASE.metadata from jerry.utils import Obfuscator MODEL_BASE.metadata.create_all() MODEL_BASE.to_dict = lambda self: {c.name: getattr(self, c.name, None) for c in self.__table__.columns} MODEL_BASE.get = classmethod(lambda cls, obj_id: None if not obj_id else g.db.query(cls).filter_by(id=obj_id).first()) MODEL_BASE.idstr = property(lambda self: Obfuscator.obfuscate(self.id))