def fetchProjectsForDisplay(self): """See `ITranslationGroup`.""" # Avoid circular imports. from lp.registry.model.product import ( Product, ProductWithLicenses, ) using = [ Product, LeftJoin(LibraryFileAlias, LibraryFileAlias.id == Product.iconID), LeftJoin( LibraryFileContent, LibraryFileContent.id == LibraryFileAlias.contentID), ] columns = ( Product, ProductWithLicenses.composeLicensesColumn(), LibraryFileAlias, LibraryFileContent, ) product_data = ISlaveStore(Product).using(*using).find( columns, Product.translationgroupID == self.id, Product.active == True) product_data = product_data.order_by(Product.displayname) return [ ProductWithLicenses(product, tuple(licenses)) for product, licenses, icon_alias, icon_content in product_data]
def get_distroseries_pofiles(self, series, date=None, component=None, languagepack=None): """See `IVPOExport`. Selects `POFiles` based on the 'series', last modified 'date', archive 'component', and whether it belongs to a 'languagepack' """ tables = [ POFile, POTemplate, ] conditions = [ POTemplate.distroseries == series, POTemplate.iscurrent == True, POFile.potemplate == POTemplate.id, ] if date is not None: conditions.append( Or(POTemplate.date_last_updated > date, POFile.date_changed > date)) if component is not None: tables.extend([ SourcePackagePublishingHistory, Component, ]) conditions.extend([ SourcePackagePublishingHistory.distroseries == series, SourcePackagePublishingHistory.component == Component.id, POTemplate.sourcepackagename == SourcePackagePublishingHistory.sourcepackagenameID, Component.name == component, SourcePackagePublishingHistory.dateremoved == None, SourcePackagePublishingHistory.archive == series.main_archive, ]) if languagepack: conditions.append(POTemplate.languagepack == True) # Use the slave store. We may want to write to the distroseries # to register a language pack, but not to the translation data # we retrieve for it. query = ISlaveStore(POFile).using(*tables).find( POFile, And(*conditions)) # Order by POTemplate. Caching in the export scripts can be # much more effective when consecutive POFiles belong to the # same POTemplate, e.g. they'll have the same POTMsgSets. sort_list = [POFile.potemplateID, POFile.languageID] return query.order_by(sort_list).config(distinct=True)
def get_distroseries_pofiles(self, series, date=None, component=None, languagepack=None): """See `IVPOExport`. Selects `POFiles` based on the 'series', last modified 'date', archive 'component', and whether it belongs to a 'languagepack' """ tables = [ POFile, POTemplate, ] conditions = [ POTemplate.distroseries == series, POTemplate.iscurrent == True, POFile.potemplate == POTemplate.id, ] if date is not None: conditions.append(Or( POTemplate.date_last_updated > date, POFile.date_changed > date)) if component is not None: tables.extend([ SourcePackagePublishingHistory, Component, ]) conditions.extend([ SourcePackagePublishingHistory.distroseries == series, SourcePackagePublishingHistory.component == Component.id, POTemplate.sourcepackagename == SourcePackagePublishingHistory.sourcepackagenameID, Component.name == component, SourcePackagePublishingHistory.dateremoved == None, SourcePackagePublishingHistory.archive == series.main_archive, ]) if languagepack: conditions.append(POTemplate.languagepack == True) # Use the slave store. We may want to write to the distroseries # to register a language pack, but not to the translation data # we retrieve for it. query = ISlaveStore(POFile).using(*tables).find( POFile, And(*conditions)) # Order by POTemplate. Caching in the export scripts can be # much more effective when consecutive POFiles belong to the # same POTemplate, e.g. they'll have the same POTMsgSets. sort_list = [POFile.potemplateID, POFile.languageID] return query.order_by(sort_list).config(distinct=True)
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