Exemplo n.º 1
0
    def __init__(self, gc):
        self.tdb = tdb_lite(gc)
        self.profile_categories = {}
        TZ = gc.display_tz

        def _table(metadata):
            return sa.Table(
                gc.db_app_name + '_hardcache', metadata,
                sa.Column('category',
                          sa.String,
                          nullable=False,
                          primary_key=True),
                sa.Column('ids', sa.String, nullable=False, primary_key=True),
                sa.Column('value', sa.String, nullable=False),
                sa.Column('kind', sa.String, nullable=False),
                sa.Column('expiration',
                          sa.DateTime(timezone=True),
                          nullable=False))

        enginenames_by_category = {}
        all_enginenames = set()
        for item in gc.hardcache_categories:
            chunks = item.split(":")
            if len(chunks) < 2:
                raise ValueError("Invalid hardcache_overrides")
            category = chunks.pop(0)
            enginenames_by_category[category] = []
            for c in chunks:
                if c == '!profile':
                    self.profile_categories[category] = True
                elif c.startswith("!"):
                    raise ValueError("WTF is [%s] in hardcache_overrides?" % c)
                else:
                    all_enginenames.add(c)
                    enginenames_by_category[category].append(c)

        assert ('*' in enginenames_by_category.keys())

        engines_by_enginename = {}
        for enginename in all_enginenames:
            engine = gc.dbm.get_engine(enginename)
            md = self.tdb.make_metadata(engine)
            table = _table(md)
            indstr = self.tdb.index_str(table, 'expiration', 'expiration')
            self.tdb.create_table(table, [indstr])
            engines_by_enginename[enginename] = table

        self.mapping = {}
        for category, enginenames in enginenames_by_category.iteritems():
            self.mapping[category] = [
                engines_by_enginename[e] for e in enginenames
            ]
Exemplo n.º 2
0
    def __init__(self, gc):
        self.tdb = tdb_lite(gc)
        self.profile_categories = {}
        TZ = gc.display_tz

        def _table(metadata):
            return sa.Table(gc.db_app_name + '_hardcache', metadata,
                            sa.Column('category', sa.String, nullable = False,
                                      primary_key = True),
                            sa.Column('ids', sa.String, nullable = False,
                                      primary_key = True),
                            sa.Column('value', sa.String, nullable = False),
                            sa.Column('kind', sa.String, nullable = False),
                            sa.Column('expiration',
                                      sa.DateTime(timezone = True),
                                      nullable = False)
                            )
        enginenames_by_category = {}
        all_enginenames = set()
        for item in gc.hardcache_categories:
            chunks = item.split(":")
            if len(chunks) < 2:
                raise ValueError("Invalid hardcache_overrides")
            category = chunks.pop(0)
            enginenames_by_category[category] = []
            for c in chunks:
                if c == '!profile':
                    self.profile_categories[category] = True
                elif c.startswith("!"):
                    raise ValueError("WTF is [%s] in hardcache_overrides?" % c)
                else:
                    all_enginenames.add(c)
                    enginenames_by_category[category].append(c)

        assert('*' in enginenames_by_category.keys())

        engines_by_enginename = {}
        for enginename in all_enginenames:
            engine = gc.dbm.get_engine(enginename)
            md = self.tdb.make_metadata(engine)
            table = _table(md)
            indstr = self.tdb.index_str(table, 'expiration', 'expiration')
            self.tdb.create_table(table, [ indstr ])
            engines_by_enginename[enginename] = table

        self.mapping = {}
        for category, enginenames in enginenames_by_category.iteritems():
            self.mapping[category] = [ engines_by_enginename[e]
                                       for e in enginenames]
Exemplo n.º 3
0
    def __init__(self, gc):
        self.tdb = tdb_lite(gc)
        metadata = self.tdb.make_metadata(gc.dbm.hardcache_db)

        self.table = sa.Table(gc.db_app_name + '_hardcache', metadata,
                         sa.Column('category', sa.String, nullable = False,
                                   primary_key = True),
                         sa.Column('ids', sa.String, nullable = False,
                                   primary_key = True),
                         sa.Column('value', sa.String, nullable = False),
                         sa.Column('kind', sa.String, nullable = False),
                         sa.Column('expiration',
                                   sa.DateTime(timezone = True),
                                   nullable = False)
                         )

        indstr = self.tdb.index_str(self.table, 'expiration', 'expiration')
        self.tdb.create_table(self.table, [ indstr ])