Mercurial > wikked
changeset 285:bdc682d02427
Add a DB column for each page's endpoint.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 27 Sep 2014 14:06:21 -0700 |
parents | e2e809fb44d4 |
children | c0508545f8e5 |
files | wikked/db/base.py wikked/db/sql.py |
diffstat | 2 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/wikked/db/base.py Sat Sep 27 14:05:41 2014 -0700 +++ b/wikked/db/base.py Sat Sep 27 14:06:21 2014 -0700 @@ -32,7 +32,7 @@ raise NotImplementedError() def getPages(self, subdir=None, meta_query=None, uncached_only=False, - fields=None): + endpoint_only=None, no_endpoint_only=False, fields=None): raise NotImplementedError() def getPage(self, url=None, path=None, fields=None, raise_if_none=True):
--- a/wikked/db/sql.py Sat Sep 27 14:05:41 2014 -0700 +++ b/wikked/db/sql.py Sat Sep 27 14:06:21 2014 -0700 @@ -16,6 +16,7 @@ from sqlalchemy.orm.exc import NoResultFound from wikked.db.base import Database from wikked.page import Page, PageData, FileSystemPage +from wikked.utils import split_page_url logger = logging.getLogger(__name__) @@ -34,6 +35,7 @@ # to be indexable by SQL). url = Column(String(260), unique=True) path = Column(String(260), unique=True) + endpoint = Column(String(64)) title = Column(UnicodeText) raw_text = Column(UnicodeText(length=2 ** 31)) formatted_text = Column(UnicodeText(length=2 ** 31)) @@ -125,7 +127,7 @@ class SQLDatabase(Database): """ A database cache based on SQL. """ - schema_version = 4 + schema_version = 5 def __init__(self, config): Database.__init__(self) @@ -294,7 +296,7 @@ yield p.url def getPages(self, subdir=None, meta_query=None, uncached_only=False, - fields=None): + endpoint_only=None, no_endpoint_only=False, fields=None): q = self.session.query(SQLPage) if meta_query: q = q.join(SQLReadyMeta) @@ -307,6 +309,10 @@ q = q.filter(SQLPage.url.like(subdir)) if uncached_only: q = q.filter(SQLPage.is_ready is False) + if endpoint_only: + q = q.filter(SQLPage.endpoint == endpoint_only) + elif no_endpoint_only: + q = q.filter(SQLPage.endpoint == None) q = self._addFieldOptions(q, fields) for p in q.all(): yield SQLDatabasePage(self, p, fields) @@ -440,6 +446,7 @@ po = SQLPage() po.time = datetime.datetime.now() po.url = page.url + po.endpoint, _ = split_page_url(page.url) po.path = page.path po.title = page.title po.raw_text = page.raw_text