Merge lp:~intellectronica/launchpad/update-max-heat into lp:launchpad

Proposed by Eleanor Berger
Status: Merged
Merged at revision: not available
Proposed branch: lp:~intellectronica/launchpad/update-max-heat
Merge into: lp:launchpad
Diff against target: 17574 lines (+6784/-2949)
211 files modified
.bzrignore (+2/-0)
configs/development/launchpad-lazr.conf (+3/-0)
configs/testrunner/launchpad-lazr.conf (+5/-0)
cronscripts/process-apport-blobs.py (+33/-0)
daemons/cache-database-replication-lag.py (+53/-0)
database/replication/helpers.py (+9/-0)
database/sampledata/current-dev.sql (+214/-136)
database/sampledata/current.sql (+214/-136)
database/schema/Makefile (+2/-0)
database/schema/comments.sql (+61/-62)
database/schema/diagram.py (+2/-3)
database/schema/patch-2207-23-0.sql (+19/-0)
database/schema/patch-2207-28-1.sql (+9/-0)
database/schema/patch-2207-29-0.sql (+34/-0)
database/schema/patch-2207-30-0.sql (+14/-0)
database/schema/patch-2207-31-0.sql (+27/-0)
database/schema/patch-2207-32-0.sql (+24/-0)
database/schema/patch-2207-33-0.sql (+9/-0)
database/schema/patch-2207-34-0.sql (+11/-0)
database/schema/patch-2207-35-0.sql (+8/-0)
database/schema/security.cfg (+46/-26)
database/schema/security.py (+2/-3)
database/schema/trusted.sql (+57/-0)
lib/canonical/config/schema-lazr.conf (+7/-1)
lib/canonical/launchpad/browser/launchpad.py (+35/-32)
lib/canonical/launchpad/browser/temporaryblobstorage.py (+48/-4)
lib/canonical/launchpad/database/account.py (+4/-0)
lib/canonical/launchpad/database/temporaryblobstorage.py (+27/-6)
lib/canonical/launchpad/doc/account.txt (+72/-61)
lib/canonical/launchpad/doc/oauth.txt (+45/-32)
lib/canonical/launchpad/doc/renamed-view.txt (+1/-1)
lib/canonical/launchpad/doc/temporaryblobstorage.txt (+45/-0)
lib/canonical/launchpad/icing/style.css (+5/-1)
lib/canonical/launchpad/interfaces/_schema_circular_imports.py (+10/-5)
lib/canonical/launchpad/interfaces/temporaryblobstorage.py (+28/-1)
lib/canonical/launchpad/javascript/code/codereview.js (+49/-34)
lib/canonical/launchpad/pagetests/webservice/xx-temporary-blob-storage.txt (+81/-0)
lib/canonical/launchpad/webapp/dbpolicy.py (+11/-19)
lib/canonical/launchpad/zcml/temporaryblobstorage.zcml (+16/-0)
lib/lp/answers/doc/person.txt (+155/-138)
lib/lp/answers/doc/projectgroup.txt (+45/-38)
lib/lp/answers/doc/question.txt (+162/-132)
lib/lp/answers/doc/questionsets.txt (+148/-139)
lib/lp/answers/doc/questiontarget.txt (+266/-245)
lib/lp/answers/doc/workflow.txt (+209/-193)
lib/lp/answers/interfaces/questionreopening.py (+1/-0)
lib/lp/archivepublisher/deathrow.py (+16/-16)
lib/lp/archivepublisher/domination.py (+34/-37)
lib/lp/archivepublisher/tests/deathrow.txt (+6/-6)
lib/lp/archivepublisher/tests/test_deathrow.py (+1/-4)
lib/lp/archivepublisher/tests/test_dominator.py (+10/-14)
lib/lp/archiveuploader/dscfile.py (+34/-1)
lib/lp/archiveuploader/nascentupload.py (+2/-5)
lib/lp/archiveuploader/tests/test_buildduploads.py (+2/-2)
lib/lp/archiveuploader/tests/test_recipeuploads.py (+75/-0)
lib/lp/archiveuploader/tests/test_uploadprocessor.py (+3/-3)
lib/lp/bugs/browser/bug.py (+0/-20)
lib/lp/bugs/browser/bugtarget.py (+129/-191)
lib/lp/bugs/browser/bugtask.py (+50/-10)
lib/lp/bugs/browser/configure.zcml (+15/-6)
lib/lp/bugs/browser/distribution_upstream_bug_report.py (+17/-5)
lib/lp/bugs/browser/tests/bug-heat-view.txt (+56/-11)
lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt (+52/-38)
lib/lp/bugs/configure.zcml (+42/-3)
lib/lp/bugs/doc/bug-heat.txt (+56/-0)
lib/lp/bugs/doc/bug.txt (+88/-0)
lib/lp/bugs/doc/bugattachments.txt (+71/-6)
lib/lp/bugs/doc/bugtask-search.txt (+38/-0)
lib/lp/bugs/doc/distribution-upstream-bug-report.txt (+66/-25)
lib/lp/bugs/doc/filebug-data-parser.txt (+3/-3)
lib/lp/bugs/doc/official-bug-tags.txt (+3/-3)
lib/lp/bugs/interfaces/apportjob.py (+74/-0)
lib/lp/bugs/interfaces/bug.py (+33/-0)
lib/lp/bugs/interfaces/bugtarget.py (+10/-1)
lib/lp/bugs/interfaces/bugtask.py (+8/-2)
lib/lp/bugs/model/apportjob.py (+263/-0)
lib/lp/bugs/model/bug.py (+104/-14)
lib/lp/bugs/model/bugjob.py (+1/-12)
lib/lp/bugs/model/bugtarget.py (+71/-1)
lib/lp/bugs/model/bugtask.py (+49/-36)
lib/lp/bugs/scripts/bugheat.py (+0/-7)
lib/lp/bugs/stories/distribution/xx-distribution-upstream-bug-report.txt (+32/-16)
lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-tools.txt (+37/-0)
lib/lp/bugs/stories/patches-view/patches-view.txt (+493/-0)
lib/lp/bugs/stories/webservice/xx-bug.txt (+8/-0)
lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt (+52/-46)
lib/lp/bugs/templates/bugtarget-filebug-search.pt (+9/-1)
lib/lp/bugs/templates/bugtarget-patches.pt (+115/-0)
lib/lp/bugs/templates/bugtarget-portlet-bugfilters-content.pt (+10/-0)
lib/lp/bugs/templates/distribution-upstream-bug-report.pt (+21/-1)
lib/lp/bugs/tests/bug.py (+45/-1)
lib/lp/bugs/tests/test_apportjob.py (+426/-0)
lib/lp/bugs/tests/test_bugheat.py (+209/-4)
lib/lp/bugs/utilities/filebugdataparser.py (+168/-0)
lib/lp/buildmaster/interfaces/buildbase.py (+15/-0)
lib/lp/buildmaster/model/buildbase.py (+39/-4)
lib/lp/code/browser/branch.py (+5/-3)
lib/lp/code/browser/branchmergeproposal.py (+40/-1)
lib/lp/code/browser/configure.zcml (+7/-0)
lib/lp/code/browser/tests/test_branchmergeproposal.py (+9/-20)
lib/lp/code/configure.zcml (+9/-2)
lib/lp/code/doc/branch-merge-proposal-notifications.txt (+1/-1)
lib/lp/code/doc/codereviewcomment.txt (+2/-8)
lib/lp/code/interfaces/branch.py (+15/-18)
lib/lp/code/interfaces/branchmergeproposal.py (+7/-3)
lib/lp/code/interfaces/sourcepackagerecipebuild.py (+7/-0)
lib/lp/code/mail/branchmergeproposal.py (+15/-22)
lib/lp/code/mail/codehandler.py (+4/-7)
lib/lp/code/mail/tests/test_branchmergeproposal.py (+1/-4)
lib/lp/code/mail/tests/test_codehandler.py (+24/-25)
lib/lp/code/model/branch.py (+4/-7)
lib/lp/code/model/branchmergeproposal.py (+3/-12)
lib/lp/code/model/branchmergeproposaljob.py (+0/-8)
lib/lp/code/model/sourcepackagerecipebuild.py (+23/-19)
lib/lp/code/model/tests/test_branch.py (+1/-3)
lib/lp/code/model/tests/test_branchmergeproposals.py (+1/-31)
lib/lp/code/model/tests/test_codereviewcomment.py (+0/-3)
lib/lp/code/stories/branches/xx-branchmergeproposals.txt (+1/-1)
lib/lp/code/stories/branches/xx-claiming-team-code-reviews.txt (+2/-1)
lib/lp/code/stories/webservice/xx-branchmergeproposal.txt (+3/-15)
lib/lp/code/templates/branchmergeproposal-index.pt (+53/-24)
lib/lp/code/windmill/tests/test_branchmergeproposal_commitmessage.py (+3/-3)
lib/lp/registry/configure.zcml (+3/-1)
lib/lp/registry/doc/distribution.txt (+6/-0)
lib/lp/registry/doc/private-team-roles.txt (+1/-1)
lib/lp/registry/doc/sourcepackage.txt (+13/-12)
lib/lp/registry/doc/structural-subscriptions.txt (+1/-1)
lib/lp/registry/interfaces/distroseries.py (+3/-1)
lib/lp/registry/model/distribution.py (+23/-7)
lib/lp/registry/model/distributionmirror.py (+18/-18)
lib/lp/registry/model/distributionsourcepackage.py (+23/-0)
lib/lp/registry/model/distroseries.py (+9/-4)
lib/lp/registry/model/person.py (+11/-1)
lib/lp/registry/model/product.py (+3/-3)
lib/lp/registry/model/productseries.py (+5/-0)
lib/lp/registry/model/project.py (+2/-0)
lib/lp/registry/model/sourcepackage.py (+5/-0)
lib/lp/registry/model/sourcepackagename.py (+3/-0)
lib/lp/services/job/runner.py (+11/-0)
lib/lp/services/mail/sendmail.py (+1/-2)
lib/lp/services/openid/doc/openid-rp-config.txt (+17/-9)
lib/lp/services/worlddata/doc/language.txt (+6/-0)
lib/lp/services/worlddata/model/language.py (+12/-5)
lib/lp/soyuz/browser/archive.py (+1/-1)
lib/lp/soyuz/browser/tests/archive-views.txt (+4/-4)
lib/lp/soyuz/browser/tests/distributionsourcepackagerelease-views.txt (+2/-2)
lib/lp/soyuz/browser/tests/publishing-views.txt (+2/-6)
lib/lp/soyuz/configure.zcml (+12/-26)
lib/lp/soyuz/doc/archive-dependencies.txt (+42/-2)
lib/lp/soyuz/doc/archive.txt (+5/-2)
lib/lp/soyuz/doc/build-failedtoupload-workflow.txt (+5/-0)
lib/lp/soyuz/doc/build.txt (+4/-4)
lib/lp/soyuz/doc/buildd-queuebuilder-lookup.txt (+3/-3)
lib/lp/soyuz/doc/buildd-slavescanner.txt (+5/-8)
lib/lp/soyuz/doc/distribution.txt (+4/-9)
lib/lp/soyuz/doc/distroarchseries.txt (+2/-2)
lib/lp/soyuz/doc/distroarchseriesbinarypackage.txt (+4/-8)
lib/lp/soyuz/doc/distroseries-publishing-lookups.txt (+3/-3)
lib/lp/soyuz/doc/distroseriesqueue-translations.txt (+2/-3)
lib/lp/soyuz/doc/gina-multiple-arch.txt (+4/-4)
lib/lp/soyuz/doc/gina.txt (+5/-5)
lib/lp/soyuz/doc/publishing.txt (+8/-36)
lib/lp/soyuz/doc/sourcepackagerelease-build-lookup.txt (+7/-7)
lib/lp/soyuz/doc/sourcepackagerelease.txt (+5/-1)
lib/lp/soyuz/doc/soyuz-set-of-uploads.txt (+6/-8)
lib/lp/soyuz/doc/soyuz-upload.txt.disabled (+1/-1)
lib/lp/soyuz/interfaces/archive.py (+3/-0)
lib/lp/soyuz/interfaces/archivearch.py (+11/-0)
lib/lp/soyuz/interfaces/build.py (+1/-15)
lib/lp/soyuz/interfaces/packagecloner.py (+1/-1)
lib/lp/soyuz/interfaces/processor.py (+24/-1)
lib/lp/soyuz/interfaces/publishing.py (+3/-33)
lib/lp/soyuz/interfaces/sourcepackagerelease.py (+10/-0)
lib/lp/soyuz/model/archive.py (+35/-0)
lib/lp/soyuz/model/archivearch.py (+16/-0)
lib/lp/soyuz/model/build.py (+4/-31)
lib/lp/soyuz/model/packagecloner.py (+15/-17)
lib/lp/soyuz/model/processor.py (+12/-0)
lib/lp/soyuz/model/publishing.py (+72/-194)
lib/lp/soyuz/model/queue.py (+0/-1)
lib/lp/soyuz/model/sourcepackagerelease.py (+8/-4)
lib/lp/soyuz/scripts/expire_ppa_binaries.py (+2/-2)
lib/lp/soyuz/scripts/ftpmaster.py (+1/-1)
lib/lp/soyuz/scripts/gina/handlers.py (+8/-8)
lib/lp/soyuz/scripts/tests/test_buildd_cronscripts.py (+2/-5)
lib/lp/soyuz/scripts/tests/test_copypackage.py (+11/-11)
lib/lp/soyuz/scripts/tests/test_expire_ppa_bins.py (+6/-6)
lib/lp/soyuz/scripts/tests/test_obsoletedistroseries.py (+5/-7)
lib/lp/soyuz/scripts/tests/test_processdeathrow.py (+14/-15)
lib/lp/soyuz/scripts/tests/test_publishdistro.py (+1/-1)
lib/lp/soyuz/scripts/tests/test_removepackage.py (+14/-14)
lib/lp/soyuz/stories/ppa/xx-copy-packages.txt (+1/-1)
lib/lp/soyuz/stories/ppa/xx-delete-packages.txt (+3/-3)
lib/lp/soyuz/stories/ppa/xx-ppa-packages.txt (+6/-6)
lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-person-packages.txt (+3/-3)
lib/lp/soyuz/stories/webservice/xx-archive.txt (+2/-2)
lib/lp/soyuz/tests/ppa.py (+4/-6)
lib/lp/soyuz/tests/soyuz.py (+7/-12)
lib/lp/soyuz/tests/test_archive.py (+56/-3)
lib/lp/soyuz/tests/test_archivearch.py (+57/-0)
lib/lp/soyuz/tests/test_build.py (+44/-0)
lib/lp/soyuz/tests/test_buildqueue.py (+3/-3)
lib/lp/soyuz/tests/test_processor.py (+32/-0)
lib/lp/soyuz/tests/test_publishing.py (+110/-26)
lib/lp/soyuz/tests/test_publishing_models.py (+1/-1)
lib/lp/testing/factory.py (+122/-46)
lib/schoolbell/icalendar.py (+4/-5)
scripts/ftpmaster-tools/remove-package.py (+4/-4)
scripts/ftpmaster-tools/sync-source.py (+1/-1)
utilities/findimports.py (+3/-5)
To merge this branch: bzr merge lp:~intellectronica/launchpad/update-max-heat
Reviewer Review Type Date Requested Status
Francis J. Lacoste (community) release-critical Approve
Review via email: mp+20384@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Eleanor Berger (intellectronica) wrote :

This branch was ready on Friday, but missed the deadline because of missing database permissions I have overlooked. It would be necessary to land it for the bug heat feature developed this cycle to be come functional, so we've decided to ask for it to be landed as r-c.

Revision history for this message
Eleanor Berger (intellectronica) wrote :

This branch triggers the calculation of max_bug_heat on bug targets when heat a bug is updated. With this in place we can be sure that the maximum heat value we're using to render the display of bug heat indicators is up-to-date.

Revision history for this message
Eleanor Berger (intellectronica) wrote :
Download full text (10.5 KiB)

The branch should be merged into db-devel. Here's the correct diff:

=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2010-02-26 11:31:12 +0000
+++ database/schema/security.cfg 2010-03-01 17:35:00 +0000
@@ -1494,12 +1494,14 @@
 public.archive = SELECT
 public.archivearch = SELECT
 public.component = SELECT
-public.distribution = SELECT
+public.distribution = SELECT, UPDATE
+public.distributionsourcepackage = SELECT, INSERT, UPDATE
 public.distrocomponentuploader = SELECT
+public.distroseries = SELECT
 public.archivepermission = SELECT
 public.distroseries = SELECT
-public.project = SELECT
-public.product = SELECT
+public.project = SELECT, UPDATE
+public.product = SELECT, UPDATE
 public.productseries = SELECT
 public.packagebugsupervisor = SELECT
 public.sourcepackagename = SELECT
@@ -1566,7 +1568,6 @@
 public.codereviewmessage = SELECT, INSERT
 public.codereviewvote = SELECT, INSERT, UPDATE
 public.diff = SELECT, INSERT, UPDATE
-public.distribution = SELECT
 public.distroseries = SELECT
 public.job = SELECT, INSERT, UPDATE
 public.mergedirectivejob = SELECT, INSERT

=== modified file 'lib/lp/bugs/browser/bugtask.py'
--- lib/lp/bugs/browser/bugtask.py 2010-02-28 10:00:45 +0000
+++ lib/lp/bugs/browser/bugtask.py 2010-03-01 11:27:18 +0000
@@ -1090,6 +1090,8 @@
     """Calculate the number of heat 'flames' to display."""
     heat = float(heat)
     max_bug_heat = float(max_bug_heat)
+ if max_bug_heat == 0:
+ return 0
     if heat / max_bug_heat < 0.33333:
         return 0
     if heat / max_bug_heat < 0.66666 or max_bug_heat < 2:

=== modified file 'lib/lp/bugs/doc/bug-heat.txt'
--- lib/lp/bugs/doc/bug-heat.txt 2010-02-27 14:45:01 +0000
+++ lib/lp/bugs/doc/bug-heat.txt 2010-03-01 11:27:18 +0000
@@ -60,3 +60,59 @@

     >>> bug_1.heat > 0
     True
+
+
+Caculating the maximum heat for a target
+----------------------------------------
+
+When we update the heat value for a bug, the maximum heat value for the targets
+for all of its tasks is calculated and cached.
+
+ >>> product = factory.makeProduct()
+ >>> bug = factory.makeBug(product=product)
+ >>> print product.max_bug_heat
+ None
+ >>> bug.setHeat(123)
+ >>> print product.max_bug_heat
+ 123
+
+The maximum heat for a project is the value for tasks on all its products.
+
+ >>> project = factory.makeProject()
+ >>> product.project = project
+ >>> bug.setHeat(123)
+ >>> print project.max_bug_heat
+ 123
+
+A DistributionSourcePackage has its own maximum heat.
+
+ >>> dsp = factory.makeDistributionSourcePackage()
+ >>> dsp_task = bug.addTask(bug.owner, dsp)
+ >>> print dsp.max_bug_heat
+ 123
+
+Transitioning from one target to another, calcula...

Revision history for this message
Francis J. Lacoste (flacoste) :
review: Approve (release-critical)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2010-01-13 22:16:04 +0000
3+++ .bzrignore 2010-03-01 17:42:32 +0000
4@@ -58,3 +58,5 @@
5 .subversion
6 lib/canonical/buildd/launchpad-files
7 .testrepository
8+.memcache.pid
9+./pipes
10
11=== modified file 'configs/development/launchpad-lazr.conf'
12--- configs/development/launchpad-lazr.conf 2010-02-12 19:26:23 +0000
13+++ configs/development/launchpad-lazr.conf 2010-03-01 17:42:33 +0000
14@@ -223,6 +223,9 @@
15 error_dir: /var/tmp/poimport
16 oops_prefix: POI
17
18+[process_apport_blobs]
19+error_dir: /var/tmp/lperr
20+
21 [supermirror_puller]
22 error_dir: /var/tmp/codehosting.test
23 oops_prefix: SMP
24
25=== modified file 'configs/testrunner/launchpad-lazr.conf'
26--- configs/testrunner/launchpad-lazr.conf 2010-02-23 11:53:24 +0000
27+++ configs/testrunner/launchpad-lazr.conf 2010-03-01 17:42:33 +0000
28@@ -193,6 +193,11 @@
29 error_dir: /var/tmp/poimport.test
30 oops_prefix: TPOI
31
32+[process_apport_blobs]
33+dbuser: process-apport-blobs
34+oops_prefix: TAPPORTBLOB
35+error_dir: /var/tmp/lperr.test
36+
37 [rosetta]
38 generate_templates: True
39
40
41=== added file 'cronscripts/process-apport-blobs.py'
42--- cronscripts/process-apport-blobs.py 1970-01-01 00:00:00 +0000
43+++ cronscripts/process-apport-blobs.py 2010-03-01 17:42:33 +0000
44@@ -0,0 +1,33 @@
45+#!/usr/bin/python2.5
46+#
47+# Copyright 2010 Canonical Ltd. This software is licensed under the
48+# GNU Affero General Public License version 3 (see the file LICENSE).
49+
50+# pylint: disable-msg=W0403
51+
52+"""Process uploaded Apport BLOBs."""
53+
54+__metaclass__ = type
55+
56+import _pythonpath
57+
58+from canonical.launchpad.webapp import errorlog
59+
60+from lp.services.job.runner import JobCronScript
61+from lp.bugs.interfaces.apportjob import IProcessApportBlobJobSource
62+
63+
64+class RunProcessApportBlobs(JobCronScript):
65+ """Run ProcessApportBlobJobs."""
66+
67+ config_name = 'process_apport_blobs'
68+ source_interface = IProcessApportBlobJobSource
69+
70+ def main(self):
71+ errorlog.globalErrorUtility.configure(self.config_name)
72+ return super(RunProcessApportBlobs, self).main()
73+
74+
75+if __name__ == '__main__':
76+ script = RunProcessApportBlobs()
77+ script.lock_and_run()
78
79=== added symlink 'daemons/_pythonpath.py'
80=== target is u'../_pythonpath.py'
81=== added file 'daemons/cache-database-replication-lag.py'
82--- daemons/cache-database-replication-lag.py 1970-01-01 00:00:00 +0000
83+++ daemons/cache-database-replication-lag.py 2010-03-01 17:42:32 +0000
84@@ -0,0 +1,53 @@
85+#!/usr/bin/python2.5
86+#
87+# Copyright 2010 Canonical Ltd. This software is licensed under the
88+# GNU Affero General Public License version 3 (see the file LICENSE).
89+
90+"""Calculate database replication lag and cache it."""
91+
92+__metaclass__ = type
93+__all__ = []
94+
95+import _pythonpath
96+
97+import sys
98+import time
99+
100+import psycopg2
101+
102+from canonical.database.sqlbase import connect, ISOLATION_LEVEL_AUTOCOMMIT
103+from canonical.launchpad.scripts import db_options, logger
104+from lp.scripts.helpers import LPOptionParser
105+
106+
107+def main(args=None):
108+ parser = LPOptionParser()
109+ db_options(parser)
110+ parser.add_option(
111+ "-s", "--sleep", dest="sleep", type="int", default=5,
112+ metavar="SECS", help="Wait SECS seconds between refreshes.")
113+
114+ (options, args) = parser.parse_args(args)
115+ if len(args) != 0:
116+ parser.error("Too many arguments.")
117+
118+ log = logger(options)
119+
120+ while True:
121+ try:
122+ con = connect(user="lagmon", isolation=ISOLATION_LEVEL_AUTOCOMMIT)
123+ cur = con.cursor()
124+ while True:
125+ cur.execute("SELECT update_replication_lag_cache()")
126+ if cur.fetchone()[0]:
127+ log.info("Updated.")
128+ else:
129+ log.error("update_replication_lag_cache() failed.")
130+ time.sleep(options.sleep)
131+ except psycopg2.Error, x:
132+ log.error("%s. Retrying.", str(x).strip())
133+ time.sleep(options.sleep)
134+
135+
136+if __name__ == '__main__':
137+ sys.exit(main())
138
139=== modified file 'database/replication/helpers.py'
140--- database/replication/helpers.py 2010-01-22 06:25:48 +0000
141+++ database/replication/helpers.py 2010-03-01 17:42:33 +0000
142@@ -44,6 +44,7 @@
143 LPMAIN_SEED = frozenset([
144 ('public', 'person'),
145 ('public', 'launchpaddatabaserevision'),
146+ ('public', 'databasereplicationlag'),
147 ('public', 'fticache'),
148 ('public', 'nameblacklist'),
149 ('public', 'openidconsumerassociation'),
150@@ -57,6 +58,7 @@
151 ('public', 'parsedapachelog'),
152 ('public', 'shipitsurvey'),
153 ('public', 'openidassociations'), # Remove this in April 2009 or later.
154+ ('public', 'databasereplicationlag'),
155 ])
156
157 # Explicitly list tables that should not be replicated. This includes the
158@@ -87,6 +89,13 @@
159 'public.auth_group_permissions',
160 'public.auth_user_groups',
161 'public.auth_user_user_permissions',
162+ 'public.oauth_nonce',
163+ 'public.oauth_consumer',
164+ 'public.oauth_token',
165+ 'public.api_user',
166+ 'public.oauth_consumer_id_seq',
167+ 'public.api_user_id_seq',
168+ 'public.oauth_nonce_id_seq',
169 ])
170
171 # Calculate IGNORED_SEQUENCES
172
173=== modified file 'database/sampledata/current-dev.sql'
174--- database/sampledata/current-dev.sql 2010-01-18 21:30:20 +0000
175+++ database/sampledata/current-dev.sql 2010-03-01 17:42:32 +0000
176@@ -754,6 +754,27 @@
177
178
179
180+
181+
182+
183+
184+
185+
186+
187+
188+
189+
190+
191+
192+
193+
194+
195+
196+
197+
198+
199+
200+
201 ALTER TABLE account DISABLE TRIGGER ALL;
202
203 INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (1, '2005-06-06 08:59:51.591618', 8, 20, '2005-06-06 08:59:51.591618', 'Mark Shuttleworth', 'mark_oid', NULL, '123/mark');
204@@ -976,6 +997,13 @@
205 ALTER TABLE answercontact ENABLE TRIGGER ALL;
206
207
208+ALTER TABLE apportjob DISABLE TRIGGER ALL;
209+
210+
211+
212+ALTER TABLE apportjob ENABLE TRIGGER ALL;
213+
214+
215 ALTER TABLE archive DISABLE TRIGGER ALL;
216
217 INSERT INTO archive (id, owner, description, enabled, authorized_size, distribution, purpose, private, sources_cached, binaries_cached, package_description_cache, fti, buildd_secret, require_virtualized, name, publish, date_updated, total_count, pending_count, succeeded_count, failed_count, building_count, date_created, signing_key, removed_binary_retention_days, num_old_versions_published, displayname, relative_build_score, external_dependencies) VALUES (1, 17, NULL, true, NULL, 1, 1, false, NULL, NULL, NULL, NULL, NULL, false, 'primary', true, '2008-05-27 18:15:12.241774', 15, 1, 8, 5, 1, '2008-09-23 17:29:03.442606', NULL, NULL, NULL, 'Primary Archive for Ubuntu Linux', 0, NULL);
218@@ -1086,6 +1114,39 @@
219 ALTER TABLE binarypackagename ENABLE TRIGGER ALL;
220
221
222+ALTER TABLE binarypackagepublishinghistory DISABLE TRIGGER ALL;
223+
224+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (9, 12, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
225+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (11, 15, 6, 3, 1, 3, 40, '2005-05-05 00:00:00', '2005-05-05 00:01:00', '2006-01-25 00:00:00', 7, NULL, NULL, NULL, 0, 1, NULL, NULL);
226+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (12, 15, 6, 2, 3, 3, 40, '2006-01-25 00:00:00', '2006-01-25 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
227+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (13, 15, 1, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2007-09-13 00:00:01', NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
228+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (14, 15, 7, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2006-01-28 00:00:00', NULL, NULL, NULL, NULL, 0, 3, NULL, NULL);
229+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (15, 12, 7, 2, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 3, NULL, NULL);
230+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (16, 15, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-24 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
231+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (17, 16, 1, 2, 1, 1, 10, '2005-07-06 00:00:00', '2005-08-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
232+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (18, 17, 1, 3, 1, 1, 10, '2005-08-07 00:00:00', '2005-08-22 00:00:00', '2005-08-22 00:00:01', NULL, NULL, '2005-08-22 00:00:02', '2005-08-23 00:00:00', 0, 1, NULL, NULL);
233+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (19, 18, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
234+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (20, 17, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
235+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (21, 18, 11, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
236+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (22, 20, 8, 4, 1, 1, 40, '2006-09-13 00:00:00', '2006-09-13 00:00:01', '2006-09-13 00:00:01', NULL, NULL, '2006-09-13 00:00:02', '2006-09-13 00:00:03', 0, 1, 1, 'nah ...');
237+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (23, 6, 1, 4, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', '2006-12-01 00:00:01', NULL, NULL, '2006-12-01 00:00:02', '2006-12-01 00:00:03', 0, 1, 28, 'I do not like it either');
238+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (24, 21, 1, 2, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
239+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (25, 12, 1, 2, 1, 1, 10, '2007-01-19 00:00:00', '2007-02-19 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 8, NULL, NULL);
240+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (26, 22, 1, 2, 1, 1, 40, '2006-04-11 13:00:00', '2006-04-11 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
241+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (27, 22, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
242+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (28, 23, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
243+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (29, 23, 12, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
244+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (30, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
245+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (31, 25, 8, 2, 5, 7, 20, '2007-08-09 21:55:39.561526', '2007-08-09 21:56:39.561526', NULL, NULL, NULL, NULL, NULL, 0, 12, NULL, NULL);
246+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (32, 26, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
247+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (33, 27, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
248+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (34, 27, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
249+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (35, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 10, NULL, NULL);
250+
251+
252+ALTER TABLE binarypackagepublishinghistory ENABLE TRIGGER ALL;
253+
254+
255 ALTER TABLE binarypackagerelease DISABLE TRIGGER ALL;
256
257 INSERT INTO binarypackagerelease (id, binarypackagename, version, summary, description, build, binpackageformat, component, section, priority, shlibdeps, depends, recommends, suggests, conflicts, replaces, provides, essential, installedsize, architecturespecific, fti, datecreated, pre_depends, enhances, breaks) VALUES (6, 6, '1.0', 'foobar is bad', 'foobar should be removed', 6, 1, 1, 1, 40, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, NULL, false, NULL, '2006-12-01 17:50:10.878712', NULL, NULL, NULL);
258@@ -1289,19 +1350,19 @@
259
260 ALTER TABLE bug DISABLE TRIGGER ALL;
261
262-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (1, '2004-01-01 20:58:04.553583', NULL, 'Firefox does not support SVG', 'Firefox needs to support embedded SVG images, now that the standard has been finalised.
263+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (1, '2004-01-01 20:58:04.553583', NULL, 'Firefox does not support SVG', 'Firefox needs to support embedded SVG images, now that the standard has been finalised.
264
265-The SVG standard 1.0 is complete, and draft implementations for Firefox exist. One of these implementations needs to be integrated with the base install of Firefox. Ideally, the implementation needs to include support for the manipulation of SVG objects from JavaScript to enable interactive and dynamic SVG drawings.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.344941', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL);
266-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (2, '2004-01-02 20:58:04.572546', 'blackhole', 'Blackhole Trash folder', 'The Trash folder seems to have significant problems! At the moment, dragging an item to the trash results in immediate deletion. The item does not appear in the Trash, it is just deleted from my hard disk. There is no undo or ability to recover the deleted file. Help!', 12, NULL, NULL, false, false, '2006-07-14 08:47:36.124403', NULL, NULL, NULL, 0, 3, 0, 0, 0, NULL);
267-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (3, '2004-01-03 00:00:00', NULL, 'Bug Title Test', 'Shirtpkdf user@domain.org lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
268+The SVG standard 1.0 is complete, and draft implementations for Firefox exist. One of these implementations needs to be integrated with the base install of Firefox. Ideally, the implementation needs to include support for the manipulation of SVG objects from JavaScript to enable interactive and dynamic SVG drawings.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.344941', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL, NULL);
269+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (2, '2004-01-02 20:58:04.572546', 'blackhole', 'Blackhole Trash folder', 'The Trash folder seems to have significant problems! At the moment, dragging an item to the trash results in immediate deletion. The item does not appear in the Trash, it is just deleted from my hard disk. There is no undo or ability to recover the deleted file. Help!', 12, NULL, NULL, false, false, '2006-07-14 08:47:36.124403', NULL, NULL, NULL, 0, 3, 0, 0, 0, NULL, NULL);
270+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (3, '2004-01-03 00:00:00', NULL, 'Bug Title Test', 'Shirtpkdf user@domain.org lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
271
272 y idu yifdxhfgffxShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
273 Shirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
274
275-Shirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo', 16, NULL, NULL, false, false, '2006-07-14 08:48:52.922462', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
276-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (4, '2004-01-04 00:00:00', NULL, 'Reflow problems with complex page layouts', 'Malone pages that use more complex layouts with portlets and fancy CSS are sometimes not getting properly reflowed after rendering.', 12, NULL, NULL, false, false, '2006-07-14 08:49:17.124885', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
277-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (5, '2004-01-05 00:00:00', NULL, 'Firefox install instructions should be complete', 'All ways of downloading firefox should provide complete install instructions. At present, they are only visible on the Release Notes page.', 12, NULL, NULL, false, false, '2006-07-14 08:49:40.553212', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
278-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (6, '2004-01-06 00:00:00', NULL, 'Firefox crashes when Save As dialog for a nonexistent window is closed', 'User-Agent:
279+Shirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo', 16, NULL, NULL, false, false, '2006-07-14 08:48:52.922462', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
280+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (4, '2004-01-04 00:00:00', NULL, 'Reflow problems with complex page layouts', 'Malone pages that use more complex layouts with portlets and fancy CSS are sometimes not getting properly reflowed after rendering.', 12, NULL, NULL, false, false, '2006-07-14 08:49:17.124885', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
281+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (5, '2004-01-05 00:00:00', NULL, 'Firefox install instructions should be complete', 'All ways of downloading firefox should provide complete install instructions. At present, they are only visible on the Release Notes page.', 12, NULL, NULL, false, false, '2006-07-14 08:49:40.553212', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
282+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (6, '2004-01-06 00:00:00', NULL, 'Firefox crashes when Save As dialog for a nonexistent window is closed', 'User-Agent:
283 Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040207 Firefox/0.8
284
285 If a Save As dialog for a nonexistent window exists, when the dialog is closed Firefox will crash. It''s possible to cause this to happen using the "Open With/Save As" dialog.
286@@ -1320,12 +1381,12 @@
287 Crash!
288
289 Expected Results:
290-Not crashed.', 12, 5, NULL, false, false, '2006-05-19 06:37:40.389193', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
291-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (7, '2004-01-07 15:12:29.602117', NULL, 'A test bug', 'A test description', 16, NULL, NULL, false, false, '2006-05-19 06:37:40.391822', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
292-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (8, '2004-01-08 09:10:17.13237', NULL, 'Printing doesn''t work', 'When I press print in Firefox, nothing happens, not even a print dialog comes up.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.393303', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
293-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (9, '2004-01-09 16:42:14.080227', NULL, 'Thunderbird crashes', 'Every time I start Thunderbird it crashes.', 16, NULL, NULL, false, false, '2006-07-14 08:45:10.600579', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
294-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (10, '2004-01-10 19:42:21.890299', NULL, 'another test bug', 'test bug', 16, NULL, NULL, false, false, '2006-07-14 08:54:19.453881', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL);
295-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (11, '2007-03-15 20:33:56.67893', NULL, 'Make Jokosher use autoaudiosink', 'I''ve had problems when switching from Jokosher to Totem to play an Ogg.
296+Not crashed.', 12, 5, NULL, false, false, '2006-05-19 06:37:40.389193', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
297+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (7, '2004-01-07 15:12:29.602117', NULL, 'A test bug', 'A test description', 16, NULL, NULL, false, false, '2006-05-19 06:37:40.391822', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
298+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (8, '2004-01-08 09:10:17.13237', NULL, 'Printing doesn''t work', 'When I press print in Firefox, nothing happens, not even a print dialog comes up.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.393303', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
299+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (9, '2004-01-09 16:42:14.080227', NULL, 'Thunderbird crashes', 'Every time I start Thunderbird it crashes.', 16, NULL, NULL, false, false, '2006-07-14 08:45:10.600579', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
300+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (10, '2004-01-10 19:42:21.890299', NULL, 'another test bug', 'test bug', 16, NULL, NULL, false, false, '2006-07-14 08:54:19.453881', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL, NULL);
301+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (11, '2007-03-15 20:33:56.67893', NULL, 'Make Jokosher use autoaudiosink', 'I''ve had problems when switching from Jokosher to Totem to play an Ogg.
302
303 Totem appears to be playing normally but does not produce any sound.
304 If I close Jokosher then you can hear totem.
305@@ -1351,11 +1412,11 @@
306 Is there some way to reset alsa or the device driver - with out having
307 to restart?
308
309-Running on Ubuntu - with Jokosher 0.2 runscript.', 16, NULL, NULL, false, false, '2007-03-15 20:37:51.603369', NULL, NULL, NULL, 0, 7, 0, 0, 0, NULL);
310-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (12, '2007-03-15 20:41:18.635493', NULL, 'Copy, Cut and Delete operations should work on selections', 'When trying to copy, cut or delete just a selected portion of an event, the operations affect the event completely. That is, you can''t select a portion and cut that piece. The whole event will be cut. Same goes for the other 2 operations.', 16, NULL, NULL, false, false, '2007-03-15 20:46:49.909153', NULL, NULL, NULL, 0, 5, 0, 0, 0, NULL);
311-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (13, '2007-07-27 20:00:58.299796', NULL, 'Launchpad CSS and JS is not testible', 'The messages placed on this bug are for eyeball viewing of JS and CSS behaviour.', 12, NULL, NULL, false, false, '2007-07-27 20:29:46.336737', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL);
312-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (14, '2007-08-09 11:39:16.836856', NULL, 'jokosher exposes personal details in its actions portlet', 'Jokosher discloses to any passerby the fact that I am single and unwed in its actions portlet. Please fix this blatant violacion of privacy now!!', 63, NULL, NULL, true, true, '2007-08-09 11:39:16.836856', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
313-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (15, '2007-12-18 16:30:19.103679', NULL, 'Nonsensical bugs are useless', 'Like this one, natch.', 16, NULL, NULL, false, false, '2007-12-18 16:31:34.972893', NULL, NULL, '2007-12-18 16:31:34.790641', 0, 7, 0, 0, 0, NULL);
314+Running on Ubuntu - with Jokosher 0.2 runscript.', 16, NULL, NULL, false, false, '2007-03-15 20:37:51.603369', NULL, NULL, NULL, 0, 7, 0, 0, 0, NULL, NULL);
315+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (12, '2007-03-15 20:41:18.635493', NULL, 'Copy, Cut and Delete operations should work on selections', 'When trying to copy, cut or delete just a selected portion of an event, the operations affect the event completely. That is, you can''t select a portion and cut that piece. The whole event will be cut. Same goes for the other 2 operations.', 16, NULL, NULL, false, false, '2007-03-15 20:46:49.909153', NULL, NULL, NULL, 0, 5, 0, 0, 0, NULL, NULL);
316+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (13, '2007-07-27 20:00:58.299796', NULL, 'Launchpad CSS and JS is not testible', 'The messages placed on this bug are for eyeball viewing of JS and CSS behaviour.', 12, NULL, NULL, false, false, '2007-07-27 20:29:46.336737', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL, NULL);
317+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (14, '2007-08-09 11:39:16.836856', NULL, 'jokosher exposes personal details in its actions portlet', 'Jokosher discloses to any passerby the fact that I am single and unwed in its actions portlet. Please fix this blatant violacion of privacy now!!', 63, NULL, NULL, true, true, '2007-08-09 11:39:16.836856', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
318+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (15, '2007-12-18 16:30:19.103679', NULL, 'Nonsensical bugs are useless', 'Like this one, natch.', 16, NULL, NULL, false, false, '2007-12-18 16:31:34.972893', NULL, NULL, '2007-12-18 16:31:34.790641', 0, 7, 0, 0, 0, NULL, NULL);
319
320
321 ALTER TABLE bug ENABLE TRIGGER ALL;
322@@ -1437,6 +1498,13 @@
323 ALTER TABLE bugcve ENABLE TRIGGER ALL;
324
325
326+ALTER TABLE bugjob DISABLE TRIGGER ALL;
327+
328+
329+
330+ALTER TABLE bugjob ENABLE TRIGGER ALL;
331+
332+
333 ALTER TABLE bugmessage DISABLE TRIGGER ALL;
334
335 INSERT INTO bugmessage (id, bug, message, bugwatch, remote_comment_id, visible) VALUES (1, 2, 1, NULL, NULL, true);
336@@ -1715,8 +1783,8 @@
337
338 ALTER TABLE buildqueue DISABLE TRIGGER ALL;
339
340-INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (1, 1, 'Dummy sampledata entry, not processing', 1, false, 1, 1, '00:00:00', 1, FALSE);
341-INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (2, NULL, NULL, 10, false, 2, 1, '00:01:00', 1, FALSE);
342+INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (1, 1, 'Dummy sampledata entry, not processing', 1, false, 1, 1, '00:00:00', 1, false);
343+INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (2, NULL, NULL, 10, false, 2, 1, '00:01:00', 1, false);
344
345
346 ALTER TABLE buildqueue ENABLE TRIGGER ALL;
347@@ -2152,6 +2220,13 @@
348 ALTER TABLE cvereference ENABLE TRIGGER ALL;
349
350
351+ALTER TABLE databasereplicationlag DISABLE TRIGGER ALL;
352+
353+
354+
355+ALTER TABLE databasereplicationlag ENABLE TRIGGER ALL;
356+
357+
358 ALTER TABLE diff DISABLE TRIGGER ALL;
359
360
361@@ -2209,16 +2284,16 @@
362
363 ALTER TABLE distributionmirror DISABLE TRIGGER ALL;
364
365-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (1, 1, 'archive-mirror', 'http://localhost:11375/valid-mirror/', NULL, NULL, NULL, NULL, 1, 10, 75, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL);
366-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (2, 1, 'invalid-mirror', 'http://localhost:11375/invalid-mirror/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.436833', NULL, 20, NULL, NULL);
367-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (3, 1, 'unreachable-mirror', 'http://localhost:11375/timeout/', NULL, NULL, NULL, NULL, 12, 30, 75, 2, true, true, '2006-10-16 18:31:43.437635', NULL, 30, NULL, NULL);
368-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (4, 1, 'archive-404-mirror', 'http://localhost:11375/archive-mirror/', NULL, NULL, NULL, NULL, 12, 30, 75, 1, true, true, '2006-10-16 18:31:43.438573', NULL, 30, NULL, NULL);
369-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (5, 1, 'releases-mirror', 'http://localhost:11375/valid-mirror/releases/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.439336', NULL, 30, NULL, NULL);
370-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (6, 1, 'releases-mirror2', 'http://localhost:11375/valid-mirror/releases2/', NULL, NULL, NULL, NULL, 12, 50, 82, 2, true, true, '2006-10-16 18:31:43.440079', NULL, 30, NULL, NULL);
371-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (7, 1, 'archive-mirror2', 'http://localhost:11375/valid-mirror2/', NULL, NULL, NULL, NULL, 1, 10, 9, 1, true, true, '2006-10-16 18:31:43.440832', NULL, 30, NULL, NULL);
372-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (8, 1, 'canonical-archive', 'http://archive.ubuntu.com/ubuntu/', NULL, NULL, NULL, NULL, 1, 70, 225, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL);
373-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (9, 1, 'canonical-releases', 'http://releases.ubuntu.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL);
374-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (10, 1, 'random-releases-mirror', 'http://releases.random.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 10, NULL, NULL);
375+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (1, 1, 'archive-mirror', 'http://localhost:11375/valid-mirror/', NULL, NULL, NULL, NULL, 1, 10, 75, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL, false);
376+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (2, 1, 'invalid-mirror', 'http://localhost:11375/invalid-mirror/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.436833', NULL, 20, NULL, NULL, false);
377+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (3, 1, 'unreachable-mirror', 'http://localhost:11375/timeout/', NULL, NULL, NULL, NULL, 12, 30, 75, 2, true, true, '2006-10-16 18:31:43.437635', NULL, 30, NULL, NULL, false);
378+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (4, 1, 'archive-404-mirror', 'http://localhost:11375/archive-mirror/', NULL, NULL, NULL, NULL, 12, 30, 75, 1, true, true, '2006-10-16 18:31:43.438573', NULL, 30, NULL, NULL, false);
379+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (5, 1, 'releases-mirror', 'http://localhost:11375/valid-mirror/releases/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.439336', NULL, 30, NULL, NULL, false);
380+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (6, 1, 'releases-mirror2', 'http://localhost:11375/valid-mirror/releases2/', NULL, NULL, NULL, NULL, 12, 50, 82, 2, true, true, '2006-10-16 18:31:43.440079', NULL, 30, NULL, NULL, false);
381+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (7, 1, 'archive-mirror2', 'http://localhost:11375/valid-mirror2/', NULL, NULL, NULL, NULL, 1, 10, 9, 1, true, true, '2006-10-16 18:31:43.440832', NULL, 30, NULL, NULL, false);
382+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (8, 1, 'canonical-archive', 'http://archive.ubuntu.com/ubuntu/', NULL, NULL, NULL, NULL, 1, 70, 225, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL, false);
383+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (9, 1, 'canonical-releases', 'http://releases.ubuntu.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL, false);
384+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (10, 1, 'random-releases-mirror', 'http://releases.random.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 10, NULL, NULL, false);
385
386
387 ALTER TABLE distributionmirror ENABLE TRIGGER ALL;
388@@ -8068,10 +8143,11 @@
389
390 ALTER TABLE processorfamily DISABLE TRIGGER ALL;
391
392-INSERT INTO processorfamily (id, name, title, description) VALUES (1, 'x86', 'Intel 386 compatible chips', 'Bring back the 8086!');
393-INSERT INTO processorfamily (id, name, title, description) VALUES (2, 'powerpc', 'PowerPC compatible systems, G3 G4 etc', 'An architecture conceived by Motorola and developed further in cooperation with IBM. Was used very successfully by Apple for their PowerMac range, until 2007.');
394-INSERT INTO processorfamily (id, name, title, description) VALUES (3, 'amd64', 'AMD64 and Intel EM64T and compatible systems', 'A 64-bit extension to the venerable x86 architecture, pioneered by AMD and later adopted by Intel as well.');
395-INSERT INTO processorfamily (id, name, title, description) VALUES (4, 'hppa', 'PA-RISC Processors', 'The HP PA-RISC and compatible processors');
396+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (1, 'x86', 'Intel 386 compatible chips', 'Bring back the 8086!', false);
397+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (2, 'powerpc', 'PowerPC compatible systems, G3 G4 etc', 'An architecture conceived by Motorola and developed further in cooperation with IBM. Was used very successfully by Apple for their PowerMac range, until 2007.', false);
398+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (3, 'amd64', 'AMD64 and Intel EM64T and compatible systems', 'A 64-bit extension to the venerable x86 architecture, pioneered by AMD and later adopted by Intel as well.', false);
399+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (4, 'hppa', 'PA-RISC Processors', 'The HP PA-RISC and compatible processors', false);
400+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (5, 'arm', 'ARM Processors', 'The ARM and compatible processors', true);
401
402
403 ALTER TABLE processorfamily ENABLE TRIGGER ALL;
404@@ -8807,74 +8883,6 @@
405 ALTER TABLE sectionselection ENABLE TRIGGER ALL;
406
407
408-ALTER TABLE securebinarypackagepublishinghistory DISABLE TRIGGER ALL;
409-
410-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (9, 12, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
411-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (11, 15, 6, 3, 1, 3, 40, '2005-05-05 00:00:00', '2005-05-05 00:01:00', '2006-01-25 00:00:00', 7, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
412-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (12, 15, 6, 2, 3, 3, 40, '2006-01-25 00:00:00', '2006-01-25 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
413-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (13, 15, 1, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2007-09-13 00:00:01', NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
414-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (14, 15, 7, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2006-01-28 00:00:00', NULL, NULL, NULL, NULL, 0, false, NULL, 3, NULL, NULL);
415-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (15, 12, 7, 2, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 3, NULL, NULL);
416-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (16, 15, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-24 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
417-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (17, 16, 1, 2, 1, 1, 10, '2005-07-06 00:00:00', '2005-08-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
418-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (18, 17, 1, 3, 1, 1, 10, '2005-08-07 00:00:00', '2005-08-22 00:00:00', '2005-08-22 00:00:01', NULL, NULL, '2005-08-22 00:00:02', '2005-08-23 00:00:00', 0, false, NULL, 1, NULL, NULL);
419-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (19, 18, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
420-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (20, 17, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
421-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (21, 18, 11, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
422-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (22, 20, 8, 4, 1, 1, 40, '2006-09-13 00:00:00', '2006-09-13 00:00:01', '2006-09-13 00:00:01', NULL, NULL, '2006-09-13 00:00:02', '2006-09-13 00:00:03', 0, false, NULL, 1, 1, 'nah ...');
423-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (23, 6, 1, 4, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', '2006-12-01 00:00:01', NULL, NULL, '2006-12-01 00:00:02', '2006-12-01 00:00:03', 0, false, NULL, 1, 28, 'I do not like it either');
424-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (24, 21, 1, 2, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
425-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (25, 12, 1, 2, 1, 1, 10, '2007-01-19 00:00:00', '2007-02-19 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 8, NULL, NULL);
426-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (26, 22, 1, 2, 1, 1, 40, '2006-04-11 13:00:00', '2006-04-11 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
427-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (27, 22, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
428-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (28, 23, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
429-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (29, 23, 12, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
430-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (30, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
431-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (31, 25, 8, 2, 5, 7, 20, '2007-08-09 21:55:39.561526', '2007-08-09 21:56:39.561526', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 12, NULL, NULL);
432-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (32, 26, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
433-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (33, 27, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
434-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (34, 27, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
435-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (35, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 10, NULL, NULL);
436-
437-
438-ALTER TABLE securebinarypackagepublishinghistory ENABLE TRIGGER ALL;
439-
440-
441-ALTER TABLE securesourcepackagepublishinghistory DISABLE TRIGGER ALL;
442-
443-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (1, 14, 1, 1, 1, 3, '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
444-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (2, 15, 3, 2, 1, 3, '2004-09-27 11:57:13', '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
445-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (4, 17, 1, 2, 1, 1, '2004-03-14 18:00:00', '2004-03-14 18:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
446-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (5, 16, 3, 2, 1, 2, '2004-03-10 16:30:00', '2004-03-10 16:30:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
447-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (8, 20, 3, 3, 1, 1, '2005-04-18 17:34:15.308434', '2005-04-18 17:34:15.308434', '2005-08-24 17:01:15.308434', 21, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
448-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (9, 21, 3, 2, 1, 3, '2005-08-24 17:01:15.308434', '2005-08-24 17:01:15.308434', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
449-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (10, 23, 1, 2, 1, 1, '2005-09-15 11:42:02.870714', '2005-09-15 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
450-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (11, 24, 8, 2, 1, 2, '2005-09-15 11:42:21.070926', '2005-09-15 11:42:21.070926', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 3, NULL, NULL);
451-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (12, 25, 3, 2, 1, 1, '2005-09-15 11:43:00.05741', '2005-09-15 11:43:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
452-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (13, 26, 3, 2, 3, 1, '2005-12-22 18:19:00.05741', '2005-12-22 18:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
453-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (14, 24, 3, 3, 1, 3, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 25, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 0, false, NULL, 1, NULL, NULL);
454-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (15, 24, 1, 2, 1, 1, '2005-09-16 11:42:02.870714', '2005-09-16 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
455-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (16, 27, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
456-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (17, 28, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
457-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (18, 14, 1, 2, 1, 2, '2006-02-13 12:19:00.05741', '2006-02-13 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
458-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (19, 28, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
459-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (20, 25, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
460-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (21, 24, 11, 4, 1, 3, '2006-09-14 11:44:00.10654', '2006-09-14 11:44:00', '2006-09-14 11:44:01', 25, '2006-09-14 11:45:00', '2006-09-14 11:45:00', '2006-09-15 11:45:00', 0, false, NULL, 8, 1, 'does anyone like ? I did not think so.');
461-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (22, 32, 1, 4, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, '2006-12-02 11:44:00', 0, false, NULL, 1, 28, 'I do not like it.');
462-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (23, 33, 1, 2, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
463-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (24, 14, 1, 2, 1, 2, '2006-02-19 11:57:13', '2007-02-19 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 8, NULL, NULL);
464-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (25, 33, 10, 2, 1, 3, '2007-04-25 13:44:00.10654', '2007-04-25 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
465-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (26, 35, 1, 2, 1, 3, '2006-04-11 12:00:00', '2006-04-11 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
466-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (27, 33, 10, 2, 1, 3, '2007-07-09 13:44:00.10654', '2007-07-09 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
467-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (28, 35, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
468-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (29, 20, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
469-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (30, 36, 10, 2, 5, 7, '2007-08-09 21:28:12.106187', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 12, NULL, NULL);
470-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (31, 35, 10, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 10, NULL, NULL);
471-
472-
473-ALTER TABLE securesourcepackagepublishinghistory ENABLE TRIGGER ALL;
474-
475-
476 ALTER TABLE seriessourcepackagebranch DISABLE TRIGGER ALL;
477
478
479@@ -9013,31 +9021,101 @@
480 ALTER TABLE sourcepackagename ENABLE TRIGGER ALL;
481
482
483+ALTER TABLE sourcepackagepublishinghistory DISABLE TRIGGER ALL;
484+
485+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (1, 14, 1, 1, 1, 3, '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
486+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (2, 15, 3, 2, 1, 3, '2004-09-27 11:57:13', '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
487+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (4, 17, 1, 2, 1, 1, '2004-03-14 18:00:00', '2004-03-14 18:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
488+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (5, 16, 3, 2, 1, 2, '2004-03-10 16:30:00', '2004-03-10 16:30:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
489+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (8, 20, 3, 3, 1, 1, '2005-04-18 17:34:15.308434', '2005-04-18 17:34:15.308434', '2005-08-24 17:01:15.308434', 21, NULL, NULL, NULL, 0, 1, NULL, NULL);
490+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (9, 21, 3, 2, 1, 3, '2005-08-24 17:01:15.308434', '2005-08-24 17:01:15.308434', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
491+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (10, 23, 1, 2, 1, 1, '2005-09-15 11:42:02.870714', '2005-09-15 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
492+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (11, 24, 8, 2, 1, 2, '2005-09-15 11:42:21.070926', '2005-09-15 11:42:21.070926', NULL, NULL, NULL, NULL, NULL, 0, 3, NULL, NULL);
493+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (12, 25, 3, 2, 1, 1, '2005-09-15 11:43:00.05741', '2005-09-15 11:43:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
494+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (13, 26, 3, 2, 3, 1, '2005-12-22 18:19:00.05741', '2005-12-22 18:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
495+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (14, 24, 3, 3, 1, 3, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 25, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 0, 1, NULL, NULL);
496+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (15, 24, 1, 2, 1, 1, '2005-09-16 11:42:02.870714', '2005-09-16 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
497+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (16, 27, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
498+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (17, 28, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
499+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (18, 14, 1, 2, 1, 2, '2006-02-13 12:19:00.05741', '2006-02-13 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
500+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (19, 28, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
501+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (20, 25, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
502+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (21, 24, 11, 4, 1, 3, '2006-09-14 11:44:00.10654', '2006-09-14 11:44:00', '2006-09-14 11:44:01', 25, '2006-09-14 11:45:00', '2006-09-14 11:45:00', '2006-09-15 11:45:00', 0, 8, 1, 'does anyone like ? I did not think so.');
503+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (22, 32, 1, 4, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, '2006-12-02 11:44:00', 0, 1, 28, 'I do not like it.');
504+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (23, 33, 1, 2, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
505+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (24, 14, 1, 2, 1, 2, '2006-02-19 11:57:13', '2007-02-19 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, 8, NULL, NULL);
506+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (25, 33, 10, 2, 1, 3, '2007-04-25 13:44:00.10654', '2007-04-25 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
507+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (26, 35, 1, 2, 1, 3, '2006-04-11 12:00:00', '2006-04-11 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
508+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (27, 33, 10, 2, 1, 3, '2007-07-09 13:44:00.10654', '2007-07-09 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
509+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (28, 35, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
510+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (29, 20, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
511+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (30, 36, 10, 2, 5, 7, '2007-08-09 21:28:12.106187', NULL, NULL, NULL, NULL, NULL, NULL, 0, 12, NULL, NULL);
512+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (31, 35, 10, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 10, NULL, NULL);
513+
514+
515+ALTER TABLE sourcepackagepublishinghistory ENABLE TRIGGER ALL;
516+
517+
518+ALTER TABLE sourcepackagerecipe DISABLE TRIGGER ALL;
519+
520+
521+
522+ALTER TABLE sourcepackagerecipe ENABLE TRIGGER ALL;
523+
524+
525+ALTER TABLE sourcepackagerecipebuild DISABLE TRIGGER ALL;
526+
527+
528+
529+ALTER TABLE sourcepackagerecipebuild ENABLE TRIGGER ALL;
530+
531+
532+ALTER TABLE sourcepackagerecipebuildjob DISABLE TRIGGER ALL;
533+
534+
535+
536+ALTER TABLE sourcepackagerecipebuildjob ENABLE TRIGGER ALL;
537+
538+
539+ALTER TABLE sourcepackagerecipedata DISABLE TRIGGER ALL;
540+
541+
542+
543+ALTER TABLE sourcepackagerecipedata ENABLE TRIGGER ALL;
544+
545+
546+ALTER TABLE sourcepackagerecipedatainstruction DISABLE TRIGGER ALL;
547+
548+
549+
550+ALTER TABLE sourcepackagerecipedatainstruction ENABLE TRIGGER ALL;
551+
552+
553 ALTER TABLE sourcepackagerelease DISABLE TRIGGER ALL;
554
555-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (14, 1, '0.9', '2004-09-27 11:57:13', 1, NULL, 1, 'Mozilla dummy Changelog......', 'gcc-3.4-base, libc6 (>= 2.3.2.ds1-4), gcc-3.4 (>= 3.4.1-4sarge1), gcc-3.4 (<< 3.4.2), libstdc++6-dev (>= 3.4.1-4sarge1), pmount', 'bacula-common (= 1.34.6-2), bacula-director-common (= 1.34.6-2), postgresql-client (>= 7.4), pmount', 'any', NULL, 1, 1, 1, 1, 1, 'Mark Shuttleworth <mark@canonical.com>', '3.6.2', '1.0', 'mozilla-firefox', 1, NULL, 'gcc-4.0, pmount', 'gcc-4.0-base, pmount');
556-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (15, 1, '1.0', '2004-09-27 11:57:13', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 2, 1, 9, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
557-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (16, 1, '1.0-1', '2005-03-10 16:30:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 3, 1, 10, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
558-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (17, 1, '0.99.6-1', '2005-03-14 18:00:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 2, 1, 10, 1, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
559-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (20, 1, '0.1-1', '2005-03-24 20:59:31.439579', 1, NULL, 1, 'pmount (0.1-1) hoary; urgency=low
560+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (14, 1, '0.9', '2004-09-27 11:57:13', 1, NULL, 1, 'Mozilla dummy Changelog......', 'gcc-3.4-base, libc6 (>= 2.3.2.ds1-4), gcc-3.4 (>= 3.4.1-4sarge1), gcc-3.4 (<< 3.4.2), libstdc++6-dev (>= 3.4.1-4sarge1), pmount', 'bacula-common (= 1.34.6-2), bacula-director-common (= 1.34.6-2), postgresql-client (>= 7.4), pmount', 'any', NULL, 1, 1, 1, 1, 1, 'Mark Shuttleworth <mark@canonical.com>', '3.6.2', '1.0', 'mozilla-firefox', 1, NULL, 'gcc-4.0, pmount', 'gcc-4.0-base, pmount', NULL);
561+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (15, 1, '1.0', '2004-09-27 11:57:13', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 2, 1, 9, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
562+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (16, 1, '1.0-1', '2005-03-10 16:30:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 3, 1, 10, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
563+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (17, 1, '0.99.6-1', '2005-03-14 18:00:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 2, 1, 10, 1, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
564+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (20, 1, '0.1-1', '2005-03-24 20:59:31.439579', 1, NULL, 1, 'pmount (0.1-1) hoary; urgency=low
565
566 * Fix description (Malone #1)
567 * Fix debian (Debian #2000)
568 * Fix warty (Warty Ubuntu #1)
569
570- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 2, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
571-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (21, 1, '0.1-2', '2005-06-24 20:59:31.439579', 1, NULL, 1, 'This is a placeholder changelog for pmount 0.1-2', NULL, NULL, 'powerpc', NULL, 1, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
572-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (23, 1, '1.0.8-1ubuntu1', '2005-02-03 08:50:00', 1, NULL, 1, 'alsa-utils (1.0.8-1ubuntu1) warty; urgency=low
573-
574- * Placeholder
575-
576- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 1, 19, 1, 1, 'Mark Shuttleworth <mark@example.com>', '3.6.2', '1.0', 'alsa-mixer', 1, NULL, NULL, NULL);
577-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (24, 1, '1.0.9a-4', '2005-07-01 22:47:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4) warty; urgency=low
578-
579- * Placeholder
580-
581- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'any', NULL, 2, 1, 19, 8, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
582-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (25, 1, '1.0.9a-4ubuntu1', '2005-08-01 14:10:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4ubuntu1) hoary; urgency=low
583+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 2, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
584+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (21, 1, '0.1-2', '2005-06-24 20:59:31.439579', 1, NULL, 1, 'This is a placeholder changelog for pmount 0.1-2', NULL, NULL, 'powerpc', NULL, 1, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
585+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (23, 1, '1.0.8-1ubuntu1', '2005-02-03 08:50:00', 1, NULL, 1, 'alsa-utils (1.0.8-1ubuntu1) warty; urgency=low
586+
587+ * Placeholder
588+
589+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 1, 19, 1, 1, 'Mark Shuttleworth <mark@example.com>', '3.6.2', '1.0', 'alsa-mixer', 1, NULL, NULL, NULL, NULL);
590+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (24, 1, '1.0.9a-4', '2005-07-01 22:47:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4) warty; urgency=low
591+
592+ * Placeholder
593+
594+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'any', NULL, 2, 1, 19, 8, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
595+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (25, 1, '1.0.9a-4ubuntu1', '2005-08-01 14:10:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4ubuntu1) hoary; urgency=low
596
597 * Placeholder
598 LP: #10
599@@ -9046,22 +9124,22 @@
600 LP: #7, #8,
601 #11
602
603- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 16, 19, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
604-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (26, 1, 'cr.g7-37', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 20, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
605-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (27, 1, 'b8p', '2006-02-10 11:19:00', 1, NULL, 1, 'libstdc++ (9.9-1) hoary; urgency=high
606+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 16, 19, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
607+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (26, 1, 'cr.g7-37', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 20, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
608+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (27, 1, 'b8p', '2006-02-10 11:19:00', 1, NULL, 1, 'libstdc++ (9.9-1) hoary; urgency=high
609
610 * Placeholder
611
612- -- Sample Person <test@canonical.com> Tue, 10 Feb 2006 10:10:08 +0300', NULL, NULL, 'powerpc i386', NULL, 1, 16, 21, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
613-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (28, 1, '2.6.15.3', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 22, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
614-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (29, 1, '0.00', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 17, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
615-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (30, 1, '1.0', '2006-09-28 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
616-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (31, 1, '1.0', '2006-09-28 18:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
617-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (32, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 23, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
618-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (33, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 24, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
619-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (34, 1, '1.0', '2007-02-15 14:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 29, 16, 25, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
620-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (35, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 10, NULL, NULL, NULL);
621-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (36, 243606, '1.0-1', '2007-08-09 21:25:37.832976', 1, NULL, 5, 'commercialpackage (1.0-1) breezy; urgency=low
622+ -- Sample Person <test@canonical.com> Tue, 10 Feb 2006 10:10:08 +0300', NULL, NULL, 'powerpc i386', NULL, 1, 16, 21, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
623+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (28, 1, '2.6.15.3', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 22, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
624+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (29, 1, '0.00', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 17, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
625+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (30, 1, '1.0', '2006-09-28 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
626+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (31, 1, '1.0', '2006-09-28 18:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
627+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (32, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 23, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
628+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (33, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 24, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
629+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (34, 1, '1.0', '2007-02-15 14:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 29, 16, 25, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
630+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (35, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 10, NULL, NULL, NULL, NULL);
631+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (36, 243606, '1.0-1', '2007-08-09 21:25:37.832976', 1, NULL, 5, 'commercialpackage (1.0-1) breezy; urgency=low
632
633 * Initial version
634 Address for testing linkification: Foo Bar <foo.bar@canonical.com>
635@@ -9085,8 +9163,8 @@
636 iD8DBQFGtzTjWhGlTF8G/HcRAtFsAJ4hHyKhOnsUOQDI+SAk000DmFAnUgCcC84J
637 3F4bEPeRcnUjCFI/hjR0kxg=
638 =Tjln
639-', 7, 243606, 27, 10, 1, 'Julian Edwards <launchpad@julian-edwards.com>', '3.6.2', '1.0', 'commercialpackage', 12, NULL, NULL, NULL);
640-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (37, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 11, NULL, NULL, NULL);
641+', 7, 243606, 27, 10, 1, 'Julian Edwards <launchpad@julian-edwards.com>', '3.6.2', '1.0', 'commercialpackage', 12, NULL, NULL, NULL, NULL);
642+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (37, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 11, NULL, NULL, NULL, NULL);
643
644
645 ALTER TABLE sourcepackagerelease ENABLE TRIGGER ALL;
646
647=== modified file 'database/sampledata/current.sql'
648--- database/sampledata/current.sql 2010-01-20 22:09:26 +0000
649+++ database/sampledata/current.sql 2010-03-01 17:42:32 +0000
650@@ -754,6 +754,27 @@
651
652
653
654+
655+
656+
657+
658+
659+
660+
661+
662+
663+
664+
665+
666+
667+
668+
669+
670+
671+
672+
673+
674+
675 ALTER TABLE account DISABLE TRIGGER ALL;
676
677 INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (11, '2005-06-06 08:59:51.591618', 8, 20, '2005-06-06 08:59:51.591618', 'Mark Shuttleworth', 'mark_oid', NULL, '123/mark');
678@@ -956,6 +977,13 @@
679 ALTER TABLE answercontact ENABLE TRIGGER ALL;
680
681
682+ALTER TABLE apportjob DISABLE TRIGGER ALL;
683+
684+
685+
686+ALTER TABLE apportjob ENABLE TRIGGER ALL;
687+
688+
689 ALTER TABLE archive DISABLE TRIGGER ALL;
690
691 INSERT INTO archive (id, owner, description, enabled, authorized_size, distribution, purpose, private, sources_cached, binaries_cached, package_description_cache, fti, buildd_secret, require_virtualized, name, publish, date_updated, total_count, pending_count, succeeded_count, failed_count, building_count, date_created, signing_key, removed_binary_retention_days, num_old_versions_published, displayname, relative_build_score, external_dependencies) VALUES (1, 17, NULL, true, NULL, 1, 1, false, NULL, NULL, NULL, NULL, NULL, false, 'primary', true, '2008-05-27 18:15:12.241774', 15, 1, 8, 5, 1, '2008-09-23 17:29:03.442606', NULL, NULL, NULL, 'Primary Archive for Ubuntu Linux', 0, NULL);
692@@ -1068,6 +1096,39 @@
693 ALTER TABLE binarypackagename ENABLE TRIGGER ALL;
694
695
696+ALTER TABLE binarypackagepublishinghistory DISABLE TRIGGER ALL;
697+
698+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (9, 12, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
699+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (11, 15, 6, 3, 1, 3, 40, '2005-05-05 00:00:00', '2005-05-05 00:01:00', '2006-01-25 00:00:00', 7, NULL, NULL, NULL, 0, 1, NULL, NULL);
700+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (12, 15, 6, 2, 3, 3, 40, '2006-01-25 00:00:00', '2006-01-25 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
701+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (13, 15, 1, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2007-09-13 00:00:01', NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
702+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (14, 15, 7, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2006-01-28 00:00:00', NULL, NULL, NULL, NULL, 0, 3, NULL, NULL);
703+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (15, 12, 7, 2, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 3, NULL, NULL);
704+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (16, 15, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-24 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
705+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (17, 16, 1, 2, 1, 1, 10, '2005-07-06 00:00:00', '2005-08-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
706+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (18, 17, 1, 3, 1, 1, 10, '2005-08-07 00:00:00', '2005-08-22 00:00:00', '2005-08-22 00:00:01', NULL, NULL, '2005-08-22 00:00:02', '2005-08-23 00:00:00', 0, 1, NULL, NULL);
707+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (19, 18, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
708+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (20, 17, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
709+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (21, 18, 11, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
710+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (22, 20, 8, 4, 1, 1, 40, '2006-09-13 00:00:00', '2006-09-13 00:00:01', '2006-09-13 00:00:01', NULL, NULL, '2006-09-13 00:00:02', '2006-09-13 00:00:03', 0, 1, 1, 'nah ...');
711+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (23, 6, 1, 4, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', '2006-12-01 00:00:01', NULL, NULL, '2006-12-01 00:00:02', '2006-12-01 00:00:03', 0, 1, 28, 'I do not like it either');
712+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (24, 21, 1, 2, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
713+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (25, 12, 1, 2, 1, 1, 10, '2007-01-19 00:00:00', '2007-02-19 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 8, NULL, NULL);
714+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (26, 22, 1, 2, 1, 1, 40, '2006-04-11 13:00:00', '2006-04-11 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
715+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (27, 22, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
716+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (28, 23, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
717+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (29, 23, 12, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
718+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (30, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
719+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (31, 25, 8, 2, 5, 7, 20, '2007-08-09 21:55:39.561526', '2007-08-09 21:56:39.561526', NULL, NULL, NULL, NULL, NULL, 0, 12, NULL, NULL);
720+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (32, 26, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
721+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (33, 27, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
722+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (34, 27, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
723+INSERT INTO binarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (35, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, 10, NULL, NULL);
724+
725+
726+ALTER TABLE binarypackagepublishinghistory ENABLE TRIGGER ALL;
727+
728+
729 ALTER TABLE binarypackagerelease DISABLE TRIGGER ALL;
730
731 INSERT INTO binarypackagerelease (id, binarypackagename, version, summary, description, build, binpackageformat, component, section, priority, shlibdeps, depends, recommends, suggests, conflicts, replaces, provides, essential, installedsize, architecturespecific, fti, datecreated, pre_depends, enhances, breaks) VALUES (6, 6, '1.0', 'foobar is bad', 'foobar should be removed', 6, 1, 1, 1, 40, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, NULL, false, NULL, '2006-12-01 17:50:10.878712', NULL, NULL, NULL);
732@@ -1271,19 +1332,19 @@
733
734 ALTER TABLE bug DISABLE TRIGGER ALL;
735
736-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (1, '2004-01-01 20:58:04.553583', NULL, 'Firefox does not support SVG', 'Firefox needs to support embedded SVG images, now that the standard has been finalised.
737+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (1, '2004-01-01 20:58:04.553583', NULL, 'Firefox does not support SVG', 'Firefox needs to support embedded SVG images, now that the standard has been finalised.
738
739-The SVG standard 1.0 is complete, and draft implementations for Firefox exist. One of these implementations needs to be integrated with the base install of Firefox. Ideally, the implementation needs to include support for the manipulation of SVG objects from JavaScript to enable interactive and dynamic SVG drawings.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.344941', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL);
740-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (2, '2004-01-02 20:58:04.572546', 'blackhole', 'Blackhole Trash folder', 'The Trash folder seems to have significant problems! At the moment, dragging an item to the trash results in immediate deletion. The item does not appear in the Trash, it is just deleted from my hard disk. There is no undo or ability to recover the deleted file. Help!', 12, NULL, NULL, false, false, '2006-07-14 08:47:36.124403', NULL, NULL, NULL, 0, 3, 0, 0, 0, NULL);
741-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (3, '2004-01-03 00:00:00', NULL, 'Bug Title Test', 'Shirtpkdf user@domain.org lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
742+The SVG standard 1.0 is complete, and draft implementations for Firefox exist. One of these implementations needs to be integrated with the base install of Firefox. Ideally, the implementation needs to include support for the manipulation of SVG objects from JavaScript to enable interactive and dynamic SVG drawings.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.344941', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL, NULL);
743+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (2, '2004-01-02 20:58:04.572546', 'blackhole', 'Blackhole Trash folder', 'The Trash folder seems to have significant problems! At the moment, dragging an item to the trash results in immediate deletion. The item does not appear in the Trash, it is just deleted from my hard disk. There is no undo or ability to recover the deleted file. Help!', 12, NULL, NULL, false, false, '2006-07-14 08:47:36.124403', NULL, NULL, NULL, 0, 3, 0, 0, 0, NULL, NULL);
744+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (3, '2004-01-03 00:00:00', NULL, 'Bug Title Test', 'Shirtpkdf user@domain.org lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
745
746 y idu yifdxhfgffxShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
747 Shirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo
748
749-Shirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo', 16, NULL, NULL, false, false, '2006-07-14 08:48:52.922462', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
750-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (4, '2004-01-04 00:00:00', NULL, 'Reflow problems with complex page layouts', 'Malone pages that use more complex layouts with portlets and fancy CSS are sometimes not getting properly reflowed after rendering.', 12, NULL, NULL, false, false, '2006-07-14 08:49:17.124885', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
751-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (5, '2004-01-05 00:00:00', NULL, 'Firefox install instructions should be complete', 'All ways of downloading firefox should provide complete install instructions. At present, they are only visible on the Release Notes page.', 12, NULL, NULL, false, false, '2006-07-14 08:49:40.553212', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
752-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (6, '2004-01-06 00:00:00', NULL, 'Firefox crashes when Save As dialog for a nonexistent window is closed', 'User-Agent:
753+Shirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xoShirtpkdf jlkdsj;lkd lkjd hlkjfds gkfdsg kfd glkfd gifdsytoxdiytxoiufdytoidxf yxoigfyoigfxuyfxoiug yxoiuy oiugf hyoifxugyoixgfuy xoiuyxoiyxoifuy xo', 16, NULL, NULL, false, false, '2006-07-14 08:48:52.922462', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
754+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (4, '2004-01-04 00:00:00', NULL, 'Reflow problems with complex page layouts', 'Malone pages that use more complex layouts with portlets and fancy CSS are sometimes not getting properly reflowed after rendering.', 12, NULL, NULL, false, false, '2006-07-14 08:49:17.124885', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
755+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (5, '2004-01-05 00:00:00', NULL, 'Firefox install instructions should be complete', 'All ways of downloading firefox should provide complete install instructions. At present, they are only visible on the Release Notes page.', 12, NULL, NULL, false, false, '2006-07-14 08:49:40.553212', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
756+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (6, '2004-01-06 00:00:00', NULL, 'Firefox crashes when Save As dialog for a nonexistent window is closed', 'User-Agent:
757 Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040207 Firefox/0.8
758
759 If a Save As dialog for a nonexistent window exists, when the dialog is closed Firefox will crash. It''s possible to cause this to happen using the "Open With/Save As" dialog.
760@@ -1302,12 +1363,12 @@
761 Crash!
762
763 Expected Results:
764-Not crashed.', 12, 5, NULL, false, false, '2006-05-19 06:37:40.389193', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
765-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (7, '2004-01-07 15:12:29.602117', NULL, 'A test bug', 'A test description', 16, NULL, NULL, false, false, '2006-05-19 06:37:40.391822', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
766-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (8, '2004-01-08 09:10:17.13237', NULL, 'Printing doesn''t work', 'When I press print in Firefox, nothing happens, not even a print dialog comes up.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.393303', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
767-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (9, '2004-01-09 16:42:14.080227', NULL, 'Thunderbird crashes', 'Every time I start Thunderbird it crashes.', 16, NULL, NULL, false, false, '2006-07-14 08:45:10.600579', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
768-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (10, '2004-01-10 19:42:21.890299', NULL, 'another test bug', 'test bug', 16, NULL, NULL, false, false, '2006-07-14 08:54:19.453881', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL);
769-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (11, '2007-03-15 20:33:56.67893', NULL, 'Make Jokosher use autoaudiosink', 'I''ve had problems when switching from Jokosher to Totem to play an Ogg.
770+Not crashed.', 12, 5, NULL, false, false, '2006-05-19 06:37:40.389193', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
771+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (7, '2004-01-07 15:12:29.602117', NULL, 'A test bug', 'A test description', 16, NULL, NULL, false, false, '2006-05-19 06:37:40.391822', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
772+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (8, '2004-01-08 09:10:17.13237', NULL, 'Printing doesn''t work', 'When I press print in Firefox, nothing happens, not even a print dialog comes up.', 12, NULL, NULL, false, false, '2006-05-19 06:37:40.393303', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
773+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (9, '2004-01-09 16:42:14.080227', NULL, 'Thunderbird crashes', 'Every time I start Thunderbird it crashes.', 16, NULL, NULL, false, false, '2006-07-14 08:45:10.600579', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
774+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (10, '2004-01-10 19:42:21.890299', NULL, 'another test bug', 'test bug', 16, NULL, NULL, false, false, '2006-07-14 08:54:19.453881', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL, NULL);
775+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (11, '2007-03-15 20:33:56.67893', NULL, 'Make Jokosher use autoaudiosink', 'I''ve had problems when switching from Jokosher to Totem to play an Ogg.
776
777 Totem appears to be playing normally but does not produce any sound.
778 If I close Jokosher then you can hear totem.
779@@ -1333,11 +1394,11 @@
780 Is there some way to reset alsa or the device driver - with out having
781 to restart?
782
783-Running on Ubuntu - with Jokosher 0.2 runscript.', 16, NULL, NULL, false, false, '2007-03-15 20:37:51.603369', NULL, NULL, NULL, 0, 7, 0, 0, 0, NULL);
784-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (12, '2007-03-15 20:41:18.635493', NULL, 'Copy, Cut and Delete operations should work on selections', 'When trying to copy, cut or delete just a selected portion of an event, the operations affect the event completely. That is, you can''t select a portion and cut that piece. The whole event will be cut. Same goes for the other 2 operations.', 16, NULL, NULL, false, false, '2007-03-15 20:46:49.909153', NULL, NULL, NULL, 0, 5, 0, 0, 0, NULL);
785-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (13, '2007-07-27 20:00:58.299796', NULL, 'Launchpad CSS and JS is not testible', 'The messages placed on this bug are for eyeball viewing of JS and CSS behaviour.', 12, NULL, NULL, false, false, '2007-07-27 20:29:46.336737', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL);
786-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (14, '2007-08-09 11:39:16.836856', NULL, 'jokosher exposes personal details in its actions portlet', 'Jokosher discloses to any passerby the fact that I am single and unwed in its actions portlet. Please fix this blatant violacion of privacy now!!', 63, NULL, NULL, true, true, '2007-08-09 11:39:16.836856', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL);
787-INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated) VALUES (15, '2007-12-18 16:30:19.103679', NULL, 'Nonsensical bugs are useless', 'Like this one, natch.', 16, NULL, NULL, false, false, '2007-12-18 16:31:34.972893', NULL, NULL, '2007-12-18 16:31:34.790641', 0, 7, 0, 0, 0, NULL);
788+Running on Ubuntu - with Jokosher 0.2 runscript.', 16, NULL, NULL, false, false, '2007-03-15 20:37:51.603369', NULL, NULL, NULL, 0, 7, 0, 0, 0, NULL, NULL);
789+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (12, '2007-03-15 20:41:18.635493', NULL, 'Copy, Cut and Delete operations should work on selections', 'When trying to copy, cut or delete just a selected portion of an event, the operations affect the event completely. That is, you can''t select a portion and cut that piece. The whole event will be cut. Same goes for the other 2 operations.', 16, NULL, NULL, false, false, '2007-03-15 20:46:49.909153', NULL, NULL, NULL, 0, 5, 0, 0, 0, NULL, NULL);
790+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (13, '2007-07-27 20:00:58.299796', NULL, 'Launchpad CSS and JS is not testible', 'The messages placed on this bug are for eyeball viewing of JS and CSS behaviour.', 12, NULL, NULL, false, false, '2007-07-27 20:29:46.336737', NULL, NULL, NULL, 0, 2, 0, 0, 0, NULL, NULL);
791+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (14, '2007-08-09 11:39:16.836856', NULL, 'jokosher exposes personal details in its actions portlet', 'Jokosher discloses to any passerby the fact that I am single and unwed in its actions portlet. Please fix this blatant violacion of privacy now!!', 63, NULL, NULL, true, true, '2007-08-09 11:39:16.836856', NULL, NULL, NULL, 0, 1, 0, 0, 0, NULL, NULL);
792+INSERT INTO bug (id, datecreated, name, title, description, owner, duplicateof, fti, private, security_related, date_last_updated, date_made_private, who_made_private, date_last_message, number_of_duplicates, message_count, users_affected_count, users_unaffected_count, heat, heat_last_updated, latest_patch_uploaded) VALUES (15, '2007-12-18 16:30:19.103679', NULL, 'Nonsensical bugs are useless', 'Like this one, natch.', 16, NULL, NULL, false, false, '2007-12-18 16:31:34.972893', NULL, NULL, '2007-12-18 16:31:34.790641', 0, 7, 0, 0, 0, NULL, NULL);
793
794
795 ALTER TABLE bug ENABLE TRIGGER ALL;
796@@ -1419,6 +1480,13 @@
797 ALTER TABLE bugcve ENABLE TRIGGER ALL;
798
799
800+ALTER TABLE bugjob DISABLE TRIGGER ALL;
801+
802+
803+
804+ALTER TABLE bugjob ENABLE TRIGGER ALL;
805+
806+
807 ALTER TABLE bugmessage DISABLE TRIGGER ALL;
808
809 INSERT INTO bugmessage (id, bug, message, bugwatch, remote_comment_id, visible) VALUES (1, 2, 1, NULL, NULL, true);
810@@ -1697,8 +1765,8 @@
811
812 ALTER TABLE buildqueue DISABLE TRIGGER ALL;
813
814-INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (1, 1, 'Dummy sampledata entry, not processing', 1, false, 1, 1, '00:00:00', 1, FALSE);
815-INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (2, NULL, NULL, 10, false, 2, 1, '00:01:00', 1, FALSE);
816+INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (1, 1, 'Dummy sampledata entry, not processing', 1, false, 1, 1, '00:00:00', 1, false);
817+INSERT INTO buildqueue (id, builder, logtail, lastscore, manual, job, job_type, estimated_duration, processor, virtualized) VALUES (2, NULL, NULL, 10, false, 2, 1, '00:01:00', 1, false);
818
819
820 ALTER TABLE buildqueue ENABLE TRIGGER ALL;
821@@ -2134,6 +2202,13 @@
822 ALTER TABLE cvereference ENABLE TRIGGER ALL;
823
824
825+ALTER TABLE databasereplicationlag DISABLE TRIGGER ALL;
826+
827+
828+
829+ALTER TABLE databasereplicationlag ENABLE TRIGGER ALL;
830+
831+
832 ALTER TABLE diff DISABLE TRIGGER ALL;
833
834
835@@ -2191,16 +2266,16 @@
836
837 ALTER TABLE distributionmirror DISABLE TRIGGER ALL;
838
839-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (1, 1, 'archive-mirror', 'http://localhost:11375/valid-mirror/', NULL, NULL, NULL, NULL, 1, 10, 75, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL);
840-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (2, 1, 'invalid-mirror', 'http://localhost:11375/invalid-mirror/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.436833', NULL, 20, NULL, NULL);
841-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (3, 1, 'unreachable-mirror', 'http://localhost:11375/timeout/', NULL, NULL, NULL, NULL, 12, 30, 75, 2, true, true, '2006-10-16 18:31:43.437635', NULL, 30, NULL, NULL);
842-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (4, 1, 'archive-404-mirror', 'http://localhost:11375/archive-mirror/', NULL, NULL, NULL, NULL, 12, 30, 75, 1, true, true, '2006-10-16 18:31:43.438573', NULL, 30, NULL, NULL);
843-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (5, 1, 'releases-mirror', 'http://localhost:11375/valid-mirror/releases/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.439336', NULL, 30, NULL, NULL);
844-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (6, 1, 'releases-mirror2', 'http://localhost:11375/valid-mirror/releases2/', NULL, NULL, NULL, NULL, 12, 50, 82, 2, true, true, '2006-10-16 18:31:43.440079', NULL, 30, NULL, NULL);
845-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (7, 1, 'archive-mirror2', 'http://localhost:11375/valid-mirror2/', NULL, NULL, NULL, NULL, 1, 10, 9, 1, true, true, '2006-10-16 18:31:43.440832', NULL, 30, NULL, NULL);
846-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (8, 1, 'canonical-archive', 'http://archive.ubuntu.com/ubuntu/', NULL, NULL, NULL, NULL, 1, 70, 225, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL);
847-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (9, 1, 'canonical-releases', 'http://releases.ubuntu.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL);
848-INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer) VALUES (10, 1, 'random-releases-mirror', 'http://releases.random.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 10, NULL, NULL);
849+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (1, 1, 'archive-mirror', 'http://localhost:11375/valid-mirror/', NULL, NULL, NULL, NULL, 1, 10, 75, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL, false);
850+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (2, 1, 'invalid-mirror', 'http://localhost:11375/invalid-mirror/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.436833', NULL, 20, NULL, NULL, false);
851+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (3, 1, 'unreachable-mirror', 'http://localhost:11375/timeout/', NULL, NULL, NULL, NULL, 12, 30, 75, 2, true, true, '2006-10-16 18:31:43.437635', NULL, 30, NULL, NULL, false);
852+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (4, 1, 'archive-404-mirror', 'http://localhost:11375/archive-mirror/', NULL, NULL, NULL, NULL, 12, 30, 75, 1, true, true, '2006-10-16 18:31:43.438573', NULL, 30, NULL, NULL, false);
853+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (5, 1, 'releases-mirror', 'http://localhost:11375/valid-mirror/releases/', NULL, NULL, NULL, NULL, 12, 50, 75, 2, true, true, '2006-10-16 18:31:43.439336', NULL, 30, NULL, NULL, false);
854+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (6, 1, 'releases-mirror2', 'http://localhost:11375/valid-mirror/releases2/', NULL, NULL, NULL, NULL, 12, 50, 82, 2, true, true, '2006-10-16 18:31:43.440079', NULL, 30, NULL, NULL, false);
855+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (7, 1, 'archive-mirror2', 'http://localhost:11375/valid-mirror2/', NULL, NULL, NULL, NULL, 1, 10, 9, 1, true, true, '2006-10-16 18:31:43.440832', NULL, 30, NULL, NULL, false);
856+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (8, 1, 'canonical-archive', 'http://archive.ubuntu.com/ubuntu/', NULL, NULL, NULL, NULL, 1, 70, 225, 1, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL, false);
857+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (9, 1, 'canonical-releases', 'http://releases.ubuntu.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 30, NULL, NULL, false);
858+INSERT INTO distributionmirror (id, distribution, name, http_base_url, ftp_base_url, rsync_base_url, displayname, description, owner, speed, country, content, official_candidate, enabled, date_created, whiteboard, status, date_reviewed, reviewer, country_dns_mirror) VALUES (10, 1, 'random-releases-mirror', 'http://releases.random.com/', NULL, NULL, NULL, NULL, 1, 70, 225, 2, true, true, '2006-10-16 18:31:43.434567', NULL, 10, NULL, NULL, false);
859
860
861 ALTER TABLE distributionmirror ENABLE TRIGGER ALL;
862@@ -7964,10 +8039,11 @@
863
864 ALTER TABLE processorfamily DISABLE TRIGGER ALL;
865
866-INSERT INTO processorfamily (id, name, title, description) VALUES (1, 'x86', 'Intel 386 compatible chips', 'Bring back the 8086!');
867-INSERT INTO processorfamily (id, name, title, description) VALUES (2, 'powerpc', 'PowerPC compatible systems, G3 G4 etc', 'An architecture conceived by Motorola and developed further in cooperation with IBM. Was used very successfully by Apple for their PowerMac range, until 2007.');
868-INSERT INTO processorfamily (id, name, title, description) VALUES (3, 'amd64', 'AMD64 and Intel EM64T and compatible systems', 'A 64-bit extension to the venerable x86 architecture, pioneered by AMD and later adopted by Intel as well.');
869-INSERT INTO processorfamily (id, name, title, description) VALUES (4, 'hppa', 'PA-RISC Processors', 'The HP PA-RISC and compatible processors');
870+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (1, 'x86', 'Intel 386 compatible chips', 'Bring back the 8086!', false);
871+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (2, 'powerpc', 'PowerPC compatible systems, G3 G4 etc', 'An architecture conceived by Motorola and developed further in cooperation with IBM. Was used very successfully by Apple for their PowerMac range, until 2007.', false);
872+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (3, 'amd64', 'AMD64 and Intel EM64T and compatible systems', 'A 64-bit extension to the venerable x86 architecture, pioneered by AMD and later adopted by Intel as well.', false);
873+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (4, 'hppa', 'PA-RISC Processors', 'The HP PA-RISC and compatible processors', false);
874+INSERT INTO processorfamily (id, name, title, description, restricted) VALUES (5, 'arm', 'ARM Processors', 'The ARM and compatible processors', true);
875
876
877 ALTER TABLE processorfamily ENABLE TRIGGER ALL;
878@@ -8693,74 +8769,6 @@
879 ALTER TABLE sectionselection ENABLE TRIGGER ALL;
880
881
882-ALTER TABLE securebinarypackagepublishinghistory DISABLE TRIGGER ALL;
883-
884-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (9, 12, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
885-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (11, 15, 6, 3, 1, 3, 40, '2005-05-05 00:00:00', '2005-05-05 00:01:00', '2006-01-25 00:00:00', 7, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
886-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (12, 15, 6, 2, 3, 3, 40, '2006-01-25 00:00:00', '2006-01-25 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
887-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (13, 15, 1, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2007-09-13 00:00:01', NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
888-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (14, 15, 7, 3, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', '2006-01-28 00:00:00', NULL, NULL, NULL, NULL, 0, false, NULL, 3, NULL, NULL);
889-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (15, 12, 7, 2, 3, 3, 40, '2006-01-26 00:00:00', '2006-01-26 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 3, NULL, NULL);
890-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (16, 15, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-24 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
891-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (17, 16, 1, 2, 1, 1, 10, '2005-07-06 00:00:00', '2005-08-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
892-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (18, 17, 1, 3, 1, 1, 10, '2005-08-07 00:00:00', '2005-08-22 00:00:00', '2005-08-22 00:00:01', NULL, NULL, '2005-08-22 00:00:02', '2005-08-23 00:00:00', 0, false, NULL, 1, NULL, NULL);
893-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (19, 18, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
894-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (20, 17, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:01:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
895-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (21, 18, 11, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-20 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
896-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (22, 20, 8, 4, 1, 1, 40, '2006-09-13 00:00:00', '2006-09-13 00:00:01', '2006-09-13 00:00:01', NULL, NULL, '2006-09-13 00:00:02', '2006-09-13 00:00:03', 0, false, NULL, 1, 1, 'nah ...');
897-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (23, 6, 1, 4, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', '2006-12-01 00:00:01', NULL, NULL, '2006-12-01 00:00:02', '2006-12-01 00:00:03', 0, false, NULL, 1, 28, 'I do not like it either');
898-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (24, 21, 1, 2, 1, 1, 40, '2006-12-01 00:00:00', '2006-12-01 00:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
899-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (25, 12, 1, 2, 1, 1, 10, '2007-01-19 00:00:00', '2007-02-19 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 8, NULL, NULL);
900-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (26, 22, 1, 2, 1, 1, 40, '2006-04-11 13:00:00', '2006-04-11 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
901-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (27, 22, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
902-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (28, 23, 1, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
903-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (29, 23, 12, 2, 1, 1, 40, '2007-07-10 13:00:00', '2007-07-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
904-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (30, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
905-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (31, 25, 8, 2, 5, 7, 20, '2007-08-09 21:55:39.561526', '2007-08-09 21:56:39.561526', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 12, NULL, NULL);
906-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (32, 26, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
907-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (33, 27, 1, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
908-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (34, 27, 12, 2, 1, 1, 10, '2005-05-05 00:00:00', '2005-06-18 00:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
909-INSERT INTO securebinarypackagepublishinghistory (id, binarypackagerelease, distroarchseries, status, component, section, priority, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (35, 24, 12, 2, 1, 1, 40, '2007-08-10 13:00:00', '2007-08-10 13:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 10, NULL, NULL);
910-
911-
912-ALTER TABLE securebinarypackagepublishinghistory ENABLE TRIGGER ALL;
913-
914-
915-ALTER TABLE securesourcepackagepublishinghistory DISABLE TRIGGER ALL;
916-
917-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (1, 14, 1, 1, 1, 3, '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
918-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (2, 15, 3, 2, 1, 3, '2004-09-27 11:57:13', '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
919-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (4, 17, 1, 2, 1, 1, '2004-03-14 18:00:00', '2004-03-14 18:00:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
920-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (5, 16, 3, 2, 1, 2, '2004-03-10 16:30:00', '2004-03-10 16:30:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
921-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (8, 20, 3, 3, 1, 1, '2005-04-18 17:34:15.308434', '2005-04-18 17:34:15.308434', '2005-08-24 17:01:15.308434', 21, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
922-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (9, 21, 3, 2, 1, 3, '2005-08-24 17:01:15.308434', '2005-08-24 17:01:15.308434', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
923-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (10, 23, 1, 2, 1, 1, '2005-09-15 11:42:02.870714', '2005-09-15 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
924-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (11, 24, 8, 2, 1, 2, '2005-09-15 11:42:21.070926', '2005-09-15 11:42:21.070926', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 3, NULL, NULL);
925-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (12, 25, 3, 2, 1, 1, '2005-09-15 11:43:00.05741', '2005-09-15 11:43:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
926-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (13, 26, 3, 2, 3, 1, '2005-12-22 18:19:00.05741', '2005-12-22 18:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
927-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (14, 24, 3, 3, 1, 3, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 25, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 0, false, NULL, 1, NULL, NULL);
928-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (15, 24, 1, 2, 1, 1, '2005-09-16 11:42:02.870714', '2005-09-16 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
929-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (16, 27, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
930-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (17, 28, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
931-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (18, 14, 1, 2, 1, 2, '2006-02-13 12:19:00.05741', '2006-02-13 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
932-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (19, 28, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
933-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (20, 25, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
934-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (21, 24, 11, 4, 1, 3, '2006-09-14 11:44:00.10654', '2006-09-14 11:44:00', '2006-09-14 11:44:01', 25, '2006-09-14 11:45:00', '2006-09-14 11:45:00', '2006-09-15 11:45:00', 0, false, NULL, 8, 1, 'does anyone like ? I did not think so.');
935-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (22, 32, 1, 4, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, '2006-12-02 11:44:00', 0, false, NULL, 1, 28, 'I do not like it.');
936-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (23, 33, 1, 2, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
937-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (24, 14, 1, 2, 1, 2, '2006-02-19 11:57:13', '2007-02-19 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 8, NULL, NULL);
938-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (25, 33, 10, 2, 1, 3, '2007-04-25 13:44:00.10654', '2007-04-25 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
939-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (26, 35, 1, 2, 1, 3, '2006-04-11 12:00:00', '2006-04-11 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 1, NULL, NULL);
940-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (27, 33, 10, 2, 1, 3, '2007-07-09 13:44:00.10654', '2007-07-09 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
941-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (28, 35, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
942-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (29, 20, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 9, NULL, NULL);
943-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (30, 36, 10, 2, 5, 7, '2007-08-09 21:28:12.106187', NULL, NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 12, NULL, NULL);
944-INSERT INTO securesourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, embargo, embargolifted, archive, removed_by, removal_comment) VALUES (31, 35, 10, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, false, NULL, 10, NULL, NULL);
945-
946-
947-ALTER TABLE securesourcepackagepublishinghistory ENABLE TRIGGER ALL;
948-
949-
950 ALTER TABLE seriessourcepackagebranch DISABLE TRIGGER ALL;
951
952
953@@ -8899,31 +8907,101 @@
954 ALTER TABLE sourcepackagename ENABLE TRIGGER ALL;
955
956
957+ALTER TABLE sourcepackagepublishinghistory DISABLE TRIGGER ALL;
958+
959+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (1, 14, 1, 1, 1, 3, '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
960+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (2, 15, 3, 2, 1, 3, '2004-09-27 11:57:13', '2004-09-27 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
961+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (4, 17, 1, 2, 1, 1, '2004-03-14 18:00:00', '2004-03-14 18:00:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
962+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (5, 16, 3, 2, 1, 2, '2004-03-10 16:30:00', '2004-03-10 16:30:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
963+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (8, 20, 3, 3, 1, 1, '2005-04-18 17:34:15.308434', '2005-04-18 17:34:15.308434', '2005-08-24 17:01:15.308434', 21, NULL, NULL, NULL, 0, 1, NULL, NULL);
964+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (9, 21, 3, 2, 1, 3, '2005-08-24 17:01:15.308434', '2005-08-24 17:01:15.308434', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
965+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (10, 23, 1, 2, 1, 1, '2005-09-15 11:42:02.870714', '2005-09-15 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
966+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (11, 24, 8, 2, 1, 2, '2005-09-15 11:42:21.070926', '2005-09-15 11:42:21.070926', NULL, NULL, NULL, NULL, NULL, 0, 3, NULL, NULL);
967+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (12, 25, 3, 2, 1, 1, '2005-09-15 11:43:00.05741', '2005-09-15 11:43:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
968+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (13, 26, 3, 2, 3, 1, '2005-12-22 18:19:00.05741', '2005-12-22 18:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
969+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (14, 24, 3, 3, 1, 3, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 25, '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', '2005-09-15 11:44:00.10654', 0, 1, NULL, NULL);
970+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (15, 24, 1, 2, 1, 1, '2005-09-16 11:42:02.870714', '2005-09-16 11:42:02.870714', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
971+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (16, 27, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
972+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (17, 28, 3, 2, 1, 1, '2005-02-10 12:19:00.05741', '2005-02-10 12:20:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
973+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (18, 14, 1, 2, 1, 2, '2006-02-13 12:19:00.05741', '2006-02-13 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
974+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (19, 28, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
975+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (20, 25, 1, 1, 1, 3, '2006-02-15 12:19:00.05741', NULL, NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
976+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (21, 24, 11, 4, 1, 3, '2006-09-14 11:44:00.10654', '2006-09-14 11:44:00', '2006-09-14 11:44:01', 25, '2006-09-14 11:45:00', '2006-09-14 11:45:00', '2006-09-15 11:45:00', 0, 8, 1, 'does anyone like ? I did not think so.');
977+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (22, 32, 1, 4, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, '2006-12-02 11:44:00', 0, 1, 28, 'I do not like it.');
978+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (23, 33, 1, 2, 1, 3, '2006-12-01 13:44:00.10654', '2006-12-01 11:44:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
979+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (24, 14, 1, 2, 1, 2, '2006-02-19 11:57:13', '2007-02-19 11:57:13', NULL, NULL, NULL, NULL, NULL, 0, 8, NULL, NULL);
980+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (25, 33, 10, 2, 1, 3, '2007-04-25 13:44:00.10654', '2007-04-25 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
981+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (26, 35, 1, 2, 1, 3, '2006-04-11 12:00:00', '2006-04-11 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 1, NULL, NULL);
982+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (27, 33, 10, 2, 1, 3, '2007-07-09 13:44:00.10654', '2007-07-09 14:14:00', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
983+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (28, 35, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
984+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (29, 20, 1, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 9, NULL, NULL);
985+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (30, 36, 10, 2, 5, 7, '2007-08-09 21:28:12.106187', NULL, NULL, NULL, NULL, NULL, NULL, 0, 12, NULL, NULL);
986+INSERT INTO sourcepackagepublishinghistory (id, sourcepackagerelease, distroseries, status, component, section, datecreated, datepublished, datesuperseded, supersededby, datemadepending, scheduleddeletiondate, dateremoved, pocket, archive, removed_by, removal_comment) VALUES (31, 35, 10, 2, 1, 3, '2007-07-09 12:00:00', '2007-07-09 12:00:01', NULL, NULL, NULL, NULL, NULL, 0, 10, NULL, NULL);
987+
988+
989+ALTER TABLE sourcepackagepublishinghistory ENABLE TRIGGER ALL;
990+
991+
992+ALTER TABLE sourcepackagerecipe DISABLE TRIGGER ALL;
993+
994+
995+
996+ALTER TABLE sourcepackagerecipe ENABLE TRIGGER ALL;
997+
998+
999+ALTER TABLE sourcepackagerecipebuild DISABLE TRIGGER ALL;
1000+
1001+
1002+
1003+ALTER TABLE sourcepackagerecipebuild ENABLE TRIGGER ALL;
1004+
1005+
1006+ALTER TABLE sourcepackagerecipebuildjob DISABLE TRIGGER ALL;
1007+
1008+
1009+
1010+ALTER TABLE sourcepackagerecipebuildjob ENABLE TRIGGER ALL;
1011+
1012+
1013+ALTER TABLE sourcepackagerecipedata DISABLE TRIGGER ALL;
1014+
1015+
1016+
1017+ALTER TABLE sourcepackagerecipedata ENABLE TRIGGER ALL;
1018+
1019+
1020+ALTER TABLE sourcepackagerecipedatainstruction DISABLE TRIGGER ALL;
1021+
1022+
1023+
1024+ALTER TABLE sourcepackagerecipedatainstruction ENABLE TRIGGER ALL;
1025+
1026+
1027 ALTER TABLE sourcepackagerelease DISABLE TRIGGER ALL;
1028
1029-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (14, 1, '0.9', '2004-09-27 11:57:13', 1, NULL, 1, 'Mozilla dummy Changelog......', 'gcc-3.4-base, libc6 (>= 2.3.2.ds1-4), gcc-3.4 (>= 3.4.1-4sarge1), gcc-3.4 (<< 3.4.2), libstdc++6-dev (>= 3.4.1-4sarge1), pmount', 'bacula-common (= 1.34.6-2), bacula-director-common (= 1.34.6-2), postgresql-client (>= 7.4), pmount', 'any', NULL, 1, 1, 1, 1, 1, 'Mark Shuttleworth <mark@canonical.com>', '3.6.2', '1.0', 'mozilla-firefox', 1, NULL, 'gcc-4.0, pmount', 'gcc-4.0-base, pmount');
1030-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (15, 1, '1.0', '2004-09-27 11:57:13', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 2, 1, 9, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1031-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (16, 1, '1.0-1', '2005-03-10 16:30:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 3, 1, 10, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1032-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (17, 1, '0.99.6-1', '2005-03-14 18:00:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 2, 1, 10, 1, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1033-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (20, 1, '0.1-1', '2005-03-24 20:59:31.439579', 1, NULL, 1, 'pmount (0.1-1) hoary; urgency=low
1034+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (14, 1, '0.9', '2004-09-27 11:57:13', 1, NULL, 1, 'Mozilla dummy Changelog......', 'gcc-3.4-base, libc6 (>= 2.3.2.ds1-4), gcc-3.4 (>= 3.4.1-4sarge1), gcc-3.4 (<< 3.4.2), libstdc++6-dev (>= 3.4.1-4sarge1), pmount', 'bacula-common (= 1.34.6-2), bacula-director-common (= 1.34.6-2), postgresql-client (>= 7.4), pmount', 'any', NULL, 1, 1, 1, 1, 1, 'Mark Shuttleworth <mark@canonical.com>', '3.6.2', '1.0', 'mozilla-firefox', 1, NULL, 'gcc-4.0, pmount', 'gcc-4.0-base, pmount', NULL);
1035+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (15, 1, '1.0', '2004-09-27 11:57:13', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 2, 1, 9, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1036+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (16, 1, '1.0-1', '2005-03-10 16:30:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 3, 1, 10, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1037+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (17, 1, '0.99.6-1', '2005-03-14 18:00:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 2, 1, 10, 1, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1038+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (20, 1, '0.1-1', '2005-03-24 20:59:31.439579', 1, NULL, 1, 'pmount (0.1-1) hoary; urgency=low
1039
1040 * Fix description (Malone #1)
1041 * Fix debian (Debian #2000)
1042 * Fix warty (Warty Ubuntu #1)
1043
1044- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 2, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1045-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (21, 1, '0.1-2', '2005-06-24 20:59:31.439579', 1, NULL, 1, 'This is a placeholder changelog for pmount 0.1-2', NULL, NULL, 'powerpc', NULL, 1, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1046-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (23, 1, '1.0.8-1ubuntu1', '2005-02-03 08:50:00', 1, NULL, 1, 'alsa-utils (1.0.8-1ubuntu1) warty; urgency=low
1047-
1048- * Placeholder
1049-
1050- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 1, 19, 1, 1, 'Mark Shuttleworth <mark@example.com>', '3.6.2', '1.0', 'alsa-mixer', 1, NULL, NULL, NULL);
1051-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (24, 1, '1.0.9a-4', '2005-07-01 22:47:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4) warty; urgency=low
1052-
1053- * Placeholder
1054-
1055- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'any', NULL, 2, 1, 19, 8, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1056-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (25, 1, '1.0.9a-4ubuntu1', '2005-08-01 14:10:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4ubuntu1) hoary; urgency=low
1057+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 2, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1058+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (21, 1, '0.1-2', '2005-06-24 20:59:31.439579', 1, NULL, 1, 'This is a placeholder changelog for pmount 0.1-2', NULL, NULL, 'powerpc', NULL, 1, 1, 14, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1059+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (23, 1, '1.0.8-1ubuntu1', '2005-02-03 08:50:00', 1, NULL, 1, 'alsa-utils (1.0.8-1ubuntu1) warty; urgency=low
1060+
1061+ * Placeholder
1062+
1063+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 1, 19, 1, 1, 'Mark Shuttleworth <mark@example.com>', '3.6.2', '1.0', 'alsa-mixer', 1, NULL, NULL, NULL, NULL);
1064+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (24, 1, '1.0.9a-4', '2005-07-01 22:47:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4) warty; urgency=low
1065+
1066+ * Placeholder
1067+
1068+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'any', NULL, 2, 1, 19, 8, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1069+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (25, 1, '1.0.9a-4ubuntu1', '2005-08-01 14:10:00', 1, NULL, 1, 'alsa-utils (1.0.9a-4ubuntu1) hoary; urgency=low
1070
1071 * Placeholder
1072 LP: #10
1073@@ -8932,22 +9010,22 @@
1074 LP: #7, #8,
1075 #11
1076
1077- -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 16, 19, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1078-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (26, 1, 'cr.g7-37', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 20, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1079-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (27, 1, 'b8p', '2006-02-10 11:19:00', 1, NULL, 1, 'libstdc++ (9.9-1) hoary; urgency=high
1080+ -- Sample Person <test@canonical.com> Tue, 7 Feb 2006 12:10:08 +0300', NULL, NULL, 'all', NULL, 1, 16, 19, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1081+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (26, 1, 'cr.g7-37', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 20, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1082+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (27, 1, 'b8p', '2006-02-10 11:19:00', 1, NULL, 1, 'libstdc++ (9.9-1) hoary; urgency=high
1083
1084 * Placeholder
1085
1086- -- Sample Person <test@canonical.com> Tue, 10 Feb 2006 10:10:08 +0300', NULL, NULL, 'powerpc i386', NULL, 1, 16, 21, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1087-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (28, 1, '2.6.15.3', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 22, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1088-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (29, 1, '0.00', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 17, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1089-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (30, 1, '1.0', '2006-09-28 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1090-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (31, 1, '1.0', '2006-09-28 18:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1091-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (32, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 23, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1092-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (33, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 24, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1093-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (34, 1, '1.0', '2007-02-15 14:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 29, 16, 25, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL);
1094-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (35, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 10, NULL, NULL, NULL);
1095-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (36, 243606, '1.0-1', '2007-08-09 21:25:37.832976', 1, NULL, 5, 'commercialpackage (1.0-1) breezy; urgency=low
1096+ -- Sample Person <test@canonical.com> Tue, 10 Feb 2006 10:10:08 +0300', NULL, NULL, 'powerpc i386', NULL, 1, 16, 21, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1097+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (28, 1, '2.6.15.3', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 22, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1098+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (29, 1, '0.00', '2005-12-22 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 17, 3, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1099+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (30, 1, '1.0', '2006-09-28 18:19:00', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1100+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (31, 1, '1.0', '2006-09-28 18:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 20, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1101+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (32, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 23, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1102+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (33, 1, '1.0', '2006-12-01 13:19:01', 1, NULL, 1, NULL, NULL, NULL, 'all', NULL, 1, 16, 24, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1103+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (34, 1, '1.0', '2007-02-15 14:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 29, 16, 25, 10, 1, NULL, NULL, '1.0', NULL, 1, NULL, NULL, NULL, NULL);
1104+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (35, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'any', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 10, NULL, NULL, NULL, NULL);
1105+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (36, 243606, '1.0-1', '2007-08-09 21:25:37.832976', 1, NULL, 5, 'commercialpackage (1.0-1) breezy; urgency=low
1106
1107 * Initial version
1108 Address for testing linkification: Foo Bar <foo.bar@canonical.com>
1109@@ -8971,8 +9049,8 @@
1110 iD8DBQFGtzTjWhGlTF8G/HcRAtFsAJ4hHyKhOnsUOQDI+SAk000DmFAnUgCcC84J
1111 3F4bEPeRcnUjCFI/hjR0kxg=
1112 =Tjln
1113-', 7, 243606, 27, 10, 1, 'Julian Edwards <launchpad@julian-edwards.com>', '3.6.2', '1.0', 'commercialpackage', 12, NULL, NULL, NULL);
1114-INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep) VALUES (37, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 11, NULL, NULL, NULL);
1115+', 7, 243606, 27, 10, 1, 'Julian Edwards <launchpad@julian-edwards.com>', '3.6.2', '1.0', 'commercialpackage', 12, NULL, NULL, NULL, NULL);
1116+INSERT INTO sourcepackagerelease (id, creator, version, dateuploaded, urgency, dscsigningkey, component, changelog_entry, builddepends, builddependsindep, architecturehintlist, dsc, section, maintainer, sourcepackagename, upload_distroseries, format, dsc_maintainer_rfc822, dsc_standards_version, dsc_format, dsc_binaries, upload_archive, copyright, build_conflicts, build_conflicts_indep, sourcepackage_recipe_build) VALUES (37, 1, '1.0', '2006-04-11 11:19:01', 1, NULL, 1, NULL, NULL, NULL, 'i386', NULL, 1, 16, 26, 1, 1, NULL, NULL, '1.0', NULL, 11, NULL, NULL, NULL, NULL);
1117
1118
1119 ALTER TABLE sourcepackagerelease ENABLE TRIGGER ALL;
1120
1121=== modified file 'database/schema/Makefile'
1122--- database/schema/Makefile 2009-09-23 10:48:06 +0000
1123+++ database/schema/Makefile 2010-03-01 17:42:33 +0000
1124@@ -122,6 +122,8 @@
1125 echo "* Installing PL/PgSQL"; \
1126 createlang -d ${EMPTY_DBNAME} plpgsql; \
1127 fi
1128+ @ echo "* Creating todrop schema"
1129+ @ psql -d ${EMPTY_DBNAME} -q -c "CREATE SCHEMA todrop;"
1130 @ echo "* Creating functions"
1131 @ psql -d ${EMPTY_DBNAME} -f trusted.sql | grep : | cat
1132 @ psql -d ${EMPTY_DBNAME} -f testfuncs.sql | grep : | cat
1133
1134=== modified file 'database/schema/comments.sql'
1135--- database/schema/comments.sql 2010-02-22 13:08:23 +0000
1136+++ database/schema/comments.sql 2010-03-01 17:42:33 +0000
1137@@ -22,6 +22,13 @@
1138 COMMENT ON COLUMN AnswerContact.person IS 'The person or team associated with the question target.';
1139 COMMENT ON COLUMN AnswerContact.date_created IS 'The date the answer contact was submitted.';
1140
1141+-- ApportJob
1142+
1143+COMMENT ON TABLE ApportJob IS 'Contains references to jobs to be run against Apport BLOBs.';
1144+COMMENT ON COLUMN ApportJob.blob IS 'The TemporaryBlobStorage entry on which the job is to be run.';
1145+COMMENT ON COLUMN ApportJob.job_type IS 'The type of job (enumeration value). Allows us to query the database for a given subset of ApportJobs.';
1146+COMMENT ON COLUMN ApportJob.json_data IS 'A JSON struct containing data for the job.';
1147+
1148 -- Branch
1149 COMMENT ON TABLE Branch IS 'Bzr branch';
1150 COMMENT ON COLUMN Branch.registrant IS 'The user that registered the branch.';
1151@@ -155,6 +162,7 @@
1152 COMMENT ON COLUMN Bug.users_affected_count IS 'The number of users affected by this bug, maintained by the set_bug_users_affected_count_t trigger.';
1153 COMMENT ON COLUMN Bug.heat IS 'The relevance of this bug. This value is computed periodically using bug_affects_person and other bug values.';
1154 COMMENT ON COLUMN Bug.heat_last_updated IS 'The time this bug''s heat was last updated, or NULL if the heat has never yet been updated.';
1155+COMMENT ON COLUMN Bug.latest_patch_uploaded IS 'The time when the most recent patch has been attached to this bug or NULL if no patches are attached';
1156
1157 -- BugBranch
1158 COMMENT ON TABLE BugBranch IS 'A branch related to a bug, most likely a branch for fixing the bug.';
1159@@ -453,7 +461,7 @@
1160
1161 COMMENT ON TABLE DistributionSourcePackage IS 'Representing a sourcepackage in a distribution across all distribution series.';
1162 COMMENT ON COLUMN DistributionSourcePackage.bug_reporting_guidelines IS 'Guidelines to the end user for reporting bugs on a particular a source package in a distribution.';
1163-
1164+COMMENT ON COLUMN DistributionSourcePackage.max_bug_heat IS 'The highest heat value across bugs for this source package.';
1165
1166 -- DistributionSourcePackageCache
1167
1168@@ -467,7 +475,6 @@
1169 COMMENT ON COLUMN DistributionSourcePackageCache.changelog IS 'A concatenation of the source package release changelogs for this source package, where the status is not REMOVED.';
1170 COMMENT ON COLUMN DistributionSourcePackageCache.archive IS 'The archive where the source is published.';
1171
1172-
1173 -- DistroSeriesPackageCache
1174
1175 COMMENT ON TABLE DistroSeriesPackageCache IS 'A cache of the text associated with binary packages in the distroseries. This table allows for fast queries to find a binary packagename that matches a given text.';
1176@@ -604,6 +611,7 @@
1177 COMMENT ON COLUMN Product.reviewer_whiteboard IS 'A whiteboard for Launchpad admins, registry experts and the project owners to capture the state of current issues with the project.';
1178 COMMENT ON COLUMN Product.license_approved IS 'The Other/Open Source license has been approved by an administrator.';
1179 COMMENT ON COLUMN Product.remote_product IS 'The ID of this product on its remote bug tracker.';
1180+COMMENT ON COLUMN Product.max_bug_heat IS 'The highest heat value across bugs for this product.';
1181
1182 -- ProductLicense
1183 COMMENT ON TABLE ProductLicense IS 'The licenses that cover the software for a product.';
1184@@ -695,6 +703,7 @@
1185 COMMENT ON COLUMN Project.logo IS 'The library file alias of a smaller version of this product''s mugshot.';
1186 COMMENT ON COLUMN Project.bug_reporting_guidelines IS 'Guidelines to the end user for reporting bugs on products in this project.';
1187 COMMENT ON COLUMN Project.reviewer_whiteboard IS 'A whiteboard for Launchpad admins, registry experts and the project owners to capture the state of current issues with the project.';
1188+COMMENT ON COLUMN Project.max_bug_heat IS 'The highest heat value across bugs for products in this project.';
1189
1190 -- ProjectRelationship
1191 COMMENT ON TABLE ProjectRelationship IS 'Project Relationships. This table stores information about the way projects are related to one another in the open source world. The actual nature of the relationship is stored in the ''label'' field, and possible values are given by the ProjectRelationship enum in dbschema.py. Examples are AGGREGATES ("the Gnome Project AGGREGATES EOG and Evolution and Gnumeric and AbiWord") and SIMILAR ("the Evolution project is SIMILAR to the Mutt project").';
1192@@ -958,6 +967,7 @@
1193 COMMENT ON COLUMN Distribution.enable_bug_expiration IS 'Indicates whether automatic bug expiration is enabled.';
1194 COMMENT ON COLUMN Distribution.bug_reporting_guidelines IS 'Guidelines to the end user for reporting bugs on this distribution.';
1195 COMMENT ON COLUMN Distribution.reviewer_whiteboard IS 'A whiteboard for Launchpad admins, registry experts and the project owners to capture the state of current issues with the project.';
1196+COMMENT ON COLUMN Distribution.max_bug_heat IS 'The highest heat value across bugs for this distribution.';
1197
1198 -- DistroSeries
1199
1200@@ -1032,31 +1042,27 @@
1201 COMMENT ON COLUMN BinaryPackageName.name IS
1202 'A lowercase name identifying one or more binarypackages';
1203
1204--- SecureBinaryPackagePublishingHistory
1205-COMMENT ON TABLE SecureBinaryPackagePublishingHistory IS 'PackagePublishingHistory: The history of a BinaryPackagePublishing record. This table represents the lifetime of a publishing record from inception to deletion. Records are never removed from here and in time the publishing table may become a view onto this table. A column being NULL indicates there''s no data for that state transition. E.g. a package which is removed without being superseded won''t have datesuperseded or supersededby filled in.';
1206-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.binarypackagerelease IS 'The binarypackage being published.';
1207-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.distroarchseries IS 'The distroarchseries into which the binarypackage is being published.';
1208-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.status IS 'The current status of the publishing.';
1209-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.component IS 'The component into which the publishing takes place.';
1210-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.section IS 'The section into which the publishing takes place.';
1211-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.priority IS 'The priority at which the publishing takes place.';
1212-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.datecreated IS 'The date/time on which the publishing record was created.';
1213-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.datepublished IS 'The date/time on which the source was actually published into an archive.';
1214-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.datesuperseded IS 'The date/time on which the source was superseded by a new source.';
1215-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.supersededby IS 'The build which superseded this package. This seems odd but it is important because a new build may not actually build a given binarypackage and we need to supersede it appropriately';
1216-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.datemadepending IS 'The date/time on which this publishing record was made to be pending removal from the archive.';
1217-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.scheduleddeletiondate IS 'The date/time at which the package is/was scheduled to be deleted.';
1218-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.dateremoved IS 'The date/time at which the package was actually deleted.';
1219-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.pocket IS 'The pocket into which this record is published. The RELEASE pocket (zero) provides behaviour as normal. Other pockets may append things to the distroseries name such as the UPDATES pocket (-updates) or the SECURITY pocket (-security).';
1220-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.embargo IS 'The publishing record is embargoed from publication if this is set to TRUE. When TRUE, this column prevents the publication record from even showing up in the publishing tables.';
1221-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.embargolifted IS 'The date and time when we lifted the embargo on this publishing record. I.E. when embargo was set to FALSE having previously been set to TRUE.';
1222-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.archive IS 'Target archive for this publishing record.';
1223-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.removed_by IS 'Person responsible for the removal.';
1224-COMMENT ON COLUMN SecureBinaryPackagePublishingHistory.removal_comment IS 'Reason why the publication was removed.';
1225-
1226--- BinaryPackagePublishingHistory and PublishedPackage Views
1227-
1228-COMMENT ON VIEW BinaryPackagePublishingHistory IS 'View on SecureBinaryPackagePublishingHistory that restricts access to embargoed entries';
1229+-- BinaryPackagePublishingHistory
1230+COMMENT ON TABLE BinaryPackagePublishingHistory IS 'PackagePublishingHistory: The history of a BinaryPackagePublishing record. This table represents the lifetime of a publishing record from inception to deletion. Records are never removed from here and in time the publishing table may become a view onto this table. A column being NULL indicates there''s no data for that state transition. E.g. a package which is removed without being superseded won''t have datesuperseded or supersededby filled in.';
1231+COMMENT ON COLUMN BinaryPackagePublishingHistory.binarypackagerelease IS 'The binarypackage being published.';
1232+COMMENT ON COLUMN BinaryPackagePublishingHistory.distroarchseries IS 'The distroarchseries into which the binarypackage is being published.';
1233+COMMENT ON COLUMN BinaryPackagePublishingHistory.status IS 'The current status of the publishing.';
1234+COMMENT ON COLUMN BinaryPackagePublishingHistory.component IS 'The component into which the publishing takes place.';
1235+COMMENT ON COLUMN BinaryPackagePublishingHistory.section IS 'The section into which the publishing takes place.';
1236+COMMENT ON COLUMN BinaryPackagePublishingHistory.priority IS 'The priority at which the publishing takes place.';
1237+COMMENT ON COLUMN BinaryPackagePublishingHistory.datecreated IS 'The date/time on which the publishing record was created.';
1238+COMMENT ON COLUMN BinaryPackagePublishingHistory.datepublished IS 'The date/time on which the source was actually published into an archive.';
1239+COMMENT ON COLUMN BinaryPackagePublishingHistory.datesuperseded IS 'The date/time on which the source was superseded by a new source.';
1240+COMMENT ON COLUMN BinaryPackagePublishingHistory.supersededby IS 'The build which superseded this package. This seems odd but it is important because a new build may not actually build a given binarypackage and we need to supersede it appropriately';
1241+COMMENT ON COLUMN BinaryPackagePublishingHistory.datemadepending IS 'The date/time on which this publishing record was made to be pending removal from the archive.';
1242+COMMENT ON COLUMN BinaryPackagePublishingHistory.scheduleddeletiondate IS 'The date/time at which the package is/was scheduled to be deleted.';
1243+COMMENT ON COLUMN BinaryPackagePublishingHistory.dateremoved IS 'The date/time at which the package was actually deleted.';
1244+COMMENT ON COLUMN BinaryPackagePublishingHistory.pocket IS 'The pocket into which this record is published. The RELEASE pocket (zero) provides behaviour as normal. Other pockets may append things to the distroseries name such as the UPDATES pocket (-updates) or the SECURITY pocket (-security).';
1245+COMMENT ON COLUMN BinaryPackagePublishingHistory.archive IS 'Target archive for this publishing record.';
1246+COMMENT ON COLUMN BinaryPackagePublishingHistory.removed_by IS 'Person responsible for the removal.';
1247+COMMENT ON COLUMN BinaryPackagePublishingHistory.removal_comment IS 'Reason why the publication was removed.';
1248+
1249+-- PublishedPackage View
1250
1251 COMMENT ON VIEW PublishedPackage IS
1252 'A very large view that brings together all the information about
1253@@ -1340,16 +1346,10 @@
1254 COMMENT ON COLUMN SourcePackageRecipeBuild.date_first_dispatched IS 'The instant the build was dispatched the first time. This value will not get overridden if the build is retried.';
1255 COMMENT ON COLUMN SourcePackageRecipeBuild.requester IS 'Who requested the build.';
1256 COMMENT ON COLUMN SourcePackageRecipeBuild.recipe IS 'The recipe being processed.';
1257-COMMENT ON COLUMN SourcePackageRecipeBuild.archive IS 'The archive the source package will be uploaded to.';
1258-
1259--- SourcePackageRecipeBuildUpload
1260-
1261-COMMENT ON TABLE SourcePackageRecipeBuildUpload IS 'The record of uploading the source package built by a SourcePackageRecipeBuild to an archive.';
1262-COMMENT ON COLUMN SourcePackageRecipeBuildUpload.registrant IS 'Who requested the upload.';
1263-COMMENT ON COLUMN SourcePackageRecipeBuildUpload.sourcepackage_recipe_build IS 'Upload the output of this build.';
1264-COMMENT ON COLUMN SourcePackageRecipeBuildUpload.archive IS 'The archive to upload to.';
1265-COMMENT ON COLUMN SourcePackageRecipeBuildUpload.upload_log IS 'The output from uploading the source package to the archive.';
1266-COMMENT ON COLUMN SourcePackageRecipeBuildUpload.state IS 'The state of the upload.';
1267+COMMENT ON COLUMN SourcePackageRecipeBuild.archive IS 'The archive the source package will be built in and uploaded to.';
1268+COMMENT ON COLUMN SourcePackageRecipeBuild.pocket IS 'The pocket the source package will be built in and uploaded to.';
1269+COMMENT ON COLUMN SourcePackageRecipeBuild.dependencies IS 'The missing build dependencies, if any.';
1270+COMMENT ON COLUMN SourcePackageRecipeBuild.upload_log IS 'The output from uploading the source package to the archive.';
1271
1272 -- SourcePackageRecipeBuildJob
1273
1274@@ -1628,31 +1628,25 @@
1275 COMMENT ON COLUMN MirrorSourceContent.distroseries IS 'A distroseries that this mirror contains.';
1276 COMMENT ON COLUMN MirrorSourceContent.component IS 'What component of the distroseries that this sourcepackage mirror contains.';
1277
1278--- SecureSourcePackagePublishingHistory
1279-
1280-COMMENT ON TABLE SecureSourcePackagePublishingHistory IS 'SourcePackagePublishingHistory: The history of a SourcePackagePublishing record. This table represents the lifetime of a publishing record from inception to deletion. Records are never removed from here and in time the publishing table may become a view onto this table. A column being NULL indicates there''s no data for that state transition. E.g. a package which is removed without being superseded won''t have datesuperseded or supersededby filled in.';
1281-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.sourcepackagerelease IS 'The sourcepackagerelease being published.';
1282-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.distroseries IS 'The distroseries into which the sourcepackagerelease is being published.';
1283-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.status IS 'The current status of the publishing.';
1284-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.component IS 'The component into which the publishing takes place.';
1285-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.section IS 'The section into which the publishing takes place.';
1286-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.datecreated IS 'The date/time on which the publishing record was created.';
1287-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.datepublished IS 'The date/time on which the source was actually published into an archive.';
1288-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.datesuperseded IS 'The date/time on which the source was superseded by a new source.';
1289-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.supersededby IS 'The source which superseded this one.';
1290-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.datemadepending IS 'The date/time on which this publishing record was made to be pending removal from the archive.';
1291-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.scheduleddeletiondate IS 'The date/time at which the source is/was scheduled to be deleted.';
1292-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.dateremoved IS 'The date/time at which the source was actually deleted.';
1293-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.pocket IS 'The pocket into which this record is published. The RELEASE pocket (zero) provides behaviour as normal. Other pockets may append things to the distroseries name such as the UPDATES pocket (-updates), the SECURITY pocket (-security) and the PROPOSED pocket (-proposed)';
1294-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.embargo IS 'The publishing record is embargoed from publication if this is set to TRUE. When TRUE, this column prevents the publication record from even showing up in the publishing tables.';
1295-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.embargolifted IS 'The date and time when we lifted the embargo on this publishing record. I.E. when embargo was set to FALSE having previously been set to TRUE.';
1296-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.removed_by IS 'Person responsible for the removal.';
1297-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.removal_comment IS 'Reason why the publication was removed.';
1298-
1299--- SourcePackagePublishingHistory View
1300-
1301-COMMENT ON VIEW SourcePackagePublishingHistory IS 'A view on SecureSourcePackagePublishingHistory that restricts access to embargoed entries';
1302-COMMENT ON COLUMN SecureSourcePackagePublishingHistory.archive IS 'The target archive for thi publishing record.';
1303+-- SourcePackagePublishingHistory
1304+
1305+COMMENT ON TABLE SourcePackagePublishingHistory IS 'SourcePackagePublishingHistory: The history of a SourcePackagePublishing record. This table represents the lifetime of a publishing record from inception to deletion. Records are never removed from here and in time the publishing table may become a view onto this table. A column being NULL indicates there''s no data for that state transition. E.g. a package which is removed without being superseded won''t have datesuperseded or supersededby filled in.';
1306+COMMENT ON COLUMN SourcePackagePublishingHistory.sourcepackagerelease IS 'The sourcepackagerelease being published.';
1307+COMMENT ON COLUMN SourcePackagePublishingHistory.distroseries IS 'The distroseries into which the sourcepackagerelease is being published.';
1308+COMMENT ON COLUMN SourcePackagePublishingHistory.status IS 'The current status of the publishing.';
1309+COMMENT ON COLUMN SourcePackagePublishingHistory.component IS 'The component into which the publishing takes place.';
1310+COMMENT ON COLUMN SourcePackagePublishingHistory.section IS 'The section into which the publishing takes place.';
1311+COMMENT ON COLUMN SourcePackagePublishingHistory.datecreated IS 'The date/time on which the publishing record was created.';
1312+COMMENT ON COLUMN SourcePackagePublishingHistory.datepublished IS 'The date/time on which the source was actually published into an archive.';
1313+COMMENT ON COLUMN SourcePackagePublishingHistory.datesuperseded IS 'The date/time on which the source was superseded by a new source.';
1314+COMMENT ON COLUMN SourcePackagePublishingHistory.supersededby IS 'The source which superseded this one.';
1315+COMMENT ON COLUMN SourcePackagePublishingHistory.datemadepending IS 'The date/time on which this publishing record was made to be pending removal from the archive.';
1316+COMMENT ON COLUMN SourcePackagePublishingHistory.scheduleddeletiondate IS 'The date/time at which the source is/was scheduled to be deleted.';
1317+COMMENT ON COLUMN SourcePackagePublishingHistory.dateremoved IS 'The date/time at which the source was actually deleted.';
1318+COMMENT ON COLUMN SourcePackagePublishingHistory.pocket IS 'The pocket into which this record is published. The RELEASE pocket (zero) provides behaviour as normal. Other pockets may append things to the distroseries name such as the UPDATES pocket (-updates), the SECURITY pocket (-security) and the PROPOSED pocket (-proposed)';
1319+COMMENT ON COLUMN SourcePackagePublishingHistory.removed_by IS 'Person responsible for the removal.';
1320+COMMENT ON COLUMN SourcePackagePublishingHistory.removal_comment IS 'Reason why the publication was removed.';
1321+COMMENT ON COLUMN SourcePackagePublishingHistory.archive IS 'The target archive for thi publishing record.';
1322
1323 -- Packaging
1324 COMMENT ON TABLE Packaging IS 'DO NOT JOIN THROUGH THIS TABLE. This is a set
1325@@ -1865,6 +1859,7 @@
1326 COMMENT ON COLUMN DistributionMirror.whiteboard IS 'Notes on the current status of the mirror';
1327 COMMENT ON COLUMN DistributionMirror.date_created IS 'The date and time the mirror was created.';
1328 COMMENT ON COLUMN DistributionMirror.date_reviewed IS 'The date and time the mirror was reviewed.';
1329+COMMENT ON COLUMN DistributionMirror.country_dns_mirror IS 'Is the mirror a country DNS mirror?';
1330
1331 -- MirrorDistroArchSeries
1332 COMMENT ON TABLE MirrorDistroArchSeries IS 'The mirror of the packages of a given Distro Arch Release.';
1333@@ -2344,3 +2339,7 @@
1334 COMMENT ON COLUMN SourcePackageFormatSelection.distroseries IS 'Refers to the distroseries in question.';
1335 COMMENT ON COLUMN SourcePackageFormatSelection.format IS 'The SourcePackageFormat to allow.';
1336
1337+COMMENT ON TABLE DatabaseReplicationLag IS 'A cached snapshot of database replication lag between our master Slony node and its slaves.';
1338+COMMENT ON COLUMN DatabaseReplicationLag.node IS 'The Slony node number identifying the slave database.';
1339+COMMENT ON COLUMN DatabaseReplicationLag.lag IS 'lag time.';
1340+COMMENT ON COLUMN DatabaseReplicationLag.updated IS 'When this value was updated.';
1341
1342=== modified file 'database/schema/diagram.py'
1343--- database/schema/diagram.py 2009-10-17 14:06:03 +0000
1344+++ database/schema/diagram.py 2010-03-01 17:42:33 +0000
1345@@ -9,7 +9,6 @@
1346 import _pythonpath
1347
1348 import psycopg, sys, os, re
1349-from sets import Set
1350 from security import DbSchema, CursorWrapper
1351 from ConfigParser import SafeConfigParser, NoOptionError
1352
1353@@ -51,8 +50,8 @@
1354 '''The universe contains everything'''
1355 return True
1356
1357-all_tables = Set()
1358-graphed_tables = Set()
1359+all_tables = set()
1360+graphed_tables = set()
1361
1362 def tartup(filename, outfile, section):
1363 dot = open(filename).read()
1364
1365=== renamed file 'database/schema/patch-2207-09.0.sql' => 'database/schema/patch-2207-09-0.sql'
1366=== added file 'database/schema/patch-2207-23-0.sql'
1367--- database/schema/patch-2207-23-0.sql 1970-01-01 00:00:00 +0000
1368+++ database/schema/patch-2207-23-0.sql 2010-03-01 17:42:33 +0000
1369@@ -0,0 +1,19 @@
1370+-- Copyright 2010 Canonical Ltd. This software is licensed under the
1371+-- GNU Affero General Public License version 3 (see the file LICENSE).
1372+
1373+SET client_min_messages=ERROR;
1374+
1375+ALTER TABLE DistributionMirror
1376+ ADD COLUMN country_dns_mirror boolean DEFAULT FALSE NOT NULL;
1377+
1378+--- Index for country archive mirrors, one per country.
1379+CREATE UNIQUE INDEX distributionmirror__archive__distribution__country__key
1380+ ON DistributionMirror(distribution, country, content)
1381+ WHERE country_dns_mirror IS TRUE AND content = 1;
1382+
1383+--- Index for country CD image mirrors, one per country.
1384+CREATE UNIQUE INDEX distributionmirror__releases__distribution__country__key
1385+ ON DistributionMirror(distribution, country, content)
1386+ WHERE country_dns_mirror IS TRUE AND content = 2;
1387+
1388+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 23, 0);
1389
1390=== added file 'database/schema/patch-2207-28-1.sql'
1391--- database/schema/patch-2207-28-1.sql 1970-01-01 00:00:00 +0000
1392+++ database/schema/patch-2207-28-1.sql 2010-03-01 17:42:33 +0000
1393@@ -0,0 +1,9 @@
1394+SET client_min_messages = ERROR;
1395+
1396+CREATE TABLE DatabaseReplicationLag (
1397+ node integer PRIMARY KEY,
1398+ lag interval NOT NULL,
1399+ updated timestamp without time zone
1400+ DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'UTC'));
1401+
1402+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 28, 1);
1403
1404=== added file 'database/schema/patch-2207-29-0.sql'
1405--- database/schema/patch-2207-29-0.sql 1970-01-01 00:00:00 +0000
1406+++ database/schema/patch-2207-29-0.sql 2010-03-01 17:42:32 +0000
1407@@ -0,0 +1,34 @@
1408+-- Copyright 2010 Canonical Ltd. This software is licensed under the
1409+-- GNU Affero General Public License version 3 (see the file LICENSE).
1410+
1411+SET client_min_messages=ERROR;
1412+
1413+ALTER TABLE bug
1414+ ADD COLUMN latest_patch_uploaded timestamp without time zone
1415+ DEFAULT NULL;
1416+
1417+CREATE INDEX bug__latest_patch_uploaded__idx
1418+ ON bug(latest_patch_uploaded);
1419+
1420+CREATE TRIGGER bug_latest_patch_uploaded_on_insert_update_t
1421+AFTER INSERT OR UPDATE ON bugattachment
1422+FOR EACH ROW EXECUTE PROCEDURE bug_update_latest_patch_uploaded_on_insert_update();
1423+
1424+CREATE TRIGGER bug_latest_patch_uploaded_on_delete_t
1425+AFTER DELETE ON bugattachment
1426+FOR EACH ROW EXECUTE PROCEDURE bug_update_latest_patch_uploaded_on_delete();
1427+
1428+CREATE INDEX bugattachment__bug__idx ON BugAttachment(bug);
1429+
1430+UPDATE Bug
1431+SET latest_patch_uploaded = LatestPatch.datecreated
1432+FROM (
1433+ SELECT BugAttachment.bug, max(Message.datecreated) AS datecreated
1434+ FROM BugAttachment, Message
1435+ WHERE BugAttachment.message = Message.id
1436+ AND BugAttachment.type = 1
1437+ GROUP BY BugAttachment.bug
1438+ ) AS LatestPatch
1439+WHERE LatestPatch.bug = Bug.id;
1440+
1441+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 29, 0);
1442
1443=== added file 'database/schema/patch-2207-30-0.sql'
1444--- database/schema/patch-2207-30-0.sql 1970-01-01 00:00:00 +0000
1445+++ database/schema/patch-2207-30-0.sql 2010-03-01 17:42:33 +0000
1446@@ -0,0 +1,14 @@
1447+SET client_min_messages=ERROR;
1448+
1449+CREATE TABLE ApportJob(
1450+ id serial NOT NULL PRIMARY KEY,
1451+ job integer NOT NULL REFERENCES Job(id),
1452+ blob integer NOT NULL REFERENCES TemporaryBlobStorage(id),
1453+ job_type integer NOT NULL,
1454+ json_data text
1455+);
1456+
1457+ALTER TABLE ApportJob ADD CONSTRAINT apportjob__job__key UNIQUE (job);
1458+CREATE INDEX apportjob__blob__idx ON ApportJob(blob);
1459+
1460+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 30, 0)
1461
1462=== added file 'database/schema/patch-2207-31-0.sql'
1463--- database/schema/patch-2207-31-0.sql 1970-01-01 00:00:00 +0000
1464+++ database/schema/patch-2207-31-0.sql 2010-03-01 17:42:33 +0000
1465@@ -0,0 +1,27 @@
1466+
1467+SET client_min_messages=ERROR;
1468+
1469+DROP VIEW SourcePackagePublishingHistory;
1470+DROP VIEW BinaryPackagePublishingHistory;
1471+
1472+ALTER TABLE SecureSourcePackagePublishingHistory
1473+ RENAME TO SourcePackagePublishingHistory;
1474+ALTER TABLE SecureBinaryPackagePublishingHistory
1475+ RENAME TO BinaryPackagePublishingHistory;
1476+
1477+ALTER SEQUENCE securesourcepackagepublishinghistory_id_seq
1478+ RENAME TO sourcepackagepublishinghistory_id_seq;
1479+ALTER SEQUENCE securebinarypackagepublishinghistory_id_seq
1480+ RENAME TO binarypackagepublishinghistory_id_seq;
1481+
1482+ALTER TABLE SourcePackagePublishingHistory
1483+ DROP COLUMN embargolifted;
1484+ALTER TABLE SourcePackagePublishingHistory
1485+ DROP COLUMN embargo;
1486+ALTER TABLE BinaryPackagePublishingHistory
1487+ DROP COLUMN embargolifted;
1488+ALTER TABLE BinaryPackagePublishingHistory
1489+ DROP COLUMN embargo;
1490+
1491+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 31, 0);
1492+
1493
1494=== added file 'database/schema/patch-2207-32-0.sql'
1495--- database/schema/patch-2207-32-0.sql 1970-01-01 00:00:00 +0000
1496+++ database/schema/patch-2207-32-0.sql 2010-03-01 17:42:33 +0000
1497@@ -0,0 +1,24 @@
1498+SET client_min_messages=ERROR;
1499+
1500+ALTER TABLE SourcePackageRecipeBuild ADD COLUMN dependencies text;
1501+ALTER TABLE SourcePackageRecipeBuild ADD COLUMN pocket integer
1502+ DEFAULT 0 NOT NULL;
1503+ALTER TABLE SourcePackageRecipeBuild ADD COLUMN upload_log integer
1504+ CONSTRAINT sourcepackagerecipebuild__upload_log__fk
1505+ REFERENCES LibraryFileAlias;
1506+
1507+CREATE INDEX sourcepackagerecipebuild__upload_log__idx
1508+ ON SourcePackageRecipeBuild(upload_log) WHERE upload_log IS NOT NULL;
1509+
1510+-- We can't drop tables in DB patches due to Slony-I limitations, so
1511+-- we give them a magic name for database/schema/upgrade.py to deal
1512+-- with correctly.
1513+-- Drop the constraint right now so the person privacy checker doesn't
1514+-- look at this table at all.
1515+ALTER TABLE SourcePackageRecipeBuildUpload DROP CONSTRAINT sourcepackagerecipebuildupload_archive_fkey;
1516+ALTER TABLE SourcePackageRecipeBuildUpload DROP CONSTRAINT sourcepackagerecipebuildupload_registrant_fkey;
1517+ALTER TABLE SourcePackageRecipeBuildUpload DROP CONSTRAINT sourcepackagerecipebuildupload_sourcepackage_recipe_build_fkey;
1518+ALTER TABLE SourcePackageRecipeBuildUpload DROP CONSTRAINT sourcepackagerecipebuildupload_upload_log_fkey;
1519+ALTER TABLE SourcePackageRecipeBuildUpload SET SCHEMA todrop;
1520+
1521+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 32, 0);
1522
1523=== added file 'database/schema/patch-2207-33-0.sql'
1524--- database/schema/patch-2207-33-0.sql 1970-01-01 00:00:00 +0000
1525+++ database/schema/patch-2207-33-0.sql 2010-03-01 17:42:33 +0000
1526@@ -0,0 +1,9 @@
1527+-- Copyright 2010 Canonical Ltd. This software is licensed under the
1528+-- GNU Affero General Public License version 3 (see the file LICENSE).
1529+
1530+SET client_min_messages=ERROR;
1531+
1532+ALTER TABLE BranchMergeProposal
1533+ ADD COLUMN description TEXT;
1534+
1535+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 33, 0);
1536
1537=== added file 'database/schema/patch-2207-34-0.sql'
1538--- database/schema/patch-2207-34-0.sql 1970-01-01 00:00:00 +0000
1539+++ database/schema/patch-2207-34-0.sql 2010-03-01 17:42:32 +0000
1540@@ -0,0 +1,11 @@
1541+-- Copyright 2010 Canonical Ltd. This software is licensed under the
1542+-- GNU Affero General Public License version 3 (see the file LICENSE).
1543+
1544+SET client_min_messages=ERROR;
1545+
1546+ALTER TABLE product ADD COLUMN max_bug_heat integer;
1547+ALTER TABLE project ADD COLUMN max_bug_heat integer;
1548+ALTER TABLE distribution ADD COLUMN max_bug_heat integer;
1549+ALTER TABLE distributionsourcepackage ADD COLUMN max_bug_heat integer;
1550+
1551+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 34, 0);
1552
1553=== added file 'database/schema/patch-2207-35-0.sql'
1554--- database/schema/patch-2207-35-0.sql 1970-01-01 00:00:00 +0000
1555+++ database/schema/patch-2207-35-0.sql 2010-03-01 17:42:32 +0000
1556@@ -0,0 +1,8 @@
1557+-- Copyright 2010 Canonical Ltd. This software is licensed under the
1558+-- GNU Affero General Public License version 3 (see the file LICENSE).
1559+
1560+SET client_min_messages=ERROR;
1561+
1562+ALTER TABLE processorfamily ADD COLUMN restricted boolean DEFAULT FALSE NOT NULL;
1563+
1564+INSERT INTO LaunchpadDatabaseRevision VALUES (2207, 35, 0);
1565
1566=== modified file 'database/schema/security.cfg'
1567--- database/schema/security.cfg 2010-01-29 17:15:31 +0000
1568+++ database/schema/security.cfg 2010-03-01 17:42:33 +0000
1569@@ -121,10 +121,11 @@
1570 public.account = SELECT
1571 public.announcement = SELECT, INSERT, UPDATE, DELETE
1572 public.answercontact = SELECT, INSERT, UPDATE, DELETE
1573+public.apportjob = SELECT, INSERT, UPDATE, DELETE
1574 public.archive = SELECT, INSERT, UPDATE
1575 public.archiveauthtoken = SELECT, INSERT, UPDATE
1576 public.archivesubscriber = SELECT, INSERT, UPDATE
1577-public.archivearch = SELECT, INSERT, UPDATE
1578+public.archivearch = SELECT, INSERT, UPDATE, DELETE
1579 public.archivedependency = SELECT, INSERT, DELETE
1580 public.archivepermission = SELECT, INSERT, UPDATE, DELETE
1581 public.authtoken = SELECT, INSERT, UPDATE, DELETE
1582@@ -165,6 +166,7 @@
1583 public.cvereference = SELECT, INSERT
1584 public.cve = SELECT, INSERT, UPDATE
1585 public.customlanguagecode = SELECT, INSERT, UPDATE, DELETE
1586+public.databasereplicationlag = SELECT
1587 public.diff = SELECT, INSERT, UPDATE
1588 public.distributionbounty = SELECT, INSERT, UPDATE
1589 public.distributionmirror = SELECT, INSERT, UPDATE, DELETE
1590@@ -279,7 +281,6 @@
1591 public.sourcepackagerecipe = SELECT, INSERT, UPDATE, DELETE
1592 public.sourcepackagerecipebuild = SELECT, INSERT, UPDATE, DELETE
1593 public.sourcepackagerecipebuildjob = SELECT, INSERT, UPDATE
1594-public.sourcepackagerecipebuildupload = SELECT, INSERT, UPDATE, DELETE
1595 public.sourcepackagerecipedata = SELECT, INSERT, UPDATE, DELETE
1596 public.sourcepackagerecipedatainstruction = SELECT, INSERT, UPDATE, DELETE
1597 public.specificationbranch = SELECT, INSERT, UPDATE, DELETE
1598@@ -411,7 +412,6 @@
1599 public.sprint = SELECT
1600 public.sourcepackagereleasefile = SELECT
1601 public.sourcepackagerecipebuild = SELECT
1602-public.sourcepackagerecipebuildupload = SELECT
1603 public.temporaryblobstorage = SELECT, DELETE
1604 public.translationimportqueueentry = SELECT
1605
1606@@ -546,6 +546,7 @@
1607 public.bugactivity = SELECT, INSERT
1608 public.bugaffectsperson = SELECT, INSERT, UPDATE, DELETE
1609 public.bugcve = SELECT, INSERT
1610+public.bugjob = SELECT, INSERT
1611 public.bugmessage = SELECT, INSERT, UPDATE
1612 public.bugnomination = SELECT
1613 public.bugnotification = SELECT, INSERT
1614@@ -561,6 +562,7 @@
1615 public.distribution = SELECT
1616 public.distroseries = SELECT
1617 public.emailaddress = SELECT, INSERT
1618+public.job = SELECT, INSERT, UPDATE
1619 public.language = SELECT
1620 public.libraryfilealias = SELECT, INSERT
1621 public.libraryfilecontent = SELECT, INSERT
1622@@ -703,8 +705,8 @@
1623 public.mirrorproberecord = SELECT, INSERT
1624 public.person = SELECT
1625 public.processorfamily = SELECT
1626-public.securesourcepackagepublishinghistory = SELECT
1627-public.securebinarypackagepublishinghistory = SELECT
1628+public.sourcepackagepublishinghistory = SELECT
1629+public.binarypackagepublishinghistory = SELECT
1630 public.sourcepackagerelease = SELECT
1631 public.sourcepackagereleasefile = SELECT
1632 public.sourcepackagename = SELECT
1633@@ -770,8 +772,8 @@
1634 public.archivearch = SELECT, UPDATE
1635 public.distribution = SELECT
1636 public.packagediff = SELECT, INSERT, UPDATE
1637-public.securebinarypackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1638-public.securesourcepackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1639+public.binarypackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1640+public.sourcepackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1641
1642 [lucille]
1643 # Soyuz archive publisher.
1644@@ -790,8 +792,8 @@
1645 public.packagesetsources = SELECT, INSERT, UPDATE, DELETE
1646 public.packagesetinclusion = SELECT, INSERT, UPDATE, DELETE
1647 public.flatpackagesetinclusion = SELECT, INSERT, UPDATE, DELETE
1648-public.securebinarypackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1649-public.securesourcepackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1650+public.binarypackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1651+public.sourcepackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1652 public.sourcepackagepublishinghistory = SELECT
1653
1654 # Closing bugs for publication copies.
1655@@ -845,12 +847,12 @@
1656 public.distroseries = SELECT, UPDATE
1657 public.distroarchseries = SELECT, UPDATE
1658 public.sourcepackagepublishinghistory = SELECT
1659-public.securesourcepackagepublishinghistory = SELECT
1660+public.sourcepackagepublishinghistory = SELECT
1661 public.sourcepackagerelease = SELECT
1662 public.sourcepackagereleasefile = SELECT
1663 public.sourcepackagename = SELECT
1664 public.binarypackagepublishinghistory = SELECT
1665-public.securebinarypackagepublishinghistory = SELECT
1666+public.binarypackagepublishinghistory = SELECT
1667 public.binarypackagerelease = SELECT
1668 public.binarypackagefile = SELECT
1669 public.binarypackagename = SELECT
1670@@ -914,7 +916,7 @@
1671 # certain processes, such as the librarian tables. This group is deprecated -
1672 # access should be explicitly granted to users.
1673 public.archive = SELECT, INSERT, UPDATE
1674-public.archivearch = SELECT, INSERT, UPDATE
1675+public.archivearch = SELECT, INSERT, UPDATE, DELETE
1676 public.binarypackagerelease = SELECT, INSERT, UPDATE
1677 public.binarypackagefile = SELECT, INSERT, UPDATE
1678 public.binarypackagefilepublishing = SELECT, INSERT, UPDATE
1679@@ -925,6 +927,7 @@
1680 public.bug = SELECT, INSERT, UPDATE
1681 public.bugactivity = SELECT, INSERT, UPDATE
1682 public.bugattachment = SELECT, INSERT, UPDATE
1683+public.bugjob = SELECT, INSERT
1684 public.bugmessage = SELECT, INSERT, UPDATE
1685 public.bugnomination = SELECT, INSERT, UPDATE
1686 public.bugpackageinfestation = SELECT, INSERT, UPDATE
1687@@ -966,8 +969,7 @@
1688 public.teammembership = SELECT, INSERT, UPDATE, DELETE
1689 public.message = SELECT, INSERT, UPDATE
1690 public.milestone = SELECT, INSERT, UPDATE
1691-public.binarypackagepublishinghistory = SELECT
1692-public.securebinarypackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1693+public.binarypackagepublishinghistory = SELECT, INSERT, UPDATE, DELETE
1694 public.packageselection = SELECT, INSERT, UPDATE
1695 public.packaging = SELECT, INSERT, UPDATE
1696 public.person = SELECT, INSERT, UPDATE
1697@@ -1000,8 +1002,7 @@
1698 public.sourcepackagefilepublishing = SELECT, INSERT, UPDATE
1699 public.sourcepackageformatselection = SELECT, INSERT
1700 public.sourcepackagename = SELECT, INSERT, UPDATE
1701-public.sourcepackagepublishinghistory = SELECT
1702-public.securesourcepackagepublishinghistory = SELECT, INSERT, UPDATE
1703+public.sourcepackagepublishinghistory = SELECT, INSERT, UPDATE
1704 public.sourcepackagerelease = SELECT, INSERT, UPDATE
1705 public.sourcepackagereleasefile = SELECT, INSERT, UPDATE
1706 public.spokenin = SELECT, INSERT, UPDATE
1707@@ -1126,6 +1127,7 @@
1708 public.binarypackagefile = SELECT, INSERT
1709 public.pocketchroot = SELECT
1710 public.build = SELECT, INSERT, UPDATE
1711+public.sourcepackagerecipebuild = SELECT, UPDATE
1712 public.buildqueue = SELECT, INSERT, UPDATE
1713 public.job = SELECT, INSERT, UPDATE
1714 public.buildpackagejob = SELECT, INSERT, UPDATE
1715@@ -1141,12 +1143,13 @@
1716 public.packageuploadcustom = SELECT, INSERT
1717
1718 # For premature source-only publication
1719-public.securesourcepackagepublishinghistory = SELECT, INSERT
1720+public.sourcepackagepublishinghistory = SELECT, INSERT
1721
1722 # Closing bugs for premature source-only publication
1723 public.bug = SELECT, UPDATE
1724 public.bugactivity = SELECT, INSERT
1725 public.bugaffectsperson = SELECT, INSERT, UPDATE, DELETE
1726+public.bugjob = SELECT, INSERT
1727 public.bugsubscription = SELECT
1728 public.bugnotification = SELECT, INSERT
1729 public.bugnotificationrecipient = SELECT, INSERT
1730@@ -1219,12 +1222,10 @@
1731 public.binarypackagefile = SELECT, UPDATE
1732 public.sourcepackagename = SELECT
1733 public.binarypackagename = SELECT
1734-public.binarypackagepublishinghistory = SELECT
1735-public.sourcepackagepublishinghistory = SELECT
1736 public.sourcepackagefilepublishing = SELECT
1737 public.binarypackagefilepublishing = SELECT
1738-public.securesourcepackagepublishinghistory = SELECT, INSERT, UPDATE
1739-public.securebinarypackagepublishinghistory = SELECT, INSERT, UPDATE
1740+public.sourcepackagepublishinghistory = SELECT, INSERT, UPDATE
1741+public.binarypackagepublishinghistory = SELECT, INSERT, UPDATE
1742 public.sourcepackagerecipebuildjob = SELECT, INSERT, UPDATE
1743 public.component = SELECT
1744 public.section = SELECT
1745@@ -1246,6 +1247,7 @@
1746 public.bug = SELECT, UPDATE
1747 public.bugactivity = SELECT, INSERT
1748 public.bugaffectsperson = SELECT, INSERT, UPDATE, DELETE
1749+public.bugjob = SELECT, INSERT
1750 public.bugsubscription = SELECT
1751 public.bugnotification = SELECT, INSERT
1752 public.bugnotificationrecipient = SELECT, INSERT
1753@@ -1315,10 +1317,12 @@
1754 public.bug = SELECT, INSERT, UPDATE
1755 public.bugactivity = SELECT, INSERT
1756 public.bugaffectsperson = SELECT, INSERT, UPDATE, DELETE
1757+public.bugjob = SELECT, INSERT
1758 public.bugmessage = SELECT, INSERT
1759 public.bugtag = SELECT
1760 public.bugtask = SELECT, INSERT, UPDATE
1761 public.bugwatch = SELECT
1762+public.job = SELECT, INSERT, UPDATE
1763 public.component = SELECT
1764 public.packagebugsupervisor = SELECT
1765 public.person = SELECT
1766@@ -1490,12 +1494,14 @@
1767 public.archive = SELECT
1768 public.archivearch = SELECT
1769 public.component = SELECT
1770-public.distribution = SELECT
1771+public.distribution = SELECT, UPDATE
1772+public.distributionsourcepackage = SELECT, INSERT, UPDATE
1773 public.distrocomponentuploader = SELECT
1774+public.distroseries = SELECT
1775 public.archivepermission = SELECT
1776 public.distroseries = SELECT
1777-public.project = SELECT
1778-public.product = SELECT
1779+public.project = SELECT, UPDATE
1780+public.product = SELECT, UPDATE
1781 public.productseries = SELECT
1782 public.packagebugsupervisor = SELECT
1783 public.sourcepackagename = SELECT
1784@@ -1515,6 +1521,7 @@
1785 public.bug = SELECT, INSERT, UPDATE
1786 public.bugactivity = SELECT, INSERT
1787 public.bugaffectsperson = SELECT, INSERT, UPDATE, DELETE
1788+public.bugjob = SELECT, INSERT
1789 public.bugsubscription = SELECT, INSERT
1790 public.bugnotification = SELECT, INSERT
1791 public.bugnotificationattachment = SELECT
1792@@ -1561,7 +1568,6 @@
1793 public.codereviewmessage = SELECT, INSERT
1794 public.codereviewvote = SELECT, INSERT, UPDATE
1795 public.diff = SELECT, INSERT, UPDATE
1796-public.distribution = SELECT
1797 public.distroseries = SELECT
1798 public.job = SELECT, INSERT, UPDATE
1799 public.mergedirectivejob = SELECT, INSERT
1800@@ -1632,7 +1638,6 @@
1801 public.distribution = SELECT
1802 public.person = SELECT
1803 public.libraryfilealias = SELECT, UPDATE
1804-public.securebinarypackagepublishinghistory = SELECT
1805 public.sourcepackagereleasefile = SELECT
1806 public.sourcepackagepublishinghistory = SELECT
1807 public.sourcepackagerelease = SELECT
1808@@ -1783,6 +1788,7 @@
1809 public.bugtracker = SELECT, INSERT
1810 public.bugwatch = SELECT, INSERT
1811 public.bug = SELECT, INSERT, UPDATE
1812+public.bugjob = SELECT, INSERT
1813 public.bugaffectsperson = SELECT, INSERT, UPDATE, DELETE
1814 public.bugtask = SELECT, INSERT, UPDATE
1815 public.accountpassword = SELECT, INSERT
1816@@ -1796,6 +1802,7 @@
1817 public.bugsubscription = SELECT, INSERT
1818 public.bugmessage = SELECT, INSERT
1819 public.sourcepackagename = SELECT
1820+public.job = SELECT, INSERT, UPDATE
1821
1822 [updatesourceforgeremoteproduct]
1823 # Updates Product.remote_product using SourceForge project data.
1824@@ -1886,3 +1893,16 @@
1825 public.bug = SELECT, UPDATE
1826 public.job = SELECT, UPDATE, DELETE
1827 public.bugjob = SELECT, DELETE
1828+
1829+[lagmon]
1830+# cache-database-replication-lag.py
1831+type=user
1832+public.update_replication_lag_cache() = EXECUTE
1833+
1834+[process-apport-blobs]
1835+type=user
1836+groups=script,read
1837+public.job = SELECT, UPDATE, DELETE
1838+public.apportjob = SELECT, INSERT, UPDATE, DELETE
1839+public.libraryfilealias = SELECT, INSERT, UPDATE
1840+public.libraryfilecontent = SELECT, INSERT, UPDATE
1841
1842=== modified file 'database/schema/security.py'
1843--- database/schema/security.py 2010-01-06 12:34:40 +0000
1844+++ database/schema/security.py 2010-03-01 17:42:32 +0000
1845@@ -10,7 +10,6 @@
1846
1847 from itertools import chain
1848 import os
1849-import sets
1850 import sys
1851
1852 import psycopg2
1853@@ -291,7 +290,7 @@
1854 # Set of all tables we have granted permissions on. After we have assigned
1855 # permissions, we can use this to determine what tables have been
1856 # forgotten about.
1857- found = sets.Set()
1858+ found = set()
1859
1860 # Set permissions as per config file
1861 for username in config.sections():
1862@@ -383,7 +382,7 @@
1863
1864 # Raise an error if we have database objects lying around that have not
1865 # had permissions assigned.
1866- forgotten = sets.Set()
1867+ forgotten = set()
1868 for obj in schema.values():
1869 if obj not in found:
1870 forgotten.add(obj)
1871
1872=== modified file 'database/schema/trusted.sql'
1873--- database/schema/trusted.sql 2009-11-30 11:48:01 +0000
1874+++ database/schema/trusted.sql 2010-03-01 17:42:33 +0000
1875@@ -94,6 +94,28 @@
1876 'Returns the lag time of the lpmain replication set to the given node, or NULL if not a replicated installation. The node id parameter can be obtained by calling getlocalnodeid() on the relevant database. This function only returns meaningful results on the lpmain replication set master.';
1877
1878
1879+CREATE OR REPLACE FUNCTION update_replication_lag_cache() RETURNS boolean
1880+LANGUAGE plpgsql VOLATILE SECURITY DEFINER AS
1881+$$
1882+ BEGIN
1883+ DELETE FROM DatabaseReplicationLag;
1884+ INSERT INTO DatabaseReplicationLag (node, lag)
1885+ SELECT st_received, st_lag_time FROM _sl.sl_status
1886+ WHERE st_origin = _sl.getlocalnodeid('_sl');
1887+ RETURN TRUE;
1888+ -- Slony-I not installed here - non-replicated setup.
1889+ EXCEPTION
1890+ WHEN invalid_schema_name THEN
1891+ RETURN FALSE;
1892+ WHEN undefined_table THEN
1893+ RETURN FALSE;
1894+ END;
1895+$$;
1896+
1897+COMMENT ON FUNCTION update_replication_lag_cache() IS
1898+'Updates the DatabaseReplicationLag materialized view.';
1899+
1900+
1901 CREATE OR REPLACE FUNCTION getlocalnodeid() RETURNS integer
1902 LANGUAGE plpgsql STABLE SECURITY DEFINER AS
1903 $$
1904@@ -1423,3 +1445,38 @@
1905 $$;
1906
1907
1908+-- Update the (redundant) column bug.latest_patch_uploaded when a
1909+-- a bug attachment is added or removed or if its type is changed.
1910+CREATE OR REPLACE FUNCTION bug_update_latest_patch_uploaded(integer) RETURNS VOID
1911+ SECURITY DEFINER LANGUAGE plpgsql AS
1912+ $$
1913+ BEGIN
1914+ UPDATE bug SET latest_patch_uploaded =
1915+ (SELECT max(message.datecreated)
1916+ FROM message, bugattachment
1917+ WHERE bugattachment.message=message.id AND
1918+ bugattachment.bug=$1 AND
1919+ bugattachment.type=1)
1920+ WHERE bug.id=$1;
1921+ END;
1922+ $$;
1923+
1924+
1925+CREATE OR REPLACE FUNCTION bug_update_latest_patch_uploaded_on_insert_update() RETURNS trigger
1926+ SECURITY DEFINER LANGUAGE plpgsql AS
1927+ $$
1928+ BEGIN
1929+ PERFORM bug_update_latest_patch_uploaded(NEW.bug);
1930+ RETURN NULL; -- Ignored - this is an AFTER trigger
1931+ END;
1932+ $$;
1933+
1934+
1935+CREATE OR REPLACE FUNCTION bug_update_latest_patch_uploaded_on_delete() RETURNS trigger
1936+ SECURITY DEFINER LANGUAGE plpgsql AS
1937+ $$
1938+ BEGIN
1939+ PERFORM bug_update_latest_patch_uploaded(OLD.bug);
1940+ RETURN NULL; -- Ignored - this is an AFTER trigger
1941+ END;
1942+ $$;
1943
1944=== modified file 'lib/canonical/config/schema-lazr.conf'
1945--- lib/canonical/config/schema-lazr.conf 2010-02-23 11:53:24 +0000
1946+++ lib/canonical/config/schema-lazr.conf 2010-03-01 17:42:32 +0000
1947@@ -29,7 +29,6 @@
1948 base_url: http://ftpmaster.internal/
1949 copy_base_url: http://rebuild-test.internal/
1950
1951-
1952 [calculate_bug_heat]
1953 # The database user which will be used by this process.
1954 # datatype: string
1955@@ -38,6 +37,13 @@
1956 error_dir: none
1957 copy_to_zlog: false
1958
1959+[process_apport_blobs]
1960+# The database user which will be used by this process.
1961+# datatype: string
1962+dbuser: process-apport-blobs
1963+oops_prefix: APPORTBLOB
1964+error_dir: none
1965+copy_to_zlog: false
1966
1967 [branchscanner]
1968 # The database user which will be used by this process.
1969
1970=== modified file 'lib/canonical/launchpad/browser/launchpad.py'
1971--- lib/canonical/launchpad/browser/launchpad.py 2010-02-23 19:40:45 +0000
1972+++ lib/canonical/launchpad/browser/launchpad.py 2010-03-01 17:42:33 +0000
1973@@ -53,38 +53,56 @@
1974 from canonical.lazr import ExportedFolder, ExportedImageFolder
1975 from canonical.launchpad.helpers import intOrZero
1976 from canonical.launchpad.layers import WebServiceLayer
1977+from canonical.launchpad.interfaces.account import AccountStatus
1978+from canonical.launchpad.interfaces.launchpad import (
1979+ IAppFrontPageSearchForm, IBazaarApplication, ILaunchpadCelebrities,
1980+ IRosettaApplication, IStructuralHeaderPresentation,
1981+ IStructuralObjectPresentation)
1982+from canonical.launchpad.interfaces.launchpadstatistic import (
1983+ ILaunchpadStatisticSet)
1984+from canonical.launchpad.interfaces.logintoken import ILoginTokenSet
1985+from canonical.launchpad.interfaces.temporaryblobstorage import (
1986+ ITemporaryStorageManager)
1987+from canonical.launchpad.webapp import (
1988+ LaunchpadFormView, LaunchpadView, Link, Navigation,
1989+ StandardLaunchpadFacets, canonical_name, canonical_url, custom_widget,
1990+ stepto)
1991+from canonical.launchpad.webapp.breadcrumb import Breadcrumb
1992+from canonical.launchpad.webapp.interfaces import (
1993+ GoneError, IBreadcrumb, ILaunchBag, ILaunchpadRoot, INavigationMenu,
1994+ NotFoundError, POSTToNonCanonicalURL)
1995+from canonical.launchpad.webapp.publisher import RedirectionView
1996+from canonical.launchpad.webapp.authorization import check_permission
1997+from canonical.launchpad.webapp.tales import PageTemplateContextsAPI
1998+from canonical.launchpad.webapp.url import urlappend
1999+from canonical.launchpad.webapp.vhosts import allvhosts
2000+from canonical.widgets.project import ProjectScopeWidget
2001+
2002+from lazr.uri import URI
2003
2004 from lp.app.interfaces.headings import IMajorHeadingView
2005 from lp.registry.interfaces.announcement import IAnnouncementSet
2006 from lp.soyuz.interfaces.binarypackagename import (
2007 IBinaryPackageNameSet)
2008+from lp.bugs.interfaces.bug import IBugSet
2009+from lp.bugs.interfaces.malone import IMaloneApplication
2010+from lp.buildmaster.interfaces.builder import IBuilderSet
2011 from lp.code.interfaces.branch import IBranchSet
2012 from lp.code.interfaces.branchlookup import IBranchLookup
2013 from lp.code.interfaces.branchnamespace import InvalidNamespace
2014+from lp.code.interfaces.codeimport import ICodeImportSet
2015 from lp.code.interfaces.linkedbranch import (
2016 CannotHaveLinkedBranch, NoLinkedBranch)
2017-from lp.bugs.interfaces.bug import IBugSet
2018-from lp.buildmaster.interfaces.builder import IBuilderSet
2019-from lp.soyuz.interfaces.packageset import IPackagesetSet
2020-from lp.code.interfaces.codeimport import ICodeImportSet
2021+from lp.hardwaredb.interfaces.hwdb import IHWDBApplication
2022 from lp.registry.interfaces.codeofconduct import ICodeOfConductSet
2023 from lp.registry.interfaces.distribution import IDistributionSet
2024 from lp.registry.interfaces.karma import IKarmaActionSet
2025-from canonical.launchpad.interfaces.account import AccountStatus
2026-from lp.hardwaredb.interfaces.hwdb import IHWDBApplication
2027-from lp.services.worlddata.interfaces.language import ILanguageSet
2028-from canonical.launchpad.interfaces.launchpad import (
2029- IAppFrontPageSearchForm, IBazaarApplication, ILaunchpadCelebrities,
2030- IRosettaApplication, IStructuralHeaderPresentation,
2031- IStructuralObjectPresentation)
2032-from canonical.launchpad.interfaces.launchpadstatistic import (
2033- ILaunchpadStatisticSet)
2034-from canonical.launchpad.interfaces.logintoken import ILoginTokenSet
2035-from lp.bugs.interfaces.malone import IMaloneApplication
2036 from lp.registry.interfaces.mentoringoffer import IMentoringOfferSet
2037-from lp.services.openid.interfaces.openidrpconfig import IOpenIDRPConfigSet
2038 from lp.registry.interfaces.person import IPersonSet
2039 from lp.registry.interfaces.pillar import IPillarNameSet
2040+from lp.services.openid.interfaces.openidrpconfig import IOpenIDRPConfigSet
2041+from lp.services.worlddata.interfaces.language import ILanguageSet
2042+from lp.soyuz.interfaces.packageset import IPackagesetSet
2043 from lp.registry.interfaces.product import (
2044 InvalidProductName, IProductSet)
2045 from lp.registry.interfaces.projectgroup import IProjectGroupSet
2046@@ -99,22 +117,6 @@
2047 ITranslationImportQueue)
2048 from lp.testopenid.interfaces.server import ITestOpenIDApplication
2049
2050-from canonical.launchpad.webapp import (
2051- LaunchpadFormView, LaunchpadView, Link, Navigation,
2052- StandardLaunchpadFacets, canonical_name, canonical_url, custom_widget,
2053- stepto)
2054-from canonical.launchpad.webapp.breadcrumb import Breadcrumb
2055-from canonical.launchpad.webapp.interfaces import (
2056- GoneError, IBreadcrumb, ILaunchBag, ILaunchpadRoot, INavigationMenu,
2057- NotFoundError, POSTToNonCanonicalURL)
2058-from canonical.launchpad.webapp.publisher import RedirectionView
2059-from canonical.launchpad.webapp.authorization import check_permission
2060-from lazr.uri import URI
2061-from canonical.launchpad.webapp.tales import PageTemplateContextsAPI
2062-from canonical.launchpad.webapp.url import urlappend
2063-from canonical.launchpad.webapp.vhosts import allvhosts
2064-from canonical.widgets.project import ProjectScopeWidget
2065-
2066
2067 # XXX SteveAlexander 2005-09-22: this is imported here because there is no
2068 # general timedelta to duration format adapter available. This should
2069@@ -571,6 +573,7 @@
2070 'testopenid': ITestOpenIDApplication,
2071 'questions': IQuestionSet,
2072 '+rpconfig': IOpenIDRPConfigSet,
2073+ 'temporary-blobs': ITemporaryStorageManager,
2074 # These three have been renamed, and no redirects done, as the old
2075 # urls now point to the product pages.
2076 #'bazaar': IBazaarApplication,
2077
2078=== modified file 'lib/canonical/launchpad/browser/temporaryblobstorage.py'
2079--- lib/canonical/launchpad/browser/temporaryblobstorage.py 2009-09-18 13:24:29 +0000
2080+++ lib/canonical/launchpad/browser/temporaryblobstorage.py 2010-03-01 17:42:33 +0000
2081@@ -6,16 +6,23 @@
2082 __metaclass__ = type
2083 __all__ = [
2084 'TemporaryBlobStorageAddView',
2085+ 'TemporaryBlobStorageNavigation',
2086+ 'TemporaryBlobStorageURL',
2087 ]
2088
2089 from zope.component import getUtility
2090+from zope.interface import implements
2091
2092 from canonical.launchpad.webapp.launchpadform import action, LaunchpadFormView
2093
2094 from canonical.launchpad.interfaces.temporaryblobstorage import (
2095 BlobTooLarge, ITemporaryBlobStorage, ITemporaryStorageManager)
2096+from canonical.launchpad.webapp import GetitemNavigation
2097+from canonical.launchpad.webapp.interfaces import ICanonicalUrlData
2098 from canonical.librarian.interfaces import UploadFailed
2099
2100+from lp.bugs.interfaces.apportjob import IProcessApportBlobJobSource
2101+
2102
2103 class TemporaryBlobStorageAddView(LaunchpadFormView):
2104 # XXX: gary 2009-09-18 bug=31358
2105@@ -40,13 +47,50 @@
2106 # being named like that.
2107 @action('Continue', name='FORM_SUBMIT')
2108 def continue_action(self, action, data):
2109- try:
2110- uuid = getUtility(ITemporaryStorageManager).new(data['blob'])
2111+ uuid = self.store_blob(data['blob'])
2112+ if uuid is not None:
2113 self.request.response.setHeader('X-Launchpad-Blob-Token', uuid)
2114 self.request.response.addInfoNotification(
2115 'Your ticket is "%s"' % uuid)
2116+
2117+ def store_blob(self, blob):
2118+ """Store a blob and return its UUID."""
2119+ try:
2120+ uuid = getUtility(ITemporaryStorageManager).new(blob)
2121 except BlobTooLarge:
2122 self.addError('Uploaded file was too large.')
2123- except UploadFailed:
2124+ return None
2125+ except UploadFailed, e:
2126+ import pdb; pdb.set_trace()
2127 self.addError('File storage unavailable - try again later.')
2128-
2129+ return None
2130+ else:
2131+ # Create ProcessApportBlobJob for the BLOB.
2132+ blob = getUtility(ITemporaryStorageManager).fetch(uuid)
2133+ getUtility(IProcessApportBlobJobSource).create(blob)
2134+ return uuid
2135+
2136+
2137+class TemporaryBlobStorageURL:
2138+ """Bug URL creation rules."""
2139+ implements(ICanonicalUrlData)
2140+
2141+ inside = None
2142+ rootsite = None
2143+
2144+ def __init__(self, context):
2145+ self.context = context
2146+
2147+ @property
2148+ def path(self):
2149+ """Return the path component of the URL."""
2150+ return u'temporary-blobs/%s' % self.context.uuid
2151+
2152+
2153+class TemporaryBlobStorageNavigation(GetitemNavigation):
2154+ """Navigation for temporary blobs."""
2155+
2156+ usedfor = ITemporaryStorageManager
2157+
2158+ def traverse(self, name):
2159+ return getUtility(ITemporaryStorageManager).fetch(name)
2160
2161=== modified file 'lib/canonical/launchpad/database/account.py'
2162--- lib/canonical/launchpad/database/account.py 2010-02-25 10:40:35 +0000
2163+++ lib/canonical/launchpad/database/account.py 2010-03-01 17:42:32 +0000
2164@@ -47,6 +47,10 @@
2165 openid_identifier = StringCol(
2166 dbName='openid_identifier', notNull=True, default=DEFAULT)
2167
2168+ def __repr__(self):
2169+ return "<%s '%s' (%s)>" % (
2170+ self.__class__.__name__, self.displayname, self.status)
2171+
2172 def _getEmails(self, status):
2173 """Get related `EmailAddress` objects with the given status."""
2174 result = IStore(EmailAddress).find(
2175
2176=== modified file 'lib/canonical/launchpad/database/temporaryblobstorage.py'
2177--- lib/canonical/launchpad/database/temporaryblobstorage.py 2010-02-09 00:17:40 +0000
2178+++ lib/canonical/launchpad/database/temporaryblobstorage.py 2010-03-01 17:42:33 +0000
2179@@ -11,21 +11,17 @@
2180 ]
2181
2182
2183-import random
2184-import time
2185-import thread
2186-
2187 from cStringIO import StringIO
2188 from datetime import timedelta, datetime
2189
2190 from pytz import utc
2191-from sqlobject import StringCol, ForeignKey
2192+from sqlobject import StringCol, ForeignKey, SQLObjectNotFound
2193 from zope.component import getUtility
2194 from zope.interface import implements
2195
2196 from canonical import uuid
2197 from canonical.config import config
2198-from canonical.database.sqlbase import SQLBase, sqlvalues
2199+from canonical.database.sqlbase import SQLBase
2200 from canonical.database.constants import DEFAULT
2201 from canonical.database.datetimecol import UtcDateTimeCol
2202 from canonical.launchpad.interfaces import (
2203@@ -34,6 +30,10 @@
2204 ILibraryFileAliasSet,
2205 BlobTooLarge,
2206 )
2207+from canonical.launchpad.interfaces.lpstorm import IStore
2208+from canonical.launchpad.database.librarian import LibraryFileAlias
2209+
2210+from lp.services.job.interfaces.job import JobStatus
2211
2212
2213 class TemporaryBlobStorage(SQLBase):
2214@@ -58,6 +58,18 @@
2215 finally:
2216 self.file_alias.close()
2217
2218+ def hasBeenProcessed(self):
2219+ """See `ITemporaryBlobStorage`."""
2220+ # Imported here to avoid circular imports
2221+ from lp.bugs.interfaces.apportjob import IProcessApportBlobJobSource
2222+ try:
2223+ job_for_blob = getUtility(
2224+ IProcessApportBlobJobSource).getByBlobUUID(self.uuid)
2225+ except SQLObjectNotFound:
2226+ return False
2227+
2228+ return (job_for_blob.job.status == JobStatus.COMPLETED)
2229+
2230
2231 class TemporaryStorageManager:
2232 """A tool to create temporary BLOB's in Launchpad."""
2233@@ -115,3 +127,12 @@
2234 if blob is not None:
2235 TemporaryBlobStorage.delete(blob.id)
2236
2237+ def default_temporary_blob_storage_list(self):
2238+ """See `ITemporaryStorageManager`."""
2239+ # Return the 50 most recent blobs.
2240+ store = IStore(TemporaryBlobStorage)
2241+ return store.find(
2242+ TemporaryBlobStorage,
2243+ TemporaryBlobStorage.file_alias == LibraryFileAlias.id,
2244+ LibraryFileAlias.expires > datetime.utcnow().replace(tzinfo=utc)
2245+ ).order_by(TemporaryBlobStorage.date_created)
2246
2247=== modified file 'lib/canonical/launchpad/doc/account.txt'
2248--- lib/canonical/launchpad/doc/account.txt 2009-12-24 12:05:52 +0000
2249+++ lib/canonical/launchpad/doc/account.txt 2010-03-01 17:42:33 +0000
2250@@ -1,24 +1,28 @@
2251-= Account and AccountSet =
2252+======================
2253+Account and AccountSet
2254+======================
2255
2256 An Account is used by someone to Authenticate with the Launchpad login
2257 service.
2258
2259
2260-= AccountSet =
2261+AccountSet
2262+==========
2263
2264 The AccountSet object provides methods to retrieve `IAccount`s. It
2265-implements the IAccountSet.
2266+implements the IAccountSet interface.
2267
2268 >>> from zope.interface.verify import verifyObject
2269- >>> from canonical.launchpad.interfaces import (
2270- ... IAccount, IAccountSet, IPerson)
2271+ >>> from lp.registry.interfaces.person import IPerson
2272+ >>> from canonical.launchpad.interfaces import IAccount, IAccountSet
2273
2274 >>> account_set = getUtility(IAccountSet)
2275 >>> verifyObject(IAccountSet, account_set)
2276 True
2277
2278
2279-== Looking up accounts by email address ==
2280+Looking up accounts by email address
2281+------------------------------------
2282
2283 Accounts are generally looked up by email address.
2284
2285@@ -49,7 +53,8 @@
2286 >>> del stub_account
2287
2288
2289-== Looking up accounts by their database ID ==
2290+Looking up accounts by their database ID
2291+----------------------------------------
2292
2293 If we know the ID of an account we can use the get() method.
2294
2295@@ -64,7 +69,8 @@
2296 LookupError:...
2297
2298
2299-== Looking up accounts by OpenID identifier ==
2300+Looking up accounts by OpenID identifier
2301+----------------------------------------
2302
2303 Each Launchpad user is assigned an permanent OpenID identity URL. The
2304 last component of this URL is specific to the user, and can be used to
2305@@ -84,12 +90,13 @@
2306 LookupError: no-such-identifier
2307
2308
2309-= The Account object =
2310+The Account object
2311+==================
2312
2313 The account implements the IAccount interface but not all attributes are
2314 accessible for the owner.
2315
2316- >>> login('foo.bar@canonical.com')
2317+ >>> login('admin@canonical.com')
2318 >>> verifyObject(IAccount, account)
2319 True
2320 >>> login('no-priv@canonical.com')
2321@@ -101,9 +108,14 @@
2322 >>> print account.preferredemail.email
2323 no-priv@canonical.com
2324
2325+Account objects have a useful string representation.
2326+
2327+ >>> account
2328+ <Account 'No Privileges Person' (Active account)>
2329+
2330 The account can have additional validated and guessed email
2331 addresses. This will be empty if the user has only a single validated
2332-email address:
2333+email address.
2334
2335 >>> [email.email for email in account.validated_emails]
2336 []
2337@@ -111,7 +123,7 @@
2338 []
2339
2340 If we add a new guessed email address, it will be included in the
2341-guessed list:
2342+guessed list.
2343
2344 >>> from canonical.launchpad.interfaces import (
2345 ... EmailAddressStatus, IEmailAddressSet)
2346@@ -122,7 +134,7 @@
2347 [u'guessed-email@example.com']
2348
2349 If we add a validated email address, it will show up in the validated
2350-list:
2351+list.
2352
2353 >>> email = getUtility(IEmailAddressSet).new(
2354 ... "validated-email@example.com", account=account,
2355@@ -132,8 +144,8 @@
2356
2357 It also has an encrypted password.
2358
2359- >>> account.password
2360- u'K7Qmeansl6RbuPfulfcmyDQOzp70OxVh5Fcf'
2361+ >>> print account.password
2362+ K7Qmeansl6RbuPfulfcmyDQOzp70OxVh5Fcf
2363
2364 Ensure the password changes are sticky, as this is a property hiding the
2365 AccountPassword table.
2366@@ -143,10 +155,10 @@
2367 None
2368
2369 >>> account.password = u'K7Qmeansl6RbuPfulfcmyDQOzp70OxVh5Fcf'
2370- >>> account.password
2371- u'K7Qmeansl6RbuPfulfcmyDQOzp70OxVh5Fcf'
2372+ >>> print account.password
2373+ K7Qmeansl6RbuPfulfcmyDQOzp70OxVh5Fcf
2374
2375-And other account metadata.
2376+The account has other metadata.
2377
2378 >>> account.date_created
2379 datetime.datetime(...)
2380@@ -163,8 +175,8 @@
2381 >>> print account.status_comment
2382 None
2383
2384- >>> account.displayname
2385- u'No Privileges Person'
2386+ >>> print account.displayname
2387+ No Privileges Person
2388
2389 When the status is changed, the date_status_set is updated in the
2390 database. Only an admin can change the status.
2391@@ -172,7 +184,7 @@
2392 >>> from canonical.launchpad.interfaces.account import AccountStatus
2393
2394 >>> original_date_status_set = account.date_status_set
2395- >>> login('foo.bar@canonical.com')
2396+ >>> login('admin@canonical.com')
2397 >>> account.status = AccountStatus.SUSPENDED
2398
2399 # Shouldn't be necessary with Storm!
2400@@ -193,8 +205,8 @@
2401 >>> personset = getUtility(IPersonSet)
2402 >>> person = personset.getByEmail('no-priv@canonical.com')
2403 >>> person.displayname = 'Something New'
2404- >>> account.displayname
2405- u'Something New'
2406+ >>> print account.displayname
2407+ Something New
2408
2409 However, the reverse is not true. If we change the Account.displayname,
2410 the linked Person.displayname (if there is one) is not updated
2411@@ -203,21 +215,22 @@
2412 unavailable.
2413
2414 >>> account.displayname = 'No Privileges Account'
2415- >>> person.displayname
2416- u'Something New'
2417+ >>> print person.displayname
2418+ Something New
2419
2420 >>> person.displayname = 'No Privileges Person'
2421- >>> account.displayname
2422- u'No Privileges Person'
2423+ >>> print account.displayname
2424+ No Privileges Person
2425
2426 An Account has an OpenID identifier used to generate the OpenID identity
2427 URL.
2428
2429- >>> account.openid_identifier
2430- u'no-priv_oid'
2431-
2432-
2433-= Creating new accounts =
2434+ >>> print account.openid_identifier
2435+ no-priv_oid
2436+
2437+
2438+Creating new accounts
2439+=====================
2440
2441 New Accounts are created using the AccountSet.new() method. The account
2442 rationale and displayname are required.
2443@@ -226,15 +239,13 @@
2444 >>> from canonical.launchpad.interfaces.account import (
2445 ... AccountCreationRationale)
2446
2447- # Login as a user that may see the accounts of other users.
2448- >>> login('foo.bar@canonical.com')
2449+ >>> login('admin@canonical.com')
2450 >>> passwordless_account = account_set.new(
2451 ... AccountCreationRationale.USER_CREATED, 'Passwordless')
2452- >>> syncUpdate(passwordless_account)
2453- >>> passwordless_account.creation_rationale.name
2454- 'USER_CREATED'
2455- >>> passwordless_account.displayname
2456- u'Passwordless'
2457+ >>> print passwordless_account.creation_rationale.name
2458+ USER_CREATED
2459+ >>> print passwordless_account.displayname
2460+ Passwordless
2461 >>> print passwordless_account.password
2462 None
2463 >>> print passwordless_account.preferredemail
2464@@ -258,15 +269,16 @@
2465 ... AccountCreationRationale.OWNER_CREATED_LAUNCHPAD , 'Clear',
2466 ... password=u'clear_password', password_is_encrypted=True)
2467 >>> syncUpdate(clear_account)
2468- >>> clear_account.password
2469- u'clear_password'
2470-
2471-
2472-== Valid Accounts ==
2473+ >>> print clear_account.password
2474+ clear_password
2475+
2476+
2477+Valid Accounts
2478+--------------
2479
2480 Like person objects, an account is considered valid if it is in the
2481 active state and has a preferred email address. So a newly created
2482-account with no email address is not valid:
2483+account with no email address is not valid.
2484
2485 >>> account = account_set.new(
2486 ... AccountCreationRationale.USER_CREATED,
2487@@ -276,7 +288,7 @@
2488 >>> account.is_valid
2489 False
2490
2491-Lets add a new email address to the account:
2492+Let's add a new email address to the account.
2493
2494 >>> email = getUtility(IEmailAddressSet).new(
2495 ... "valid-account-test@example.com", account=account)
2496@@ -284,7 +296,7 @@
2497 False
2498
2499 The account is still not valid because it has no preferred email.
2500-Setting the email to preferred fixes this:
2501+Setting the email to preferred fixes this.
2502
2503 >>> from canonical.launchpad.interfaces import EmailAddressStatus
2504 >>> email.status = EmailAddressStatus.PREFERRED
2505@@ -298,20 +310,19 @@
2506 False
2507
2508
2509-== Creating an IPerson for an Account ==
2510-
2511-From a newly created account which has no person associated with, it is
2512-possible to create a new person that will be associated with it.
2513-
2514-We need to change database policy here again, as the SSO Server cannot
2515-modify tables in the lpmain replication set.
2516-
2517+Creating an IPerson for an Account
2518+----------------------------------
2519+
2520+Newly created accounts without an associated Person can be 'promoted' to full
2521+Launchpad accounts with an attached Person.
2522+
2523+ # We need to change database policy here again, as the SSO Server cannot
2524+ # modify tables in the lpmain replication set.
2525 >>> from canonical.launchpad.webapp.interfaces import IStoreSelector
2526 >>> from canonical.launchpad.webapp.dbpolicy import MasterDatabasePolicy
2527 >>> getUtility(IStoreSelector).push(MasterDatabasePolicy())
2528
2529- >>> from lp.registry.interfaces.person import (
2530- ... PersonCreationRationale)
2531+ >>> from lp.registry.interfaces.person import PersonCreationRationale
2532 >>> fresh_account, email = account_set.createAccountAndEmail(
2533 ... 'foo@example.com',
2534 ... AccountCreationRationale.OWNER_CREATED_UBUNTU_SHOP,
2535@@ -323,7 +334,6 @@
2536
2537 >>> person = fresh_account.createPerson(
2538 ... PersonCreationRationale.OWNER_CREATED_LAUNCHPAD)
2539- >>> import transaction
2540 >>> transaction.commit()
2541 >>> person.account == fresh_account
2542 True
2543@@ -355,10 +365,11 @@
2544 >>> db_policy = getUtility(IStoreSelector).pop()
2545
2546
2547-== OpenID identifiers ==
2548+OpenID identifiers
2549+------------------
2550
2551-The account is given an openid identifier. The identifier is created
2552-directly in the database; it not available until the account object is synced.
2553+The account is given an openid identifier. The identifier is created directly
2554+in the database; it not available until the account object is synced.
2555
2556 >>> new_account = account_set.new(
2557 ... AccountCreationRationale.OWNER_CREATED_LAUNCHPAD, 'OID Account',
2558
2559=== modified file 'lib/canonical/launchpad/doc/oauth.txt'
2560--- lib/canonical/launchpad/doc/oauth.txt 2010-02-24 23:02:56 +0000
2561+++ lib/canonical/launchpad/doc/oauth.txt 2010-03-01 17:42:33 +0000
2562@@ -1,8 +1,11 @@
2563-= OAuth (http://oauth.net/core/1.0/) =
2564+=====
2565+OAuth
2566+=====
2567
2568 This is a mechanism for allowing a third party application to access
2569 Launchpad on a user's behalf. These applications are identified by a
2570-unique key and are stored as OAuthConsumers.
2571+unique key and are stored as OAuthConsumers. The OAuth specification is
2572+defined in <http://oauth.net/core/1.0/>.
2573
2574 These applications (also called consumers) are managed by the
2575 OAuthConsumerSet utility.
2576@@ -36,16 +39,19 @@
2577 AssertionError: ...
2578
2579
2580-== Request tokens ==
2581+Request tokens
2582+==============
2583
2584 When a consumer wants to access protected resources on Launchpad, it
2585 must first ask for an OAuthRequestToken, which is then used when the
2586 consumer sends the user to the Launchpad authorization page.
2587
2588
2589-=== Creating request tokens ===
2590+Creating request tokens
2591+-----------------------
2592
2593 The request tokens are created using IOAuthConsumer.newRequestToken().
2594+
2595 # XXX EdwinGrubbs 2008-10-03 bug=277756
2596 # Tests could be simplified with helper methods for creating tokens
2597 # in different states.
2598@@ -65,9 +71,8 @@
2599 >>> print request_token.context
2600 None
2601
2602-Initially, a token does not have a person or permission associated with
2603-it as the consumer doesn't know what the user's identity is on
2604-Launchpad.
2605+Initially, a token does not have a person or permission associated with it as
2606+the consumer doesn't know the user's identity on Launchpad.
2607
2608 >>> print request_token.person
2609 None
2610@@ -96,37 +101,42 @@
2611 >>> request_token.is_reviewed
2612 True
2613
2614-When reviewing a token we can also change the context associated with
2615+When reviewing a token, we can also change the context associated with
2616 it, which means the consumer using that token will only have access
2617 to things linked to that context (Product, Project, Distribution,
2618 DistroSourcePackage).
2619
2620- >>> from canonical.launchpad.interfaces import (
2621- ... IDistributionSet, IProductSet, IProjectGroupSet)
2622+ >>> from lp.registry.interfaces.distribution import IDistributionSet
2623+ >>> from lp.registry.interfaces.product import IProductSet
2624+ >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
2625+
2626 >>> firefox = getUtility(IProductSet)['firefox']
2627 >>> request_token2 = consumer.newRequestToken()
2628 >>> request_token2.review(
2629 ... salgado, OAuthPermission.WRITE_PRIVATE, context=firefox)
2630- >>> request_token2.context.title
2631- u'Mozilla Firefox'
2632+ >>> print request_token2.context.title
2633+ Mozilla Firefox
2634
2635 >>> mozilla = getUtility(IProjectGroupSet)['mozilla']
2636 >>> request_token2 = consumer.newRequestToken()
2637 >>> request_token2.review(
2638 ... salgado, OAuthPermission.WRITE_PRIVATE, context=mozilla)
2639- >>> request_token2.context.title
2640- u'The Mozilla Project'
2641+ >>> print request_token2.context.title
2642+ The Mozilla Project
2643
2644 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
2645 >>> evolution = ubuntu.getSourcePackage('evolution')
2646 >>> request_token2 = consumer.newRequestToken()
2647 >>> request_token2.review(
2648 ... salgado, OAuthPermission.WRITE_PRIVATE, context=evolution)
2649- >>> request_token2.context.title
2650- u'\u201cevolution\u201d package in Ubuntu'
2651-
2652-
2653-=== Retrieving request tokens ===
2654+
2655+ >>> from canonical.encoding import ascii_smash
2656+ >>> print ascii_smash(request_token2.context.title)
2657+ evolution package in Ubuntu
2658+
2659+
2660+Retrieving request tokens
2661+-------------------------
2662
2663 Any consumer can retrieve its request tokens as long as it knows their
2664 keys.
2665@@ -160,7 +170,8 @@
2666 None
2667
2668
2669-=== Exchanging request tokens for access tokens ===
2670+Exchanging request tokens for access tokens
2671+-------------------------------------------
2672
2673 Once a request token has been reviewed it may be exchanged for an access
2674 token. That may happen only if the user actually granted some sort of
2675@@ -197,8 +208,8 @@
2676 >>> request_token2.review(
2677 ... salgado, OAuthPermission.WRITE_PRIVATE, context=firefox)
2678 >>> access_token2 = request_token2.createAccessToken()
2679- >>> access_token2.context.title
2680- u'Mozilla Firefox'
2681+ >>> print access_token2.context.title
2682+ Mozilla Firefox
2683
2684 If the request token hasn't been reviewed yet, it can't be used to
2685 create an access token.
2686@@ -223,7 +234,8 @@
2687 AssertionError: ...
2688
2689
2690-== Access tokens ==
2691+Access tokens
2692+=============
2693
2694 As shown above, access tokens can be created from any reviewed (and
2695 authorized) request tokens. These tokens are then stored by the consumer
2696@@ -276,7 +288,8 @@
2697 ... datetime.now(pytz.timezone('UTC')) - timedelta(hours=1))
2698
2699
2700-== Nonces and timestamps ==
2701+Nonces and timestamps
2702+=====================
2703
2704 A nonce is a random string, generated by the client for each request.
2705
2706@@ -322,7 +335,7 @@
2707 ...
2708 NonceAlreadyUsed: ...
2709
2710-According to the oauth specification (http://oauth.net/core/1.0/#nonce), for a
2711+According to the oauth specification <http://oauth.net/core/1.0/#nonce>, for a
2712 given client, an application should not accept a timestamp older than the most
2713 recent timestamp received.
2714
2715@@ -337,7 +350,7 @@
2716
2717 Launchpad relaxes the constraint on the timestamp. Rather than accepting any
2718 request within the same second, Launchpad accepts any request within the past
2719-60 seconds (or, as defined by the code, withing the past number of seconds
2720+60 seconds (or, as defined by the code, within the past number of seconds
2721 specified by canonical.launchpad.database.oauth.TIMESTAMP_ACCEPTANCE_WINDOW).
2722
2723 For instance, in Launchpad, if a client sends a timestamp of
2724@@ -376,13 +389,13 @@
2725 http://groups.google.com/group/oauth/msg/387fdafcf0be322a and LP bug 319710
2726 for more background).
2727
2728-The code also raises a ClockSkew error if the timestamp is more
2729-than TIMESTAMP_SKEW_WINDOW seconds away from the server's clock (ahead or
2730+The code also raises a ClockSkew error if the timestamp is more than
2731+TIMESTAMP_SKEW_WINDOW seconds away from the server's clock (ahead or
2732 behind). This number of seconds is currently equal to one hour (60*60). The
2733-primary reason for behavior is so that a clock skew too far in the future does
2734-not essentially make the authentication tokens useless once the client's clock
2735-is corrected. In addition, it gives us a constraint within which we can reason
2736-about clock-related errors reported by customers.
2737+primary reason for this behavior is so that a clock skew too far in the future
2738+does not essentially make the authentication tokens useless once the client's
2739+clock is corrected. In addition, it gives us a constraint within which we can
2740+reason about clock-related errors reported by customers.
2741
2742 Here's a quick demonstration of the behavior.
2743
2744
2745=== modified file 'lib/canonical/launchpad/doc/renamed-view.txt'
2746--- lib/canonical/launchpad/doc/renamed-view.txt 2009-06-11 01:28:55 +0000
2747+++ lib/canonical/launchpad/doc/renamed-view.txt 2010-03-01 17:42:33 +0000
2748@@ -89,7 +89,7 @@
2749 >>> view.publishTraverse(request, u'foo')
2750 Traceback (most recent call last):
2751 ...
2752- NotFound: Object: u'foo', name: <Distribution at...>
2753+ NotFound: Object: u'foo', name: <Distribution 'Ubuntu' (ubuntu)>
2754
2755
2756 == Registering from ZCML ==
2757
2758=== modified file 'lib/canonical/launchpad/doc/temporaryblobstorage.txt'
2759--- lib/canonical/launchpad/doc/temporaryblobstorage.txt 2008-09-24 18:53:11 +0000
2760+++ lib/canonical/launchpad/doc/temporaryblobstorage.txt 2010-03-01 17:42:32 +0000
2761@@ -56,3 +56,48 @@
2762 BlobTooLarge: 7
2763 >>> config_data = config.pop('max_blob_size')
2764
2765+
2766+Checking blob processing status
2767+-------------------------------
2768+
2769+A blob has an hasBeenProcessed() method which returns True if the
2770+ProcessApportBlobJob for the blob has been completed.
2771+
2772+The hasBeenProcessed() of a newly created blob, with no
2773+associated ProcessApportBlobJob, will return False.
2774+
2775+ >>> blob_token = getUtility(ITemporaryStorageManager).new("Blob data")
2776+ >>> blob = getUtility(ITemporaryStorageManager).fetch(blob_token)
2777+ >>> print blob.hasBeenProcessed()
2778+ False
2779+
2780+We'll create a ProcessApportBlobJob for the blob.
2781+
2782+ >>> from lp.bugs.interfaces.apportjob import (
2783+ ... IProcessApportBlobJobSource)
2784+ >>> processing_job = getUtility(IProcessApportBlobJobSource).create(
2785+ ... blob)
2786+
2787+ >>> blob = getUtility(ITemporaryStorageManager).fetch(blob_token)
2788+ >>> processing_job.blob == blob
2789+ True
2790+
2791+Before the job is run, the blob's hasBeenProcessed() method will return
2792+False.
2793+
2794+ >>> print blob.hasBeenProcessed()
2795+ False
2796+
2797+Whilst the job is running, the blob's hasBeenProcessed() method will
2798+return False.
2799+
2800+ >>> processing_job.job.start()
2801+ >>> print blob.hasBeenProcessed()
2802+ False
2803+
2804+Once the job is complete, the blob's hasBeenProcessed() method will
2805+return True.
2806+
2807+ >>> processing_job.job.complete()
2808+ >>> print blob.hasBeenProcessed()
2809+ True
2810
2811=== modified file 'lib/canonical/launchpad/icing/style.css'
2812--- lib/canonical/launchpad/icing/style.css 2010-02-26 07:12:09 +0000
2813+++ lib/canonical/launchpad/icing/style.css 2010-03-01 17:42:32 +0000
2814@@ -1241,6 +1241,10 @@
2815 margin: 0;
2816 }
2817
2818+.patches-view-cell {
2819+ padding-right: 1em;
2820+}
2821+
2822 /* --- Blueprints --- */
2823
2824 body.tab-specifications #actions, body.tab-specifications .results {
2825@@ -1467,7 +1471,7 @@
2826
2827 div.popupTitle {
2828 background: #ffffdc;
2829- padding: 0 1em;
2830+ padding: 0.5em 1em;
2831 border: 1px black solid;
2832 position: absolute;
2833 display: none;
2834
2835=== modified file 'lib/canonical/launchpad/interfaces/_schema_circular_imports.py'
2836--- lib/canonical/launchpad/interfaces/_schema_circular_imports.py 2010-02-27 10:19:18 +0000
2837+++ lib/canonical/launchpad/interfaces/_schema_circular_imports.py 2010-03-01 17:42:33 +0000
2838@@ -46,6 +46,8 @@
2839 from lp.code.interfaces.diff import IPreviewDiff
2840 from lp.code.interfaces.hasbranches import (
2841 IHasBranches, IHasMergeProposals, IHasRequestedReviews)
2842+from lp.code.interfaces.sourcepackagerecipebuild import (
2843+ ISourcePackageRecipeBuild)
2844 from lp.registry.interfaces.distribution import IDistribution
2845 from lp.registry.interfaces.distributionmirror import IDistributionMirror
2846 from lp.registry.interfaces.distributionsourcepackage import (
2847@@ -65,12 +67,12 @@
2848 IArchiveDependency)
2849 from lp.soyuz.interfaces.distroarchseries import IDistroArchSeries
2850 from lp.soyuz.interfaces.publishing import (
2851- IBinaryPackagePublishingHistory, ISecureBinaryPackagePublishingHistory,
2852- ISecureSourcePackagePublishingHistory, ISourcePackagePublishingHistory,
2853+ IBinaryPackagePublishingHistory, ISourcePackagePublishingHistory,
2854 ISourcePackagePublishingHistoryPublic, PackagePublishingStatus)
2855 from lp.soyuz.interfaces.packageset import IPackageset
2856 from lp.soyuz.interfaces.queue import (
2857 IPackageUpload, PackageUploadCustomFormat, PackageUploadStatus)
2858+from lp.soyuz.interfaces.sourcepackagerelease import ISourcePackageRelease
2859 from lp.registry.interfaces.sourcepackage import ISourcePackage
2860 from canonical.launchpad.interfaces.message import (
2861 IIndexedMessage, IMessage, IUserToUserEmail)
2862@@ -188,12 +190,12 @@
2863 LAZR_WEBSERVICE_EXPORTED)[
2864 'return_type'].value_type.schema = IBinaryPackagePublishingHistory
2865 patch_reference_property(
2866- ISecureBinaryPackagePublishingHistory, 'distroarchseries',
2867+ IBinaryPackagePublishingHistory, 'distroarchseries',
2868 IDistroArchSeries)
2869 patch_reference_property(
2870- ISecureBinaryPackagePublishingHistory, 'archive', IArchive)
2871+ IBinaryPackagePublishingHistory, 'archive', IArchive)
2872 patch_reference_property(
2873- ISecureSourcePackagePublishingHistory, 'archive', IArchive)
2874+ ISourcePackagePublishingHistory, 'archive', IArchive)
2875
2876 # IArchive apocalypse.
2877 patch_reference_property(IArchive, 'distribution', IDistribution)
2878@@ -322,6 +324,9 @@
2879
2880 IBuildBase['buildstate'].vocabulary = BuildStatus
2881
2882+patch_reference_property(
2883+ ISourcePackageRelease, 'source_package_recipe_build', ISourcePackageRecipeBuild)
2884+
2885 # IHasBugs
2886 patch_plain_parameter_type(
2887 IHasBugs, 'searchTasks', 'assignee', IPerson)
2888
2889=== modified file 'lib/canonical/launchpad/interfaces/temporaryblobstorage.py'
2890--- lib/canonical/launchpad/interfaces/temporaryblobstorage.py 2009-06-25 05:30:52 +0000
2891+++ lib/canonical/launchpad/interfaces/temporaryblobstorage.py 2010-03-01 17:42:33 +0000
2892@@ -17,6 +17,14 @@
2893 from zope.schema import Datetime, Text, Bytes
2894 from canonical.launchpad import _
2895
2896+from lazr.restful.declarations import (
2897+ collection_default_content, exported,
2898+ export_as_webservice_collection, export_as_webservice_entry,
2899+ export_read_operation, operation_parameters, rename_parameters_as,
2900+ REQUEST_USER)
2901+from lazr.restful.interface import copy_field
2902+
2903+
2904 class BlobTooLarge(Exception):
2905 """Raised if attempting to create a blob larger than the maximum
2906 allowed size.
2907@@ -26,16 +34,25 @@
2908
2909 class ITemporaryBlobStorage(Interface):
2910 """A blob which we will store in the database temporarily."""
2911+ export_as_webservice_entry(
2912+ singular_name='temporary_blob', plural_name='temporary_blobs')
2913
2914- uuid = Text(title=_('UUID'), required=True, readonly=True)
2915+ uuid = exported(
2916+ Text(title=_('UUID'), required=True, readonly=True),
2917+ exported_as='token')
2918 blob = Bytes(title=_('BLOB'), required=True, readonly=True)
2919 date_created = Datetime(title=_('Date created'),
2920 required=True, readonly=True)
2921 file_alias = Attribute("Link to actual storage of blob")
2922
2923+ @export_read_operation()
2924+ def hasBeenProcessed():
2925+ """Return True if this blob has been processed."""
2926+
2927
2928 class ITemporaryStorageManager(Interface):
2929 """A tool to create temporary blobs."""
2930+ export_as_webservice_collection(ITemporaryBlobStorage)
2931
2932 def new(blob, expires=None):
2933 """Create a new blob for storage in the database, returning the
2934@@ -47,9 +64,19 @@
2935 config.launchpad.default_blob_expiry
2936 """
2937
2938+ @rename_parameters_as(uuid='token')
2939+ @operation_parameters(uuid=copy_field(ITemporaryBlobStorage['uuid']))
2940+ @export_read_operation()
2941 def fetch(uuid):
2942 """Retrieve a TemporaryBlobStorage by uuid."""
2943
2944 def delete(uuid):
2945 """Delete a TemporaryBlobStorage by uuid."""
2946
2947+ @collection_default_content()
2948+ def default_temporary_blob_storage_list():
2949+ """Return the default list of `ITemporaryBlobStorage` objects.
2950+
2951+ :returns: All the the `ITemporaryBlobStorage` blobs whose file
2952+ aliases have not expired.
2953+ """
2954
2955=== modified file 'lib/canonical/launchpad/javascript/code/codereview.js'
2956--- lib/canonical/launchpad/javascript/code/codereview.js 2010-01-29 16:00:43 +0000
2957+++ lib/canonical/launchpad/javascript/code/codereview.js 2010-03-01 17:42:33 +0000
2958@@ -39,22 +39,9 @@
2959 */
2960 link.on('click', show_request_review_form);
2961 }
2962- link = Y.one('.menu-link-set_commit_message');
2963- if (Y.Lang.isValue(link)) {
2964- link.addClass('js-action');
2965- link.on('click', edit_commit_message);
2966- }
2967- if (Y.Lang.isValue(Y.lp.widgets)) {
2968- var widget = Y.lp.widgets['edit-commit-message'];
2969- if (Y.Lang.isValue(widget)) {
2970- widget.editor.on('save', function() {
2971- commit_message_listener(this.get('value'), true);
2972- });
2973- widget.editor.on('cancel', function() {
2974- commit_message_listener(this.get('value'), false);
2975- });
2976- }
2977- }
2978+
2979+ link_multiline_editor('commit_message');
2980+ link_multiline_editor('description');
2981 link_scroller('#proposal-summary a.diff-link', '#review-diff');
2982 link_scroller('.menu-link-add_comment', '#add-comment', function() {
2983 Y.one('#add-comment-form textarea').focus();
2984@@ -82,24 +69,54 @@
2985 });
2986 }
2987
2988-/*
2989- * Hide the commit message editor if the value is empty.
2990+
2991+/*
2992+ * Make the edit link a javascript link (green).
2993+ * Link the listener to the save and cancel events of the multiline editor.
2994+ */
2995+function link_multiline_editor(name) {
2996+ var link = Y.one('.menu-link-set_' + name);
2997+ if (Y.Lang.isValue(link)) {
2998+ link.addClass('js-action');
2999+ link.on('click', function(e) {
3000+ hide_link_show_multiline_edit(e, name);}
3001+ );
3002+ var parent = link.ancestor();
3003+ if (parent.hasClass('unseen')) {
3004+ link.addClass('unseen');
3005+ parent.removeClass('unseen');
3006+ }
3007+ }
3008+ if (Y.Lang.isValue(Y.lp.widgets)) {
3009+ var widget = Y.lp.widgets['edit-' + name];
3010+ if (Y.Lang.isValue(widget)) {
3011+ widget.editor.on('save', function() {
3012+ multiline_edit_message_listener(name, this.get('value'), true);
3013+ });
3014+ widget.editor.on('cancel', function() {
3015+ multiline_edit_message_listener(name, this.get('value'), false);
3016+ });
3017+ }
3018+ }
3019+}
3020+
3021+
3022+/*
3023+ * Hide the editor if the value is empty.
3024 *
3025- * If the commit message is empty, we want to show the
3026- * 'Set commit message' link again. For consistency with
3027- * page updates we want to flash this link so the user can
3028- * see what we are doing. If the commit message was saved
3029- * and is empty, then we flash green as all is good. If the
3030- * user has cancelled the edit, and the commit message is
3031- * empty, then we flash the link red.
3032+ * If the value is empty, we want to show the 'Set commit message' link again.
3033+ * For consistency with page updates we want to flash this link so the user
3034+ * can see what we are doing. If the commit message was saved and is empty,
3035+ * then we flash green as all is good. If the user has cancelled the edit,
3036+ * and the commit message is empty, then we flash the link red.
3037 */
3038-function commit_message_listener(message, saved)
3039+function multiline_edit_message_listener(name, message, saved)
3040 {
3041 if (message === '') {
3042 // Hide the multiline editor
3043- Y.one('#edit-commit-message').addClass('unseen');
3044+ Y.one('#edit-' + name).addClass('unseen');
3045 // Show the link again
3046- var link = Y.one('.menu-link-set_commit_message');
3047+ var link = Y.one('.menu-link-set_' + name);
3048 link.removeClass('unseen');
3049 if (saved) {
3050 // Flash green.
3051@@ -113,19 +130,17 @@
3052 }
3053
3054 /*
3055- * Edit the commit message.
3056- *
3057 * Hide the link, show the multi-line editor, and set it to edit.
3058 */
3059-function edit_commit_message(e) {
3060+function hide_link_show_multiline_edit(e, name) {
3061 // We are handling this click event.
3062 e.halt();
3063 // Make the edit button unseen.
3064- Y.one('#edit-commit-message').removeClass('unseen');
3065+ Y.one('#edit-' + name).removeClass('unseen');
3066 // Remove the unseen class from the commit message.
3067- Y.one('.menu-link-set_commit_message').addClass('unseen');
3068+ Y.one('.menu-link-set_' + name).addClass('unseen');
3069 // Trigger the edit on the multiline editor.
3070- Y.lp.widgets['edit-commit-message']._triggerEdit(e);
3071+ Y.lp.widgets['edit-' + name]._triggerEdit(e);
3072 }
3073
3074 /*
3075
3076=== added file 'lib/canonical/launchpad/pagetests/webservice/xx-temporary-blob-storage.txt'
3077--- lib/canonical/launchpad/pagetests/webservice/xx-temporary-blob-storage.txt 1970-01-01 00:00:00 +0000
3078+++ lib/canonical/launchpad/pagetests/webservice/xx-temporary-blob-storage.txt 2010-03-01 17:42:33 +0000
3079@@ -0,0 +1,81 @@
3080+The set of temporary blobs
3081+==========================
3082+
3083+The set of temporary blobs in Launchpad is represented by the collection
3084+found at /temporary-blobs. The collection contains all the temporary
3085+blobs whose file aliases have not expired.
3086+
3087+ >>> temporary_blobs = webservice.get('/temporary-blobs').jsonBody()
3088+ >>> len(temporary_blobs['entries'])
3089+ 0
3090+
3091+If we add a new blob, it will show up in the temporary_blobs entries
3092+set.
3093+
3094+ >>> login('foo.bar@canonical.com')
3095+ >>> from zope.component import getUtility
3096+ >>> from canonical.launchpad.interfaces.temporaryblobstorage import (
3097+ ... ITemporaryStorageManager)
3098+
3099+ >>> blob_token = getUtility(ITemporaryStorageManager).new("some data")
3100+ >>> logout()
3101+
3102+ >>> temporary_blobs = webservice.get('/temporary-blobs').jsonBody()
3103+ >>> len(temporary_blobs['entries'])
3104+ 1
3105+
3106+Each of the entries in the temporary_blobs entries set is an
3107+ITemporaryBlobStorage instance. A blob is identified by its UUID, which
3108+is exported via the webservice as 'token', in keeping with how it's
3109+referred to in the UI.
3110+
3111+ >>> blob = temporary_blobs['entries'][0]
3112+ >>> blob['token'] == blob_token
3113+ True
3114+
3115+It's possible to fetch a blob directly using its token.
3116+
3117+ >>> blob_link = '/temporary-blobs/' + blob_token
3118+ >>> blob = webservice.get(blob_link).jsonBody()
3119+ >>> blob['token'] == blob_token
3120+ True
3121+
3122+It's also possible to fetch the blob by calling temporary_blobs.fetch()
3123+and passing it a token.
3124+
3125+ >>> blob = webservice.named_get(
3126+ ... '/temporary-blobs', 'fetch', token=blob_token).jsonBody()
3127+ >>> blob['token'] == blob_token
3128+ True
3129+
3130+
3131+Checking whether a blob has been processed
3132+------------------------------------------
3133+
3134+Launchpad processes blobs after they've been uploaded, so that any data
3135+that can be used whilst filing a bug (or in any other operation,
3136+ostensibly) can be extracted from the blob without affecting the
3137+processing time of web requests.
3138+
3139+It's possible to see whether a blob has been processed by calling its
3140+hasBeenProcessed() method. In the case of the blob we created above, it
3141+hasn't been processed because no job was created to process it.
3142+
3143+ >>> print webservice.named_get(
3144+ ... blob['self_link'], 'hasBeenProcessed').jsonBody()
3145+ False
3146+
3147+Once the blob has been processed, its hasBeenProcessed() method will
3148+return True.
3149+
3150+ >>> from lp.bugs.interfaces.apportjob import IProcessApportBlobJobSource
3151+ >>> login('foo.bar@canonical.com')
3152+ >>> job = getUtility(IProcessApportBlobJobSource).create(
3153+ ... getUtility(ITemporaryStorageManager).fetch(blob_token))
3154+ >>> job.job.start()
3155+ >>> job.job.complete()
3156+ >>> logout()
3157+
3158+ >>> print webservice.named_get(
3159+ ... blob['self_link'], 'hasBeenProcessed').jsonBody()
3160+ True
3161
3162=== modified file 'lib/canonical/launchpad/webapp/dbpolicy.py'
3163--- lib/canonical/launchpad/webapp/dbpolicy.py 2010-02-23 11:53:24 +0000
3164+++ lib/canonical/launchpad/webapp/dbpolicy.py 2010-03-01 17:42:33 +0000
3165@@ -304,26 +304,18 @@
3166
3167 # sl_status gives meaningful results only on the origin node.
3168 master_store = self.getStore(MAIN_STORE, MASTER_FLAVOR)
3169- # If it takes more than (by default) 0.25 seconds to query the
3170- # replication lag, assume we are lagged. Normally the query
3171- # takes <20ms. This can happen during heavy updates, as the
3172- # Slony-I tables can get slow with lots of events. We use a
3173- # SAVEPOINT to conveniently reset the statement timeout.
3174- master_store.execute("""
3175- SAVEPOINT lag_check; SET LOCAL statement_timeout TO %d
3176- """ % config.launchpad.lag_check_timeout)
3177- try:
3178- try:
3179- return master_store.execute(
3180- "SELECT replication_lag(%d)" % slave_node_id).get_one()[0]
3181- except TimeoutError:
3182- logging.warn(
3183- 'Gave up querying slave lag after %d ms',
3184- (config.launchpad.lag_check_timeout))
3185- return timedelta(days=999) # A long, long time.
3186- finally:
3187- master_store.execute("ROLLBACK TO lag_check")
3188
3189+ # Retrieve the cached lag.
3190+ lag = master_store.execute("""
3191+ SELECT lag + (CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - updated)
3192+ FROM DatabaseReplicationLag WHERE node=%d
3193+ """ % slave_node_id).get_one()
3194+ if lag is None:
3195+ logging.error(
3196+ "No data in DatabaseReplicationLag for node %d"
3197+ % slave_node_id)
3198+ return timedelta(days=999) # A long, long time.
3199+ return lag[0]
3200
3201
3202 def WebServiceDatabasePolicyFactory(request):
3203
3204=== modified file 'lib/canonical/launchpad/zcml/temporaryblobstorage.zcml'
3205--- lib/canonical/launchpad/zcml/temporaryblobstorage.zcml 2009-07-13 18:15:02 +0000
3206+++ lib/canonical/launchpad/zcml/temporaryblobstorage.zcml 2010-03-01 17:42:32 +0000
3207@@ -36,4 +36,20 @@
3208 interface="canonical.launchpad.interfaces.ITemporaryStorageManager" />
3209 </securedutility>
3210
3211+ <browser:navigation
3212+ module="canonical.launchpad.browser.temporaryblobstorage"
3213+ classes="TemporaryBlobStorageNavigation"
3214+ />
3215+
3216+ <browser:url
3217+ for="canonical.launchpad.interfaces.temporaryblobstorage.ITemporaryBlobStorage"
3218+ urldata="canonical.launchpad.browser.temporaryblobstorage.TemporaryBlobStorageURL"
3219+ parent_utility="canonical.launchpad.interfaces.IWebServiceApplication"/>
3220+ path_expression="string:temporary-blobs/${uuid}"
3221+ />
3222+
3223+ <browser:url
3224+ for="canonical.launchpad.interfaces.temporaryblobstorage.ITemporaryStorageManager"
3225+ path_expression="string:temporary-blobs"
3226+ parent_utility="canonical.launchpad.interfaces.IWebServiceApplication"/>
3227 </configure>
3228
3229=== modified file 'lib/lp/answers/doc/person.txt'
3230--- lib/lp/answers/doc/person.txt 2009-12-24 01:41:54 +0000
3231+++ lib/lp/answers/doc/person.txt 2010-03-01 17:42:33 +0000
3232@@ -1,22 +1,28 @@
3233-= Person and the Answer Tracker =
3234-
3235-== searchQuestions() ==
3236-
3237-IQuestionsPerson defines a searchQuestions() method which can be used to
3238-select all or a subset of the questions in which the person is
3239-involved. This includes questions which the person created, is assigned
3240-to, is subscribed to, commented on, or answered. Various subsets can
3241-be selected by using the following criteria status, search_text and
3242-participation type.
3243-
3244- >>> from canonical.launchpad.interfaces import IPersonSet
3245+=============================
3246+People and the answer tracker
3247+=============================
3248+
3249+Sometimes you want to find out what questions a person is involved with.
3250+
3251+
3252+Searching
3253+=========
3254+
3255+IQuestionsPerson defines a searchQuestions() method which is used to select
3256+all, or a subset of, the questions in which a person is involved. This
3257+includes questions which the person created, is assigned to, is subscribed to,
3258+commented on, or answered. Various subsets can be selected by using the
3259+various search criteria.
3260+
3261+ >>> from lp.registry.interfaces.person import IPersonSet
3262 >>> from lp.answers.interfaces.questionsperson import IQuestionsPerson
3263 >>> personset = getUtility(IPersonSet)
3264 >>> foo_bar_raw = personset.getByEmail('foo.bar@canonical.com')
3265 >>> foo_bar = IQuestionsPerson(foo_bar_raw)
3266
3267
3268-=== search_text ===
3269+Search text
3270+-----------
3271
3272 The search_text parameter will limit the questions to those matching
3273 the query using the regular full text algorithm.
3274@@ -28,13 +34,14 @@
3275 Newly installed plug-in doesn't seem to be used Answered
3276
3277
3278-=== sort ===
3279-
3280-When using the search_text criteria, the default is to sort the results
3281-by relevancy. One can use the sort parameter to change that. It takes
3282-one of the constant defined in the QuestionSort enumeration.
3283-
3284- >>> from canonical.launchpad.interfaces import QuestionSort
3285+Sorting
3286+-------
3287+
3288+When using the search_text criteria, the default is to sort the results by
3289+relevancy. One can use the sort parameter to change that. It takes one of
3290+the constant defined in the QuestionSort enumeration.
3291+
3292+ >>> from lp.answers.interfaces.questionenums import QuestionSort
3293 >>> for question in foo_bar.searchQuestions(
3294 ... search_text='firefox', sort=QuestionSort.OLDEST_FIRST):
3295 ... print question.id, question.title, question.status.title
3296@@ -42,8 +49,7 @@
3297 6 Newly installed plug-in doesn't seem to be used Answered
3298 9 mailto: problem in webpage Solved
3299
3300-When no text search is done, the default sort order is
3301-QuestionSort.NEWEST_FIRST.
3302+When no text search is done, the default sort order is newest first.
3303
3304 >>> for question in foo_bar.searchQuestions():
3305 ... print question.id, question.title, question.status.title
3306@@ -56,13 +62,13 @@
3307 4 Firefox loses focus and gets stuck Open
3308
3309
3310-=== status ===
3311-
3312-The last searches showed that by default, not all statuses are searched
3313-for by default (they excluded expired and invalid questions). The status
3314-parameter can be used to control the list of statuses to select:
3315-
3316- >>> from canonical.launchpad.interfaces import QuestionStatus
3317+Status
3318+------
3319+
3320+As shown above, expired and invalid questions are not returned. The status
3321+parameter can be used to control the list of statuses to select.
3322+
3323+ >>> from lp.answers.interfaces.questionenums import QuestionStatus
3324 >>> for question in foo_bar.searchQuestions(status=QuestionStatus.INVALID):
3325 ... print question.title, question.status.title
3326 Firefox is slow and consumes too much RAM Invalid
3327@@ -70,23 +76,23 @@
3328 The status parameter can also take a list of statuses.
3329
3330 >>> for question in foo_bar.searchQuestions(
3331- ... status=[QuestionStatus.SOLVED, QuestionStatus.INVALID]):
3332+ ... status=(QuestionStatus.SOLVED, QuestionStatus.INVALID)):
3333 ... print question.title, question.status.title
3334 mailto: problem in webpage Solved
3335 Firefox is slow and consumes too much RAM Invalid
3336
3337
3338-=== participation ===
3339+Participation
3340+-------------
3341
3342-By default, any types of relationship to a question is considered by
3343-searchQuestions. This can customized through the participation
3344-parameter. It takes one or a list of constants from the
3345-QuestionParticipation enumeration.
3346+By default, any relationship between a person and a question is considered by
3347+searchQuestions. This can customized through the participation parameter. It
3348+takes one or a list of constants from the QuestionParticipation enumeration.
3349
3350 To select only questions on which the person commented, the
3351-QuestionParticipation.COMMENTER is used:
3352+QuestionParticipation.COMMENTER is used.
3353
3354- >>> from canonical.launchpad.interfaces import QuestionParticipation
3355+ >>> from lp.answers.interfaces.questionenums import QuestionParticipation
3356 >>> for question in foo_bar.searchQuestions(
3357 ... participation=QuestionParticipation.COMMENTER, status=None):
3358 ... print question.title
3359@@ -96,8 +102,8 @@
3360 Installation of Java Runtime Environment for Mozilla
3361 Newly installed plug-in doesn't seem to be used
3362
3363-QuestionParticipation.SUBSCRIBER will only select the questions to which
3364-the person is subscribed to:
3365+QuestionParticipation.SUBSCRIBER will only select the questions to which the
3366+person is subscribed.
3367
3368 >>> for question in foo_bar.searchQuestions(
3369 ... participation=QuestionParticipation.SUBSCRIBER, status=None):
3370@@ -105,7 +111,7 @@
3371 Slow system
3372 Firefox is slow and consumes too much RAM
3373
3374-QuestionParticipation.OWNER selects the questions that the person created:
3375+QuestionParticipation.OWNER selects the questions that the person created.
3376
3377 >>> for question in foo_bar.searchQuestions(
3378 ... participation=QuestionParticipation.OWNER, status=None):
3379@@ -114,8 +120,8 @@
3380 Firefox loses focus and gets stuck
3381 Firefox is slow and consumes too much RAM
3382
3383-QuestionParticipation.ANSWERER selects the questions for which the person
3384-was marked as the answerer:
3385+QuestionParticipation.ANSWERER selects the questions for which the person gave
3386+an answer.
3387
3388 >>> for question in foo_bar.searchQuestions(
3389 ... participation=QuestionParticipation.ANSWERER, status=None):
3390@@ -124,19 +130,18 @@
3391 Firefox is slow and consumes too much RAM
3392
3393 QuestionParticipation.ASSIGNEE selects that questions which are assigned to
3394-the person:
3395+the person.
3396
3397- >>> for question in foo_bar.searchQuestions(
3398- ... participation=QuestionParticipation.ASSIGNEE, status=None):
3399- ... print question.title
3400+ >>> list(foo_bar.searchQuestions(
3401+ ... participation=QuestionParticipation.ASSIGNEE, status=None))
3402+ []
3403
3404 If a list of these constants is used, all of these participation types
3405-will be selected:
3406+will be selected.
3407
3408 >>> for question in foo_bar.searchQuestions(
3409- ... participation=[
3410- ... QuestionParticipation.OWNER,
3411- ... QuestionParticipation.ANSWERER],
3412+ ... participation=(QuestionParticipation.OWNER,
3413+ ... QuestionParticipation.ANSWERER),
3414 ... status=None):
3415 ... print question.title
3416 mailto: problem in webpage
3417@@ -145,40 +150,41 @@
3418 Firefox is slow and consumes too much RAM
3419
3420
3421-=== language ===
3422-
3423-By default, questions in all languages are included in the results.
3424-It is possible to filter questions by the language they were written
3425-in . One or a list of ILanguage object should be passed in the
3426-language parameter to specify the language filter.
3427-
3428- >>> from canonical.launchpad.interfaces import ILanguageSet
3429+Language
3430+--------
3431+
3432+By default, questions in all languages are included in the results. It is
3433+possible to filter questions by the language they were written in. One or a
3434+sequence of ILanguage object can be passed in to specify the language filter.
3435+
3436+ >>> from lp.services.worlddata.interfaces.language import ILanguageSet
3437 >>> spanish = getUtility(ILanguageSet)['es']
3438 >>> english = getUtility(ILanguageSet)['en']
3439
3440 Foo bar doesn't have any questions written in Spanish.
3441
3442- >>> for question in foo_bar.searchQuestions(language=spanish):
3443- ... print question.title
3444-
3445-But carlos has one.
3446-
3447+ >>> list(foo_bar.searchQuestions(language=spanish))
3448+ []
3449+
3450+But Carlos has one.
3451+
3452+ # Because not everyone uses a real editor <wink>
3453+ >>> from canonical.encoding import ascii_smash
3454 >>> carlos_raw = personset.getByName('carlos')
3455 >>> carlos = IQuestionsPerson(carlos_raw)
3456 >>> for question in carlos.searchQuestions(
3457- ... language=[english, spanish]):
3458- ... [question.title, question.language.code]
3459- [u'Problema al recompilar kernel con soporte smp (doble-n\xfacleo)',
3460- u'es']
3461-
3462-
3463-=== needs_attention ===
3464-
3465-The method accept a parameter called needs_attention which only selects
3466-the questions that needs attention from the person. This includes questions
3467-owned by the person in the ANSWERED or NEEDSINFO state. It also includes
3468-questions on which the person requested for more information or gave an
3469-answer and that are back in the OPEN state.
3470+ ... language=(english, spanish)):
3471+ ... print ascii_smash(question.title), question.language.code
3472+ Problema al recompilar kernel con soporte smp (doble-nucleo) es
3473+
3474+
3475+Questions needing attention
3476+---------------------------
3477+
3478+You can select only the questions that needs attention from a person. This
3479+includes questions owned by the person in the ANSWERED or NEEDSINFO state. It
3480+also includes questions on which the person requested more information or gave
3481+an answer and are back in the OPEN state.
3482
3483 >>> for question in foo_bar.searchQuestions(needs_attention=True):
3484 ... print question.status.title, question.owner.displayname, (
3485@@ -187,70 +193,80 @@
3486 Needs information Foo Bar Slow system
3487
3488
3489-=== Combination ===
3490+Search combinations
3491+-------------------
3492
3493-The returned sets of questions is the intersection of the sets delimited
3494-by each criteria:
3495+The results are the intersection of the sets delimited by each criteria.
3496
3497 >>> for question in foo_bar.searchQuestions(
3498- ... search_text='firefox OR Java', status=QuestionStatus.ANSWERED,
3499+ ... search_text='firefox OR Java',
3500+ ... status=QuestionStatus.ANSWERED,
3501 ... participation=QuestionParticipation.COMMENTER):
3502 ... print question.title, question.status.title
3503 Installation of Java Runtime Environment for Mozilla Answered
3504 Newly installed plug-in doesn't seem to be used Answered
3505
3506
3507-== getQuestionLanguages() ==
3508+Question languages
3509+==================
3510
3511 IQuestionsPerson also defines a getQuestionLanguages() attribute which
3512 contains the set of languages used by all of the questions in which this
3513 person is involved.
3514
3515- >>> sorted(language.code for language in foo_bar.getQuestionLanguages())
3516- [u'en']
3517-
3518-This includes questions which the person owns. But also, questions that
3519-the user subscribed to.
3520-
3521- >>> from canonical.launchpad.interfaces import IQuestionSet
3522+ >>> print ', '.join(
3523+ ... sorted(language.code
3524+ ... for language in foo_bar.getQuestionLanguages()))
3525+ en
3526+
3527+This includes questions which the person owns, and questions that the user is
3528+subscribed to...
3529+
3530+ >>> from lp.answers.interfaces.questioncollection import IQuestionSet
3531 >>> pt_BR_question = getUtility(IQuestionSet).get(13)
3532 >>> login('foo.bar@canonical.com')
3533 >>> pt_BR_question.subscribe(foo_bar_raw)
3534 <QuestionSubscription...>
3535
3536- >>> sorted(language.code for language in foo_bar.getQuestionLanguages())
3537- [u'en', u'pt_BR']
3538+ >>> print ', '.join(
3539+ ... sorted(language.code
3540+ ... for language in foo_bar.getQuestionLanguages()))
3541+ en, pt_BR
3542
3543-And also questions for which he's the answerer.
3544+...and questions for which he's the answerer...
3545
3546 >>> es_question = getUtility(IQuestionSet).get(12)
3547 >>> es_question.reject(foo_bar_raw, 'Reject question.')
3548 <QuestionMessage...>
3549
3550- >>> sorted(language.code for language in foo_bar.getQuestionLanguages())
3551- [u'en', u'es', u'pt_BR']
3552+ >>> print ', '.join(
3553+ ... sorted(language.code
3554+ ... for language in foo_bar.getQuestionLanguages()))
3555+ en, es, pt_BR
3556
3557-As well, as question which are assigned to the user.
3558+...as well as questions which are assigned to the user...
3559
3560 >>> pt_BR_question.assignee = carlos_raw
3561- >>> from canonical.database.sqlbase import flush_database_updates
3562- >>> flush_database_updates()
3563-
3564- >>> sorted(language.code for language in carlos.getQuestionLanguages())
3565- [u'es', u'pt_BR']
3566-
3567-And questions on which the user commented:
3568+ >>> print ', '.join(
3569+ ... sorted(language.code
3570+ ... for language in carlos.getQuestionLanguages()))
3571+ es, pt_BR
3572+
3573+...and questions on which the user commented.
3574
3575 >>> en_question = getUtility(IQuestionSet).get(1)
3576 >>> login('carlos@canonical.com')
3577 >>> en_question.addComment(carlos_raw, 'A simple comment.')
3578 <QuestionMessage...>
3579
3580- >>> sorted(language.code for language in carlos.getQuestionLanguages())
3581- [u'en', u'es', u'pt_BR']
3582-
3583-
3584-== getDirectAnswerQuestionTargets() ==
3585+ >>> print ', '.join(
3586+ ... sorted(language.code
3587+ ... for language in carlos.getQuestionLanguages()))
3588+ en, es, pt_BR
3589+
3590+
3591+Direct subscriptions
3592+====================
3593
3594 IQuestionsPerson defines getDirectAnswerQuestionTargets that can be used to
3595 retrieve a list of IQuestionTargets that a person subscribed himself to as an
3596@@ -261,9 +277,10 @@
3597 >>> no_priv.getDirectAnswerQuestionTargets()
3598 []
3599
3600- >>> from canonical.launchpad.interfaces import IProductSet
3601+ >>> from lp.registry.interfaces.product import IProductSet
3602 >>> firefox = getUtility(IProductSet).getByName("firefox")
3603- >>> # Answer contacts must speak a language
3604+
3605+ # Answer contacts must speak a language
3606 >>> no_priv_raw.addLanguage(english)
3607 >>> firefox.addAnswerContact(no_priv_raw)
3608 True
3609@@ -272,7 +289,9 @@
3610 ... print target.name
3611 firefox
3612
3613-== getTeamAnswerQuestionTargets() ==
3614+
3615+Indirect subscriptions
3616+======================
3617
3618 IQuestionsPerson defines getTeamAnswerQuestionTargets that retrieves a list of
3619 IQuestionTargets that the person is subscribed to indirectly as an answer
3620@@ -283,20 +302,21 @@
3621 >>> no_priv_raw.inTeam(landscape_team)
3622 True
3623
3624- >>> from canonical.launchpad.interfaces import IDistributionSet
3625+ >>> from lp.registry.interfaces.distribution import IDistributionSet
3626 >>> ubuntu = getUtility(IDistributionSet).getByName("ubuntu")
3627 >>> landscape_team.addLanguage(english)
3628 >>> ubuntu.addAnswerContact(landscape_team)
3629 True
3630
3631- >>> sorted(target.name
3632- ... for target in no_priv.getTeamAnswerQuestionTargets())
3633- [u'ubuntu']
3634+ >>> print ', '.join(
3635+ ... sorted(target.name
3636+ ... for target in no_priv.getTeamAnswerQuestionTargets()))
3637+ ubuntu
3638
3639-Indirect team membership is also taken in consideration. For example,
3640-the Landscape Team joins the Translator Team. So targets for which the
3641-Translator team is an answer contact will be included in No Privileges
3642-Person's supported IQuestionTargets:
3643+Indirect team membership is also taken in consideration. For example, when
3644+the Landscape Team joins the Translator Team, targets for which the Translator
3645+team is an answer contact will be included in No Privileges Person's supported
3646+IQuestionTargets.
3647
3648 >>> translator_team = personset.getByName('ubuntu-translators')
3649 >>> no_priv_raw.inTeam(translator_team)
3650@@ -315,36 +335,33 @@
3651 >>> translator_team.addLanguage(english)
3652 >>> evolution_package.addAnswerContact(translator_team)
3653 True
3654- >>> sorted(target.name
3655- ... for target in no_priv.getTeamAnswerQuestionTargets())
3656- [u'evolution', u'ubuntu']
3657-
3658-
3659-== Deactivated pillars and *AnswerQuestionTargets() ==
3660-
3661-getDirectAnswerQuestionTargets() and getTeamAnswerQuestionTargets() use
3662-a _getQuestionTargetsFromAnswerContacts() to build a distinct list of
3663-valid IQuestionTargets. It ensures that no deactivated pillars are in
3664-the list.
3665+ >>> print ', '.join(
3666+ ... sorted(target.name
3667+ ... for target in no_priv.getTeamAnswerQuestionTargets()))
3668+ evolution, ubuntu
3669+
3670+
3671+Deactivated pillars
3672+===================
3673+
3674+Only valid IQuestionTargets are returned, ensuring that no deactivated pillars
3675+are in the results.
3676
3677 If the Firefox project is deactivated, it is removed from the list of
3678 supported projects.
3679
3680- >>> from canonical.launchpad.ftests import syncUpdate
3681-
3682 >>> login('foo.bar@canonical.com')
3683 >>> firefox.active = False
3684- >>> syncUpdate(firefox)
3685 >>> sorted(target.name
3686 ... for target in no_priv.getDirectAnswerQuestionTargets())
3687 []
3688
3689-When the Firefox project is reactivated, the answer contact relationship
3690-is visible. It is important to preserve the continuity of the project in
3691-cases were we only want is deactivated for a short period.
3692+When the Firefox project is reactivated, the answer contact relationship is
3693+visible. These relationships are persistent for cases where we only want is
3694+deactivated for a short period.
3695
3696 >>> firefox.active = True
3697- >>> syncUpdate(firefox)
3698- >>> sorted(target.name
3699- ... for target in no_priv.getDirectAnswerQuestionTargets())
3700- [u'firefox']
3701+ >>> print ', '.join(
3702+ ... sorted(target.name
3703+ ... for target in no_priv.getDirectAnswerQuestionTargets()))
3704+ firefox
3705
3706=== renamed file 'lib/lp/answers/doc/project.txt' => 'lib/lp/answers/doc/projectgroup.txt'
3707--- lib/lp/answers/doc/project.txt 2010-02-17 14:42:16 +0000
3708+++ lib/lp/answers/doc/projectgroup.txt 2010-03-01 17:42:33 +0000
3709@@ -1,12 +1,15 @@
3710-= Project and the Answer Tracker =
3711+===============================
3712+Projects and the answer tracker
3713+===============================
3714
3715-Although question cannot be filed directly against projects, IProjectGroup in
3716-Launchpad also provides the IQuestionCollection and
3717+Although question cannot be filed directly against project groups,
3718+IProjectGroup in Launchpad also provides the IQuestionCollection and
3719 ISearchableByQuestionOwner interfaces.
3720
3721 >>> from canonical.launchpad.webapp.testing import verifyObject
3722- >>> from canonical.launchpad.interfaces import (
3723- ... IProjectGroupSet, ISearchableByQuestionOwner, IQuestionCollection)
3724+ >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
3725+ >>> from lp.answers.interfaces.questioncollection import (
3726+ ... ISearchableByQuestionOwner, IQuestionCollection)
3727
3728 >>> mozilla_project = getUtility(IProjectGroupSet).getByName('mozilla')
3729 >>> verifyObject(IQuestionCollection, mozilla_project)
3730@@ -14,38 +17,41 @@
3731 >>> verifyObject(ISearchableByQuestionOwner, mozilla_project)
3732 True
3733
3734-== searchQuestions() ==
3735-
3736-This means that it is possible to search for all questions filed against
3737-products in a project using the project searchQuestions() method.
3738-
3739- # Add a question to thunderbird.
3740- >>> from canonical.launchpad.interfaces import ILaunchBag, IProductSet
3741+
3742+Questions filed against project in a project group
3743+==================================================
3744+
3745+You can search for all questions filed against projects in a project using the
3746+project group's searchQuestions() method.
3747+
3748+ >>> from lp.registry.interfaces.person import IPersonSet
3749+ >>> from lp.registry.interfaces.product import IProductSet
3750+
3751 >>> login('test@canonical.com')
3752 >>> thunderbird = getUtility(IProductSet).getByName('thunderbird')
3753- >>> sample_person = getUtility(ILaunchBag).user
3754+ >>> sample_person = getUtility(IPersonSet).getByName('name12')
3755 >>> question = thunderbird.newQuestion(
3756- ... sample_person, "SVG attachments aren't displayed",
3757+ ... sample_person,
3758+ ... "SVG attachments aren't displayed ",
3759 ... "It would be a nice feature if SVG attachments could be displayed"
3760- ... "inlined.")
3761+ ... " inlined.")
3762
3763 >>> for question in mozilla_project.searchQuestions(search_text='svg'):
3764 ... print question.title, question.target.displayname
3765 SVG attachments aren't displayed Mozilla Thunderbird
3766 Problem showing the SVG demo on W3C site Mozilla Firefox
3767
3768-In the case were a Project has no Products, then we can expect no
3769-possible questions.
3770+In the case where a project group has no projects, there are no results.
3771
3772 >>> aaa_project = getUtility(IProjectGroupSet).getByName('aaa')
3773- >>> [q for question in aaa_project.searchQuestions()]
3774+ >>> list(aaa_project.searchQuestions())
3775 []
3776
3777-Questions can be searched by all the standard searchQuestions() parameters
3778-(consult questiontarget.txt for the full details.)
3779+Questions can be searched by all the standard searchQuestions() parameters.
3780+See questiontarget.txt for the full details.
3781
3782- >>> from canonical.launchpad.interfaces import (
3783- ... QuestionStatus, QuestionSort)
3784+ >>> from lp.answers.interfaces.questionenums import (
3785+ ... QuestionSort, QuestionStatus)
3786 >>> for question in mozilla_project.searchQuestions(
3787 ... owner=sample_person, status=QuestionStatus.OPEN,
3788 ... sort=QuestionSort.OLDEST_FIRST):
3789@@ -53,20 +59,21 @@
3790 Problem showing the SVG demo on W3C site Mozilla Firefox
3791 SVG attachments aren't displayed Mozilla Thunderbird
3792
3793-== getQuestionLanguages() ==
3794-
3795-The getQuestionLanguages() returns the set of languages that is used by
3796-all the questions in the project products.
3797-
3798- >>> sorted(language.code
3799- ... for language in mozilla_project.getQuestionLanguages())
3800- [u'en', u'pt_BR']
3801-
3802-(The firefox product has one question created in Brazilian Portuguese.)
3803-
3804-In the case where a Project has no Products, language questions will
3805-still return and empty set.
3806-
3807- >>> [language.code for language in aaa_project.getQuestionLanguages()]
3808+
3809+Languages
3810+=========
3811+
3812+getQuestionLanguages() returns the set of languages that is used by all the
3813+questions in the project group's projects.
3814+
3815+ # The Firefox project group has one question created in Brazilian
3816+ # Portuguese.
3817+ >>> print ', '.join(
3818+ ... sorted(language.code
3819+ ... for language in mozilla_project.getQuestionLanguages()))
3820+ en, pt_BR
3821+
3822+In the case where a project group has no projects, there are no results.
3823+
3824+ >>> list(aaa_project.getQuestionLanguages())
3825 []
3826-
3827
3828=== modified file 'lib/lp/answers/doc/question.txt'
3829--- lib/lp/answers/doc/question.txt 2009-03-24 12:43:49 +0000
3830+++ lib/lp/answers/doc/question.txt 2010-03-01 17:42:32 +0000
3831@@ -1,21 +1,24 @@
3832-= Launchpad Answer Tracker =
3833+========================
3834+Launchpad Answer Tracker
3835+========================
3836
3837-Launchpad includes an Answer Tracker where users can post questions
3838-(usually about problems they encounter with projects) and other can
3839-answer them.) Questions are created and accessed using the
3840-IQuestionTarget interface. This interface is available on Products,
3841-Distributions and DistributionSourcePackages.
3842+Launchpad includes an Answer Tracker where users can post questions, usually
3843+about problems they encounter with projects, and other people can answer them.
3844+Questions are created and accessed using the IQuestionTarget interface. This
3845+interface is available on Products, Distributions and
3846+DistributionSourcePackages.
3847
3848 >>> login('test@canonical.com')
3849
3850 >>> from canonical.launchpad.webapp.testing import verifyObject
3851- >>> from canonical.launchpad.interfaces import (
3852- ... IDistributionSet, IProductSet, IPersonSet, IQuestionTarget)
3853+ >>> from lp.answers.interfaces.questiontarget import IQuestionTarget
3854+ >>> from lp.registry.interfaces.product import IProductSet
3855
3856 >>> firefox = getUtility(IProductSet)['firefox']
3857 >>> verifyObject(IQuestionTarget, firefox)
3858 True
3859
3860+ >>> from lp.registry.interfaces.distribution import IDistributionSet
3861 >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
3862 >>> verifyObject(IQuestionTarget, ubuntu)
3863 True
3864@@ -24,9 +27,9 @@
3865 >>> verifyObject(IQuestionTarget, evolution_in_ubuntu)
3866 True
3867
3868-Although Distribution series do not implement the IQuestionTarget
3869-interface, it is possible to adapt one to it. (The adapter is actually
3870-the distroseries's distribution.)
3871+Although distribution series do not implement the IQuestionTarget interface,
3872+it is possible to adapt one to it. The adapter is actually the distroseries's
3873+distribution.
3874
3875 >>> ubuntu_warty = ubuntu.getSeries('warty')
3876 >>> IQuestionTarget.providedBy(ubuntu_warty)
3877@@ -56,29 +59,33 @@
3878 You create a new question by calling the newQuestion() method of an
3879 IQuestionTarget attribute.
3880
3881+ >>> from lp.registry.interfaces.person import IPersonSet
3882 >>> sample_person = getUtility(IPersonSet).getByEmail('test@canonical.com')
3883 >>> firefox_question = firefox.newQuestion(
3884 ... sample_person, "Firefox question", "Unable to use Firefox")
3885
3886-(The complete IQuestionTarget interface is documented in
3887-../interfaces/ftests/questiontarget.txt.)
3888-
3889-== Official usage ==
3890-
3891-A product or distribution may be offically supported by the community
3892-using the Answer Tracker. This status is set by the official_answers
3893-attribute on the IProduct and IDistribution.
3894+The complete IQuestionTarget interface is documented in questiontarget.txt.
3895+
3896+
3897+Official usage
3898+==============
3899+
3900+A product or distribution may be officially supported by the community using
3901+the Answer Tracker. This status is set by the official_answers attribute on
3902+the IProduct and IDistribution.
3903
3904 >>> ubuntu.official_answers
3905 True
3906 >>> firefox.official_answers
3907 True
3908
3909-== IQuestion ==
3910-
3911-Questions are manipulated through the IQuestion interface:
3912-
3913- >>> from canonical.launchpad.interfaces import IQuestion
3914+
3915+IQuestion interface
3916+===================
3917+
3918+Questions are manipulated through the IQuestion interface.
3919+
3920+ >>> from lp.answers.interfaces.question import IQuestion
3921 >>> from zope.security.proxy import removeSecurityProxy
3922
3923 # The complete interface is not necessarily available to the
3924@@ -88,21 +95,27 @@
3925
3926 The person who submitted the question is available in the owner field.
3927
3928- >>> firefox_question.owner == sample_person
3929- True
3930+ >>> firefox_question.owner
3931+ <Person at ... name12 (Sample Person)>
3932
3933 When the question is created, the owner is added to the question's
3934-subscribers:
3935-
3936- >>> sample_person in [s.person for s in firefox_question.subscriptions]
3937- True
3938-
3939-The question status is 'Open':
3940-
3941- >>> firefox_question.status.title
3942- 'Open'
3943-
3944-And the creation time is recorded in the datecreated attribute:
3945+subscribers.
3946+
3947+ >>> from operator import attrgetter
3948+ >>> def print_subscribers(question):
3949+ ... people = [subscription.person
3950+ ... for subscription in question.subscriptions]
3951+ ... for person in sorted(people, key=attrgetter('name')):
3952+ ... print person.displayname
3953+ >>> print_subscribers(firefox_question)
3954+ Sample Person
3955+
3956+The question status is 'Open'.
3957+
3958+ >>> print firefox_question.status.title
3959+ Open
3960+
3961+The question has a creation time.
3962
3963 >>> from datetime import datetime, timedelta
3964 >>> from pytz import UTC
3965@@ -110,11 +123,10 @@
3966 >>> now - firefox_question.datecreated < timedelta(seconds=5)
3967 True
3968
3969-The target onto which the question was created is available through the
3970-'target' attribute:
3971+The target onto which the question was created is also available.
3972
3973- >>> firefox_question.target == firefox
3974- True
3975+ >>> print firefox_question.target.displayname
3976+ Mozilla Firefox
3977
3978 It is also possible to adapt a question to its IQuestionTarget.
3979
3980@@ -163,66 +175,69 @@
3981 firefox
3982
3983
3984-== Subscriptions and Notifications ==
3985+Subscriptions and notifications
3986+===============================
3987
3988 Whenever a question is created or changed, email notifications will be
3989-sent. To receive such notification, one can subscribe to the bug using
3990+sent. To receive such notification, one can subscribe to the bug using
3991 the subscribe() method.
3992
3993 >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
3994 >>> subscription = firefox_question.subscribe(no_priv)
3995
3996-The list of subscriptions is available in the subscriptions attribute.
3997-In the current case, the subscribers will include the owner
3998-('Sample Person') and the newly subscribed person.
3999+The subscribers include the owner and the newly subscribed person.
4000
4001- >>> [s.person.displayname for s in firefox_question.subscriptions]
4002- [u'Sample Person', u'No Privileges Person']
4003+ >>> print_subscribers(firefox_question)
4004+ Sample Person
4005+ No Privileges Person
4006
4007 The getDirectSubscribers() method returns a sorted list of subscribers.
4008 This method iterates like the NotificationRecipientSet returned by the
4009 getDirectRecipients() method.
4010
4011- >>> [person.displayname
4012- ... for person in firefox_question.getDirectSubscribers()]
4013- [u'No Privileges Person', u'Sample Person']
4014+ >>> for person in firefox_question.getDirectSubscribers():
4015+ ... print person.displayname
4016+ No Privileges Person
4017+ Sample Person
4018
4019 To remove a person from the subscriptions list, we use the unsubscribe()
4020 method.
4021
4022 >>> firefox_question.unsubscribe(no_priv)
4023- >>> [s.person.displayname for s in firefox_question.subscriptions]
4024- [u'Sample Person']
4025+ >>> print_subscribers(firefox_question)
4026+ Sample Person
4027
4028-The persons who are on the subscription list are said to be directly
4029-subscribed to the question. They explicitly choose to get notifications
4030-about that particular question. This list of persons is available through
4031-the getDirectRecipients() method.
4032+The people on the subscription list are said to be directly subscribed to the
4033+question. They explicitly chose to get notifications about that particular
4034+question. This list of people is available through the getDirectRecipients()
4035+method.
4036
4037 >>> subscribers = firefox_question.getDirectRecipients()
4038
4039 That method returns an INotificationRecipientSet, containing the direct
4040-subscribers along the rationale for contacting them:
4041+subscribers along with the rationale for contacting them.
4042
4043 >>> from canonical.launchpad.interfaces import INotificationRecipientSet
4044 >>> verifyObject(INotificationRecipientSet, subscribers)
4045 True
4046- >>> [person.displayname for person in subscribers]
4047- [u'Sample Person']
4048- >>> subscribers.getReason(sample_person)
4049- ('You received this question notification because you are a direct
4050- subscriber of the question.', 'Subscriber')
4051+ >>> def print_reason(subscribers):
4052+ ... for person in subscribers:
4053+ ... text, header = subscribers.getReason(person)
4054+ ... print header, person.displayname, text
4055+ >>> print_reason(subscribers)
4056+ Subscriber Sample Person You received this question notification
4057+ because you are a direct subscriber of the question.
4058
4059-There is also a list of 'indirect' subscribers to the question. These
4060-are persons that didn't explicitly subscribed to the question, but that
4061-will receive notifications for other reason. Answer contacts for the
4062-question target are part of the indirect subscribers list.
4063+There is also a list of 'indirect' subscribers to the question. These are
4064+people that didn't explicitly subscribe to the question, but that will receive
4065+notifications for other reasons. Answer contacts for the question target are
4066+part of the indirect subscribers list.
4067
4068 # There are no answer contacts on the firefox product.
4069- >>> [person.displayname
4070- ... for person in firefox_question.getIndirectRecipients()]
4071+ >>> list(firefox_question.getIndirectRecipients())
4072 []
4073- >>> from canonical.launchpad.interfaces import ILanguageSet
4074+
4075+ >>> from lp.services.worlddata.interfaces.language import ILanguageSet
4076 >>> english = getUtility(ILanguageSet)['en']
4077 >>> no_priv.addLanguage(english)
4078 >>> firefox.addAnswerContact(no_priv)
4079@@ -231,16 +246,14 @@
4080 >>> indirect_subscribers = firefox_question.getIndirectRecipients()
4081 >>> verifyObject(INotificationRecipientSet, indirect_subscribers)
4082 True
4083- >>> [person.displayname for person in indirect_subscribers]
4084- [u'No Privileges Person']
4085- >>> indirect_subscribers.getReason(no_priv)
4086- (u'You received this question notification because you are an answer
4087- contact for Mozilla Firefox.',
4088- u'Answer Contact (Mozilla Firefox)')
4089+ >>> print_reason(indirect_subscribers)
4090+ Answer Contact (Mozilla Firefox) No Privileges Person
4091+ You received this question notification because you are an answer
4092+ contact for Mozilla Firefox.
4093
4094-There is a special case for when the question's is associated to a
4095-source package. The answer contacts for both the distribution and the
4096-source package are part of the indirect subscribers list.
4097+There is a special case for when the question is associated with a source
4098+package. The answer contacts for both the distribution and the source package
4099+are part of the indirect subscribers list.
4100
4101 # Let's register some answer contacts for the distribution and
4102 # the package.
4103@@ -257,64 +270,80 @@
4104 >>> package_question = evolution_in_ubuntu.newQuestion(
4105 ... sample_person, 'Upgrading to Evolution 1.4 breaks plug-ins',
4106 ... "The FnordsHighlighter plug-in doesn't work after upgrade.")
4107- >>> [s.person.displayname for s in package_question.subscriptions]
4108- [u'Sample Person']
4109+
4110+ >>> print_subscribers(package_question)
4111+ Sample Person
4112+
4113 >>> indirect_subscribers = package_question.getIndirectRecipients()
4114- >>> [person.displayname for person in indirect_subscribers]
4115- [u'No Privileges Person', u'Ubuntu Team']
4116- >>> indirect_subscribers.getReason(ubuntu_team)
4117- (u'You received this question notification because you are a member of
4118- Ubuntu Team, which is an answer contact for Ubuntu.',
4119- u'Answer Contact (ubuntu) @ubuntu-team')
4120- >>> indirect_subscribers.getReason(no_priv)
4121- (u'You received this question notification because you are an answer
4122- contact for evolution in ubuntu.',
4123- u'Answer Contact (evolution in ubuntu)')
4124+ >>> for person in indirect_subscribers:
4125+ ... print person.displayname
4126+ No Privileges Person
4127+ Ubuntu Team
4128+
4129+ >>> text, header = indirect_subscribers.getReason(ubuntu_team)
4130+ >>> print header, text
4131+ Answer Contact (ubuntu) @ubuntu-team
4132+ You received this question notification because you are a member of
4133+ Ubuntu Team, which is an answer contact for Ubuntu.
4134
4135 The question's assignee is also part of the indirect subscription list:
4136
4137- >>> login('foo.bar@canonical.com')
4138+ >>> login('admin@canonical.com')
4139 >>> package_question.assignee = getUtility(IPersonSet).getByName('name16')
4140 >>> indirect_subscribers = package_question.getIndirectRecipients()
4141- >>> [person.displayname for person in indirect_subscribers]
4142- [u'Foo Bar', u'No Privileges Person', u'Ubuntu Team']
4143- >>> indirect_subscribers.getReason(package_question.assignee)
4144- ('You received this question notification because you are the assignee
4145- for this question.',
4146- 'Assignee')
4147+ >>> for person in indirect_subscribers:
4148+ ... print person.displayname
4149+ Foo Bar
4150+ No Privileges Person
4151+ Ubuntu Team
4152+
4153+ >>> text, header = indirect_subscribers.getReason(
4154+ ... package_question.assignee)
4155+ >>> print header, text
4156+ Assignee
4157+ You received this question notification because you are the assignee for
4158+ this question.
4159
4160 The getIndirectSubscribers() method iterates like the getIndirectRecipients()
4161 method, but it returns a sorted list instead of a NotificationRecipientSet.
4162 It too contains the question assignee.
4163
4164 >>> indirect_subscribers = package_question.getIndirectSubscribers()
4165- >>> [person.displayname for person in indirect_subscribers]
4166- [u'Foo Bar', u'No Privileges Person', u'Ubuntu Team']
4167+ >>> for person in indirect_subscribers:
4168+ ... print person.displayname
4169+ Foo Bar
4170+ No Privileges Person
4171+ Ubuntu Team
4172
4173-Notifications are sent to the list of direct and indirect subscribers.
4174-The notification recipients list can be obtained by using the
4175-getRecipients() method.
4176+Notifications are sent to the list of direct and indirect subscribers. The
4177+notification recipients list can be obtained by using the getRecipients()
4178+method.
4179
4180 >>> login('no-priv@canonical.com')
4181 >>> subscribers = firefox_question.getRecipients()
4182 >>> verifyObject(INotificationRecipientSet, subscribers)
4183 True
4184- >>> [person.displayname for person in subscribers]
4185- [u'No Privileges Person', u'Sample Person']
4186-
4187-(More documentation on the question notifications can be found in
4188-'answer-tracker-notifications.txt'.)
4189-
4190-
4191-== Workflow ==
4192+ >>> for person in subscribers:
4193+ ... print person.displayname
4194+ No Privileges Person
4195+ Sample Person
4196+
4197+More documentation on the question notifications can be found in
4198+`answer-tracker-notifications.txt`.
4199+
4200+
4201+Workflow
4202+========
4203
4204 A question status should not be manipulated directly but through the
4205 workflow methods.
4206
4207 The complete question workflow is documented in
4208-'answer-tracker-workflow.txt'.
4209-
4210-== Bug Linking ==
4211+`answer-tracker-workflow.txt`.
4212+
4213+
4214+Bug linking
4215+===========
4216
4217 Question implements the IBugLinkTarget interface which makes it possible
4218 to link bug report to question.
4219@@ -323,13 +352,13 @@
4220 >>> verifyObject(IBugLinkTarget, firefox_question)
4221 True
4222
4223-(See ../interfaces/ftests/buglinktarget.txt for the documentation and
4224-test of the IBugLinkTarget interface.)
4225-
4226-When a bug is linked to a question, the question's owner is subscribed to
4227-the bug.
4228-
4229- >>> from canonical.launchpad.interfaces import IBugSet
4230+See ../../bugs/tests/buglinktarget.txt for the documentation and test of the
4231+IBugLinkTarget interface.
4232+
4233+When a bug is linked to a question, the question's owner is subscribed to the
4234+bug.
4235+
4236+ >>> from lp.bugs.interfaces.bug import IBugSet
4237 >>> bug7 = getUtility(IBugSet).get(7)
4238 >>> bug7.isSubscribed(firefox_question.owner)
4239 False
4240@@ -338,33 +367,34 @@
4241 >>> bug7.isSubscribed(firefox_question.owner)
4242 True
4243
4244-When the link is removed, the owner is unsubscribed:
4245+When the link is removed, the owner is unsubscribed.
4246
4247 >>> firefox_question.unlinkBug(bug7)
4248 <QuestionBug...>
4249 >>> bug7.isSubscribed(firefox_question.owner)
4250 False
4251
4252-== Unsupported Questions ==
4253-
4254-While a Person may ask questions in his language of choice, that does
4255-not mean that indirect subscribers (Answer Contacts) to an
4256-IQuestionTarget speak that language. IQuestionTarget can return a list
4257-Questions in languages that are not supported
4258+
4259+Unsupported questions
4260+=====================
4261+
4262+While a Person may ask questions in his language of choice, that does not mean
4263+that indirect subscribers (Answer Contacts) to an IQuestionTarget speak that
4264+language. IQuestionTarget can return a list Questions in languages that are
4265+not supported.
4266
4267 >>> unsupported_questions = firefox.searchQuestions(unsupported=True)
4268- >>> sorted([question.title for question in unsupported_questions])
4269+ >>> sorted(question.title for question in unsupported_questions)
4270 [u'Problemas de Impress\xe3o no Firefox']
4271
4272 >>> unsupported_questions = evolution_in_ubuntu.searchQuestions(
4273 ... unsupported=True)
4274- >>> sorted([question.title for question in unsupported_questions])
4275+ >>> sorted(question.title for question in unsupported_questions)
4276 []
4277
4278 >>> warty_question_target = IQuestionTarget(ubuntu_warty)
4279 >>> unsupported_questions = warty_question_target.searchQuestions(
4280 ... unsupported=True)
4281- >>> sorted([question.title for question in unsupported_questions])
4282+ >>> sorted(question.title for question in unsupported_questions)
4283 [u'Problema al recompilar kernel con soporte smp (doble-n\xfacleo)',
4284 u'\u0639\u0643\u0633 \u0627\u0644\u062a\u063a\u064a\u064a\u0631...]
4285-
4286
4287=== renamed file 'lib/lp/answers/doc/utility.txt' => 'lib/lp/answers/doc/questionsets.txt'
4288--- lib/lp/answers/doc/utility.txt 2009-03-24 12:43:49 +0000
4289+++ lib/lp/answers/doc/questionsets.txt 2010-03-01 17:42:32 +0000
4290@@ -1,69 +1,75 @@
4291-= Answer Tracker Utility: IQuestionSet =
4292+====================
4293+Question collections
4294+====================
4295
4296-There is an IQuestionSet utility that can be use to retrieve and search
4297-for question whatever the target they were created in.
4298+The IQuestionSet utility is used to retrieve and search for questions no
4299+matter which question target they were created for.
4300
4301 >>> from canonical.launchpad.webapp.testing import verifyObject
4302- >>> from canonical.launchpad.interfaces import IQuestionSet
4303+ >>> from lp.answers.interfaces.questioncollection import IQuestionSet
4304 >>> question_set = getUtility(IQuestionSet)
4305 >>> verifyObject(IQuestionSet, question_set)
4306 True
4307
4308
4309-== get() ==
4310+Retrieving questions
4311+====================
4312
4313-The get() method can be used to get a question with a specific id:
4314+The get() method can be used to retrieve a question with a specific id.
4315
4316 >>> question_one = question_set.get(1)
4317- >>> question_one.title
4318- u'Firefox cannot render Bank Site'
4319+ >>> print question_one.title
4320+ Firefox cannot render Bank Site
4321
4322-If no question exists, a default value is returned:
4323+If no question exists, a default value is returned.
4324
4325 >>> default = object()
4326 >>> question_nonexistant = question_set.get(123456, default=default)
4327 >>> question_nonexistant is default
4328 True
4329
4330-If no default value is given, None is returned:
4331-
4332- >>> question_set.get(123456) is None
4333- True
4334-
4335-
4336-== searchQuestions() ==
4337-
4338-IQuestionSet also defines a searchQuestions() method that can be used to
4339-search for questions defined in any products or distributions (in fact,
4340-in any context that allows questions to be defined). Two search criteria
4341-are defined search_text and status.
4342-
4343-
4344-=== search_text ===
4345-
4346-The search_text parameter will limit the questions to those matching
4347-the query using the regular full text algorithm.
4348-
4349+If no default value is given, None is returned.
4350+
4351+ >>> print question_set.get(123456)
4352+ None
4353+
4354+
4355+Searching questions
4356+===================
4357+
4358+The IQuestionSet interface defines a searchQuestions() method that is used to
4359+search for questions defined in any question target.
4360+
4361+
4362+Search text
4363+-----------
4364+
4365+The search_text parameter will return questions matching the query using the
4366+regular full text algorithm.
4367+
4368+ # Because not everyone uses a real editor <wink>
4369+ >>> from canonical.encoding import ascii_smash
4370 >>> for question in question_set.searchQuestions(search_text='firefox'):
4371- ... print repr(question.title), question.target.displayname
4372- u'Problemas de Impress\xe3o no Firefox' Mozilla Firefox
4373- u'Firefox loses focus and gets stuck' Mozilla Firefox
4374- u'Firefox cannot render Bank Site' Mozilla Firefox
4375- u'mailto: problem in webpage' mozilla-firefox in ubuntu
4376- u"Newly installed plug-in doesn't seem to be used" Mozilla Firefox
4377- u'Problem showing the SVG demo on W3C site' Mozilla Firefox
4378- u'\u0639\u0643\u0633 ...' Ubuntu
4379-
4380-
4381-=== status ===
4382-
4383-By default, expired and invalid questions are not searched for. The
4384-status parameter can be used to select the questions in the status
4385-you are interested in.
4386-
4387- >>> from canonical.launchpad.interfaces import QuestionStatus
4388+ ... print ascii_smash(question.title), question.target.displayname
4389+ Problemas de Impressao no Firefox Mozilla Firefox
4390+ Firefox loses focus and gets stuck Mozilla Firefox
4391+ Firefox cannot render Bank Site Mozilla Firefox
4392+ mailto: problem in webpage mozilla-firefox in ubuntu
4393+ Newly installed plug-in doesn't seem to be used Mozilla Firefox
4394+ Problem showing the SVG demo on W3C site Mozilla Firefox
4395+ AINKAFSEEN ALEFLAMTEHGHAINYEHYEHREHALEFTEH ... Ubuntu
4396+
4397+
4398+Status
4399+------
4400+
4401+By default, expired and invalid questions are not searched for. The status
4402+parameter can be used to select the questions in the status you are interested
4403+in.
4404+
4405+ >>> from lp.answers.interfaces.questionenums import QuestionStatus
4406 >>> for question in question_set.searchQuestions(
4407- ... status=QuestionStatus.INVALID):
4408+ ... status=QuestionStatus.INVALID):
4409 ... print question.title, question.status.title, (
4410 ... question.target.displayname)
4411 Firefox is slow and consumes too much RAM Invalid mozilla-firefox in ubuntu
4412@@ -78,111 +84,118 @@
4413 Firefox is slow and consumes too much RAM Invalid mozilla-firefox in ubuntu
4414
4415
4416-=== language ===
4417+Language
4418+--------
4419
4420 The language parameter can be used to select only questions written in a
4421 particular language.
4422
4423- >>> from canonical.launchpad.interfaces import ILanguageSet
4424+ >>> from lp.services.worlddata.interfaces.language import ILanguageSet
4425 >>> spanish = getUtility(ILanguageSet)['es']
4426 >>> for t in question_set.searchQuestions(language=spanish):
4427- ... print t.title.encode('us-ascii', 'backslashreplace')
4428- Problema al recompilar kernel con soporte smp (doble-n\xfacleo)
4429-
4430-=== Combination ===
4431-
4432-The returned sets of questions is the intersection of the sets delimited
4433-by each criteria:
4434+ ... print ascii_smash(t.title)
4435+ Problema al recompilar kernel con soporte smp (doble-nucleo)
4436+
4437+
4438+Combinations
4439+------------
4440+
4441+The returned set of questions is the intersection of the sets delimited by
4442+each criteria.
4443
4444 >>> for question in question_set.searchQuestions(
4445 ... search_text='firefox',
4446- ... status=[QuestionStatus.OPEN, QuestionStatus.INVALID]):
4447- ... print repr(question.title), question.status.title, (
4448+ ... status=(QuestionStatus.OPEN, QuestionStatus.INVALID)):
4449+ ... print ascii_smash(question.title), question.status.title, (
4450 ... question.target.displayname)
4451- u'Problemas de Impress\xe3o no Firefox' Open Mozilla Firefox
4452- u'Firefox is slow and consumes too much RAM' Invalid mozilla-firefox in ubuntu
4453- u'Firefox loses focus and gets stuck' Open Mozilla Firefox
4454- u'Firefox cannot render Bank Site' Open Mozilla Firefox
4455- u'Problem showing the SVG demo on W3C site' Open Mozilla Firefox
4456- u'\u0639\u0643\u0633 ...' Open Ubuntu
4457-
4458-
4459-=== Sort Order ===
4460-
4461-When using the search_text criteria, the default is to sort the results
4462-by relevancy. One can use the sort parameter to change that. It takes
4463-one of the constant defined in the QuestionSort enumeration.
4464-
4465- >>> from canonical.launchpad.interfaces import QuestionSort
4466+ Problemas de Impressao no Firefox Open Mozilla Firefox
4467+ Firefox is slow and consumes too much RAM Invalid mozilla-firefox in ubuntu
4468+ Firefox loses focus and gets stuck Open Mozilla Firefox
4469+ Firefox cannot render Bank Site Open Mozilla Firefox
4470+ Problem showing the SVG demo on W3C site Open Mozilla Firefox
4471+ AINKAFSEEN ALEFLAMTEHGHAINYEHYEHREHALEFTEH ... Ubuntu
4472+
4473+
4474+Sort order
4475+----------
4476+
4477+When using the search_text criteria, the default is to sort the results by
4478+relevancy. One can use the sort parameter to change the order. It takes one
4479+of the constant defined in the QuestionSort enumeration.
4480+
4481+ >>> from lp.answers.interfaces.questionenums import QuestionSort
4482 >>> for question in question_set.searchQuestions(
4483 ... search_text='firefox', sort=QuestionSort.OLDEST_FIRST):
4484- ... print question.id, repr(question.title), (
4485+ ... print question.id, ascii_smash(question.title), (
4486 ... question.target.displayname)
4487- 14 u'\u0639\u0643\u0633 ...' Ubuntu
4488- 1 u'Firefox cannot render Bank Site' Mozilla Firefox
4489- 2 u'Problem showing the SVG demo on W3C site' Mozilla Firefox
4490- 4 u'Firefox loses focus and gets stuck' Mozilla Firefox
4491- 6 u"Newly installed plug-in doesn't seem to be used" Mozilla Firefox
4492- 9 u'mailto: problem in webpage' mozilla-firefox in ubuntu
4493- 13 u'Problemas de Impress\xe3o no Firefox' Mozilla Firefox
4494+ 14 AINKAFSEEN ALEFLAMTEHGHAINYEHYEHREHALEFTEH ... Ubuntu
4495+ 1 Firefox cannot render Bank Site Mozilla Firefox
4496+ 2 Problem showing the SVG demo on W3C site Mozilla Firefox
4497+ 4 Firefox loses focus and gets stuck Mozilla Firefox
4498+ 6 Newly installed plug-in doesn't seem to be used Mozilla Firefox
4499+ 9 mailto: problem in webpage mozilla-firefox in ubuntu
4500+ 13 Problemas de Impressao no Firefox Mozilla Firefox
4501
4502-When no text search is done, the default sort order is
4503-QuestionSort.NEWEST_FIRST.
4504+When no text search is done, the default sort order is by newest first.
4505
4506 >>> for question in question_set.searchQuestions(
4507- ... status=QuestionStatus.OPEN)[:5]:
4508- ... print question.id, repr(question.title), (
4509+ ... status=QuestionStatus.OPEN)[:5]:
4510+ ... print question.id, ascii_smash(question.title), (
4511 ... question.target.displayname)
4512- 13 u'Problemas de Impress\xe3o no Firefox' Mozilla Firefox
4513- 12 u'Problema al recompilar kernel con soporte smp (doble-n\xfacleo)' Ubuntu
4514- 11 u'Continue playing after shutdown' Ubuntu
4515- 5 u'Installation failed' Ubuntu
4516- 4 u'Firefox loses focus and gets stuck' Mozilla Firefox
4517-
4518-
4519-== getQuestionLanguages() ==
4520+ 13 Problemas de Impressao no Firefox Mozilla Firefox
4521+ 12 Problema al recompilar kernel con soporte smp (doble-nucleo) Ubuntu
4522+ 11 Continue playing after shutdown Ubuntu
4523+ 5 Installation failed Ubuntu
4524+ 4 Firefox loses focus and gets stuck Mozilla Firefox
4525+
4526+
4527+Question languages
4528+==================
4529
4530 The getQuestionLanguages() method returns the set of languages in which
4531-questions are written in Launchpad.
4532-
4533- >>> sorted([language.code
4534- ... for language in question_set.getQuestionLanguages()])
4535- [u'ar', u'en', u'es', u'pt_BR']
4536-
4537-
4538-== getActiveProjects() ==
4539-
4540-This method can be used to retrieve the projects that are the most
4541-actively using the Answer Tracker in the last 60 days. By active, we
4542-mean that the project is registered as officially using Answers and
4543-had some questions asked in the period. The projects are ordered
4544-by the number of questions asked during the period.
4545-
4546-Sample data should not contain any questions more recent than
4547-two months, so no projects are initially returned:
4548-
4549- >>> for project in question_set.getMostActiveProjects():
4550- ... print project.displayname
4551-
4552-Create recent questions on a number of projects.
4553-
4554- >>> from lp.answers.testing import (
4555- ... QuestionFactory)
4556- >>> from canonical.launchpad.interfaces import (
4557- ... IDistributionSet, ILaunchBag, IProductSet)
4558- >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
4559+questions are written in launchpad.
4560+
4561+ >>> print ', '.join(
4562+ ... sorted(language.code
4563+ ... for language in question_set.getQuestionLanguages()))
4564+ ar, en, es, pt_BR
4565+
4566+
4567+Active projects
4568+===============
4569+
4570+This method can be used to retrieve the projects that are the most actively
4571+using the Answer Tracker in the last 60 days. By active, we mean that the
4572+project is registered as officially using Answers and had some questions asked
4573+in the period. The projects are ordered by the number of questions asked
4574+during the period.
4575+
4576+Initially, no projects are returned.
4577+
4578+ >>> list(question_set.getMostActiveProjects())
4579+ []
4580+
4581+Then some recent questions are created on a number of projects.
4582+
4583+ >>> from lp.answers.testing import QuestionFactory
4584+ >>> from lp.registry.interfaces.distribution import IDistributionSet
4585+ >>> from lp.registry.interfaces.person import IPersonSet
4586+ >>> from lp.registry.interfaces.product import IProductSet
4587+
4588 >>> firefox = getUtility(IProductSet).getByName('firefox')
4589 >>> landscape = getUtility(IProductSet).getByName('landscape')
4590 >>> launchpad = getUtility(IProductSet).getByName('launchpad')
4591+ >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
4592+ >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
4593
4594 >>> login('no-priv@canonical.com')
4595- >>> no_priv = getUtility(ILaunchBag).user
4596- >>> QuestionFactory.createManyByProject([
4597+ >>> QuestionFactory.createManyByProject((
4598 ... ('ubuntu', 3),
4599 ... ('firefox', 2),
4600- ... ('landscape', 1)])
4601+ ... ('landscape', 1),
4602+ ... ))
4603
4604-Create a question just before the time limit on Launchpad.
4605+A question is created just before the time limit on Launchpad.
4606
4607 >>> from datetime import datetime, timedelta
4608 >>> from pytz import UTC
4609@@ -191,9 +204,9 @@
4610 ... datecreated=datetime.now(UTC) - timedelta(days=61))
4611 >>> login(ANONYMOUS)
4612
4613-The method returns only projects which officially use the Answer
4614-Tracker. The order of the returned projects is based on the number of
4615-questions asked during the period.
4616+The method returns only projects which officially use the Answer Tracker. The
4617+order of the returned projects is based on the number of questions asked
4618+during the period.
4619
4620 >>> ubuntu.official_answers
4621 True
4622@@ -204,14 +217,13 @@
4623 >>> launchpad.official_answers
4624 True
4625
4626+ # Launchpad is not returned because the question was not asked in
4627+ # the last 60 days.
4628 >>> for project in question_set.getMostActiveProjects():
4629 ... print project.displayname
4630 Ubuntu
4631 Mozilla Firefox
4632
4633-(Launchpad is not returned because the question was not asked in
4634-the last 60 days.)
4635-
4636 The method accepts an optional limit parameter limiting the number of
4637 project returned:
4638
4639@@ -220,10 +232,11 @@
4640 Ubuntu
4641
4642
4643-== getOpenQuestionCountByPackages() ==
4644+Counting the open questions
4645+===========================
4646
4647-getOpenQuestionCountByPackages() allow you to get the count of open
4648-questions on a set of IDistributionSourcePackage packages.
4649+getOpenQuestionCountByPackages() allow you to get the count of open questions
4650+on a set of IDistributionSourcePackage packages.
4651
4652 >>> question_set.getOpenQuestionCountByPackages([])
4653 {}
4654@@ -246,12 +259,10 @@
4655 >>> closed_question.setStatus(
4656 ... closed_question.owner, QuestionStatus.SOLVED, 'no comment')
4657 <QuestionMessage at ...>
4658- >>> from canonical.launchpad.ftests import syncUpdate
4659- >>> syncUpdate(closed_question)
4660
4661 >>> from operator import itemgetter
4662- >>> packages = [
4663- ... ubuntu_evolution, ubuntu_pmount, debian_evolution, debian_pmount]
4664+ >>> packages = (
4665+ ... ubuntu_evolution, ubuntu_pmount, debian_evolution, debian_pmount)
4666 >>> package_counts = question_set.getOpenQuestionCountByPackages(packages)
4667 >>> len(packages)
4668 4
4669@@ -263,5 +274,3 @@
4670 pmount (Ubuntu): 4
4671 evolution (Debian): 3
4672 pmount (Debian): 0
4673-
4674-
4675
4676=== modified file 'lib/lp/answers/doc/questiontarget.txt'
4677--- lib/lp/answers/doc/questiontarget.txt 2009-03-24 12:43:49 +0000
4678+++ lib/lp/answers/doc/questiontarget.txt 2010-03-01 17:42:33 +0000
4679@@ -1,38 +1,43 @@
4680-= IQuestionTarget Interface =
4681-
4682-Launchpad includes an answer tracker. Questions are associated to
4683-objects implementing IQuestionTarget. This file documents that interface
4684-and can be used to validate implementation of this interface on a
4685-particular object. (This object is made available through the 'target'
4686-variable which is defined outside of this file, usually by a
4687-LaunchpadFunctionalTestCase. This instance shouldn't have any questions
4688-associated with it at the start of the test.)
4689-
4690+=========================
4691+IQuestionTarget interface
4692+=========================
4693+
4694+Launchpad includes an answer tracker. Questions are associated to objects
4695+implementing IQuestionTarget.
4696+
4697+ # An IQuestionTarget object is made available to this test via the
4698+ # 'target' variable by the test framework. It won't have any questions
4699+ # associated with it at the start of the test. This is done because the
4700+ # exact same test applies to all types of question targets: products,
4701+ # distributions, and distribution source packages.
4702+ #
4703 # Some parts of the IQuestionTarget interface are only accessible
4704 # to a registered user.
4705 >>> login('no-priv@canonical.com')
4706
4707 >>> from zope.component import getUtility
4708 >>> from zope.interface.verify import verifyObject
4709- >>> from canonical.launchpad.interfaces import IQuestionTarget
4710+ >>> from lp.answers.interfaces.questiontarget import IQuestionTarget
4711
4712 >>> verifyObject(IQuestionTarget, target)
4713 True
4714
4715-== newQuestion() ==
4716+
4717+New questions
4718+=============
4719
4720 Questions are always owned by a registered user.
4721
4722- >>> from canonical.launchpad.interfaces import IPersonSet
4723+ >>> from lp.registry.interfaces.person import IPersonSet
4724 >>> sample_person = getUtility(IPersonSet).getByEmail(
4725 ... 'test@canonical.com')
4726
4727-The newQuestion() method is used to create question that will be associated
4728-with the target. It takes as parameters the question's owner, title and
4729-description. It also takes an optional parameter 'datecreated' parameter
4730-which defaults to UTC_NOW.
4731+The newQuestion() method is used to create a question that will be associated
4732+with the target. It takes as parameters the question's owner, title and
4733+description. It also takes an optional parameter 'datecreated' which defaults
4734+to UTC_NOW.
4735
4736- # Let's define now to a know value.
4737+ # Initialize 'now' to a known value.
4738 >>> from datetime import datetime, timedelta
4739 >>> from pytz import UTC
4740 >>> now = datetime.now(UTC)
4741@@ -43,8 +48,8 @@
4742 New question
4743 >>> print question.description
4744 Question description
4745- >>> question.owner == sample_person
4746- True
4747+ >>> print question.owner.displayname
4748+ Sample Person
4749 >>> question.datecreated == now
4750 True
4751 >>> question.datelastquery == now
4752@@ -53,41 +58,44 @@
4753 The created question starts in the 'Open' status and should have the owner
4754 subscribed to the question.
4755
4756- >>> question.status.title
4757- 'Open'
4758-
4759- >>> sample_person in [s.person for s in question.subscriptions]
4760- True
4761-
4762-Question can be written in any languages supported in Launchpad. The
4763-language of the request is available in the 'language' attribute. By
4764-default, requests are assumed to be written in English:
4765+ >>> print question.status.title
4766+ Open
4767+
4768+ >>> for subscription in question.subscriptions:
4769+ ... print subscription.person.displayname
4770+ Sample Person
4771+
4772+Questions can be written in any languages supported in Launchpad. The
4773+language of the request is available in the 'language' attribute. By default,
4774+requests are assumed to be written in English.
4775
4776 >>> print question.language.code
4777 en
4778
4779-It is possible to create question in another language than English. One
4780-just need to pass the language in which the question is written in the
4781-language parameter.
4782+It is possible to create questions in another language than English, by
4783+passing in the language that the question is written in.
4784
4785- >>> from canonical.launchpad.interfaces import ILanguageSet
4786+ >>> from lp.services.worlddata.interfaces.language import ILanguageSet
4787 >>> french = getUtility(ILanguageSet)['fr']
4788- >>> question = target.newQuestion(sample_person, "De l'aide S.V.P.",
4789+ >>> question = target.newQuestion(
4790+ ... sample_person, "De l'aide S.V.P.",
4791 ... "Pouvez-vous m'aider?", language=french,
4792 ... datecreated=now + timedelta(seconds=30))
4793 >>> print question.language.code
4794 fr
4795
4796-Anonymous users cannot use newQuestion():
4797+Anonymous users cannot use newQuestion().
4798
4799 >>> login(ANONYMOUS)
4800- >>> question = target.newQuestion(sample_person, 'This will fail',
4801- ... 'Failed?')
4802+ >>> question = target.newQuestion(
4803+ ... sample_person, 'This will fail', 'Failed?')
4804 Traceback (most recent call last):
4805 ...
4806 Unauthorized...
4807
4808-== getQuestion() ==
4809+
4810+Retrieving questions
4811+====================
4812
4813 The getQuestion() method is used to retrieve a question by id for a
4814 particular target.
4815@@ -96,19 +104,19 @@
4816 True
4817
4818 If you pass in a non-existent id or a question for a different target, the
4819-method must return None.
4820-
4821- >>> target.getQuestion(2) is None
4822- True
4823- >>> target.getQuestion(12345) is None
4824- True
4825-
4826-== Creating some additional questions ==
4827-
4828-For the following methods, we will require some more questions. Create five
4829-new questions. Odd questions will be owned by foo_bar and even questions will be
4830-owned by sample_person.
4831-
4832+method returns None.
4833+
4834+ >>> print target.getQuestion(2)
4835+ None
4836+ >>> print target.getQuestion(12345)
4837+ None
4838+
4839+
4840+Searching for questions
4841+=======================
4842+
4843+ # Create new questions for the following tests. Odd questions will be
4844+ # owned by Foo Bar and even questions will be owned by Sample Person.
4845 >>> login('no-priv@canonical.com')
4846 >>> foo_bar = getUtility(IPersonSet).getByEmail('foo.bar@canonical.com')
4847 >>> questions = []
4848@@ -123,9 +131,8 @@
4849 ... owner, 'Question title%d' % num, description,
4850 ... datecreated=now+timedelta(minutes=num+1)))
4851
4852-For more variety, we will set the status of the last to INVALID and the
4853-fourth one to ANSWERED.
4854-
4855+ # For more variety, we will set the status of the last to INVALID and the
4856+ # fourth one to ANSWERED.
4857 >>> login('foo.bar@canonical.com')
4858 >>> foo_bar = getUtility(IPersonSet).getByEmail('foo.bar@canonical.com')
4859 >>> message = questions[-1].reject(
4860@@ -134,48 +141,44 @@
4861 ... sample_person, 'This is your answer.',
4862 ... datecreated=now+timedelta(hours=1))
4863
4864-Also add a reply from the owner on the first of these.
4865-
4866+ # Also add a reply from the owner on the first of these.
4867 >>> login('test@canonical.com')
4868 >>> message = questions[0].giveInfo(
4869 ... 'I think I forgot something.', datecreated=now+timedelta(hours=4))
4870
4871-And create another one that will also have the word 'new' in its
4872-description.
4873-
4874+ # Create another one that will also have the word 'new' in its
4875+ # description.
4876 >>> question = target.newQuestion(sample_person, 'Another question',
4877 ... 'Another new question that is actually very new.',
4878 ... datecreated=now+timedelta(hours=1))
4879 >>> login(ANONYMOUS)
4880
4881- # Flush those changes to the database.
4882- >>> from canonical.database.sqlbase import flush_database_updates
4883- >>> flush_database_updates()
4884-
4885-== searchQuestions() ==
4886-
4887 The searchQuestions() method is used to search for questions.
4888
4889-=== search_text ===
4890+
4891+Search text
4892+-----------
4893
4894 The search_text parameter will select the questions that contain the
4895-passed in text. (The standard text searching algorithm is used, see
4896-textsearching.txt.)
4897+passed in text. The standard text searching algorithm is used; see
4898+../../../canonical/launchpad/doct/textsearching.txt.
4899
4900 >>> for t in target.searchQuestions(search_text='new'):
4901 ... print t.title
4902 New question
4903 Another question
4904
4905-The results here are sorted by relevancy. (In the last questions, 'New'
4906-appeared in the description which makes it less relevant than when the
4907-word appears in the title.)
4908-
4909-=== status ===
4910-
4911-The searchQuestions() method can also filter questions by status:
4912-
4913- >>> from canonical.launchpad.interfaces import QuestionStatus
4914+The results are sorted by relevancy. In the last questions, 'New' appeared in
4915+the description which makes it less relevant than when the word appears in the
4916+title.
4917+
4918+
4919+Status
4920+------
4921+
4922+The searchQuestions() method can also filter questions by status.
4923+
4924+ >>> from lp.answers.interfaces.questionenums import QuestionStatus
4925 >>> for t in target.searchQuestions(status=QuestionStatus.OPEN):
4926 ... print t.title
4927 Another question
4928@@ -192,9 +195,9 @@
4929 ... print t.title
4930 Question title4
4931
4932-You can also pass in a list of status, and you can also use the
4933-search_text and status parameters at the same time. This will search
4934-OPEN and INVALID questions with the word 'index'
4935+You can pass in a list of statuses, and you can also use the search_text and
4936+status parameters at the same time. This will search OPEN and INVALID
4937+questions with the word 'index'.
4938
4939 >>> for t in target.searchQuestions(search_text='request index',
4940 ... status=(QuestionStatus.OPEN, QuestionStatus.INVALID)):
4941@@ -204,29 +207,30 @@
4942 Question title1
4943 Question title0
4944
4945-=== sort ===
4946-
4947-You can control the sort order by passing one of the constants defined
4948-in QuestionSort. (We already saw the NEWEST_FIRST and RELEVANCY sort
4949-order).
4950-
4951-You can sort also from oldest to newest using the OLDEST_FIRST constant:
4952-
4953- >>> from canonical.launchpad.interfaces import QuestionSort
4954-
4955+
4956+Sorting
4957+-------
4958+
4959+You can control the sort order by passing one of the constants defined in
4960+QuestionSort. Previously, we saw the NEWEST_FIRST and RELEVANCY sort order.
4961+
4962+You can sort also from oldest to newest using the OLDEST_FIRST constant.
4963+
4964+ >>> from lp.answers.interfaces.questionenums import QuestionSort
4965 >>> for t in target.searchQuestions(search_text='new',
4966- ... sort=QuestionSort.OLDEST_FIRST):
4967+ ... sort=QuestionSort.OLDEST_FIRST):
4968 ... print t.title
4969 New question
4970 Another question
4971
4972-You can sort by status, (the status order is OPEN, NEEDSINFO, ANSWERED,
4973-SOLVED, EXPIRED, INVALID), this also sorts from newest to oldest as a
4974-secondary key.
4975+You can sort by status (the status order is OPEN, NEEDSINFO, ANSWERED, SOLVED,
4976+EXPIRED, INVALID). This also sorts from newest to oldest as a secondary key.
4977+Here we use status=None to search for all statuses; by default INVALID and
4978+EXPIRED questions are excluded.
4979
4980 >>> for t in target.searchQuestions(search_text='request index',
4981- ... status=None,
4982- ... sort=QuestionSort.STATUS):
4983+ ... status=None,
4984+ ... sort=QuestionSort.STATUS):
4985 ... print t.status.title, t.title
4986 Open Question title2
4987 Open Question title1
4988@@ -234,12 +238,11 @@
4989 Answered Question title3
4990 Invalid Question title4
4991
4992-(In the previous example, we used status=None to search for all
4993-statuses, by default INVALID and EXPIRED questions are excluded.)
4994-
4995 If there is no search_text and the requested sort order is RELEVANCY,
4996 the questions will be sorted NEWEST_FIRST.
4997
4998+ # 'Question title4' is not shown in this case because it has INVALID as
4999+ # its status.
5000 >>> for t in target.searchQuestions(sort=QuestionSort.RELEVANCY):
The diff has been truncated for viewing.