Code review comment for lp:~jtv/launchpad/bug-146855

Revision history for this message
Jeroen T. Vermeulen (jtv) wrote :

=== modified file 'cronscripts/rosetta-approve-imports.py'
--- cronscripts/rosetta-approve-imports.py 2009-09-18 07:39:51 +0000
+++ cronscripts/rosetta-approve-imports.py 2009-09-21 19:14:06 +0000
@@ -9,11 +9,11 @@

 import _pythonpath

-from canonical.config import config
-from lp.translations.scripts.import_approval import AutoApproveProcess
+from lp.translations.scripts.import_queue_gardener import ImportQueueGardener

 if __name__ == '__main__':
- script = AutoApproveProcess(
- 'rosetta-approve-imports', dbuser=config.poimport.dbuser)
+ script = ImportQueueGardener(
+ 'translations-import-queue-gardener',
+ dbuser='translations_import_queue_gardener')
     script.lock_and_run()

=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2009-09-02 19:06:19 +0000
+++ database/schema/security.cfg 2009-09-21 18:55:31 +0000
@@ -435,13 +435,29 @@
 public.account = SELECT, INSERT
 public.customlanguagecode = SELECT
 public.translationgroup = SELECT
-public.translationimportqueueentry = SELECT, DELETE
+public.translationimportqueueentry = SELECT
 public.translationmessage = SELECT, INSERT, UPDATE
 public.translationrelicensingagreement = SELECT
 public.translator = SELECT
 public.validpersoncache = SELECT
 public.validpersonorteamcache = SELECT

+[translations_import_queue_gardener]
+# Translations import queue management
+type=user
+groups=script
+public.customlanguagecode = SELECT
+public.distribution = SELECT
+public.distroseries = SELECT
+public.language = SELECT
+public.person = SELECT
+public.pofile = SELECT
+public.potemplate = SELECT
+public.product = SELECT
+public.productseries = SELECT
+public.sourcepackagename = SELECT
+public.translationimportqueueentry = SELECT, DELETE, UPDATE
+
 [poexport]
 # Rosetta export script
 type=user

=== modified file 'lib/lp/translations/doc/poimport.txt'
--- lib/lp/translations/doc/poimport.txt 2009-09-18 13:48:00 +0000
+++ lib/lp/translations/doc/poimport.txt 2009-09-21 18:58:48 +0000
@@ -16,8 +16,8 @@
     >>> from lp.registry.model.sourcepackagename import SourcePackageName
     >>> from lp.translations.model.potemplate import POTemplateSubset
     >>> from lp.translations.scripts.po_import import ImportProcess
- >>> from lp.translations.scripts.import_approval import (
- ... AutoApproveProcess)
+ >>> from lp.translations.scripts.import_queue_gardener import (
+ ... ImportQueueGardener)
     >>> import datetime
     >>> import pytz
     >>> UTC = pytz.timezone('UTC')
@@ -674,7 +674,7 @@
     <BLANKLINE>
     The Launchpad team

-Now the auto-approval script runs. This can happen anytime, since it's
+Now the queue gardener runs. This can happen anytime, since it's
 asynchronous to the po-import script. The script tries to approve any
 entries that have not been approved, but look like they could be,
 without human intervention. This involves a bit of guesswork about what
@@ -685,7 +685,7 @@

     >>> import logging
     >>> from canonical.launchpad.ftests.logger import MockLogger
- >>> process = AutoApproveProcess('approver', test_args=[])
+ >>> process = ImportQueueGardener('approver', test_args=[])
     >>> process.logger = MockLogger()
     >>> process.logger.setLevel(logging.INFO)
     >>> process.main()
@@ -766,11 +766,11 @@
     >>> print entry.status.name
     NEEDS_REVIEW

-The auto-approval script runs again. This time it sees the two
-submitted translations and approves them for import based on some
-heuristic intelligence.
+The queue gardener runs again. This time it sees the two submitted
+translations and approves them for import based on some heuristic
+intelligence.

- >>> process = AutoApproveProcess('approver', test_args=[])
+ >>> process = ImportQueueGardener('approver', test_args=[])
     >>> process.logger = MockLogger()
     >>> process.logger.setLevel(logging.INFO)
     >>> process.main()

=== modified file 'lib/lp/translations/model/translationimportqueue.py'
--- lib/lp/translations/model/translationimportqueue.py 2009-09-18 14:11:35 +0000
+++ lib/lp/translations/model/translationimportqueue.py 2009-09-21 18:42:58 +0000
@@ -64,8 +64,8 @@
 from lp.registry.interfaces.person import validate_public_person

-# Number of days when entries with terminal statuses are removed from the
-# queue.
+# Period to wait before entries with terminal statuses are removed from
+# the queue.
 entry_gc_age = {
     RosettaImportStatus.DELETED: datetime.timedelta(days=3),
     RosettaImportStatus.IMPORTED: datetime.timedelta(days=3),
@@ -1163,15 +1163,16 @@
         :return: Number of entries deleted.
         """
         now = datetime.datetime.now(pytz.UTC)
- deletion_criteria = False
+ deletion_clauses = []
         for status, gc_age in entry_gc_age.iteritems():
             cutoff = now - gc_age
- deletion_criteria = Or(
- deletion_criteria, And(
- TranslationImportQueueEntry.status == status,
- TranslationImportQueueEntry.date_status_changed < cutoff))
-
- entries = store.find(TranslationImportQueueEntry, deletion_criteria)
+ deletion_clauses.append(And(
+ TranslationImportQueueEntry.status == status,
+ TranslationImportQueueEntry.date_status_changed < cutoff))
+
+ entries = store.find(
+ TranslationImportQueueEntry, Or(*deletion_clauses))
+
         return entries.remove()

     def _cleanUpInactiveProductEntries(self, store):

=== renamed file 'lib/lp/translations/scripts/import_approval.py' => 'lib/lp/translations/scripts/import_queue_gardener.py'
--- lib/lp/translations/scripts/import_approval.py 2009-09-18 13:48:00 +0000
+++ lib/lp/translations/scripts/import_queue_gardener.py 2009-09-21 18:57:20 +0000
@@ -6,7 +6,7 @@
 __metaclass__ = type

 __all__ = [
- 'AutoApproveProcess',
+ 'ImportQueueGardener',
     ]

 from zope.component import getUtility
@@ -16,7 +16,7 @@
     ITranslationImportQueue)

-class AutoApproveProcess(LaunchpadCronScript):
+class ImportQueueGardener(LaunchpadCronScript):
     """Automated gardening for the Translations import queue."""
     def main(self):
         """Manage import queue.
@@ -25,7 +25,7 @@
         Garbage-collect ones that are no longer needed. Block
         translations on the queue for templates that are blocked.
         """
- self.logger.debug("Starting auto-approval of translation imports")
+ self.logger.debug("Starting gardening of translation imports")

         translation_import_queue = getUtility(ITranslationImportQueue)

@@ -47,4 +47,4 @@
             self.logger.info('Blocked %d entries from the queue.' %
                 blocked_entries)

- self.logger.debug("Completed auto-approval of translation imports.")
+ self.logger.debug("Completed gardening of translation imports.")

« Back to merge proposal