def getProductsWithInfo(num_products=None): """See `IBranchCloud`.""" distinct_revision_author = Func("distinct", RevisionCache.revision_author_id) commits = Alias(Count(RevisionCache.revision_id)) epoch = datetime.now(pytz.UTC) - timedelta(days=30) # It doesn't matter if this query is even a whole day out of date, so # use the slave store. result = ISlaveStore(RevisionCache).find( (Product.name, commits, Count(distinct_revision_author), Max(RevisionCache.revision_date)), RevisionCache.product == Product.id, Not(RevisionCache.private), RevisionCache.revision_date >= epoch) result = result.group_by(Product.name) result = result.order_by(Desc(commits)) if num_products: result.config(limit=num_products) return result
def getProductsWithInfo(num_products=None): """See `IBranchCloud`.""" distinct_revision_author = Func( "distinct", RevisionCache.revision_author_id) commits = Alias(Count(RevisionCache.revision_id)) epoch = datetime.now(pytz.UTC) - timedelta(days=30) # It doesn't matter if this query is even a whole day out of date, so # use the slave store. result = ISlaveStore(RevisionCache).find( (Product.name, commits, Count(distinct_revision_author), Max(RevisionCache.revision_date)), RevisionCache.product == Product.id, Not(RevisionCache.private), RevisionCache.revision_date >= epoch) result = result.group_by(Product.name) result = result.order_by(Desc(commits)) if num_products: result.config(limit=num_products) return result