launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #30283
[Merge] ~cjwatson/launchpad:remove-getPOFilesTouchedSince into launchpad:master
Colin Watson has proposed merging ~cjwatson/launchpad:remove-getPOFilesTouchedSince into launchpad:master.
Commit message:
Remove POFileSet.getPOFilesTouchedSince
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/447291
It hasn't been used since commit 47b797b084.
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:remove-getPOFilesTouchedSince into launchpad:master.
diff --git a/lib/lp/translations/interfaces/pofile.py b/lib/lp/translations/interfaces/pofile.py
index 06700b1..a4f2a42 100644
--- a/lib/lp/translations/interfaces/pofile.py
+++ b/lib/lp/translations/interfaces/pofile.py
@@ -424,12 +424,3 @@ class IPOFileSet(Interface):
:param untranslated: Look only for `POFile`s with a credits
message that is not translated.
"""
-
- def getPOFilesTouchedSince(date):
- """Return IDs for PO files that might have been updated since `date`.
-
- :param date: A datetime object to use as the starting date.
-
- :return: a ResultSet over POFile IDs for directly and indirectly
- (through sharing POFiles) touched POFiles since `date`.
- """
diff --git a/lib/lp/translations/model/pofile.py b/lib/lp/translations/model/pofile.py
index 1f76e09..ccd9158 100644
--- a/lib/lp/translations/model/pofile.py
+++ b/lib/lp/translations/model/pofile.py
@@ -21,7 +21,6 @@ from storm.expr import (
Desc,
Exists,
Join,
- LeftJoin,
Not,
Or,
Select,
@@ -1664,103 +1663,6 @@ class POFileSet:
result = IPrimaryStore(POFile).find((POFile, POTMsgSet), clauses)
return result.order_by("POFile.id")
- def getPOFilesTouchedSince(self, date):
- """See `IPOFileSet`."""
- # Avoid circular imports.
- from lp.registry.model.distroseries import DistroSeries
- from lp.registry.model.productseries import ProductSeries
- from lp.translations.model.potemplate import POTemplate
-
- store = IPrimaryStore(POTemplate)
-
- # Find a matching POTemplate and its ProductSeries
- # and DistroSeries, if they are defined.
- MatchingPOT = ClassAlias(POTemplate)
- MatchingPOTJoin = Join(
- MatchingPOT, POFile.potemplate == MatchingPOT.id
- )
- MatchingProductSeries = ClassAlias(ProductSeries)
- MatchingProductSeriesJoin = LeftJoin(
- MatchingProductSeries,
- MatchingPOT.productseriesID == MatchingProductSeries.id,
- )
- MatchingDistroSeries = ClassAlias(DistroSeries)
- MatchingDistroSeriesJoin = LeftJoin(
- MatchingDistroSeries,
- MatchingPOT.distroseriesID == MatchingDistroSeries.id,
- )
-
- # Find any sharing POTemplate corresponding to MatchingPOT
- # and its ProductSeries and DistroSeries, if they are defined.
- OtherPOT = ClassAlias(POTemplate)
- OtherPOTJoin = Join(OtherPOT, And(OtherPOT.name == MatchingPOT.name))
- OtherProductSeries = ClassAlias(ProductSeries)
- OtherProductSeriesJoin = LeftJoin(
- OtherProductSeries,
- OtherPOT.productseriesID == OtherProductSeries.id,
- )
- OtherDistroSeries = ClassAlias(DistroSeries)
- OtherDistroSeriesJoin = LeftJoin(
- OtherDistroSeries, OtherPOT.distroseriesID == OtherDistroSeries.id
- )
-
- # And find a sharing POFile corresponding to a sharing POTemplate,
- # i.e. OtherPOT.
- OtherPOFile = ClassAlias(POFile)
- OtherPOFileJoin = Join(
- OtherPOFile,
- And(
- OtherPOFile.language_id == POFile.language_id,
- OtherPOFile.potemplate_id == OtherPOT.id,
- ),
- )
-
- source = store.using(
- POFile,
- MatchingPOTJoin,
- MatchingProductSeriesJoin,
- MatchingDistroSeriesJoin,
- OtherPOTJoin,
- OtherProductSeriesJoin,
- OtherDistroSeriesJoin,
- OtherPOFileJoin,
- )
-
- results = source.find(
- OtherPOFile,
- And(
- POFile.date_changed >= date,
- Or(
- # OtherPOT is a sharing template with MatchingPOT
- # in the same distribution and sourcepackagename.
- And(
- MatchingPOT.distroseriesID is not None,
- OtherPOT.distroseriesID is not None,
- (
- MatchingDistroSeries.distributionID
- == OtherDistroSeries.distributionID
- ),
- (
- MatchingPOT.sourcepackagenameID
- == OtherPOT.sourcepackagenameID
- ),
- ),
- # OtherPOT is a sharing template with MatchingPOT
- # in the same product.
- And(
- MatchingPOT.productseriesID is not None,
- OtherPOT.productseriesID is not None,
- (
- MatchingProductSeries.productID
- == OtherProductSeries.productID
- ),
- ),
- ),
- ),
- )
- results.config(distinct=True)
- return results
-
@implementer(ITranslationFileData)
class POFileToTranslationFileDataAdapter:
diff --git a/lib/lp/translations/tests/test_pofile.py b/lib/lp/translations/tests/test_pofile.py
index 0c8547b..1d919a1 100644
--- a/lib/lp/translations/tests/test_pofile.py
+++ b/lib/lp/translations/tests/test_pofile.py
@@ -1645,196 +1645,6 @@ class TestPOFileSet(TestCaseWithFactory):
super().setUp()
self.pofileset = getUtility(IPOFileSet)
- def test_POFileSet_getPOFilesTouchedSince_none(self):
- # Make sure getPOFilesTouchedSince returns nothing
- # when there are no touched PO files.
- now = datetime.now(timezone.utc)
- pofiles = self.pofileset.getPOFilesTouchedSince(now)
- self.assertContentEqual([], pofiles)
-
- week_ago = now - timedelta(7)
- pofiles = self.pofileset.getPOFilesTouchedSince(week_ago)
- self.assertContentEqual([], pofiles)
-
- # Even when a POFile is touched, but earlier than
- # what we are looking for, nothing is returned.
- pofile = self.factory.makePOFile("sr")
- pofile.date_changed = week_ago
- pofiles = self.pofileset.getPOFilesTouchedSince(now)
- self.assertContentEqual([], pofiles)
-
- def test_POFileSet_getPOFilesTouchedSince_unshared(self):
- # Make sure actual touched POFiles are returned by
- # getPOFilesTouchedSince.
- now = datetime.now(timezone.utc)
- yesterday = now - timedelta(1)
-
- new_pofile = self.factory.makePOFile("sr")
- new_pofile.date_changed = now
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([new_pofile], pofiles)
-
- # An older file means is not returned.
- week_ago = now - timedelta(7)
- old_pofile = self.factory.makePOFile("sr")
- old_pofile.date_changed = week_ago
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([new_pofile], pofiles)
-
- # Unless we extend the time period we ask for.
- pofiles = self.pofileset.getPOFilesTouchedSince(week_ago)
- self.assertContentEqual([new_pofile, old_pofile], pofiles)
-
- def test_POFileSet_getPOFilesTouchedSince_shared_in_product(self):
- # Make sure actual touched POFiles and POFiles that are sharing
- # with them in the same product are all returned by
- # getPOFilesTouchedSince.
-
- # We create a product with two series, and attach
- # a POTemplate and Serbian POFile to each, making
- # sure they share translations (potemplates have the same name).
- product = self.factory.makeProduct(
- translations_usage=ServiceUsage.LAUNCHPAD
- )
- series1 = self.factory.makeProductSeries(product=product, name="one")
- series2 = self.factory.makeProductSeries(product=product, name="two")
- potemplate1 = self.factory.makePOTemplate(
- name="shared", productseries=series1
- )
- pofile1 = self.factory.makePOFile("sr", potemplate=potemplate1)
- potemplate2 = self.factory.makePOTemplate(
- name="shared", productseries=series2
- )
- pofile2 = potemplate2.getPOFileByLang("sr")
-
- now = datetime.now(timezone.utc)
- yesterday = now - timedelta(1)
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1, pofile2], pofiles)
-
- # Even if one of the sharing POFiles is older, it's still returned.
- week_ago = now - timedelta(7)
- pofile2.date_changed = week_ago
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1, pofile2], pofiles)
-
- # A POFile in a different language is not returned.
- pofile3 = self.factory.makePOFile("de", potemplate=potemplate2)
- pofile3.date_changed = week_ago
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1, pofile2], pofiles)
-
- def test_POFileSet_getPOFilesTouchedSince_smaller_ids(self):
- # Make sure that all relevant POFiles are returned,
- # even the sharing ones with smaller IDs.
- # This is a test for bug #414832 which caused sharing POFiles
- # of the touched POFile not to be returned if they had
- # IDs smaller than the touched POFile.
- product = self.factory.makeProduct(
- translations_usage=ServiceUsage.LAUNCHPAD
- )
- series1 = self.factory.makeProductSeries(product=product, name="one")
- series2 = self.factory.makeProductSeries(product=product, name="two")
- potemplate1 = self.factory.makePOTemplate(
- name="shared", productseries=series1
- )
- pofile1 = self.factory.makePOFile("sr", potemplate=potemplate1)
- potemplate2 = self.factory.makePOTemplate(
- name="shared", productseries=series2
- )
- pofile2 = potemplate2.getPOFileByLang("sr")
- now = datetime.now(timezone.utc)
- yesterday = now - timedelta(1)
- week_ago = now - timedelta(7)
- pofile1.date_changed = week_ago
-
- # Let's make sure the condition from the bug holds,
- # since pofile2 is created implicitly with the makePOTemplate call.
- self.assertTrue(pofile1.id < pofile2.id)
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1, pofile2], pofiles)
-
- def test_POFileSet_getPOFilesTouchedSince_shared_in_distribution(self):
- # Make sure actual touched POFiles and POFiles that are sharing
- # with them in the same distribution/sourcepackage are all returned
- # by getPOFilesTouchedSince.
-
- # We create a distribution with two series with the same
- # sourcepackage in both, and attach a POTemplate and Serbian
- # POFile to each, making sure they share translations
- # (potemplates have the same name).
- distro = self.factory.makeDistribution()
- distro.translations_usage = ServiceUsage.LAUNCHPAD
- series1 = self.factory.makeDistroSeries(
- distribution=distro, name="one"
- )
- sourcepackagename = self.factory.makeSourcePackageName()
- potemplate1 = self.factory.makePOTemplate(
- name="shared",
- distroseries=series1,
- sourcepackagename=sourcepackagename,
- )
- pofile1 = self.factory.makePOFile("sr", potemplate=potemplate1)
-
- series2 = self.factory.makeDistroSeries(
- distribution=distro, name="two"
- )
- potemplate2 = self.factory.makePOTemplate(
- name="shared",
- distroseries=series2,
- sourcepackagename=sourcepackagename,
- )
- pofile2 = potemplate2.getPOFileByLang("sr")
-
- # Now the test actually starts.
- now = datetime.now(timezone.utc)
- yesterday = now - timedelta(1)
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1, pofile2], pofiles)
-
- # Even if one of the sharing POFiles is older, it's still returned.
- week_ago = now - timedelta(7)
- pofile2.date_changed = week_ago
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1, pofile2], pofiles)
-
- # A POFile in a different language is not returned.
- pofile3 = self.factory.makePOFile("de", potemplate=potemplate2)
- pofile3.date_changed = week_ago
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1, pofile2], pofiles)
-
- def test_POFileSet_getPOFilesTouchedSince_external_pofiles(self):
- # Make sure POFiles which are in different products
- # are not returned even though they have the same potemplate name.
- series1 = self.factory.makeProductSeries(name="one")
- series1.product.translations_usage = ServiceUsage.LAUNCHPAD
- series2 = self.factory.makeProductSeries(name="two")
- series1.product.translations_usage = ServiceUsage.LAUNCHPAD
- self.assertNotEqual(series1.product, series2.product)
-
- potemplate1 = self.factory.makePOTemplate(
- name="shared", productseries=series1
- )
- pofile1 = self.factory.makePOFile("sr", potemplate=potemplate1)
-
- potemplate2 = self.factory.makePOTemplate(
- name="shared", productseries=series2
- )
- pofile2 = self.factory.makePOFile("sr", potemplate=potemplate2)
-
- # Now the test actually starts.
- now = datetime.now(timezone.utc)
- yesterday = now - timedelta(1)
- week_ago = now - timedelta(7)
-
- # Second POFile has been modified earlier than yesterday,
- # and is attached to a different product, even if the template
- # name is the same. It's not returned.
- pofile2.date_changed = week_ago
- pofiles = self.pofileset.getPOFilesTouchedSince(yesterday)
- self.assertContentEqual([pofile1], pofiles)
-
def test_getPOFilesWithTranslationCredits(self):
# Initially, we only get data from the sampledata.
sampledata_pofiles = list(