diff options
author | Jacob Mason <jacoblmason@gmail.com> | 2010-08-09 18:31:13 -0500 |
---|---|---|
committer | Jacob Mason <jacoblmason@gmail.com> | 2010-08-09 18:31:13 -0500 |
commit | 0f98c779c0813ffe3413f8678bb7c8cd88aabdab (patch) | |
tree | a18ca4493af5cebe6feefaf41a200b52b238dd41 /sphinx/websupport/storage/sqlalchemystorage.py | |
parent | 18ef86f0452595e0d7a414ceddfc9615ca476549 (diff) | |
download | sphinx-git-0f98c779c0813ffe3413f8678bb7c8cd88aabdab.tar.gz |
added get_metadata
Diffstat (limited to 'sphinx/websupport/storage/sqlalchemystorage.py')
-rw-r--r-- | sphinx/websupport/storage/sqlalchemystorage.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sphinx/websupport/storage/sqlalchemystorage.py b/sphinx/websupport/storage/sqlalchemystorage.py index 94318a965..1aaa84738 100644 --- a/sphinx/websupport/storage/sqlalchemystorage.py +++ b/sphinx/websupport/storage/sqlalchemystorage.py @@ -12,6 +12,7 @@ from datetime import datetime from sqlalchemy.orm import aliased +from sqlalchemy.sql import func from sphinx.websupport.errors import * from sphinx.websupport.storage import StorageBackend @@ -84,6 +85,19 @@ class SQLAlchemyStorage(StorageBackend): session.close() raise UserNotAuthorizedError() + def get_metadata(self, docname, moderator): + session = Session() + subquery = session.query( + Comment.id, Comment.node_id, + func.count('*').label('comment_count')).group_by( + Comment.node_id).subquery() + nodes = session.query(Node.id, subquery.c.comment_count).outerjoin( + (subquery, Node.id==subquery.c.node_id)).filter( + Node.document==docname) + session.close() + session.commit() + return dict([(k, v or 0) for k, v in nodes]) + def get_data(self, node_id, username, moderator): session = Session() node = session.query(Node).filter(Node.id == node_id).one() |