summaryrefslogtreecommitdiff
path: root/sphinx/websupport/storage/sqlalchemystorage.py
diff options
context:
space:
mode:
authorJacob Mason <jacoblmason@gmail.com>2010-08-09 18:31:13 -0500
committerJacob Mason <jacoblmason@gmail.com>2010-08-09 18:31:13 -0500
commit0f98c779c0813ffe3413f8678bb7c8cd88aabdab (patch)
treea18ca4493af5cebe6feefaf41a200b52b238dd41 /sphinx/websupport/storage/sqlalchemystorage.py
parent18ef86f0452595e0d7a414ceddfc9615ca476549 (diff)
downloadsphinx-git-0f98c779c0813ffe3413f8678bb7c8cd88aabdab.tar.gz
added get_metadata
Diffstat (limited to 'sphinx/websupport/storage/sqlalchemystorage.py')
-rw-r--r--sphinx/websupport/storage/sqlalchemystorage.py14
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()