Could not adapt ProductSeries to IBranchTarget
Bug #574142 reported by
Curtis Hovey
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Launchpad itself |
Fix Released
|
Critical
|
Brad Crittenden |
Bug Description
As seen in oops OOPS-1583ED2290, the user clicked on the Submit code link (which took him to an impossible situation ProductSeries+
Related branches
lp:~sinzui/launchpad/enable-project-suggetions
- Francis J. Lacoste (community): Approve (release-critical)
- Brad Crittenden (community): Approve (code)
- Diff: 0 lines
lp:~bac/launchpad/bug-574142
- Francis J. Lacoste (community): Approve (release-critical)
- Curtis Hovey (community): Approve
- Brad Crittenden: Pending requested
-
Diff: 327555 lines (+141781/-82341)2700 files modified.bzrignore (+17/-2)
.ctags (+1/-0)
.testr.conf (+3/-0)
Makefile (+154/-60)
bootstrap.py (+149/-113)
buildmailman.py (+29/-2)
buildout-templates/_pythonpath.py.in (+31/-12)
buildout-templates/bin/combine-css.in (+51/-0)
buildout-templates/bin/jstest.in (+5/-4)
buildout-templates/bin/kill-test-services.in (+42/-0)
buildout-templates/bin/lint.sh.in (+16/-8)
buildout-templates/bin/py.in (+0/-2)
buildout-templates/bin/retest.in (+2/-1)
buildout-templates/bin/sprite-util.in (+47/-0)
buildout-templates/bin/test.in (+43/-35)
buildout-templates/bin/update-download-cache.in (+3/-1)
buildout.cfg (+18/-21)
bzrplugins/lpserve.py (+13/-9)
configs/development/build-from-branch.zcml (+119/-0)
configs/development/launchpad-lazr.conf (+53/-11)
configs/development/local-launchpad-apache (+13/-0)
configs/replicated-development/launchpad-lazr.conf (+4/-5)
configs/test-playground/launchpad-lazr.conf (+4/-4)
configs/testrunner-appserver/launchpad-lazr.conf (+4/-1)
configs/testrunner-appserver/yui-unittest.zcml (+16/-0)
configs/testrunner/launchpad-lazr.conf (+44/-14)
cronscripts/allocate-revision-karma.py (+1/-1)
cronscripts/branch-scanner.py (+0/-36)
cronscripts/buildd-queue-builder.py (+1/-1)
cronscripts/buildd-retry-depwait.py (+1/-1)
cronscripts/buildd-slave-scanner.py (+1/-1)
cronscripts/calculate-bug-heat.py (+33/-0)
cronscripts/check-teamparticipation.py (+3/-3)
cronscripts/checkwatches.py (+1/-1)
cronscripts/code-import-dispatcher.py (+9/-2)
cronscripts/create-debwatches.py (+2/-2)
cronscripts/create_merge_proposals.py (+1/-1)
cronscripts/distributionmirror-prober.py (+1/-1)
cronscripts/expire-archive-files.py (+4/-4)
cronscripts/expire-bugtasks.py (+1/-1)
cronscripts/expire-questions.py (+1/-1)
cronscripts/flag-expired-memberships.py (+1/-1)
cronscripts/foaf-update-karma-cache.py (+21/-16)
cronscripts/garbo-daily.py (+1/-1)
cronscripts/garbo-hourly.py (+1/-1)
cronscripts/generate-ppa-htaccess.py (+1/-1)
cronscripts/language-pack-exporter.py (+1/-1)
cronscripts/librarian-gc.py (+9/-8)
cronscripts/merge-proposal-jobs.py (+23/-31)
cronscripts/mirror-prober.sh (+2/-2)
cronscripts/nightly.sh (+14/-14)
cronscripts/oops-prune.py (+1/-1)
cronscripts/parse-librarian-apache-access-logs.py (+1/-1)
cronscripts/parse-ppa-apache-access-logs.py (+61/-0)
cronscripts/ppa-generate-keys.py (+1/-1)
cronscripts/process-apport-blobs.py (+33/-0)
cronscripts/process-hwdb-submissions.py (+2/-2)
cronscripts/process-mail.py (+1/-1)
cronscripts/process-pending-packagediffs.py (+1/-1)
cronscripts/product-release-finder.py (+1/-1)
cronscripts/publishing/cron.germinate (+14/-4)
cronscripts/publishing/cron.publish-copy-archives (+83/-0)
cronscripts/publishing/cron.publish-ftpmaster (+44/-18)
cronscripts/publishing/maintenance-check.py (+382/-0)
cronscripts/reclaimbranchspace.py (+1/-1)
cronscripts/rosetta-approve-imports.py (+1/-1)
cronscripts/rosetta-branches.py (+5/-5)
cronscripts/rosetta-export-queue.py (+1/-1)
cronscripts/rosetta-pofile-stats-daily.py (+1/-1)
cronscripts/rosetta-pofile-stats.py (+1/-1)
cronscripts/rosetta-poimport.py (+1/-1)
cronscripts/scan_branches.py (+25/-0)
cronscripts/send-bug-notifications.py (+1/-1)
cronscripts/send-person-notifications.py (+6/-40)
cronscripts/sendbranchmail.py (+5/-5)
cronscripts/supermirror-pull.py (+6/-4)
cronscripts/translations-export-to-branch.py (+1/-1)
cronscripts/update-bugtask-targetnamecaches.py (+1/-1)
cronscripts/update-cve.py (+1/-1)
cronscripts/update-debwatches.py (+2/-2)
cronscripts/update-pkgcache.py (+3/-3)
cronscripts/update-remote-product.py (+4/-4)
cronscripts/update-sourceforge-remote-products.py (+4/-4)
cronscripts/update-standing.py (+1/-1)
cronscripts/update-stats.py (+2/-2)
cronscripts/update_preview_diffs.py (+0/-34)
cronscripts/upgrade_branches.py (+25/-0)
daemons/buildd-sequencer.tac (+0/-31)
daemons/buildd-slave.tac (+12/-4)
daemons/cache-database-replication-lag.py (+53/-0)
daemons/librarian.tac (+11/-0)
daemons/poppy-upload.py (+2/-49)
daemons/sftp.tac (+21/-6)
database/replication/Makefile (+43/-17)
database/replication/helpers.py (+59/-35)
database/replication/initialize.py (+10/-56)
database/replication/new-slave.py (+78/-12)
database/replication/populate_auth_replication_set.py (+0/-177)
database/replication/preamble.py (+1/-1)
database/replication/repair-restored-db.py (+44/-25)
database/replication/report.py (+1/-1)
database/replication/slon_ctl.py (+1/-1)
database/replication/sync.py (+26/-0)
database/sampledata/current-dev.sql (+5161/-4546)
database/sampledata/current.sql (+5057/-4497)
database/schema/Makefile (+6/-4)
database/schema/README (+1/-131)
database/schema/comments.sql (+168/-64)
database/schema/diagram.py (+3/-4)
database/schema/emptytables.py (+1/-1)
database/schema/fti.py (+9/-13)
database/schema/online_fti_updater.py (+1/-1)
database/schema/patch-2207-06-0.sql (+122/-0)
database/schema/patch-2207-08-0.sql (+20/-0)
database/schema/patch-2207-09-0.sql (+10/-0)
database/schema/patch-2207-10-0.sql (+8/-0)
database/schema/patch-2207-11-0.sql (+87/-0)
database/schema/patch-2207-12-0.sql (+7/-0)
database/schema/patch-2207-14-0.sql (+32/-0)
database/schema/patch-2207-15-0.sql (+15/-0)
database/schema/patch-2207-15-1.sql (+28/-0)
database/schema/patch-2207-16-0.sql (+50/-0)
database/schema/patch-2207-17-0.sql (+13/-0)
database/schema/patch-2207-18-0.sql (+7/-0)
database/schema/patch-2207-19-0.sql (+103/-0)
database/schema/patch-2207-19-1.sql (+35/-0)
database/schema/patch-2207-20-0.sql (+13/-0)
database/schema/patch-2207-21-0.sql (+9/-0)
database/schema/patch-2207-23-0.sql (+19/-0)
database/schema/patch-2207-24-0.sql (+30/-0)
database/schema/patch-2207-25-0.sql (+149/-0)
database/schema/patch-2207-26-0.sql (+28/-0)
database/schema/patch-2207-27-0.sql (+13/-0)
database/schema/patch-2207-28-0.sql (+11/-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/patch-2207-35-1.sql (+7/-0)
database/schema/patch-2207-35-2.sql (+12/-0)
database/schema/patch-2207-36-0.sql (+15/-0)
database/schema/patch-2207-37-0.sql (+9/-0)
database/schema/patch-2207-38-0.sql (+17/-0)
database/schema/patch-2207-39-0.sql (+16/-0)
database/schema/patch-2207-40-0.sql (+19/-0)
database/schema/patch-2207-41-0.sql (+95/-0)
database/schema/patch-2207-42-0.sql (+7/-0)
database/schema/patch-2207-43-0.sql (+4/-0)
database/schema/patch-2207-44-0.sql (+37/-0)
database/schema/patch-2207-45-0.sql (+12/-0)
database/schema/patch-2207-47-0.sql (+6/-0)
database/schema/patch-2207-48-0.sql (+27/-0)
database/schema/patch-2207-52-0.sql (+11/-0)
database/schema/patch-2207-53-0.sql (+11/-0)
database/schema/patch-2207-54-0.sql (+11/-0)
database/schema/pending/add-mailing-list-experts.py (+1/-1)
database/schema/pending/create-openid-rp-configs.py (+1/-1)
database/schema/pending/delete-unused-team-addresses.sql (+30/-0)
database/schema/pending/fix-rosetta-data.py (+1/-1)
database/schema/pending/gnu-savannah-celebrity.py (+1/-1)
database/schema/pending/import_language_packs.py (+1/-1)
database/schema/pending/migrate_kde_potemplates.py (+1/-1)
database/schema/pending/new-person-columns.py (+1/-1)
database/schema/pending/patch-2207-13-0.sql (+33/-0)
database/schema/pending/patch-2207-49-0.sql (+16/-0)
database/schema/pending/prune-nonce.py (+1/-1)
database/schema/pending/update-shippingrequest-types.py (+1/-1)
database/schema/pending/update-translation-credits.py (+3/-3)
database/schema/reset_sequences.py (+1/-1)
database/schema/security.cfg (+222/-154)
database/schema/security.py (+23/-11)
database/schema/sort_sql.py (+1/-1)
database/schema/trusted.sql (+230/-8)
database/schema/unautovacuumable.py (+26/-8)
database/schema/upgrade.py (+5/-4)
doc/bazaar/Makefile (+0/-39)
doc/bazaar/README (+0/-47)
doc/bazaar/bazaar.tmml (+0/-2722)
doc/bazaar/html.xsl (+0/-230)
doc/bazaar/large-dia/sizes (+0/-5)
doc/bazaar/texmacs.css (+0/-25)
doc/bazaar/write-sizes (+0/-17)
doc/webapp-process.txt (+1/-1)
ez_setup.py (+11/-3)
lib/canonical/Makefile (+0/-5)
lib/canonical/__init__.py (+5/-0)
lib/canonical/base.py (+3/-3)
lib/canonical/buildd/README (+1/-0)
lib/canonical/buildd/binarypackage.py (+143/-0)
lib/canonical/buildd/buildd-config.py (+1/-1)
lib/canonical/buildd/buildrecipe (+133/-0)
lib/canonical/buildd/check-implicit-pointer-functions (+112/-0)
lib/canonical/buildd/debian.py (+44/-128)
lib/canonical/buildd/debian/changelog (+70/-0)
lib/canonical/buildd/debian/control (+1/-1)
lib/canonical/buildd/debian/launchpad-buildd.init (+11/-1)
lib/canonical/buildd/debian/postinst (+1/-3)
lib/canonical/buildd/debian/rules (+22/-10)
lib/canonical/buildd/debian/upgrade-config (+51/-1)
lib/canonical/buildd/example.chroot (+2/-2)
lib/canonical/buildd/generate-translation-templates (+57/-0)
lib/canonical/buildd/mount-chroot (+1/-2)
lib/canonical/buildd/pottery/generate_translation_templates.py (+87/-0)
lib/canonical/buildd/pottery/intltool.py (+254/-0)
lib/canonical/buildd/sbuild (+39/-5)
lib/canonical/buildd/sbuild-notes.txt (+2/-2)
lib/canonical/buildd/sbuild-package (+25/-6)
lib/canonical/buildd/sequencer.py (+0/-157)
lib/canonical/buildd/slave.py (+22/-7)
lib/canonical/buildd/sourcepackagerecipe.py (+155/-0)
lib/canonical/buildd/template-buildd-slave.conf (+11/-2)
lib/canonical/buildd/test_buildd_generatetranslationtemplates (+33/-0)
lib/canonical/buildd/test_buildd_recipe (+30/-0)
lib/canonical/buildd/tests/harness.py (+19/-12)
lib/canonical/buildd/tests/test_generate_translation_templates.py (+117/-0)
lib/canonical/buildd/tests/test_translationtemplatesbuildmanager.py (+176/-0)
lib/canonical/buildd/translationtemplates.py (+97/-0)
lib/canonical/buildd/update-debian-chroot (+1/-1)
lib/canonical/buildd/utils.py (+0/-53)
lib/canonical/cachedproperty.py (+1/-0)
lib/canonical/config/__init__.py (+35/-53)
lib/canonical/config/schema-lazr.conf (+164/-43)
lib/canonical/config/tests/test_config_lookup.py (+7/-7)
lib/canonical/config/tests/test_database_config.py (+61/-0)
lib/canonical/configure.zcml (+12/-22)
lib/canonical/database/ftests/script_isolation.py (+8/-0)
lib/canonical/database/ftests/test_zopelesstransactionmanager.txt (+26/-0)
lib/canonical/database/harness.py (+2/-5)
lib/canonical/database/revision.py (+5/-6)
lib/canonical/database/sqlbase.py (+76/-51)
lib/canonical/database/tests/test_zopeless_transaction_manager.py (+31/-0)
lib/canonical/doap/__init__.py (+0/-8)
lib/canonical/doap/forage.py (+0/-283)
lib/canonical/ftests/pgsql.py (+11/-0)
lib/canonical/launchpad/apidoc/wadl-testrunner.xml (+0/-10)
lib/canonical/launchpad/blocked.html (+26/-0)
lib/canonical/launchpad/browser/__init__.py (+2/-7)
lib/canonical/launchpad/browser/feeds.py (+3/-14)
lib/canonical/launchpad/browser/ftests/logintoken-corner-cases.txt (+10/-11)
lib/canonical/launchpad/browser/launchpad.py (+64/-52)
lib/canonical/launchpad/browser/librarian.py (+26/-15)
lib/canonical/launchpad/browser/logintoken.py (+69/-387)
lib/canonical/launchpad/browser/oauth.py (+25/-13)
lib/canonical/launchpad/browser/packaging.py (+0/-48)
lib/canonical/launchpad/browser/temporaryblobstorage.py (+48/-4)
lib/canonical/launchpad/browser/tests/registration.py (+2/-0)
lib/canonical/launchpad/browser/tests/test_branchtraversal.py (+2/-2)
lib/canonical/launchpad/browser/tests/test_launchpad.py (+97/-15)
lib/canonical/launchpad/browser/tests/test_librarian.py (+31/-0)
lib/canonical/launchpad/browser/tests/test_logintoken.py (+67/-0)
lib/canonical/launchpad/browser/tests/test_registration.py (+0/-61)
lib/canonical/launchpad/browser/vocabulary.py (+6/-2)
lib/canonical/launchpad/components/apihelpers.py (+15/-0)
lib/canonical/launchpad/components/cal.py (+0/-89)
lib/canonical/launchpad/components/crowd.py (+0/-80)
lib/canonical/launchpad/configure.zcml (+7/-13)
lib/canonical/launchpad/daemons/tachandler.py (+133/-70)
lib/canonical/launchpad/database/__init__.py (+3/-6)
lib/canonical/launchpad/database/account.py (+11/-8)
lib/canonical/launchpad/database/baseopenidstore.py (+1/-1)
lib/canonical/launchpad/database/emailaddress.py (+3/-2)
lib/canonical/launchpad/database/librarian.py (+4/-3)
lib/canonical/launchpad/database/logintoken.py (+70/-17)
lib/canonical/launchpad/database/oauth.py (+6/-4)
lib/canonical/launchpad/database/temporaryblobstorage.py (+28/-6)
lib/canonical/launchpad/database/tests/test_baseopenidstore.py (+5/-0)
lib/canonical/launchpad/database/tests/test_oauth.py (+1/-1)
lib/canonical/launchpad/doc/account.txt (+74/-83)
lib/canonical/launchpad/doc/badges.txt (+1/-0)
lib/canonical/launchpad/doc/canonical-config.txt (+1/-1)
lib/canonical/launchpad/doc/canonical_url.txt (+9/-0)
lib/canonical/launchpad/doc/canonical_url_examples.txt (+34/-18)
lib/canonical/launchpad/doc/celebrities.txt (+49/-1)
lib/canonical/launchpad/doc/crowd.txt (+0/-124)
lib/canonical/launchpad/doc/db-policy.txt (+126/-0)
lib/canonical/launchpad/doc/displaying-numbers.txt (+1/-1)
lib/canonical/launchpad/doc/emailauthentication.txt (+6/-5)
lib/canonical/launchpad/doc/google-searchservice.txt (+2/-2)
lib/canonical/launchpad/doc/gpg-encryption.txt (+3/-3)
lib/canonical/launchpad/doc/gpghandler.txt (+7/-7)
lib/canonical/launchpad/doc/hasowner-authorization.txt (+5/-5)
lib/canonical/launchpad/doc/hierarchical-menu.txt (+17/-5)
lib/canonical/launchpad/doc/incomingmail.txt (+8/-25)
lib/canonical/launchpad/doc/launchpad-radio-widget.txt (+48/-0)
lib/canonical/launchpad/doc/launchpadlib.txt (+1/-1)
lib/canonical/launchpad/doc/launchpadview.txt (+5/-14)
lib/canonical/launchpad/doc/librarian.txt (+6/-9)
lib/canonical/launchpad/doc/login-pages.txt (+0/-139)
lib/canonical/launchpad/doc/loginstatus-pages.txt (+13/-0)
lib/canonical/launchpad/doc/logintoken-pages.txt (+18/-368)
lib/canonical/launchpad/doc/looptuner.txt (+4/-11)
lib/canonical/launchpad/doc/menus.txt (+3/-3)
lib/canonical/launchpad/doc/notification-recipient-set.txt (+1/-1)
lib/canonical/launchpad/doc/oauth.txt (+112/-35)
lib/canonical/launchpad/doc/personroles.txt (+130/-0)
lib/canonical/launchpad/doc/product-update-remote-product-script.txt (+1/-1)
lib/canonical/launchpad/doc/product-update-remote-product.txt (+1/-6)
lib/canonical/launchpad/doc/profiling.txt (+6/-6)
lib/canonical/launchpad/doc/project-scope-widget.txt (+6/-5)
lib/canonical/launchpad/doc/publishing-security.txt (+48/-47)
lib/canonical/launchpad/doc/renamed-view.txt (+1/-1)
lib/canonical/launchpad/doc/security-proxies.txt (+3/-3)
lib/canonical/launchpad/doc/security-teams.txt (+2/-1)
lib/canonical/launchpad/doc/storm.txt (+56/-71)
lib/canonical/launchpad/doc/stripped-text-widget.txt (+29/-4)
lib/canonical/launchpad/doc/tales-macro.txt (+5/-34)
lib/canonical/launchpad/doc/tales.txt (+87/-35)
lib/canonical/launchpad/doc/temporaryblobstorage.txt (+45/-0)
lib/canonical/launchpad/doc/textformatting.txt (+76/-0)
lib/canonical/launchpad/doc/timeout.txt (+1/-1)
lib/canonical/launchpad/doc/unicode_csv.txt (+7/-3)
lib/canonical/launchpad/doc/vocabularies.txt (+25/-21)
lib/canonical/launchpad/doc/vocabulary-json.txt (+21/-1)
lib/canonical/launchpad/doc/webapp-authorization.txt (+6/-6)
lib/canonical/launchpad/doc/webapp-publication.txt (+11/-5)
lib/canonical/launchpad/doc/webservice-error.txt (+6/-1)
lib/canonical/launchpad/doc/webservice-marshallers.txt (+22/-2)
lib/canonical/launchpad/doc/zcmldirectives.txt (+19/-10)
lib/canonical/launchpad/emailtemplates/branch-merge-proposal-created.txt (+1/-1)
lib/canonical/launchpad/emailtemplates/bug-notification-verbose.txt (+2/-0)
lib/canonical/launchpad/emailtemplates/forgottenpassword-neutral.txt (+0/-14)
lib/canonical/launchpad/emailtemplates/forgottenpassword.txt (+0/-11)
lib/canonical/launchpad/emailtemplates/help.txt (+7/-4)
lib/canonical/launchpad/emailtemplates/new-code-import.txt (+3/-1)
lib/canonical/launchpad/emailtemplates/newuser-email-neutral.txt (+0/-15)
lib/canonical/launchpad/emailtemplates/newuser-email.txt (+0/-19)
lib/canonical/launchpad/emailtemplates/person-location-modified.txt (+0/-19)
lib/canonical/launchpad/emailtemplates/person-merged.txt (+15/-0)
lib/canonical/launchpad/emailtemplates/ppa-subscription-new.txt (+3/-1)
lib/canonical/launchpad/emailtemplates/specification-modified.txt (+2/-2)
lib/canonical/launchpad/emailtemplates/team-list-subscribe-block.txt (+1/-1)
lib/canonical/launchpad/emailtemplates/upload-accepted.txt (+1/-0)
lib/canonical/launchpad/emailtemplates/upload-announcement.txt (+1/-0)
lib/canonical/launchpad/emailtemplates/upload-new.txt (+1/-0)
lib/canonical/launchpad/emailtemplates/upload-rejection.txt (+1/-0)
lib/canonical/launchpad/event/interfaces.py (+0/-23)
lib/canonical/launchpad/fields/__init__.py (+72/-36)
lib/canonical/launchpad/fields/tests/__init__.py (+1/-0)
lib/canonical/launchpad/fields/tests/test_fields.py (+49/-0)
lib/canonical/launchpad/ftests/keys_for_tests.py (+1/-1)
lib/canonical/launchpad/ftests/test_system_documentation.py (+12/-12)
lib/canonical/launchpad/helpers.py (+5/-67)
lib/canonical/launchpad/icing-sources/haspatch.svg (+968/-0)
lib/canonical/launchpad/icing/PlotKit_Packed.js (+0/-2177)
lib/canonical/launchpad/icing/icon-sprites.positioning (+476/-0)
lib/canonical/launchpad/icing/print.css (+5/-5)
lib/canonical/launchpad/icing/shipit.css (+2/-2)
lib/canonical/launchpad/icing/style-3-0.css.in (+2084/-563)
lib/canonical/launchpad/icing/style.css (+47/-1679)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/autocomplete.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/calendar.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/colorpicker.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/datatable.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/editor.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/logger.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/paginator.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/profilerviewer.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/simpleeditor.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/assets/skins/sam/skin.css (+9/-9)
lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar-skin.css (+1/-1)
lib/canonical/launchpad/icing/yui_2.7.0b/build/calendar/assets/skins/sam/calendar.css (+1/-1)
lib/canonical/launchpad/images/src/ppa-icon.svg (+188/-0)
lib/canonical/launchpad/interfaces/__init__.py (+6/-7)
lib/canonical/launchpad/interfaces/_schema_circular_imports.py (+140/-34)
lib/canonical/launchpad/interfaces/account.py (+8/-8)
lib/canonical/launchpad/interfaces/authtoken.py (+3/-60)
lib/canonical/launchpad/interfaces/ftests/validation.txt (+12/-12)
lib/canonical/launchpad/interfaces/gpghandler.py (+38/-0)
lib/canonical/launchpad/interfaces/launchpad.py (+112/-24)
lib/canonical/launchpad/interfaces/librarian.py (+3/-7)
lib/canonical/launchpad/interfaces/logintoken.py (+21/-0)
lib/canonical/launchpad/interfaces/message.py (+11/-7)
lib/canonical/launchpad/interfaces/oauth.py (+9/-2)
lib/canonical/launchpad/interfaces/temporaryblobstorage.py (+28/-1)
lib/canonical/launchpad/interfaces/validation.py (+10/-10)
lib/canonical/launchpad/javascript/bugs/bug_tags_entry.js (+29/-30)
lib/canonical/launchpad/javascript/bugs/bugtask-index.js (+467/-339)
lib/canonical/launchpad/javascript/bugs/filebug-dupefinder.js (+337/-158)
lib/canonical/launchpad/javascript/bugs/offical_bug_tags.js (+53/-35)
lib/canonical/launchpad/javascript/bugs/subscriber.js (+13/-14)
lib/canonical/launchpad/javascript/bugs/tests/subscriber.html (+8/-8)
lib/canonical/launchpad/javascript/bugs/tests/test_me_too.html (+7/-7)
lib/canonical/launchpad/javascript/bugs/tests/test_me_too.js (+43/-42)
lib/canonical/launchpad/javascript/bugs/tests/test_subscriber.js (+61/-8)
lib/canonical/launchpad/javascript/client/client.js (+54/-25)
lib/canonical/launchpad/javascript/code/branchsubscription.js (+0/-272)
lib/canonical/launchpad/javascript/lp/calendar.js (+4/-4)
lib/canonical/launchpad/javascript/lp/comment.js (+425/-0)
lib/canonical/launchpad/javascript/lp/dragscroll.js (+132/-81)
lib/canonical/launchpad/javascript/lp/errors.js (+111/-0)
lib/canonical/launchpad/javascript/lp/lp-mochi.js (+383/-0)
lib/canonical/launchpad/javascript/lp/lp.js (+124/-516)
lib/canonical/launchpad/javascript/lp/mapping.js (+41/-41)
lib/canonical/launchpad/javascript/lp/picker.js (+38/-30)
lib/canonical/launchpad/javascript/lp/tests/test_lp_collapsibles.js (+37/-37)
lib/canonical/launchpad/javascript/registry/milestoneoverlay.js (+9/-10)
lib/canonical/launchpad/javascript/registry/milestonetable.js (+38/-31)
lib/canonical/launchpad/javascript/registry/team.js (+137/-0)
lib/canonical/launchpad/javascript/registry/tests/test_milestone_table.html (+5/-5)
lib/canonical/launchpad/javascript/registry/tests/test_milestone_table.js (+13/-7)
lib/canonical/launchpad/javascript/registry/tests/test_timeline.html (+2/-1)
lib/canonical/launchpad/javascript/registry/tests/timeline-iframe.html (+5/-5)
lib/canonical/launchpad/javascript/registry/tests/timeline.js (+53/-22)
lib/canonical/launchpad/javascript/registry/timeline.js (+211/-104)
lib/canonical/launchpad/javascript/soyuz/archivesubscribers_index.js (+6/-6)
lib/canonical/launchpad/javascript/soyuz/base.js (+1/-1)
lib/canonical/launchpad/javascript/soyuz/lp_dynamic_dom_updater.js (+14/-24)
lib/canonical/launchpad/javascript/soyuz/tests/archivesubscribers_index.js (+9/-9)
lib/canonical/launchpad/javascript/soyuz/tests/lp_dynamic_dom_updater.js (+1/-1)
lib/canonical/launchpad/javascript/soyuz/update_archive_build_statuses.js (+19/-21)
lib/canonical/launchpad/javascript/test.css (+5/-11)
lib/canonical/launchpad/javascript/translations/pofile.js (+457/-28)
lib/canonical/launchpad/javascript/translations/translations.js (+105/-11)
lib/canonical/launchpad/layers.py (+12/-2)
lib/canonical/launchpad/mail/commands.py (+4/-4)
lib/canonical/launchpad/mail/errortemplates/branch-creation-exception.txt (+2/-0)
lib/canonical/launchpad/mail/incoming.py (+10/-16)
lib/canonical/launchpad/mail/meta.py (+16/-18)
lib/canonical/launchpad/mail/tests/test_incoming.py (+2/-0)
lib/canonical/launchpad/mailman/monkeypatches/lphandler.py (+3/-2)
lib/canonical/launchpad/mailman/monkeypatches/lpmoderate.py (+16/-0)
lib/canonical/launchpad/mailman/runmailman.py (+0/-4)
lib/canonical/launchpad/mailnotification.py (+55/-35)
lib/canonical/launchpad/mailout/__init__.py (+0/-70)
lib/canonical/launchpad/offline-maintenance-haproxy.html (+32/-0)
lib/canonical/launchpad/offline-maintenance.html (+4/-3)
lib/canonical/launchpad/offline-unplanned-haproxy.html (+32/-0)
lib/canonical/launchpad/offline-unplanned.html (+1/-1)
lib/canonical/launchpad/pagetests/basics/demo-and-lpnet.txt (+7/-15)
lib/canonical/launchpad/pagetests/basics/max-batch-size.txt (+1/-1)
lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt (+2/-5)
lib/canonical/launchpad/pagetests/feeds/xx-authentication.txt (+1/-1)
lib/canonical/launchpad/pagetests/feeds/xx-links.txt (+19/-19)
lib/canonical/launchpad/pagetests/oauth/access-token.txt (+1/-1)
lib/canonical/launchpad/pagetests/oauth/authorize-token.txt (+11/-19)
lib/canonical/launchpad/pagetests/packaging/xx-ubuntu-pkging.txt (+0/-136)
lib/canonical/launchpad/pagetests/standalone/xx-dbpolicy.txt (+1/-1)
lib/canonical/launchpad/pagetests/standalone/xx-form-layout.txt (+8/-5)
lib/canonical/launchpad/pagetests/standalone/xx-invalid-people-cant-login.txt (+0/-56)
lib/canonical/launchpad/pagetests/standalone/xx-login-and-join-links.txt (+0/-65)
lib/canonical/launchpad/pagetests/standalone/xx-login-without-preferredemail.txt (+0/-76)
lib/canonical/launchpad/pagetests/standalone/xx-nameblacklist.txt (+3/-2)
lib/canonical/launchpad/pagetests/standalone/xx-new-account-redirection-url.txt (+0/-62)
lib/canonical/launchpad/pagetests/standalone/xx-notifications.txt (+3/-0)
lib/canonical/launchpad/pagetests/standalone/xx-offsite-form-post.txt (+159/-16)
lib/canonical/launchpad/pagetests/standalone/xx-opstats.txt (+54/-0)
lib/canonical/launchpad/pagetests/standalone/xx-read-only-mode.txt (+10/-18)
lib/canonical/launchpad/pagetests/webservice/apidoc.txt (+18/-3)
lib/canonical/launchpad/pagetests/webservice/conditional-write.txt (+103/-0)
lib/canonical/launchpad/pagetests/webservice/launchpadlib.txt (+115/-0)
lib/canonical/launchpad/pagetests/webservice/multiversion.txt (+32/-0)
lib/canonical/launchpad/pagetests/webservice/xx-branches.txt (+33/-0)
lib/canonical/launchpad/pagetests/webservice/xx-service.txt (+137/-14)
lib/canonical/launchpad/pagetests/webservice/xx-temporary-blob-storage.txt (+81/-0)
lib/canonical/launchpad/pagetests/webservice/xx-wadl.txt (+81/-46)
lib/canonical/launchpad/pagetitles.py (+0/-25)
lib/canonical/launchpad/permissions.zcml (+0/-4)
lib/canonical/launchpad/readonly.py (+86/-0)
lib/canonical/launchpad/rest/configuration.py (+26/-5)
lib/canonical/launchpad/scripts/__init__.py (+27/-48)
lib/canonical/launchpad/scripts/ftests/test_checkwatches.py (+0/-93)
lib/canonical/launchpad/scripts/ftests/test_oops_prune.py (+9/-0)
lib/canonical/launchpad/scripts/garbo.py (+203/-188)
lib/canonical/launchpad/scripts/logger.py (+6/-4)
lib/canonical/launchpad/scripts/oops.py (+16/-12)
lib/canonical/launchpad/scripts/runlaunchpad.py (+26/-18)
lib/canonical/launchpad/scripts/sftracker.py (+2/-2)
lib/canonical/launchpad/scripts/tests/librarianformatter_noca.txt (+6/-9)
lib/canonical/launchpad/scripts/tests/test_garbo.py (+89/-73)
lib/canonical/launchpad/scripts/tests/test_hwdb_submission_parser.py (+564/-161)
lib/canonical/launchpad/scripts/tests/test_hwdb_submission_processing.py (+2083/-251)
lib/canonical/launchpad/scripts/tests/test_librarian_apache_log_parser.py (+6/-0)
lib/canonical/launchpad/scripts/tests/test_logger.txt (+6/-7)
lib/canonical/launchpad/scripts/tests/test_rundoctests.py (+0/-1)
lib/canonical/launchpad/scripts/tests/test_runlaunchpad.py (+2/-4)
lib/canonical/launchpad/security.py (+596/-423)
lib/canonical/launchpad/subscribers/karma.py (+8/-2)
lib/canonical/launchpad/systemhomes.py (+55/-49)
lib/canonical/launchpad/templates/batchnavigator-navigation-links.pt (+7/-2)
lib/canonical/launchpad/templates/bounty-portlet-relateds.pt (+0/-55)
lib/canonical/launchpad/templates/bugbranch-inline-edit.pt (+0/-2)
lib/canonical/launchpad/templates/bugs-listing-table-without-navlinks.pt (+11/-2)
lib/canonical/launchpad/templates/launchpad-forgottenpassword.pt (+0/-65)
lib/canonical/launchpad/templates/launchpad-form.pt (+18/-1)
lib/canonical/launchpad/templates/launchpad-gone.pt (+49/-0)
lib/canonical/launchpad/templates/launchpad-login.pt (+0/-236)
lib/canonical/launchpad/templates/launchpad-menubox.pt (+0/-21)
lib/canonical/launchpad/templates/launchpad-navigation-menutabs.pt (+0/-32)
lib/canonical/launchpad/templates/launchpad-noreferrer.pt (+26/-0)
lib/canonical/launchpad/templates/launchpad-readonlyfailure.pt (+3/-3)
lib/canonical/launchpad/templates/launchpad-requestexpired.pt (+9/-20)
lib/canonical/launchpad/templates/launchpad-restrictedinfo.pt (+0/-45)
lib/canonical/launchpad/templates/launchpad-restrictedlogin.pt (+0/-119)
lib/canonical/launchpad/templates/login-already.pt (+18/-0)
lib/canonical/launchpad/templates/login-error.pt (+17/-0)
lib/canonical/launchpad/templates/login-suspended-account.pt (+20/-0)
lib/canonical/launchpad/templates/logintoken-newaccount.pt (+0/-19)
lib/canonical/launchpad/templates/logintoken-resetpassword.pt (+0/-18)
lib/canonical/launchpad/templates/logintoken-validatesignonlygpg.pt (+1/-1)
lib/canonical/launchpad/templates/main-template-macros.pt (+0/-33)
lib/canonical/launchpad/templates/main-template.pt (+0/-308)
lib/canonical/launchpad/templates/oops-veryplain.pt (+10/-2)
lib/canonical/launchpad/templates/oops.pt (+43/-20)
lib/canonical/launchpad/testing/browser.py (+32/-4)
lib/canonical/launchpad/testing/codeimporthelpers.py (+2/-6)
lib/canonical/launchpad/testing/cookie.py (+0/-67)
lib/canonical/launchpad/testing/googletestservice.py (+2/-2)
lib/canonical/launchpad/testing/pages.py (+118/-27)
lib/canonical/launchpad/testing/systemdocs.py (+24/-7)
lib/canonical/launchpad/testing/tests/test_testcase.py (+0/-163)
lib/canonical/launchpad/tests/readonly.py (+47/-0)
lib/canonical/launchpad/tests/test_helpers.py (+4/-2)
lib/canonical/launchpad/tests/test_login.py (+1/-20)
lib/canonical/launchpad/tests/test_personroles.py (+157/-0)
lib/canonical/launchpad/tests/test_readonly.py (+78/-0)
lib/canonical/launchpad/tests/test_token_creation.py (+2/-2)
lib/canonical/launchpad/tour/api (+1/-1)
lib/canonical/launchpad/tour/branch-hosting-tracking (+9/-8)
lib/canonical/launchpad/tour/bugs (+10/-8)
lib/canonical/launchpad/tour/community (+1/-1)
lib/canonical/launchpad/tour/community-support (+1/-1)
lib/canonical/launchpad/tour/feature-tracking (+1/-1)
lib/canonical/launchpad/tour/index (+3/-3)
lib/canonical/launchpad/tour/join-launchpad (+3/-3)
lib/canonical/launchpad/tour/ppa (+28/-30)
lib/canonical/launchpad/tour/release-management (+1/-1)
lib/canonical/launchpad/tour/translation (+3/-3)
lib/canonical/launchpad/utilities/celebrities.py (+37/-22)
lib/canonical/launchpad/utilities/gpghandler.py (+30/-8)
lib/canonical/launchpad/utilities/looptuner.py (+64/-17)
lib/canonical/launchpad/utilities/personroles.py (+62/-0)
lib/canonical/launchpad/validators/url.py (+7/-1)
lib/canonical/launchpad/vocabularies/configure.zcml (+299/-88)
lib/canonical/launchpad/vocabularies/dbobjects.py (+18/-17)
lib/canonical/launchpad/webapp/adapter.py (+80/-29)
lib/canonical/launchpad/webapp/authentication.py (+10/-7)
lib/canonical/launchpad/webapp/authorization.py (+3/-3)
lib/canonical/launchpad/webapp/badge.py (+1/-0)
lib/canonical/launchpad/webapp/batching.py (+4/-0)
lib/canonical/launchpad/webapp/breadcrumb.py (+5/-3)
lib/canonical/launchpad/webapp/configure.zcml (+28/-19)
lib/canonical/launchpad/webapp/dbpolicy.py (+96/-35)
lib/canonical/launchpad/webapp/error.py (+15/-4)
lib/canonical/launchpad/webapp/errorlog.py (+148/-97)
lib/canonical/launchpad/webapp/ftests/test_adapter.txt (+53/-2)
lib/canonical/launchpad/webapp/ftests/test_adapter_permissions.txt (+1/-24)
lib/canonical/launchpad/webapp/interaction.py (+62/-1)
lib/canonical/launchpad/webapp/interfaces.py (+39/-11)
lib/canonical/launchpad/webapp/launchbag.py (+2/-2)
lib/canonical/launchpad/webapp/launchpadform.py (+66/-3)
lib/canonical/launchpad/webapp/login.py (+295/-315)
lib/canonical/launchpad/webapp/marshallers.py (+21/-0)
lib/canonical/launchpad/webapp/menu.py (+6/-1)
lib/canonical/launchpad/webapp/metazcml.py (+14/-9)
lib/canonical/launchpad/webapp/notifications.py (+3/-2)
lib/canonical/launchpad/webapp/pgsession.py (+2/-19)
lib/canonical/launchpad/webapp/publication.py (+113/-128)
lib/canonical/launchpad/webapp/publisher.py (+6/-24)
lib/canonical/launchpad/webapp/servers.py (+99/-16)
lib/canonical/launchpad/webapp/session.py (+5/-7)
lib/canonical/launchpad/webapp/sigdumpmem.py (+18/-0)
lib/canonical/launchpad/webapp/snapshot.py (+4/-1)
lib/canonical/launchpad/webapp/tales.py (+132/-199)
lib/canonical/launchpad/webapp/tests/__init__.py (+0/-26)
lib/canonical/launchpad/webapp/tests/cookie-authentication.txt (+29/-18)
lib/canonical/launchpad/webapp/tests/login.txt (+47/-0)
lib/canonical/launchpad/webapp/tests/no-anonymous-session-cookies.txt (+30/-25)
lib/canonical/launchpad/webapp/tests/test_authorization.py (+6/-7)
lib/canonical/launchpad/webapp/tests/test_breadcrumbs.py (+24/-36)
lib/canonical/launchpad/webapp/tests/test_cookie_authentication.py (+24/-0)
lib/canonical/launchpad/webapp/tests/test_dbpolicy.py (+57/-15)
lib/canonical/launchpad/webapp/tests/test_encryptor.py (+10/-5)
lib/canonical/launchpad/webapp/tests/test_errorlog.py (+51/-3)
lib/canonical/launchpad/webapp/tests/test_login.py (+0/-34)
lib/canonical/launchpad/webapp/tests/test_menu.py (+1/-0)
lib/canonical/launchpad/webapp/tests/test_no_anonymous_session_cookies.py (+24/-0)
lib/canonical/launchpad/webapp/tests/test_notifications.py (+1/-1)
lib/canonical/launchpad/webapp/tests/test_pgsession.py (+0/-61)
lib/canonical/launchpad/webapp/tests/test_publication.py (+184/-16)
lib/canonical/launchpad/webapp/tests/test_servers.py (+57/-30)
lib/canonical/launchpad/webapp/tests/test_sigdumpmem.py (+45/-0)
lib/canonical/launchpad/webapp/tests/test_tales.py (+4/-137)
lib/canonical/launchpad/webapp/url.py (+15/-15)
lib/canonical/launchpad/webapp/vhosts.py (+5/-0)
lib/canonical/launchpad/webapp/vocabulary.py (+6/-0)
lib/canonical/launchpad/windmill/jstests/launchpad_ajax.js (+17/-17)
lib/canonical/launchpad/windmill/testing/constants.py (+2/-2)
lib/canonical/launchpad/windmill/testing/lpuser.py (+38/-23)
lib/canonical/launchpad/windmill/testing/widgets.py (+6/-5)
lib/canonical/launchpad/xmlrpc/application.py (+4/-10)
lib/canonical/launchpad/xmlrpc/configure.zcml (+9/-22)
lib/canonical/launchpad/xmlrpc/faults.py (+18/-35)
lib/canonical/launchpad/xmlrpc/tests/test_authserver.py (+2/-8)
lib/canonical/launchpad/xmlrpc/tests/test_faults.py (+0/-65)
lib/canonical/launchpad/zcml/account.zcml (+4/-1)
lib/canonical/launchpad/zcml/binaryandsourcepackagename.zcml (+13/-2)
lib/canonical/launchpad/zcml/configure.zcml (+0/-6)
lib/canonical/launchpad/zcml/crowd.zcml (+0/-17)
lib/canonical/launchpad/zcml/hwdb.zcml (+0/-276)
lib/canonical/launchpad/zcml/launchpad.zcml (+48/-91)
lib/canonical/launchpad/zcml/librarian.zcml (+2/-1)
lib/canonical/launchpad/zcml/logintoken.zcml (+0/-23)
lib/canonical/launchpad/zcml/packaging.zcml (+0/-32)
lib/canonical/launchpad/zcml/personnotification.zcml (+0/-19)
lib/canonical/launchpad/zcml/personproduct.zcml (+0/-44)
lib/canonical/launchpad/zcml/structuralsubscription.zcml (+0/-40)
lib/canonical/launchpad/zcml/temporaryblobstorage.zcml (+16/-0)
lib/canonical/launchpad/zcml/webservice.zcml (+13/-1)
lib/canonical/lazr/doc/folder.txt (+13/-13)
lib/canonical/lazr/doc/menus.txt (+2/-2)
lib/canonical/lazr/doc/timeout.txt (+1/-1)
lib/canonical/librarian/Makefile (+0/-18)
lib/canonical/librarian/client.py (+19/-11)
lib/canonical/librarian/db.py (+6/-5)
lib/canonical/librarian/ftests/harness.py (+5/-0)
lib/canonical/librarian/ftests/test_client.py (+2/-2)
lib/canonical/librarian/ftests/test_db.py (+87/-0)
lib/canonical/librarian/ftests/test_gc.py (+139/-121)
lib/canonical/librarian/ftests/test_storage.py (+5/-4)
lib/canonical/librarian/ftests/test_web.py (+14/-12)
lib/canonical/librarian/interfaces.py (+6/-0)
lib/canonical/librarian/librariangc.py (+237/-139)
lib/canonical/librarian/storage.py (+3/-4)
lib/canonical/librarian/tests/librarian-report.txt (+31/-0)
lib/canonical/librarian/tests/test_doc.py (+25/-0)
lib/canonical/librarian/tests/test_sigdumpmem.py (+37/-0)
lib/canonical/librarian/tests/test_storage.py (+0/-1)
lib/canonical/librarian/utils.py (+3/-3)
lib/canonical/librarian/web.py (+1/-5)
lib/canonical/lp/ftests/test_zopeless.py (+12/-6)
lib/canonical/testing/customresult.py (+2/-46)
lib/canonical/testing/ftests/test_layers.py (+25/-2)
lib/canonical/testing/ftests/test_mockdb.py (+4/-4)
lib/canonical/testing/layers.py (+206/-18)
lib/canonical/uuid.py (+3/-3)
lib/canonical/widgets/itemswidgets.py (+40/-0)
lib/canonical/widgets/lazrjs.py (+21/-29)
lib/canonical/widgets/location.py (+1/-1)
lib/canonical/widgets/popup.py (+1/-1)
lib/canonical/widgets/project.py (+1/-1)
lib/canonical/widgets/templates/vocabulary-picker.js.template (+4/-5)
lib/contrib/PlotKit/Base.js (+0/-406)
lib/contrib/PlotKit/Canvas.js (+0/-683)
lib/contrib/PlotKit/EasyPlot.js (+0/-161)
lib/contrib/PlotKit/Layout.js (+0/-756)
lib/contrib/PlotKit/PlotKit.js (+0/-151)
lib/contrib/PlotKit/SVG.js (+0/-705)
lib/contrib/PlotKit/SweetCanvas.js (+0/-348)
lib/contrib/PlotKit/SweetSVG.js (+0/-247)
lib/contrib/PlotKit/dummy.svg (+0/-9)
lib/contrib/PlotKit/excanvas.js (+0/-723)
lib/contrib/glock.py (+1/-1)
lib/contrib/slimmer/README.txt (+0/-27)
lib/contrib/slimmer/__init__.py (+0/-1)
lib/contrib/slimmer/js_function_slimmer.py (+0/-169)
lib/contrib/slimmer/result (+0/-2)
lib/contrib/slimmer/setup.py (+0/-45)
lib/contrib/slimmer/slimmer.py (+0/-684)
lib/contrib/slimmer/slimmer_exp.py (+0/-629)
lib/contrib/slimmer/tests/__init__.py (+0/-2)
lib/contrib/slimmer/tests/codechunks.py (+0/-509)
lib/contrib/slimmer/tests/dummy.py (+0/-14)
lib/contrib/slimmer/tests/moo.ajax.js (+0/-40)
lib/contrib/slimmer/tests/testSlimmer.py (+0/-229)
lib/devscripts/autoland.py (+68/-25)
lib/devscripts/ec2test/account.py (+64/-51)
lib/devscripts/ec2test/builtins.py (+64/-36)
lib/devscripts/ec2test/entrypoint.py (+6/-0)
lib/devscripts/ec2test/instance.py (+66/-35)
lib/devscripts/ec2test/remote.py (+179/-119)
lib/devscripts/ec2test/session.py (+90/-0)
lib/devscripts/ec2test/testrunner.py (+36/-54)
lib/devscripts/ec2test/tests/__init__.py (+2/-0)
lib/devscripts/ec2test/tests/test_ec2instance.py (+143/-0)
lib/devscripts/ec2test/tests/test_remote.py (+29/-0)
lib/devscripts/ec2test/tests/test_session.py (+69/-0)
lib/devscripts/ec2test/tests/test_utils.py (+61/-0)
lib/devscripts/ec2test/utils.py (+55/-0)
lib/devscripts/sourcecode.py (+128/-34)
lib/devscripts/tests/test_autoland.py (+12/-1)
lib/devscripts/tests/test_sourcecode.py (+39/-9)
lib/launchpad_loggerhead/__init__.py (+1/-0)
lib/launchpad_loggerhead/app.py (+215/-0)
lib/launchpad_loggerhead/debug.py (+120/-0)
lib/launchpad_loggerhead/session.py (+73/-0)
lib/launchpad_loggerhead/static/robots.txt (+2/-0)
lib/lp/answers/browser/configure.zcml (+11/-6)
lib/lp/answers/browser/faq.py (+12/-7)
lib/lp/answers/browser/faqcollection.py (+2/-2)
lib/lp/answers/browser/question.py (+50/-37)
lib/lp/answers/browser/questiontarget.py (+13/-10)
lib/lp/answers/browser/tests/test_breadcrumbs.py (+31/-9)
lib/lp/answers/browser/tests/test_menus.py (+58/-0)
lib/lp/answers/browser/tests/views.txt (+34/-15)
lib/lp/answers/configure.zcml (+10/-3)
lib/lp/answers/doc/expiration.txt (+1/-1)
lib/lp/answers/doc/faq-vocabulary.txt (+2/-1)
lib/lp/answers/doc/faq.txt (+3/-2)
lib/lp/answers/doc/faqtarget.txt (+2/-2)
lib/lp/answers/doc/karma.txt (+1/-1)
lib/lp/answers/doc/person.txt (+161/-140)
lib/lp/answers/doc/projectgroup.txt (+47/-39)
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/faq.py (+2/-2)
lib/lp/answers/interfaces/question.py (+1/-1)
lib/lp/answers/interfaces/questionenums.py (+2/-2)
lib/lp/answers/interfaces/questionreopening.py (+1/-0)
lib/lp/answers/interfaces/questiontarget.py (+1/-1)
lib/lp/answers/model/faq.py (+3/-3)
lib/lp/answers/stories/faq-add.txt (+3/-3)
lib/lp/answers/stories/faq-browse-and-search.txt (+1/-1)
lib/lp/answers/stories/faq-edit.txt (+3/-8)
lib/lp/answers/stories/project-add-question.txt (+15/-15)
lib/lp/answers/stories/question-add-in-other-languages.txt (+8/-8)
lib/lp/answers/stories/question-add.txt (+15/-9)
lib/lp/answers/stories/question-answer-contact.txt (+4/-4)
lib/lp/answers/stories/question-answers-vhost.txt (+5/-4)
lib/lp/answers/stories/question-browse-and-search.txt (+7/-7)
lib/lp/answers/stories/question-confirm-url.txt (+2/-2)
lib/lp/answers/stories/question-edit.txt (+4/-4)
lib/lp/answers/stories/question-message.txt (+3/-3)
lib/lp/answers/stories/question-obfuscation.txt (+9/-9)
lib/lp/answers/stories/question-overview.txt (+5/-5)
lib/lp/answers/stories/question-reject-and-change-status.txt (+3/-3)
lib/lp/answers/stories/question-subscriptions.txt (+24/-24)
lib/lp/answers/stories/question-workflow.txt (+17/-16)
lib/lp/answers/stories/this-is-a-faq.txt (+26/-23)
lib/lp/answers/templates/faq-index.pt (+38/-17)
lib/lp/answers/templates/faq-listing.pt (+0/-1)
lib/lp/answers/templates/faq-portlet-lifecycle.pt (+0/-41)
lib/lp/answers/templates/question-history.pt (+1/-9)
lib/lp/answers/templates/question-index.pt (+65/-71)
lib/lp/answers/templates/question-listing.pt (+1/-5)
lib/lp/answers/templates/question-portlet-details.pt (+89/-71)
lib/lp/answers/templates/question-portlet-reopenings.pt (+4/-9)
lib/lp/answers/templates/question-subscription.pt (+11/-7)
lib/lp/answers/tests/test_doc.py (+2/-2)
lib/lp/app/__init__.py (+6/-0)
lib/lp/app/browser/configure.zcml (+46/-0)
lib/lp/app/browser/root.py (+19/-36)
lib/lp/app/browser/tests/base-layout.txt (+51/-11)
lib/lp/app/browser/tests/launchpad-search-pages.txt (+3/-3)
lib/lp/app/browser/tests/menu.txt (+1/-1)
lib/lp/app/browser/tests/root-views.txt (+66/-0)
lib/lp/app/browser/tests/test_launchpadroot.py (+80/-0)
lib/lp/app/browser/tests/test_views.py (+5/-2)
lib/lp/app/browser/tests/watermark.txt (+1/-1)
lib/lp/app/stories/basics/copyright.txt (+2/-2)
lib/lp/app/stories/basics/xx-beta-testers-redirection.txt (+33/-62)
lib/lp/app/stories/launchpad-root/front-pages.txt (+13/-0)
lib/lp/app/stories/launchpad-root/site-search.txt (+3/-13)
lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt (+21/-10)
lib/lp/app/templates/base-layout-macros.pt (+143/-95)
lib/lp/app/templates/base-layout.pt (+13/-1)
lib/lp/app/templates/launchpad-hierarchy.pt (+8/-11)
lib/lp/app/templates/launchpad-search.pt (+12/-11)
lib/lp/app/templates/navigationmenu-actions.pt (+1/-1)
lib/lp/app/templates/root-index.pt (+139/-81)
lib/lp/app/tests/test_doc.py (+17/-0)
lib/lp/archivepublisher/config.py (+20/-7)
lib/lp/archivepublisher/customupload.py (+83/-0)
lib/lp/archivepublisher/deathrow.py (+16/-16)
lib/lp/archivepublisher/debian_installer.py (+0/-3)
lib/lp/archivepublisher/dist_upgrader.py (+0/-3)
lib/lp/archivepublisher/domination.py (+34/-37)
lib/lp/archivepublisher/ftparchive.py (+4/-4)
lib/lp/archivepublisher/library.py (+0/-143)
lib/lp/archivepublisher/publishing.py (+61/-45)
lib/lp/archivepublisher/scripts/generate_ppa_htaccess.py (+9/-2)
lib/lp/archivepublisher/tests/apt-data/Packages (+2/-0)
lib/lp/archivepublisher/tests/archive-signing.txt (+4/-4)
lib/lp/archivepublisher/tests/deathrow.txt (+13/-13)
lib/lp/archivepublisher/tests/publisher-config.txt (+38/-11)
lib/lp/archivepublisher/tests/test_customupload.py (+133/-1)
lib/lp/archivepublisher/tests/test_deathrow.py (+1/-4)
lib/lp/archivepublisher/tests/test_debversion.py (+2/-2)
lib/lp/archivepublisher/tests/test_dominator.py (+12/-16)
lib/lp/archivepublisher/tests/test_ftparchive.py (+10/-25)
lib/lp/archivepublisher/tests/test_generate_ppa_htaccess.py (+69/-25)
lib/lp/archivepublisher/tests/test_librarianwrapper.py (+0/-80)
lib/lp/archivepublisher/tests/test_pool.py (+4/-4)
lib/lp/archivepublisher/tests/test_publisher.py (+78/-114)
lib/lp/archivepublisher/tests/util.py (+6/-34)
lib/lp/archiveuploader/changesfile.py (+15/-1)
lib/lp/archiveuploader/dscfile.py (+301/-34)
lib/lp/archiveuploader/nascentupload.py (+44/-48)
lib/lp/archiveuploader/nascentuploadfile.py (+16/-11)
lib/lp/archiveuploader/permission.py (+129/-13)
lib/lp/archiveuploader/tagfiles.py (+57/-22)
lib/lp/archiveuploader/tests/__init__.py (+9/-3)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_1.0-bzip2/bar_1.0-1.dsc (+10/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_1.0-bzip2/bar_1.0-1_source.changes (+20/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_3.0-quilt/bar_1.0-1.dsc (+22/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-1_3.0-quilt/bar_1.0-1_source.changes (+34/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-2_3.0-quilt_without_orig/bar_1.0-2.dsc (+22/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0-2_3.0-quilt_without_orig/bar_1.0-2_source.changes (+25/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0_3.0-native/bar_1.0.dsc (+13/-0)
lib/lp/archiveuploader/tests/data/suite/bar_1.0_3.0-native/bar_1.0_source.changes (+25/-0)
lib/lp/archiveuploader/tests/data/suite/debug_1.0-1/debug_1.0-1.dsc (+5/-5)
lib/lp/archiveuploader/tests/data/suite/debug_1.0-1/debug_1.0-1_i386.changes (+10/-5)
lib/lp/archiveuploader/tests/data/suite/debug_1.0-1/debug_1.0-1_source.changes (+12/-6)
lib/lp/archiveuploader/tests/data/suite/foocomm_1.0-3/foocomm_1.0-3.dsc (+10/-0)
lib/lp/archiveuploader/tests/data/suite/foocomm_1.0-3/foocomm_1.0-3_source.changes (+27/-0)
lib/lp/archiveuploader/tests/data/test436182_0.1_source.changes (+23/-0)
lib/lp/archiveuploader/tests/nascentupload-ddebs.txt (+16/-16)
lib/lp/archiveuploader/tests/nascentuploadfile.txt (+247/-4)
lib/lp/archiveuploader/tests/test_buildduploads.py (+6/-7)
lib/lp/archiveuploader/tests/test_dscfile.py (+118/-0)
lib/lp/archiveuploader/tests/test_permission.py (+66/-9)
lib/lp/archiveuploader/tests/test_ppauploadprocessor.py (+68/-37)
lib/lp/archiveuploader/tests/test_recipeuploads.py (+74/-0)
lib/lp/archiveuploader/tests/test_securityuploads.py (+8/-12)
lib/lp/archiveuploader/tests/test_signedfiles.py (+1/-1)
lib/lp/archiveuploader/tests/test_tagfiles.py (+102/-38)
lib/lp/archiveuploader/tests/test_uploadprocessor.py (+392/-51)
lib/lp/archiveuploader/tests/test_utils.py (+74/-1)
lib/lp/archiveuploader/tests/upload-karma.txt (+1/-1)
lib/lp/archiveuploader/tests/upload-path-parsing.txt (+2/-2)
lib/lp/archiveuploader/uploadpolicy.py (+43/-28)
lib/lp/archiveuploader/uploadprocessor.py (+47/-28)
lib/lp/archiveuploader/utils.py (+59/-1)
lib/lp/blueprints/browser/configure.zcml (+5/-3)
lib/lp/blueprints/browser/specification.py (+44/-48)
lib/lp/blueprints/browser/specificationtarget.py (+42/-20)
lib/lp/blueprints/browser/sprint.py (+21/-5)
lib/lp/blueprints/browser/sprintattendance.py (+16/-11)
lib/lp/blueprints/browser/tests/sprintattendance-views.txt (+126/-26)
lib/lp/blueprints/browser/tests/test_breadcrumbs.py (+5/-9)
lib/lp/blueprints/browser/tests/test_menus.py (+40/-0)
lib/lp/blueprints/browser/tests/test_specificationtarget.py (+93/-0)
lib/lp/blueprints/browser/tests/test_views.py (+2/-2)
lib/lp/blueprints/doc/spec-mail-exploder.txt (+1/-1)
lib/lp/blueprints/doc/specification-notifications.txt (+10/-10)
lib/lp/blueprints/doc/specification.txt (+12/-8)
lib/lp/blueprints/doc/sprint-meeting-export.txt (+1/-1)
lib/lp/blueprints/doc/sprint.txt (+62/-10)
lib/lp/blueprints/doc/sprintattendance.txt (+60/-0)
lib/lp/blueprints/interfaces/specification.py (+4/-4)
lib/lp/blueprints/interfaces/specificationsubscription.py (+1/-2)
lib/lp/blueprints/interfaces/sprint.py (+1/-1)
lib/lp/blueprints/interfaces/sprintattendance.py (+7/-2)
lib/lp/blueprints/model/sprint.py (+4/-2)
lib/lp/blueprints/model/sprintattendance.py (+2/-4)
lib/lp/blueprints/stories/blueprints/01-creation.txt (+5/-32)
lib/lp/blueprints/stories/blueprints/02-buglinks.txt (+1/-1)
lib/lp/blueprints/stories/blueprints/08-productseries.txt (+4/-0)
lib/lp/blueprints/stories/sprints/01-sprint-overview.txt (+1/-1)
lib/lp/blueprints/stories/sprints/05-sprint-creation.txt (+2/-1)
lib/lp/blueprints/stories/sprints/20-sprint-registration.txt (+0/-6)
lib/lp/blueprints/stories/standalone/subscribing.txt (+2/-2)
lib/lp/blueprints/stories/standalone/xx-overview.txt (+2/-2)
lib/lp/blueprints/templates/hasspecifications-specs.pt (+14/-19)
lib/lp/blueprints/templates/person-specworkload.pt (+1/-1)
lib/lp/blueprints/templates/specification-index.pt (+1/-13)
lib/lp/blueprints/templates/specificationtarget-documentation.pt (+3/-4)
lib/lp/blueprints/templates/sprint-portlet-attendees.pt (+1/-1)
lib/lp/blueprints/templates/sprint-register.pt (+4/-0)
lib/lp/blueprints/tests/test_doc.py (+0/-3)
lib/lp/bugs/adapters/bug.py (+13/-2)
lib/lp/bugs/adapters/bugchange.py (+14/-4)
lib/lp/bugs/browser/bug.py (+64/-31)
lib/lp/bugs/browser/bugalsoaffects.py (+2/-22)
lib/lp/bugs/browser/bugattachment.py (+109/-12)
lib/lp/bugs/browser/bugbranch.py (+46/-3)
lib/lp/bugs/browser/bugcomment.py (+16/-2)
lib/lp/bugs/browser/buglinktarget.py (+7/-16)
lib/lp/bugs/browser/bugmessage.py (+23/-4)
lib/lp/bugs/browser/bugnomination.py (+7/-7)
lib/lp/bugs/browser/bugsubscription.py (+24/-6)
lib/lp/bugs/browser/bugsupervisor.py (+29/-14)
lib/lp/bugs/browser/bugtarget.py (+340/-387)
lib/lp/bugs/browser/bugtask.py (+408/-252)
lib/lp/bugs/browser/bugwatch.py (+61/-5)
lib/lp/bugs/browser/configure.zcml (+72/-22)
lib/lp/bugs/browser/cvereport.py (+2/-1)
lib/lp/bugs/browser/distribution_upstream_bug_report.py (+17/-5)
lib/lp/bugs/browser/tests/bug-heat-view.txt (+119/-0)
lib/lp/bugs/browser/tests/bug-nomination-views.txt (+3/-3)
lib/lp/bugs/browser/tests/bug-portlet-subscribers-content.txt (+1/-1)
lib/lp/bugs/browser/tests/bug-subscription-views.txt (+40/-0)
lib/lp/bugs/browser/tests/bug-views.txt (+30/-4)
lib/lp/bugs/browser/tests/buglinktarget-views.txt (+20/-4)
lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt (+99/-38)
lib/lp/bugs/browser/tests/bugtask-adding-views.txt (+0/-37)
lib/lp/bugs/browser/tests/bugtask-search-views.txt (+3/-155)
lib/lp/bugs/browser/tests/bugwatch-views.txt (+86/-4)
lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt (+39/-31)
lib/lp/bugs/browser/tests/test_breadcrumbs.py (+36/-52)
lib/lp/bugs/browser/tests/test_bugtarget_patches_view.py (+102/-0)
lib/lp/bugs/browser/tests/test_bugtask.py (+231/-2)
lib/lp/bugs/browser/tests/test_bugview.py (+67/-0)
lib/lp/bugs/configure.zcml (+118/-15)
lib/lp/bugs/doc/bug-branch.txt (+28/-4)
lib/lp/bugs/doc/bug-heat.txt (+241/-0)
lib/lp/bugs/doc/bug-nomination.txt (+4/-4)
lib/lp/bugs/doc/bug-reporting-guidelines.txt (+3/-3)
lib/lp/bugs/doc/bug-tags.txt (+3/-3)
lib/lp/bugs/doc/bug-watch-activity.txt (+148/-0)
lib/lp/bugs/doc/bug.txt (+390/-23)
lib/lp/bugs/doc/bugattachments.txt (+149/-16)
lib/lp/bugs/doc/bugcomment.txt (+43/-0)
lib/lp/bugs/doc/bugnotification-comment-syncing-team.txt (+1/-1)
lib/lp/bugs/doc/bugnotification-email.txt (+41/-4)
lib/lp/bugs/doc/bugnotification-sending.txt (+11/-5)
lib/lp/bugs/doc/bugs-email-affects-path.txt (+1/-1)
lib/lp/bugs/doc/bugsubscription.txt (+16/-4)
lib/lp/bugs/doc/bugtask-expiration.txt (+14/-25)
lib/lp/bugs/doc/bugtask-package-bugcounts.txt (+10/-0)
lib/lp/bugs/doc/bugtask-search.txt (+119/-4)
lib/lp/bugs/doc/bugtask-status-workflow.txt (+8/-1)
lib/lp/bugs/doc/bugtask.txt (+7/-2)
lib/lp/bugs/doc/bugtracker.txt (+30/-27)
lib/lp/bugs/doc/bugwatch.txt (+106/-13)
lib/lp/bugs/doc/bugzilla-import.txt (+3/-7)
lib/lp/bugs/doc/checkwatches-batching.txt (+140/-0)
lib/lp/bugs/doc/checkwatches-cli-switches.txt (+22/-19)
lib/lp/bugs/doc/checkwatches.txt (+175/-52)
lib/lp/bugs/doc/cve-update.txt (+2/-2)
lib/lp/bugs/doc/distribution-upstream-bug-report.txt (+108/-56)
lib/lp/bugs/doc/externalbugtracker-bug-imports.txt (+6/-4)
lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt (+91/-32)
lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt (+51/-19)
lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt (+5/-3)
lib/lp/bugs/doc/externalbugtracker-bugzilla.txt (+71/-15)
lib/lp/bugs/doc/externalbugtracker-comment-imports.txt (+56/-24)
lib/lp/bugs/doc/externalbugtracker-comment-pushing.txt (+42/-24)
lib/lp/bugs/doc/externalbugtracker-debbugs.txt (+43/-25)
lib/lp/bugs/doc/externalbugtracker-linking-back.txt (+38/-10)
lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt (+13/-11)
lib/lp/bugs/doc/externalbugtracker-mantis.txt (+6/-4)
lib/lp/bugs/doc/externalbugtracker-roundup.txt (+4/-2)
lib/lp/bugs/doc/externalbugtracker-rt.txt (+4/-2)
lib/lp/bugs/doc/externalbugtracker-sourceforge.txt (+6/-2)
lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt (+27/-15)
lib/lp/bugs/doc/externalbugtracker-trac.txt (+40/-7)
lib/lp/bugs/doc/externalbugtracker.txt (+71/-82)
lib/lp/bugs/doc/filebug-data-parser.txt (+3/-3)
lib/lp/bugs/doc/hasbugs.txt (+26/-0)
lib/lp/bugs/doc/malone-karma.txt (+33/-2)
lib/lp/bugs/doc/malone-xmlrpc.txt (+2/-2)
lib/lp/bugs/doc/memory-debug.txt (+0/-185)
lib/lp/bugs/doc/official-bug-tags.txt (+6/-6)
lib/lp/bugs/externalbugtracker/__init__.py (+4/-1)
lib/lp/bugs/externalbugtracker/base.py (+14/-3)
lib/lp/bugs/externalbugtracker/bugzilla.py (+118/-119)
lib/lp/bugs/externalbugtracker/debbugs.py (+22/-16)
lib/lp/bugs/externalbugtracker/isolation.py (+65/-0)
lib/lp/bugs/externalbugtracker/mantis.py (+34/-8)
lib/lp/bugs/externalbugtracker/rt.py (+2/-0)
lib/lp/bugs/externalbugtracker/tests/test_externalbugtracker.py (+92/-0)
lib/lp/bugs/externalbugtracker/tests/test_isolation.py (+99/-0)
lib/lp/bugs/externalbugtracker/trac.py (+46/-20)
lib/lp/bugs/externalbugtracker/xmlrpc.py (+11/-12)
lib/lp/bugs/feed/bug.py (+2/-2)
lib/lp/bugs/help/bug-heat.html (+191/-0)
lib/lp/bugs/help/tag-help.html (+30/-0)
lib/lp/bugs/help/tag-search.html (+5/-5)
lib/lp/bugs/interfaces/apportjob.py (+74/-0)
lib/lp/bugs/interfaces/bug.py (+168/-33)
lib/lp/bugs/interfaces/bugattachment.py (+17/-1)
lib/lp/bugs/interfaces/bugjob.py (+67/-0)
lib/lp/bugs/interfaces/bugmessage.py (+5/-2)
lib/lp/bugs/interfaces/bugnomination.py (+4/-4)
lib/lp/bugs/interfaces/bugsubscription.py (+5/-4)
lib/lp/bugs/interfaces/bugsupervisor.py (+2/-3)
lib/lp/bugs/interfaces/bugtarget.py (+60/-34)
lib/lp/bugs/interfaces/bugtask.py (+68/-11)
lib/lp/bugs/interfaces/bugtracker.py (+48/-18)
lib/lp/bugs/interfaces/bugwatch.py (+135/-5)
lib/lp/bugs/interfaces/cve.py (+6/-0)
lib/lp/bugs/interfaces/externalbugtracker.py (+50/-20)
lib/lp/bugs/model/apportjob.py (+263/-0)
lib/lp/bugs/model/bug.py (+303/-44)
lib/lp/bugs/model/bugattachment.py (+16/-0)
lib/lp/bugs/model/bugheat.py (+54/-0)
lib/lp/bugs/model/bugjob.py (+137/-0)
lib/lp/bugs/model/bugnotification.py (+2/-0)
lib/lp/bugs/model/bugsubscription.py (+3/-0)
lib/lp/bugs/model/bugtarget.py (+118/-7)
lib/lp/bugs/model/bugtask.py (+169/-58)
lib/lp/bugs/model/bugtracker.py (+49/-45)
lib/lp/bugs/model/bugwatch.py (+201/-42)
lib/lp/bugs/scripts/bugexpire.py (+3/-3)
lib/lp/bugs/scripts/bugheat.py (+108/-0)
lib/lp/bugs/scripts/bugimport.py (+1/-1)
lib/lp/bugs/scripts/bugnotification.py (+12/-0)
lib/lp/bugs/scripts/bugzilla.py (+1/-1)
lib/lp/bugs/scripts/checkwatches/__init__.py (+10/-0)
lib/lp/bugs/scripts/checkwatches/base.py (+264/-0)
lib/lp/bugs/scripts/checkwatches/bugwatchupdater.py (+284/-0)
lib/lp/bugs/scripts/checkwatches/core.py (+594/-731)
lib/lp/bugs/scripts/checkwatches/scheduler.py (+92/-0)
lib/lp/bugs/scripts/checkwatches/tests/test_base.py (+178/-0)
lib/lp/bugs/scripts/checkwatches/tests/test_core.py (+441/-0)
lib/lp/bugs/scripts/checkwatches/tests/test_scheduler.py (+110/-0)
lib/lp/bugs/scripts/importdebianbugs.py (+2/-2)
lib/lp/bugs/scripts/tests/test_bugheat.py (+256/-0)
lib/lp/bugs/scripts/tests/test_bugimport.py (+36/-17)
lib/lp/bugs/scripts/tests/test_bugnotification.py (+1/-2)
lib/lp/bugs/stories/bug-also-affects/xx-also-affects-upstream-default-values.txt (+3/-2)
lib/lp/bugs/stories/bug-also-affects/xx-upstream-bugtracker-links.txt (+4/-2)
lib/lp/bugs/stories/bug-privacy/05-set-bug-private-as-admin.txt (+6/-3)
lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt (+48/-2)
lib/lp/bugs/stories/bug-tags/xx-tags-on-bug-page.txt (+3/-3)
lib/lp/bugs/stories/bugattachments/10-add-bug-attachment.txt (+185/-0)
lib/lp/bugs/stories/bugattachments/20-edit-bug-attachment.txt (+86/-30)
lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt (+20/-0)
lib/lp/bugs/stories/bugattachments/xx-delete-bug-attachment.txt (+7/-3)
lib/lp/bugs/stories/bugs/bug-add-subscriber.txt (+22/-2)
lib/lp/bugs/stories/bugs/xx-bug-activity.txt (+32/-2)
lib/lp/bugs/stories/bugs/xx-bug-affects-me-too.txt (+26/-11)
lib/lp/bugs/stories/bugs/xx-bug-comments-truncated.txt (+1/-1)
lib/lp/bugs/stories/bugs/xx-bug-create-question.txt (+5/-9)
lib/lp/bugs/stories/bugs/xx-bug-edit.txt (+14/-4)
lib/lp/bugs/stories/bugs/xx-bug-heat-on-bug-page.txt (+35/-0)
lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt (+37/-6)
lib/lp/bugs/stories/bugs/xx-bug-index.txt (+3/-3)
lib/lp/bugs/stories/bugs/xx-bug-personal-subscriptions.txt (+35/-16)
lib/lp/bugs/stories/bugs/xx-bugtarget-bugs-page.txt (+1/-1)
lib/lp/bugs/stories/bugs/xx-front-page-bug-lists.txt (+97/-8)
lib/lp/bugs/stories/bugs/xx-front-page-info.txt (+112/-0)
lib/lp/bugs/stories/bugs/xx-front-page-search.txt (+1/-1)
lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt (+1/-1)
lib/lp/bugs/stories/bugs/xx-link-bug-to-branch.txt (+2/-13)
lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt (+2/-18)
lib/lp/bugs/stories/bugs/xx-product-bugs-page.txt (+72/-40)
lib/lp/bugs/stories/bugs/xx-project-bugs-page.txt (+3/-3)
lib/lp/bugs/stories/bugs/xx-remote-bug-comments.txt (+2/-0)
lib/lp/bugs/stories/bugtask-management/xx-bugtask-edit-forms.txt (+55/-0)
lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt (+2/-2)
lib/lp/bugs/stories/bugtask-searches/xx-advanced-upstream-pending-bugwatch.txt (+1/-35)
lib/lp/bugs/stories/bugtask-searches/xx-filter-by-linked-branches.txt (+64/-0)
lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt (+50/-2)
lib/lp/bugs/stories/bugtask-searches/xx-searching-by-tags.txt (+28/-3)
lib/lp/bugs/stories/bugtracker/bugtrackers-index.txt (+2/-1)
lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt (+1/-1)
lib/lp/bugs/stories/bugtracker/xx-bugtracker-remote-bug.txt (+6/-5)
lib/lp/bugs/stories/bugtracker/xx-bugtracker.txt (+37/-13)
lib/lp/bugs/stories/bugwatches/xx-bugwatch-comments.txt (+1/-1)
lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt (+27/-5)
lib/lp/bugs/stories/bugwatches/xx-edit-bugwatch.txt (+165/-1)
lib/lp/bugs/stories/cve/cve-linking.txt (+15/-16)
lib/lp/bugs/stories/distribution/xx-distribution-bug-statistics-portlet-authenticated.txt (+0/-19)
lib/lp/bugs/stories/distribution/xx-distribution-bug-statistics-portlet-unauthenticated.txt (+0/-16)
lib/lp/bugs/stories/distribution/xx-distribution-upstream-bug-report.txt (+39/-22)
lib/lp/bugs/stories/duplicate-bug-handling/10-mark-bug-as-duplicate.txt (+1/-0)
lib/lp/bugs/stories/duplicate-bug-handling/20-show-bug-is-duplicate.txt (+1/-1)
lib/lp/bugs/stories/feeds/xx-bug-atom.txt (+4/-5)
lib/lp/bugs/stories/feeds/xx-bug-html.txt (+4/-5)
lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt (+11/-45)
lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-tools.txt (+37/-0)
lib/lp/bugs/stories/guided-filebug/xx-displaying-similar-bugs.txt (+1/-1)
lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug-tags.txt (+1/-1)
lib/lp/bugs/stories/guided-filebug/xx-filebug-tags.txt (+1/-2)
lib/lp/bugs/stories/guided-filebug/xx-filing-security-bugs.txt (+0/-30)
lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-distribution.txt (+0/-109)
lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-package.txt (+0/-77)
lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-product.txt (+0/-123)
lib/lp/bugs/stories/guided-filebug/xx-no-launchpadder.txt (+2/-1)
lib/lp/bugs/stories/guided-filebug/xx-project-guided-filebug.txt (+18/-6)
lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt (+20/-11)
lib/lp/bugs/stories/initial-bug-contacts/05-set-distribution-bugcontact.txt (+76/-28)
lib/lp/bugs/stories/initial-bug-contacts/10-set-upstream-bugcontact.txt (+109/-15)
lib/lp/bugs/stories/initial-bug-contacts/20-file-upstream-bug.txt (+5/-4)
lib/lp/bugs/stories/initial-bug-contacts/25-file-distribution-bug.txt (+3/-2)
lib/lp/bugs/stories/patches-view/patches-view.txt (+536/-0)
lib/lp/bugs/stories/structural-subscriptions/xx-bug-subscriptions.txt (+17/-0)
lib/lp/bugs/stories/upstream-bugprivacy/10-file-private-upstream-bug.txt (+5/-8)
lib/lp/bugs/stories/webservice/xx-bug-tracker.txt (+77/-0)
lib/lp/bugs/stories/webservice/xx-bug.txt (+185/-50)
lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt (+412/-0)
lib/lp/bugs/subscribers/bug.py (+7/-6)
lib/lp/bugs/subscribers/bugactivity.py (+12/-9)
lib/lp/bugs/subscribers/buglastupdated.py (+3/-1)
lib/lp/bugs/templates/bug-attachment-confirm-is-patch.pt (+40/-0)
lib/lp/bugs/templates/bug-attachment-edit.pt (+5/-0)
lib/lp/bugs/templates/bug-branch.pt (+33/-0)
lib/lp/bugs/templates/bug-comment-add-form.pt (+3/-1)
lib/lp/bugs/templates/bug-listing-detailed.pt (+1/-1)
lib/lp/bugs/templates/bug-portlet-actions.pt (+1/-1)
lib/lp/bugs/templates/bug-portlet-attachments.pt (+46/-22)
lib/lp/bugs/templates/bug-portlet-dupe-subscribers-content.pt (+27/-0)
lib/lp/bugs/templates/bug-portlet-specs.pt (+1/-1)
lib/lp/bugs/templates/bug-portlet-subscribers-content.pt (+12/-20)
lib/lp/bugs/templates/bug-portlet-subscribers.pt (+22/-49)
lib/lp/bugs/templates/bugcomment-box.pt (+12/-1)
lib/lp/bugs/templates/buglinktarget-portlet-bugs.pt (+11/-18)
lib/lp/bugs/templates/buglisting-embedded-advanced-search.pt (+0/-1)
lib/lp/bugs/templates/bugtarget-bugs.pt (+138/-175)
lib/lp/bugs/templates/bugtarget-filebug-inline-form.pt (+11/-0)
lib/lp/bugs/templates/bugtarget-filebug-search.pt (+112/-34)
lib/lp/bugs/templates/bugtarget-filebug-show-similar.pt (+7/-2)
lib/lp/bugs/templates/bugtarget-filebug-submit-bug.pt (+6/-4)
lib/lp/bugs/templates/bugtarget-macros-filebug.pt (+67/-22)
lib/lp/bugs/templates/bugtarget-macros-search.pt (+4/-0)
lib/lp/bugs/templates/bugtarget-patches.pt (+115/-0)
lib/lp/bugs/templates/bugtarget-portlet-bugfilters-content.pt (+134/-41)
lib/lp/bugs/templates/bugtarget-portlet-bugfilters.pt (+47/-28)
lib/lp/bugs/templates/bugtarget-portlet-bugtags.pt (+5/-5)
lib/lp/bugs/templates/bugtask-edit.pt (+0/-9)
lib/lp/bugs/templates/bugtask-index.pt (+55/-30)
lib/lp/bugs/templates/bugtask-macros-listing.pt (+39/-28)
lib/lp/bugs/templates/bugtask-macros-tableview.pt (+101/-69)
lib/lp/bugs/templates/bugtask-tasks-and-nominations-table-row.pt (+27/-14)
lib/lp/bugs/templates/bugtask-view.pt (+0/-18)
lib/lp/bugs/templates/bugtasks-and-nominations-table.pt (+63/-48)
lib/lp/bugs/templates/bugtracker-portlet-watches.pt (+14/-0)
lib/lp/bugs/templates/bugwatch-editform.pt (+4/-0)
lib/lp/bugs/templates/bugwatch-portlet-activity.pt (+44/-0)
lib/lp/bugs/templates/bugwatch-portlet-details.pt (+21/-7)
lib/lp/bugs/templates/cve-index.pt (+9/-11)
lib/lp/bugs/templates/cve-portlet-bugs2.pt (+1/-1)
lib/lp/bugs/templates/cveset-all.pt (+0/-4)
lib/lp/bugs/templates/distribution-cvereport.pt (+7/-7)
lib/lp/bugs/templates/distribution-upstream-bug-report.pt (+21/-1)
lib/lp/bugs/templates/malone-index.pt (+1/-1)
lib/lp/bugs/templates/malone-portlet-stats.pt (+1/-1)
lib/lp/bugs/templates/official-bug-target-manage-tags.pt (+2/-6)
lib/lp/bugs/templates/person-packagebugs-search.pt (+0/-16)
lib/lp/bugs/tests/bug.py (+73/-12)
lib/lp/bugs/tests/bugs-emailinterface.txt (+22/-6)
lib/lp/bugs/tests/bugtarget-bugcount.txt (+2/-0)
lib/lp/bugs/tests/bugzilla-api-xmlrpc-transport.txt (+96/-39)
lib/lp/bugs/tests/bugzilla-xmlrpc-transport.txt (+28/-35)
lib/lp/bugs/tests/externalbugtracker-xmlrpc-transport.txt (+17/-20)
lib/lp/bugs/tests/externalbugtracker.py (+111/-56)
lib/lp/bugs/tests/test_apportjob.py (+427/-0)
lib/lp/bugs/tests/test_bug_messages.py (+44/-0)
lib/lp/bugs/tests/test_bugchanges.py (+6/-5)
lib/lp/bugs/tests/test_bugcontact.py (+5/-4)
lib/lp/bugs/tests/test_bugheat.py (+300/-0)
lib/lp/bugs/tests/test_bugjob.py (+55/-0)
lib/lp/bugs/tests/test_bugnotification.py (+68/-4)
lib/lp/bugs/tests/test_bugs_webservice.py (+80/-11)
lib/lp/bugs/tests/test_bugtarget.py (+7/-6)
lib/lp/bugs/tests/test_bugtask.py (+1/-1)
lib/lp/bugs/tests/test_bugtask_1.py (+3/-3)
lib/lp/bugs/tests/test_bugtask_status.txt (+52/-4)
lib/lp/bugs/tests/test_bugtracker.py (+162/-7)
lib/lp/bugs/tests/test_bugwatch.py (+373/-49)
lib/lp/bugs/tests/test_doc.py (+12/-0)
lib/lp/bugs/utilities/filebugdataparser.py (+168/-0)
lib/lp/bugs/windmill/tests/test_bug_also_affects_new_upstream.py (+44/-37)
lib/lp/bugs/windmill/tests/test_bug_commenting.py (+4/-5)
lib/lp/bugs/windmill/tests/test_bug_inline_subscriber.py (+235/-248)
lib/lp/bugs/windmill/tests/test_bug_me_too.py (+90/-94)
lib/lp/bugs/windmill/tests/test_bug_privacy_settings.py (+156/-128)
lib/lp/bugs/windmill/tests/test_bug_tags_entry.py (+77/-0)
lib/lp/bugs/windmill/tests/test_bugs/__init__.py (+0/-85)
lib/lp/bugs/windmill/tests/test_bugs/test_bug_tags_entry.py (+0/-80)
lib/lp/bugs/windmill/tests/test_filebug_dupe_finder.py (+97/-99)
lib/lp/bugs/windmill/tests/test_filebug_extra_options.py (+58/-58)
lib/lp/bugs/windmill/tests/test_mark_duplicate.py (+114/-92)
lib/lp/bugs/windmill/tests/test_official_bug_tags_management.py (+202/-161)
lib/lp/buildmaster/buildergroup.py (+0/-537)
lib/lp/buildmaster/configure.zcml (+67/-0)
lib/lp/buildmaster/doc/builder.txt (+175/-145)
lib/lp/buildmaster/doc/buildfarmjob.txt (+43/-0)
lib/lp/buildmaster/doc/buildfarmjobbehavior.txt (+121/-0)
lib/lp/buildmaster/doc/buildqueue.txt (+37/-47)
lib/lp/buildmaster/interfaces/buildbase.py (+264/-0)
lib/lp/buildmaster/interfaces/builder.py (+65/-62)
lib/lp/buildmaster/interfaces/buildfarmbranchjob.py (+20/-0)
lib/lp/buildmaster/interfaces/buildfarmjob.py (+153/-0)
lib/lp/buildmaster/interfaces/buildfarmjobbehavior.py (+76/-0)
lib/lp/buildmaster/interfaces/buildqueue.py (+74/-92)
lib/lp/buildmaster/manager.py (+57/-41)
lib/lp/buildmaster/master.py (+0/-317)
lib/lp/buildmaster/model/buildbase.py (+381/-0)
lib/lp/buildmaster/model/builder.py (+395/-389)
lib/lp/buildmaster/model/buildfarmjob.py (+135/-0)
lib/lp/buildmaster/model/buildfarmjobbehavior.py (+218/-0)
lib/lp/buildmaster/model/buildqueue.py (+438/-266)
lib/lp/buildmaster/model/packagebuildfarmjob.py (+58/-0)
lib/lp/buildmaster/tests/harness.py (+3/-3)
lib/lp/buildmaster/tests/test_buildbase.py (+163/-0)
lib/lp/buildmaster/tests/test_builder.py (+346/-0)
lib/lp/buildmaster/tests/test_buildfarmjobbehavior.py (+150/-0)
lib/lp/buildmaster/tests/test_buildmaster_documentation.py (+30/-10)
lib/lp/buildmaster/tests/test_buildqueue.py (+1340/-0)
lib/lp/buildmaster/tests/test_manager.py (+142/-47)
lib/lp/code/adapters/branch.py (+1/-1)
lib/lp/code/adapters/tests/test_branch.py (+2/-0)
lib/lp/code/browser/bazaar.py (+3/-1)
lib/lp/code/browser/branch.py (+170/-85)
lib/lp/code/browser/branchlisting.py (+49/-45)
lib/lp/code/browser/branchmergeproposal.py (+323/-75)
lib/lp/code/browser/branchmergeproposallisting.py (+33/-1)
lib/lp/code/browser/branchsubscription.py (+6/-29)
lib/lp/code/browser/codeimport.py (+200/-113)
lib/lp/code/browser/codeimportmachine.py (+9/-0)
lib/lp/code/browser/codereviewcomment.py (+52/-41)
lib/lp/code/browser/codereviewvote.py (+11/-3)
lib/lp/code/browser/configure.zcml (+150/-28)
lib/lp/code/browser/diff.py (+95/-0)
lib/lp/code/browser/sourcepackagerecipe.py (+406/-0)
lib/lp/code/browser/sourcepackagerecipelisting.py (+73/-0)
lib/lp/code/browser/summary.py (+1/-1)
lib/lp/code/browser/tests/test_branch.py (+62/-1)
lib/lp/code/browser/tests/test_branchlisting.py (+50/-2)
lib/lp/code/browser/tests/test_branchmergeproposal.py (+262/-56)
lib/lp/code/browser/tests/test_branchmergeproposallisting.py (+53/-1)
lib/lp/code/browser/tests/test_breadcrumbs.py (+25/-0)
lib/lp/code/browser/tests/test_codeimport.py (+60/-0)
lib/lp/code/browser/tests/test_codereviewcomment.py (+1/-60)
lib/lp/code/browser/tests/test_diff.py (+41/-0)
lib/lp/code/browser/tests/test_sourcepackagerecipe.py (+394/-0)
lib/lp/code/browser/tests/test_tales.py (+175/-0)
lib/lp/code/bzr.py (+32/-63)
lib/lp/code/configure.zcml (+235/-57)
lib/lp/code/doc/branch-karma.txt (+2/-1)
lib/lp/code/doc/branch-merge-proposal-notifications.txt (+13/-11)
lib/lp/code/doc/branch-merge-proposals.txt (+4/-5)
lib/lp/code/doc/branch-notifications.txt (+20/-22)
lib/lp/code/doc/branch-visibility-policy.txt (+4/-4)
lib/lp/code/doc/branch-visibility.txt (+6/-6)
lib/lp/code/doc/branch-xmlrpc.txt (+2/-2)
lib/lp/code/doc/branch.txt (+5/-3)
lib/lp/code/doc/codeimport-event.txt (+31/-77)
lib/lp/code/doc/codeimport.txt (+238/-93)
lib/lp/code/doc/codereviewcomment.txt (+20/-8)
lib/lp/code/doc/xmlrpc-branch-filesystem.txt (+0/-31)
lib/lp/code/doc/xmlrpc-branch-puller.txt (+0/-46)
lib/lp/code/doc/xmlrpc-codehosting.txt (+32/-0)
lib/lp/code/doc/xmlrpc-codeimport-scheduler.txt (+5/-8)
lib/lp/code/enums.py (+36/-1)
lib/lp/code/errors.py (+93/-0)
lib/lp/code/event/branchmergeproposal.py (+1/-1)
lib/lp/code/feed/branch.py (+3/-3)
lib/lp/code/help/register-branch.html (+5/-5)
lib/lp/code/interfaces/branch.py (+249/-92)
lib/lp/code/interfaces/branchjob.py (+37/-13)
lib/lp/code/interfaces/branchlookup.py (+19/-0)
lib/lp/code/interfaces/branchmergeproposal.py (+111/-66)
lib/lp/code/interfaces/branchpuller.py (+3/-7)
lib/lp/code/interfaces/branchscanner.py (+0/-18)
lib/lp/code/interfaces/branchtarget.py (+28/-3)
lib/lp/code/interfaces/branchvisibilitypolicy.py (+1/-1)
lib/lp/code/interfaces/codehosting.py (+32/-75)
lib/lp/code/interfaces/codeimport.py (+97/-94)
lib/lp/code/interfaces/codeimportjob.py (+13/-4)
lib/lp/code/interfaces/codeimportmachine.py (+1/-1)
lib/lp/code/interfaces/codeimportscheduler.py (+27/-1)
lib/lp/code/interfaces/codereviewcomment.py (+18/-1)
lib/lp/code/interfaces/codereviewvote.py (+83/-13)
lib/lp/code/interfaces/diff.py (+7/-0)
lib/lp/code/interfaces/event.py (+36/-0)
lib/lp/code/interfaces/hasbranches.py (+87/-6)
lib/lp/code/interfaces/hasrecipes.py (+19/-0)
lib/lp/code/interfaces/linkedbranch.py (+6/-0)
lib/lp/code/interfaces/revision.py (+3/-3)
lib/lp/code/interfaces/sourcepackagerecipe.py (+187/-0)
lib/lp/code/interfaces/sourcepackagerecipebuild.py (+101/-0)
lib/lp/code/interfaces/tests/test_branch.py (+1/-45)
lib/lp/code/interfaces/webservice.py (+11/-1)
lib/lp/code/javascript/branch.bugspeclinks.js (+27/-29)
lib/lp/code/javascript/branch.status.js (+49/-0)
lib/lp/code/javascript/branch.subscription.js (+219/-0)
lib/lp/code/javascript/branchmergeproposal.diff.js (+134/-0)
lib/lp/code/javascript/branchmergeproposal.reviewcomment.js (+175/-19)
lib/lp/code/javascript/branchmergeproposal.status.js (+130/-0)
lib/lp/code/javascript/productseries-setbranch.js (+88/-0)
lib/lp/code/javascript/tests/test_productseries-setbranch.html (+213/-0)
lib/lp/code/javascript/tests/test_productseries_setbranch.js (+249/-0)
lib/lp/code/mail/branch.py (+25/-34)
lib/lp/code/mail/branchmergeproposal.py (+56/-83)
lib/lp/code/mail/codehandler.py (+80/-76)
lib/lp/code/mail/codeimport.py (+31/-17)
lib/lp/code/mail/codereviewcomment.py (+22/-11)
lib/lp/code/mail/tests/test_branch.py (+51/-5)
lib/lp/code/mail/tests/test_branchmergeproposal.py (+188/-82)
lib/lp/code/mail/tests/test_codehandler.py (+201/-116)
lib/lp/code/mail/tests/test_codeimport.py (+144/-0)
lib/lp/code/mail/tests/test_codereviewcomment.py (+22/-4)
lib/lp/code/model/branch.py (+180/-87)
lib/lp/code/model/branchjob.py (+169/-110)
lib/lp/code/model/branchlookup.py (+34/-10)
lib/lp/code/model/branchmergeproposal.py (+78/-41)
lib/lp/code/model/branchmergeproposaljob.py (+438/-77)
lib/lp/code/model/branchnamespace.py (+4/-5)
lib/lp/code/model/branchpuller.py (+5/-25)
lib/lp/code/model/branchscanner.py (+0/-40)
lib/lp/code/model/branchtarget.py (+48/-7)
lib/lp/code/model/branchvisibilitypolicy.py (+4/-4)
lib/lp/code/model/codeimport.py (+74/-106)
lib/lp/code/model/codeimportevent.py (+5/-4)
lib/lp/code/model/codeimportjob.py (+35/-23)
lib/lp/code/model/codeimportmachine.py (+2/-3)
lib/lp/code/model/codereviewcomment.py (+56/-0)
lib/lp/code/model/codereviewvote.py (+58/-0)
lib/lp/code/model/diff.py (+100/-36)
lib/lp/code/model/directbranchcommit.py (+29/-28)
lib/lp/code/model/hasbranches.py (+36/-2)
lib/lp/code/model/linkedbranch.py (+124/-25)
lib/lp/code/model/recipebuilder.py (+184/-0)
lib/lp/code/model/revision.py (+34/-24)
lib/lp/code/model/sourcepackagerecipe.py (+179/-0)
lib/lp/code/model/sourcepackagerecipebuild.py (+234/-0)
lib/lp/code/model/sourcepackagerecipedata.py (+260/-0)
lib/lp/code/model/tests/test_branch.py (+642/-147)
lib/lp/code/model/tests/test_branchcloud.py (+4/-3)
lib/lp/code/model/tests/test_branchcollection.py (+36/-0)
lib/lp/code/model/tests/test_branchjob.py (+185/-170)
lib/lp/code/model/tests/test_branchlookup.py (+58/-2)
lib/lp/code/model/tests/test_branchmergeproposaljobs.py (+446/-0)
lib/lp/code/model/tests/test_branchmergeproposals.py (+188/-264)
lib/lp/code/model/tests/test_branchpuller.py (+61/-109)
lib/lp/code/model/tests/test_branchscanner.py (+0/-100)
lib/lp/code/model/tests/test_branchset.py (+20/-10)
lib/lp/code/model/tests/test_branchtarget.py (+69/-7)
lib/lp/code/model/tests/test_codeimport.py (+201/-235)
lib/lp/code/model/tests/test_codeimportjob.py (+51/-41)
lib/lp/code/model/tests/test_codeimportmachine.py (+9/-11)
lib/lp/code/model/tests/test_codereviewcomment.py (+59/-4)
lib/lp/code/model/tests/test_codereviewkarma.py (+2/-1)
lib/lp/code/model/tests/test_codereviewvote.py (+238/-9)
lib/lp/code/model/tests/test_diff.py (+149/-11)
lib/lp/code/model/tests/test_hasbranches.py (+1/-1)
lib/lp/code/model/tests/test_hasmergeproposals.py (+1/-1)
lib/lp/code/model/tests/test_hasrecipes.py (+77/-0)
lib/lp/code/model/tests/test_linkedbranch.py (+145/-1)
lib/lp/code/model/tests/test_revision.py (+58/-13)
lib/lp/code/model/tests/test_revisionauthor.py (+3/-0)
lib/lp/code/model/tests/test_sourcepackagerecipe.py (+581/-0)
lib/lp/code/model/tests/test_sourcepackagerecipe.py.moved (+40/-0)
lib/lp/code/scripts/revisionkarma.py (+13/-6)
lib/lp/code/scripts/tests/test_create_merge_proposals.py (+8/-14)
lib/lp/code/scripts/tests/test_merge_proposal_jobs.py (+10/-47)
lib/lp/code/scripts/tests/test_reclaim_branch_space.py (+3/-4)
lib/lp/code/scripts/tests/test_scan_branches.py (+78/-0)
lib/lp/code/scripts/tests/test_sendbranchmail.py (+17/-12)
lib/lp/code/scripts/tests/test_update_preview_diffs.py (+0/-48)
lib/lp/code/scripts/tests/test_upgrade_branches.py (+75/-0)
lib/lp/code/stories/branches/xx-bazaar-home.txt (+1/-1)
lib/lp/code/stories/branches/xx-branch-deletion.txt (+1/-1)
lib/lp/code/stories/branches/xx-branch-edit-privacy.txt (+35/-8)
lib/lp/code/stories/branches/xx-branch-edit.txt (+7/-5)
lib/lp/code/stories/branches/xx-branch-index.txt (+2/-1)
lib/lp/code/stories/branches/xx-branch-listings.txt (+1/-4)
lib/lp/code/stories/branches/xx-branch-mirror-failures.txt (+3/-1)
lib/lp/code/stories/branches/xx-branch-tag-cloud.txt (+7/-5)
lib/lp/code/stories/branches/xx-branchmergeproposal-listings.txt (+59/-10)
lib/lp/code/stories/branches/xx-branchmergeproposals.txt (+167/-71)
lib/lp/code/stories/branches/xx-bug-branch-links.txt (+39/-13)
lib/lp/code/stories/branches/xx-claiming-team-code-reviews.txt (+2/-1)
lib/lp/code/stories/branches/xx-code-review-comments.txt (+70/-3)
lib/lp/code/stories/branches/xx-creating-branches.txt (+28/-0)
lib/lp/code/stories/branches/xx-junk-branches.txt (+11/-2)
lib/lp/code/stories/branches/xx-nearby-branches.txt (+25/-0)
lib/lp/code/stories/branches/xx-person-branches.txt (+0/-1)
lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt (+29/-20)
lib/lp/code/stories/branches/xx-private-branch-listings.txt (+1/-1)
lib/lp/code/stories/branches/xx-product-branches.txt (+14/-10)
lib/lp/code/stories/branches/xx-project-branches.txt (+2/-2)
lib/lp/code/stories/branches/xx-propose-for-merging.txt (+61/-0)
lib/lp/code/stories/branches/xx-register-a-branch.txt (+4/-10)
lib/lp/code/stories/branches/xx-reviewing.txt (+39/-0)
lib/lp/code/stories/branches/xx-source-package-branches-listing.txt (+3/-0)
lib/lp/code/stories/branches/xx-subscribing-branches.txt (+129/-3)
lib/lp/code/stories/branches/xx-upgrading-branches.txt (+49/-0)
lib/lp/code/stories/codeimport/xx-admin-codeimport.txt (+357/-0)
lib/lp/code/stories/codeimport/xx-codeimport-list.txt (+0/-62)
lib/lp/code/stories/codeimport/xx-codeimport-machines.txt (+7/-7)
lib/lp/code/stories/codeimport/xx-codeimport-results.txt (+22/-14)
lib/lp/code/stories/codeimport/xx-codeimport-view.txt (+37/-19)
lib/lp/code/stories/codeimport/xx-create-codeimport.txt (+145/-30)
lib/lp/code/stories/codeimport/xx-edit-codeimport.txt (+45/-209)
lib/lp/code/stories/codeimport/xx-failing-codeimport.txt (+5/-4)
lib/lp/code/stories/feeds/xx-revision-atom.txt (+1/-1)
lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt (+140/-0)
lib/lp/code/stories/webservice/xx-branch.txt (+68/-5)
lib/lp/code/stories/webservice/xx-branchmergeproposal.txt (+197/-37)
lib/lp/code/stories/webservice/xx-code-import.txt (+253/-0)
lib/lp/code/subscribers/branchmergeproposal.py (+55/-0)
lib/lp/code/templates/active-reviews.pt (+6/-0)
lib/lp/code/templates/bazaar-index.pt (+11/-8)
lib/lp/code/templates/branch-delete.pt (+1/-1)
lib/lp/code/templates/branch-import-details.pt (+33/-13)
lib/lp/code/templates/branch-index.pt (+34/-17)
lib/lp/code/templates/branch-information.pt (+9/-4)
lib/lp/code/templates/branch-listing.pt (+5/-173)
lib/lp/code/templates/branch-macros.pt (+29/-31)
lib/lp/code/templates/branch-messages.pt (+6/-0)
lib/lp/code/templates/branch-metadata.pt (+11/-2)
lib/lp/code/templates/branch-pending-merges.pt (+3/-4)
lib/lp/code/templates/branch-portlet-subscribers-content.pt (+5/-4)
lib/lp/code/templates/branch-portlet-subscribers.pt (+7/-34)
lib/lp/code/templates/branch-register-merge.pt (+60/-0)
lib/lp/code/templates/branch-related-bugs-specs.pt (+2/-2)
lib/lp/code/templates/branchmergeproposal-diff.pt (+33/-0)
lib/lp/code/templates/branchmergeproposal-generic-listing.pt (+3/-3)
lib/lp/code/templates/branchmergeproposal-index.pt (+148/-45)
lib/lp/code/templates/branchmergeproposal-link-summary.pt (+2/-1)
lib/lp/code/templates/branchmergeproposal-macros.pt (+5/-1)
lib/lp/code/templates/branchmergeproposal-pagelet-summary.pt (+43/-33)
lib/lp/code/templates/branchmergeproposal-resubmit.pt (+3/-2)
lib/lp/code/templates/branchmergeproposal-summary-fragment.pt (+11/-0)
lib/lp/code/templates/branchmergeproposal-vote-summary.pt (+52/-0)
lib/lp/code/templates/codeimport-list.pt (+24/-4)
lib/lp/code/templates/codeimport-macros.pt (+2/-4)
lib/lp/code/templates/codeimport-new.pt (+23/-2)
lib/lp/code/templates/codereviewcomment-body.pt (+2/-5)
lib/lp/code/templates/codereviewcomment-fragment.pt (+2/-0)
lib/lp/code/templates/codereviewcomment-header.pt (+5/-1)
lib/lp/code/templates/codereviewnewrevisions-footer.pt (+11/-0)
lib/lp/code/templates/codereviewnewrevisions-header.pt (+10/-0)
lib/lp/code/templates/person-portlet-teambranches.pt (+3/-4)
lib/lp/code/templates/product-branch-summary.pt (+2/-2)
lib/lp/code/templates/sourcepackagerecipe-index.pt (+109/-0)
lib/lp/code/templates/sourcepackagerecipe-listing.pt (+55/-0)
lib/lp/code/templates/sourcepackagerecipe-request-builds.pt (+27/-0)
lib/lp/code/templates/sources-list.pt (+2/-2)
lib/lp/code/tests/helpers.py (+89/-10)
lib/lp/code/tests/test_branch.py (+273/-33)
lib/lp/code/tests/test_branchmergeproposal.py (+76/-0)
lib/lp/code/tests/test_directbranchcommit.py (+4/-23)
lib/lp/code/tests/test_doc.py (+2/-3)
lib/lp/code/tests/test_recipebuilder.py (+220/-0)
lib/lp/code/tests/test_sourcepackagerecipebuild.py (+125/-0)
lib/lp/code/windmill/test_branch_sparks.py (+0/-29)
lib/lp/code/windmill/tests/test_branch_bugspeclinks.py (+33/-32)
lib/lp/code/windmill/tests/test_branch_popupdiff.py (+143/-0)
lib/lp/code/windmill/tests/test_branch_status.py (+70/-0)
lib/lp/code/windmill/tests/test_branch_subscriptions.py (+78/-68)
lib/lp/code/windmill/tests/test_branchmergeproposal_commitmessage.py (+126/-0)
lib/lp/code/windmill/tests/test_branchmergeproposal_review.py (+116/-28)
lib/lp/code/windmill/tests/test_productseries_setbranch.py (+58/-0)
lib/lp/code/windmill/tests/test_yuitests.py (+21/-0)
lib/lp/code/xmlrpc/branch.py (+13/-20)
lib/lp/code/xmlrpc/codehosting.py (+121/-184)
lib/lp/code/xmlrpc/codeimportscheduler.py (+69/-7)
lib/lp/code/xmlrpc/tests/test_branch.py (+76/-8)
lib/lp/code/xmlrpc/tests/test_codehosting.py (+275/-489)
lib/lp/code/xmlrpc/tests/test_codeimportscheduler.py (+140/-0)
lib/lp/codehosting/__init__.py (+17/-5)
lib/lp/codehosting/branchdistro.py (+351/-0)
lib/lp/codehosting/bzrutils.py (+77/-29)
lib/lp/codehosting/codeimport/dispatcher.py (+33/-6)
lib/lp/codehosting/codeimport/tests/servers.py (+68/-22)
lib/lp/codehosting/codeimport/tests/test_dispatcher.py (+83/-50)
lib/lp/codehosting/codeimport/tests/test_foreigntree.py (+4/-4)
lib/lp/codehosting/codeimport/tests/test_worker.py (+402/-123)
lib/lp/codehosting/codeimport/tests/test_workermonitor.py (+365/-200)
lib/lp/codehosting/codeimport/worker.py (+281/-107)
lib/lp/codehosting/codeimport/workermonitor.py (+78/-123)
lib/lp/codehosting/inmemory.py (+98/-107)
lib/lp/codehosting/puller/scheduler.py (+39/-49)
lib/lp/codehosting/puller/tests/__init__.py (+52/-1)
lib/lp/codehosting/puller/tests/test_acceptance.py (+92/-212)
lib/lp/codehosting/puller/tests/test_errors.py (+1/-9)
lib/lp/codehosting/puller/tests/test_scheduler.py (+83/-104)
lib/lp/codehosting/puller/tests/test_worker.py (+41/-114)
lib/lp/codehosting/puller/tests/test_worker_formats.py (+2/-60)
lib/lp/codehosting/puller/worker.py (+52/-73)
lib/lp/codehosting/rewrite.py (+14/-19)
lib/lp/codehosting/scanner/branch_scanner.py (+0/-145)
lib/lp/codehosting/scanner/buglinks.py (+2/-4)
lib/lp/codehosting/scanner/bzrsync.py (+18/-92)
lib/lp/codehosting/scanner/email.py (+14/-13)
lib/lp/codehosting/scanner/events.py (+31/-5)
lib/lp/codehosting/scanner/mergedetection.py (+40/-10)
lib/lp/codehosting/scanner/tests/test_acceptance.py (+0/-132)
lib/lp/codehosting/scanner/tests/test_branchscanner.py (+0/-268)
lib/lp/codehosting/scanner/tests/test_buglinks.py (+28/-8)
lib/lp/codehosting/scanner/tests/test_bzrsync.py (+27/-119)
lib/lp/codehosting/scanner/tests/test_email.py (+52/-19)
lib/lp/codehosting/scanner/tests/test_formats.py (+0/-123)
lib/lp/codehosting/scanner/tests/test_mergedetection.py (+70/-11)
lib/lp/codehosting/scripts/modifiedbranches.py (+5/-12)
lib/lp/codehosting/scripts/tests/test_modifiedbranches.py (+5/-31)
lib/lp/codehosting/sftp.py (+12/-30)
lib/lp/codehosting/sshserver/daemon.py (+105/-0)
lib/lp/codehosting/sshserver/session.py (+26/-79)
lib/lp/codehosting/sshserver/tests/test_daemon.py (+93/-0)
lib/lp/codehosting/sshserver/tests/test_session.py (+28/-10)
lib/lp/codehosting/tests/helpers.py (+0/-2)
lib/lp/codehosting/tests/servers.py (+3/-3)
lib/lp/codehosting/tests/test_acceptance.py (+135/-148)
lib/lp/codehosting/tests/test_branchdistro.py (+576/-0)
lib/lp/codehosting/tests/test_bzrutils.py (+103/-14)
lib/lp/codehosting/tests/test_jobs.py (+1/-1)
lib/lp/codehosting/tests/test_lpserve.py (+3/-2)
lib/lp/codehosting/tests/test_rewrite.py (+18/-5)
lib/lp/codehosting/tests/test_sftp.py (+57/-8)
lib/lp/codehosting/vfs/__init__.py (+4/-6)
lib/lp/codehosting/vfs/branchfs.py (+301/-280)
lib/lp/codehosting/vfs/branchfsclient.py (+31/-35)
lib/lp/codehosting/vfs/hooks.py (+25/-0)
lib/lp/codehosting/vfs/tests/test_branchfs.py (+258/-103)
lib/lp/codehosting/vfs/tests/test_branchfsclient.py (+38/-55)
lib/lp/codehosting/vfs/tests/test_filesystem.py (+5/-4)
lib/lp/codehosting/vfs/tests/test_hooks.py (+63/-0)
lib/lp/codehosting/vfs/tests/test_transport.py (+4/-8)
lib/lp/codehosting/vfs/transport.py (+12/-32)
lib/lp/coop/answersbugs/stories/question-buglink.txt (+18/-19)
lib/lp/hardwaredb/browser/configure.zcml (+71/-0)
lib/lp/hardwaredb/browser/hwdb.py (+2/-2)
lib/lp/hardwaredb/browser/tests/test_views.py (+39/-0)
lib/lp/hardwaredb/configure.zcml (+190/-0)
lib/lp/hardwaredb/doc/hwdb-access.txt (+5/-5)
lib/lp/hardwaredb/doc/hwdb-device-tables.txt (+3/-3)
lib/lp/hardwaredb/doc/hwdb-submission.txt (+7/-7)
lib/lp/hardwaredb/doc/hwdb.txt (+8/-8)
lib/lp/hardwaredb/model/hwdb.py (+1/-1)
lib/lp/hardwaredb/scripts/hwdbsubmissions.py (+680/-77)
lib/lp/hardwaredb/scripts/tests/test_hwdb_submission_validation.py (+1/-1)
lib/lp/hardwaredb/stories/hwdb/01-submit-data.txt (+2/-0)
lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt (+1/-1)
lib/lp/hardwaredb/tests/test_doc.py (+36/-0)
lib/lp/poppy/daemon.py (+62/-0)
lib/lp/poppy/filesystem.py (+0/-1)
lib/lp/poppy/hooks.py (+6/-8)
lib/lp/poppy/server.py (+4/-41)
lib/lp/poppy/tests/__init__.py (+5/-0)
lib/lp/poppy/tests/filesystem.txt (+11/-4)
lib/lp/poppy/tests/helpers.py (+8/-16)
lib/lp/poppy/tests/test_poppy.py (+17/-22)
lib/lp/registry/browser/__init__.py (+4/-4)
lib/lp/registry/browser/announcement.py (+3/-2)
lib/lp/registry/browser/configure.zcml (+208/-172)
lib/lp/registry/browser/distribution.py (+18/-31)
lib/lp/registry/browser/distributionmirror.py (+23/-15)
lib/lp/registry/browser/distributionsourcepackage.py (+88/-119)
lib/lp/registry/browser/distroseries.py (+103/-80)
lib/lp/registry/browser/featuredproject.py (+1/-1)
lib/lp/registry/browser/karma.py (+3/-3)
lib/lp/registry/browser/mailinglists.py (+13/-4)
lib/lp/registry/browser/mentoringoffer.py (+3/-3)
lib/lp/registry/browser/menu.py (+1/-1)
lib/lp/registry/browser/milestone.py (+39/-16)
lib/lp/registry/browser/peoplemerge.py (+127/-40)
lib/lp/registry/browser/person.py (+311/-287)
lib/lp/registry/browser/personproduct.py (+1/-1)
lib/lp/registry/browser/pillar.py (+35/-17)
lib/lp/registry/browser/poll.py (+6/-0)
lib/lp/registry/browser/product.py (+494/-214)
lib/lp/registry/browser/productrelease.py (+1/-6)
lib/lp/registry/browser/productseries.py (+671/-152)
lib/lp/registry/browser/project.py (+52/-50)
lib/lp/registry/browser/sourcepackage.py (+269/-37)
lib/lp/registry/browser/structuralsubscription.py (+44/-7)
lib/lp/registry/browser/team.py (+28/-20)
lib/lp/registry/browser/teammembership.py (+14/-11)
lib/lp/registry/browser/tests/announcement-views.txt (+19/-0)
lib/lp/registry/browser/tests/browser-views.txt (+4/-4)
lib/lp/registry/browser/tests/coc-views.txt (+67/-0)
lib/lp/registry/browser/tests/distributionmirror-views.txt (+51/-7)
lib/lp/registry/browser/tests/distributionsourcepackage-views.txt (+41/-12)
lib/lp/registry/browser/tests/distroseries-views.txt (+3/-0)
lib/lp/registry/browser/tests/gpg-views.txt (+3/-3)
lib/lp/registry/browser/tests/karmaaction-views.txt (+1/-1)
lib/lp/registry/browser/tests/mailinglist-message-views.txt (+74/-0)
lib/lp/registry/browser/tests/mailinglist-views.txt (+10/-8)
lib/lp/registry/browser/tests/milestone-views.txt (+32/-6)
lib/lp/registry/browser/tests/packaging-views.txt (+354/-0)
lib/lp/registry/browser/tests/peoplemerge-views.txt (+179/-3)
lib/lp/registry/browser/tests/person-admin-views.txt (+1/-2)
lib/lp/registry/browser/tests/person-karma-views.txt (+1/-1)
lib/lp/registry/browser/tests/person-views.txt (+159/-54)
lib/lp/registry/browser/tests/pillar-views.txt (+80/-26)
lib/lp/registry/browser/tests/poll-views.txt (+134/-0)
lib/lp/registry/browser/tests/product-edit-people-view.txt (+6/-6)
lib/lp/registry/browser/tests/product-files-views.txt (+70/-0)
lib/lp/registry/browser/tests/product-menus.txt (+10/-35)
lib/lp/registry/browser/tests/product-portlet-packages-view.txt (+353/-0)
lib/lp/registry/browser/tests/product-views.txt (+78/-8)
lib/lp/registry/browser/tests/productrelease-views.txt (+1/-7)
lib/lp/registry/browser/tests/productseries-setbranch-view.txt (+417/-0)
lib/lp/registry/browser/tests/productseries-views.txt (+167/-71)
lib/lp/registry/browser/tests/projectgroupset-views.txt (+3/-3)
lib/lp/registry/browser/tests/sourcepackage-views.txt (+294/-14)
lib/lp/registry/browser/tests/team-views.txt (+102/-10)
lib/lp/registry/browser/tests/teammembership-views.txt (+65/-0)
lib/lp/registry/browser/tests/test_breadcrumbs.py (+129/-0)
lib/lp/registry/browser/tests/test_gpgkey.py (+30/-0)
lib/lp/registry/browser/tests/test_packaging.py (+111/-10)
lib/lp/registry/browser/tests/test_person_view.py (+107/-7)
lib/lp/registry/browser/tests/test_person_webservice.py (+42/-0)
lib/lp/registry/browser/tests/test_sshkey.py (+31/-0)
lib/lp/registry/browser/tests/test_structuralsubscription.py (+1/-1)
lib/lp/registry/browser/tests/test_team.py (+37/-0)
lib/lp/registry/browser/tests/test_views.py (+2/-0)
lib/lp/registry/codesofconduct/1.1.txt (+82/-0)
lib/lp/registry/configure.zcml (+231/-42)
lib/lp/registry/doc/announcement.txt (+5/-5)
lib/lp/registry/doc/cache-country-mirrors.txt (+6/-1)
lib/lp/registry/doc/commercialsubscription.txt (+14/-6)
lib/lp/registry/doc/distribution-mirror.txt (+227/-33)
lib/lp/registry/doc/distribution-sourcepackage.txt (+48/-34)
lib/lp/registry/doc/distribution.txt (+38/-3)
lib/lp/registry/doc/distroseries.txt (+145/-79)
lib/lp/registry/doc/featuredproject.txt (+3/-3)
lib/lp/registry/doc/gpg-signatures.txt (+14/-13)
lib/lp/registry/doc/launchpadlib/project-registry.txt.disabled (+374/-0)
lib/lp/registry/doc/mailinglist-email-notification.txt (+8/-5)
lib/lp/registry/doc/mailinglist-subscriptions.txt (+4/-3)
lib/lp/registry/doc/mailinglist-xmlrpc.txt (+36/-69)
lib/lp/registry/doc/mailinglists.txt (+139/-332)
lib/lp/registry/doc/mentoringoffer.txt (+4/-4)
lib/lp/registry/doc/message-holds-xmlrpc.txt (+9/-9)
lib/lp/registry/doc/message-holds.txt (+0/-52)
lib/lp/registry/doc/milestone.txt (+48/-5)
lib/lp/registry/doc/person-account.txt (+8/-18)
lib/lp/registry/doc/person-karma.txt (+13/-10)
lib/lp/registry/doc/person-merge.txt (+35/-7)
lib/lp/registry/doc/person-notification.txt (+3/-4)
lib/lp/registry/doc/person.txt (+188/-85)
lib/lp/registry/doc/personlocation.txt (+15/-53)
lib/lp/registry/doc/pillar.txt (+16/-12)
lib/lp/registry/doc/private-team-roles.txt (+4/-3)
lib/lp/registry/doc/private-team-visibility.txt (+93/-0)
lib/lp/registry/doc/product.txt (+54/-21)
lib/lp/registry/doc/productrelease-file-download.txt (+4/-4)
lib/lp/registry/doc/productseries.txt (+33/-57)
lib/lp/registry/doc/project.txt (+45/-35)
lib/lp/registry/doc/sourceforge-remote-products.txt (+1/-1)
lib/lp/registry/doc/sourcepackage.txt (+147/-147)
lib/lp/registry/doc/standing.txt (+2/-2)
lib/lp/registry/doc/structural-subscriptions.txt (+4/-4)
lib/lp/registry/doc/teammembership-email-notification.txt (+49/-9)
lib/lp/registry/doc/teammembership.txt (+137/-58)
lib/lp/registry/doc/vocabularies.txt (+115/-94)
lib/lp/registry/feed/announcement.py (+5/-4)
lib/lp/registry/help/home-page-staging-help.html (+5/-5)
lib/lp/registry/help/import-pgp-key.html (+5/-5)
lib/lp/registry/help/openid.html (+5/-5)
lib/lp/registry/help/openpgp-keys.html (+7/-7)
lib/lp/registry/help/pgp-key-clearsign.html (+5/-5)
lib/lp/registry/help/verify-downloads.html (+5/-5)
lib/lp/registry/interfaces/distribution.py (+77/-53)
lib/lp/registry/interfaces/distributionmirror.py (+147/-61)
lib/lp/registry/interfaces/distributionsourcepackage.py (+6/-5)
lib/lp/registry/interfaces/distroseries.py (+95/-161)
lib/lp/registry/interfaces/gpg.py (+17/-5)
lib/lp/registry/interfaces/mailinglist.py (+11/-38)
lib/lp/registry/interfaces/milestone.py (+22/-12)
lib/lp/registry/interfaces/packaging.py (+20/-12)
lib/lp/registry/interfaces/person.py (+234/-185)
lib/lp/registry/interfaces/pillar.py (+1/-1)
lib/lp/registry/interfaces/pocket.py (+0/-2)
lib/lp/registry/interfaces/product.py (+69/-49)
lib/lp/registry/interfaces/productrelease.py (+2/-2)
lib/lp/registry/interfaces/productseries.py (+26/-45)
lib/lp/registry/interfaces/projectgroup.py (+43/-43)
lib/lp/registry/interfaces/series.py (+130/-0)
lib/lp/registry/interfaces/sourcepackage.py (+63/-16)
lib/lp/registry/interfaces/ssh.py (+10/-5)
lib/lp/registry/interfaces/structuralsubscription.py (+7/-1)
lib/lp/registry/interfaces/teammembership.py (+20/-4)
lib/lp/registry/model/announcement.py (+7/-6)
lib/lp/registry/model/codeofconduct.py (+1/-1)
lib/lp/registry/model/distribution.py (+176/-114)
lib/lp/registry/model/distributionmirror.py (+137/-45)
lib/lp/registry/model/distributionsourcepackage.py (+108/-30)
lib/lp/registry/model/distroseries.py (+328/-134)
lib/lp/registry/model/gpgkey.py (+18/-0)
lib/lp/registry/model/karma.py (+11/-10)
lib/lp/registry/model/mailinglist.py (+17/-35)
lib/lp/registry/model/mentoringoffer.py (+3/-5)
lib/lp/registry/model/milestone.py (+17/-5)
lib/lp/registry/model/packaging.py (+19/-9)
lib/lp/registry/model/person.py (+160/-103)
lib/lp/registry/model/personnotification.py (+1/-1)
lib/lp/registry/model/personproduct.py (+1/-1)
lib/lp/registry/model/pillar.py (+9/-8)
lib/lp/registry/model/product.py (+102/-52)
lib/lp/registry/model/productrelease.py (+14/-4)
lib/lp/registry/model/productseries.py (+67/-43)
lib/lp/registry/model/projectgroup.py (+75/-67)
lib/lp/registry/model/series.py (+53/-0)
lib/lp/registry/model/sourcepackage.py (+72/-51)
lib/lp/registry/model/sourcepackagename.py (+3/-0)
lib/lp/registry/model/structuralsubscription.py (+31/-11)
lib/lp/registry/model/teammembership.py (+17/-8)
lib/lp/registry/scripts/distributionmirror_prober.py (+30/-9)
lib/lp/registry/scripts/listteammembers.py (+21/-12)
lib/lp/registry/scripts/personnotification.py (+82/-0)
lib/lp/registry/scripts/productreleasefinder/finder.py (+10/-18)
lib/lp/registry/stories/announcements/xx-announcements.txt (+20/-6)
lib/lp/registry/stories/distribution/xx-distribution-all-packages.txt (+0/-40)
lib/lp/registry/stories/distribution/xx-distribution-packages.txt (+47/-24)
lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt (+1/-1)
lib/lp/registry/stories/distributionmirror/xx-distribution-mirrors.txt (+15/-11)
lib/lp/registry/stories/distributionmirror/xx-reassign-distributionmirror.txt (+3/-3)
lib/lp/registry/stories/distroseries/xx-distroseries-index.txt (+26/-5)
lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt (+119/-13)
lib/lp/registry/stories/foaf/xx-changepassword.txt (+0/-62)
lib/lp/registry/stories/foaf/xx-createaccount.txt (+0/-166)
lib/lp/registry/stories/foaf/xx-login.txt (+0/-83)
lib/lp/registry/stories/foaf/xx-person-claim.txt (+0/-148)
lib/lp/registry/stories/foaf/xx-reg-with-existing-email.txt (+0/-182)
lib/lp/registry/stories/foaf/xx-resetpassword.txt (+0/-338)
lib/lp/registry/stories/gpg-coc/02-signcoc.txt (+4/-4)
lib/lp/registry/stories/gpg-coc/99-coc-presentation.txt (+3/-3)
lib/lp/registry/stories/gpg-coc/reformatted_11_coc.asc (+84/-81)
lib/lp/registry/stories/location/personlocation-edit.txt (+27/-59)
lib/lp/registry/stories/location/personlocation.txt (+13/-18)
lib/lp/registry/stories/location/team-map.txt (+25/-0)
lib/lp/registry/stories/mailinglists/admin-approval.txt (+0/-221)
lib/lp/registry/stories/mailinglists/lifecycle.txt (+40/-111)
lib/lp/registry/stories/mailinglists/moderation.txt (+3/-5)
lib/lp/registry/stories/mailinglists/subscriptions.txt (+40/-30)
lib/lp/registry/stories/milestone/object-milestones.txt (+31/-17)
lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt (+11/-2)
lib/lp/registry/stories/object/xx-object-branding.txt (+3/-5)
lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt (+11/-15)
lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt (+14/-53)
lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt (+54/-126)
lib/lp/registry/stories/person/merge-people.txt (+63/-6)
lib/lp/registry/stories/person/xx-add-sshkey.txt (+4/-4)
lib/lp/registry/stories/person/xx-admin-person-review.txt (+61/-3)
lib/lp/registry/stories/person/xx-deactivate-account.txt (+8/-44)
lib/lp/registry/stories/person/xx-person-bugs.txt (+20/-0)
lib/lp/registry/stories/person/xx-person-claim-merge.txt (+17/-2)
lib/lp/registry/stories/person/xx-person-edit-jabber-ids.txt (+0/-1)
lib/lp/registry/stories/person/xx-person-edit-wikis.txt (+2/-1)
lib/lp/registry/stories/person/xx-person-edit.txt (+7/-0)
lib/lp/registry/stories/person/xx-person-home.txt (+14/-2)
lib/lp/registry/stories/person/xx-person-karma.txt (+1/-1)
lib/lp/registry/stories/person/xx-person-working-on.txt (+3/-2)
lib/lp/registry/stories/person/xx-user-to-user.txt (+11/-8)
lib/lp/registry/stories/pillar/xx-pillar-deactivation.txt (+15/-8)
lib/lp/registry/stories/pillar/xx-pillar-sprints.txt (+1/-1)
lib/lp/registry/stories/product/xx-launchpad-project-search.txt (+36/-16)
lib/lp/registry/stories/product/xx-product-add.txt (+13/-2)
lib/lp/registry/stories/product/xx-product-development-focus.txt (+175/-0)
lib/lp/registry/stories/product/xx-product-driver.txt (+9/-11)
lib/lp/registry/stories/product/xx-product-edit.txt (+24/-20)
lib/lp/registry/stories/product/xx-product-files.txt (+17/-15)
lib/lp/registry/stories/product/xx-product-index.txt (+47/-2)
lib/lp/registry/stories/product/xx-product-launchpad-usage.txt (+40/-64)
lib/lp/registry/stories/product/xx-product-package-pages.txt (+51/-22)
lib/lp/registry/stories/product/xx-productset.txt (+1/-1)
lib/lp/registry/stories/productrelease/xx-productrelease-basics.txt (+3/-9)
lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt (+3/-2)
lib/lp/registry/stories/productrelease/xx-productrelease-view.txt (+7/-8)
lib/lp/registry/stories/productseries/xx-productseries-delete.txt (+27/-5)
lib/lp/registry/stories/productseries/xx-productseries-index.txt (+14/-7)
lib/lp/registry/stories/productseries/xx-productseries-series.txt (+2/-2)
lib/lp/registry/stories/productseries/xx-productseries-set-branch.txt (+147/-0)
lib/lp/registry/stories/project/xx-project-add-product.txt (+2/-2)
lib/lp/registry/stories/project/xx-project-driver.txt (+2/-3)
lib/lp/registry/stories/project/xx-project-edit.txt (+2/-2)
lib/lp/registry/stories/project/xx-project-index.txt (+9/-12)
lib/lp/registry/stories/standalone/xx-new-profile.txt (+0/-110)
lib/lp/registry/stories/standalone/xx-team-restricted.txt (+0/-137)
lib/lp/registry/stories/team-polls/create-polls.txt (+4/-4)
lib/lp/registry/stories/team-polls/xx-poll-results.txt (+3/-2)
lib/lp/registry/stories/team/xx-adminteammerge.txt (+43/-34)
lib/lp/registry/stories/team/xx-team-add-my-teams.txt (+40/-38)
lib/lp/registry/stories/team/xx-team-claim.txt (+4/-6)
lib/lp/registry/stories/team/xx-team-edit.txt (+0/-1)
lib/lp/registry/stories/team/xx-team-home.txt (+38/-22)
lib/lp/registry/stories/team/xx-team-membership.txt (+31/-6)
lib/lp/registry/stories/teammembership/20-managing-members.txt (+14/-5)
lib/lp/registry/stories/teammembership/private-team.txt (+3/-5)
lib/lp/registry/stories/teammembership/xx-add-member.txt (+16/-14)
lib/lp/registry/stories/teammembership/xx-expire-subscription.txt (+1/-1)
lib/lp/registry/stories/teammembership/xx-member-renewed-membership.txt (+19/-1)
lib/lp/registry/stories/teammembership/xx-private-membership.txt (+16/-16)
lib/lp/registry/stories/teammembership/xx-renew-subscription.txt (+2/-2)
lib/lp/registry/stories/vouchers/xx-voucher-redemption.txt (+2/-1)
lib/lp/registry/stories/webservice/xx-distribution-mirror.txt (+260/-0)
lib/lp/registry/stories/webservice/xx-distribution.txt (+104/-0)
lib/lp/registry/stories/webservice/xx-distroseries.txt (+12/-1)
lib/lp/registry/stories/webservice/xx-people.txt (+6/-0)
lib/lp/registry/stories/webservice/xx-person.txt (+162/-1)
lib/lp/registry/stories/webservice/xx-private-membership.txt (+4/-3)
lib/lp/registry/stories/webservice/xx-project-registry.txt (+84/-21)
lib/lp/registry/stories/webservice/xx-source-package.txt (+23/-5)
lib/lp/registry/stories/webservice/xx-structuralsubscription.txt (+1/-1)
lib/lp/registry/templates/codeofconduct-list.pt (+17/-14)
lib/lp/registry/templates/distribution-allpackages.pt (+0/-25)
lib/lp/registry/templates/distribution-portlet-lifecycle.pt (+0/-29)
lib/lp/registry/templates/distribution-portlet-series.pt (+0/-22)
lib/lp/registry/templates/distribution-series-and-milestones.pt (+3/-3)
lib/lp/registry/templates/distribution-series.pt (+5/-6)
lib/lp/registry/templates/distributionmirror-index.pt (+65/-56)
lib/lp/registry/templates/distributionmirror-macros.pt (+19/-16)
lib/lp/registry/templates/distributionsourcepackage-index.pt (+24/-55)
lib/lp/registry/templates/distributionsourcepackage-portlet-details.pt (+0/-26)
lib/lp/registry/templates/distributionsourcepackage-portlet-releases.pt (+0/-18)
lib/lp/registry/templates/distroseries-details.pt (+3/-3)
lib/lp/registry/templates/distroseries-index.pt (+5/-9)
lib/lp/registry/templates/distroseries-needs-packaging.pt (+91/-0)
lib/lp/registry/templates/distroseries-packaging.pt (+64/-42)
lib/lp/registry/templates/distroseries-portlet-lifecycle.pt (+0/-39)
lib/lp/registry/templates/distroseries-portlet-packaging.pt (+76/-0)
lib/lp/registry/templates/milestone-index.pt (+21/-13)
lib/lp/registry/templates/milestone-portlet-details.pt (+0/-37)
lib/lp/registry/templates/object-milestones.pt (+10/-1)
lib/lp/registry/templates/object-portlet-milestones.pt (+0/-25)
lib/lp/registry/templates/object-portlet-summary.pt (+0/-14)
lib/lp/registry/templates/object-timeline-graph.pt (+11/-8)
lib/lp/registry/templates/people-newperson.pt (+0/-29)
lib/lp/registry/templates/people-requestmerge-multiple.pt (+95/-52)
lib/lp/registry/templates/people-requestmerge.pt (+5/-6)
lib/lp/registry/templates/person-deactivate-account.pt (+0/-5)
lib/lp/registry/templates/person-edit.pt (+3/-21)
lib/lp/registry/templates/person-editpgpkeys.pt (+16/-34)
lib/lp/registry/templates/person-editsshkeys.pt (+0/-2)
lib/lp/registry/templates/person-index.pt (+19/-29)
lib/lp/registry/templates/person-macros.pt (+2/-2)
lib/lp/registry/templates/person-portlet-contact-details.pt (+8/-3)
lib/lp/registry/templates/person-portlet-contributions.pt (+2/-3)
lib/lp/registry/templates/person-portlet-currentfocus.pt (+2/-2)
lib/lp/registry/templates/person-portlet-emails.pt (+0/-46)
lib/lp/registry/templates/person-portlet-map.pt (+10/-10)
lib/lp/registry/templates/person-rdf-contents.pt (+1/-1)
lib/lp/registry/templates/person-related-software-navlinks.pt (+20/-11)
lib/lp/registry/templates/person-review.pt (+2/-1)
lib/lp/registry/templates/pillar-involvement-portlet.pt (+30/-3)
lib/lp/registry/templates/product-admin.pt (+0/-17)
lib/lp/registry/templates/product-distros.pt (+0/-83)
lib/lp/registry/templates/product-edit-people.pt (+0/-18)
lib/lp/registry/templates/product-edit.pt (+0/-23)
lib/lp/registry/templates/product-files.pt (+130/-87)
lib/lp/registry/templates/product-index.pt (+41/-9)
lib/lp/registry/templates/product-new.pt (+15/-15)
lib/lp/registry/templates/product-packages.pt (+108/-43)
lib/lp/registry/templates/product-portlet-packages.pt (+49/-22)
lib/lp/registry/templates/product-portlet-releases.pt (+0/-23)
lib/lp/registry/templates/product-portlet-series.pt (+0/-22)
lib/lp/registry/templates/product-rdf.pt (+1/-1)
lib/lp/registry/templates/product-review-license.pt (+45/-45)
lib/lp/registry/templates/productrelease-add-from-series.pt (+4/-4)
lib/lp/registry/templates/productrelease-portlet-data.pt (+6/-8)
lib/lp/registry/templates/productrelease-portlet-details.pt (+0/-38)
lib/lp/registry/templates/productreleasefile-macros.pt (+1/-1)
lib/lp/registry/templates/products-index.pt (+16/-12)
lib/lp/registry/templates/products-portlet-details.pt (+0/-19)
lib/lp/registry/templates/productseries-codesummary.pt (+5/-5)
lib/lp/registry/templates/productseries-delete.pt (+15/-4)
lib/lp/registry/templates/productseries-index.pt (+19/-52)
lib/lp/registry/templates/productseries-linkbranch.pt (+38/-2)
lib/lp/registry/templates/productseries-milestone-table-row.pt (+9/-6)
lib/lp/registry/templates/productseries-packaging.pt (+0/-43)
lib/lp/registry/templates/productseries-portlet-details.pt (+0/-27)
lib/lp/registry/templates/productseries-portlet-packages.pt (+39/-21)
lib/lp/registry/templates/productseries-portlet-releases.pt (+0/-29)
lib/lp/registry/templates/productseries-setbranch.pt (+129/-0)
lib/lp/registry/templates/productseries-ubuntupkg.pt (+29/-51)
lib/lp/registry/templates/project-index.pt (+6/-25)
lib/lp/registry/templates/project-portlet-lifecycle.pt (+0/-33)
lib/lp/registry/templates/project-series-portlet-details.pt (+0/-7)
lib/lp/registry/templates/projects-index.pt (+8/-7)
lib/lp/registry/templates/signedcodeofconduct-add.pt (+1/-9)
lib/lp/registry/templates/sourcepackage-edit-packaging.pt (+17/-5)
lib/lp/registry/templates/sourcepackage-index.pt (+8/-53)
lib/lp/registry/templates/sourcepackage-packaging.pt (+0/-62)
lib/lp/registry/templates/sourcepackage-portlet-associations.pt (+64/-0)
lib/lp/registry/templates/sourcepackage-portlet-upstream.pt (+0/-17)
lib/lp/registry/templates/sourcepackage-remove-packaging.pt (+34/-0)
lib/lp/registry/templates/sourcepackage-upstream-connections.pt (+63/-0)
lib/lp/registry/templates/structural-subscriptions-manage.pt (+0/-2)
lib/lp/registry/templates/team-add-my-teams.pt (+2/-0)
lib/lp/registry/templates/team-delete.pt (+30/-0)
lib/lp/registry/templates/team-index.pt (+15/-16)
lib/lp/registry/templates/team-mailinglist.pt (+5/-1)
lib/lp/registry/templates/team-members.pt (+64/-57)
lib/lp/registry/templates/team-mugshots.pt (+26/-11)
lib/lp/registry/templates/team-polls.pt (+2/-2)
lib/lp/registry/templates/team-portlet-mailinglist.pt (+15/-13)
lib/lp/registry/templates/team-portlet-membership.pt (+70/-30)
lib/lp/registry/templates/team-portlet-polls.pt (+4/-4)
lib/lp/registry/templates/teammembership-index.pt (+21/-11)
lib/lp/registry/templates/teammembership-listing-simple.pt (+1/-1)
lib/lp/registry/templates/timeline-macros.pt (+5/-4)
lib/lp/registry/tests/bug-249185.txt (+5/-4)
lib/lp/registry/tests/karma.py (+1/-3)
lib/lp/registry/tests/mailinglists_helper.py (+1/-41)
lib/lp/registry/tests/structural-subscription-target.txt (+1/-1)
lib/lp/registry/tests/test_distribution.py (+30/-2)
lib/lp/registry/tests/test_distributionmirror.py (+10/-20)
lib/lp/registry/tests/test_distributionmirror_prober.py (+51/-3)
lib/lp/registry/tests/test_distroseries.py (+137/-5)
lib/lp/registry/tests/test_doc.py (+9/-3)
lib/lp/registry/tests/test_doc_product.py (+1/-1)
lib/lp/registry/tests/test_doc_project.py (+1/-1)
lib/lp/registry/tests/test_karmacache_updater.py (+2/-1)
lib/lp/registry/tests/test_listteammembers.py (+36/-9)
lib/lp/registry/tests/test_milestone_vocabularies.py (+2/-2)
lib/lp/registry/tests/test_mlists.py (+0/-1)
lib/lp/registry/tests/test_packaging.py (+95/-10)
lib/lp/registry/tests/test_person.py (+245/-18)
lib/lp/registry/tests/test_personnotification.py (+78/-0)
lib/lp/registry/tests/test_personproduct.py (+1/-1)
lib/lp/registry/tests/test_personset.py (+59/-21)
lib/lp/registry/tests/test_pillarname_triggers.py (+4/-3)
lib/lp/registry/tests/test_prf_finder.py (+57/-38)
lib/lp/registry/tests/test_prf_walker.py (+3/-0)
lib/lp/registry/tests/test_product.py (+60/-1)
lib/lp/registry/tests/test_productseries.py (+275/-0)
lib/lp/registry/tests/test_productseries_vocabularies.py (+82/-0)
lib/lp/registry/tests/test_project.py (+104/-0)
lib/lp/registry/tests/test_project_milestone.py (+8/-7)
lib/lp/registry/tests/test_sourcepackage.py (+135/-3)
lib/lp/registry/tests/test_structuralsubscriptiontarget.py (+5/-3)
lib/lp/registry/tests/test_team.py (+86/-0)
lib/lp/registry/tests/test_teammembership.py (+12/-14)
lib/lp/registry/vocabularies.py (+71/-63)
lib/lp/registry/vocabularies.zcml (+308/-99)
lib/lp/registry/windmill/testing.py (+18/-0)
lib/lp/registry/windmill/tests/test_add_milestone.py (+86/-89)
lib/lp/registry/windmill/tests/test_datetime_picker.py (+66/-52)
lib/lp/registry/windmill/tests/test_person_picker.py (+50/-0)
lib/lp/registry/windmill/tests/test_plusnew_step1.py (+62/-42)
lib/lp/registry/windmill/tests/test_plusnew_step2.py (+87/-62)
lib/lp/registry/windmill/tests/test_product.py (+43/-21)
lib/lp/registry/windmill/tests/test_product_edit_people.py (+38/-17)
lib/lp/registry/windmill/tests/test_project_licenses.py (+141/-125)
lib/lp/registry/windmill/tests/test_team_index.py (+70/-0)
lib/lp/registry/windmill/tests/test_timeline_graph.py (+76/-62)
lib/lp/registry/windmill/tests/test_yuitests.py (+21/-0)
lib/lp/scripts/helpers.py (+57/-0)
lib/lp/scripts/utilities/apiindex.py (+0/-21)
lib/lp/scripts/utilities/importfascist.py (+71/-32)
lib/lp/scripts/utilities/jssize.py (+21/-0)
lib/lp/scripts/utilities/pageperformancereport.py (+387/-0)
lib/lp/scripts/utilities/sanitizedb.py (+194/-75)
lib/lp/scripts/utilities/tests/test_sanitizedb.py (+1/-0)
lib/lp/services/apachelogparser/base.py (+25/-6)
lib/lp/services/apachelogparser/tests/test_apachelogparser.py (+27/-1)
lib/lp/services/browser_helpers.py (+8/-0)
lib/lp/services/comments/interfaces/conversation.py (+4/-1)
lib/lp/services/comments/templates/comment.pt (+1/-1)
lib/lp/services/database/configure.zcml (+4/-2)
lib/lp/services/database/prejoin.py (+9/-11)
lib/lp/services/database/tests/test_prejoin.py (+34/-26)
lib/lp/services/doc/limitedlist.txt (+124/-0)
lib/lp/services/doc/sprites.txt (+185/-0)
lib/lp/services/inlinehelp/javascript/inlinehelp.js (+1/-1)
lib/lp/services/job/interfaces/job.py (+31/-0)
lib/lp/services/job/model/job.py (+24/-1)
lib/lp/services/job/runner.py (+331/-47)
lib/lp/services/job/tests/test_job.py (+86/-5)
lib/lp/services/job/tests/test_runner.py (+214/-6)
lib/lp/services/limitedlist.py (+76/-0)
lib/lp/services/mail/basemailer.py (+1/-1)
lib/lp/services/mail/mailwrapper.py (+16/-4)
lib/lp/services/mail/notificationrecipientset.py (+2/-1)
lib/lp/services/mail/sendmail.py (+36/-7)
lib/lp/services/mail/tests/test_mailbox.py (+2/-4)
lib/lp/services/mailman/doc/contact-address.txt (+2/-2)
lib/lp/services/mailman/doc/create-lists.txt (+11/-48)
lib/lp/services/mailman/doc/deactivate-lists.txt (+4/-2)
lib/lp/services/mailman/doc/modify-lists.txt (+7/-47)
lib/lp/services/mailman/doc/postings.txt (+50/-7)
lib/lp/services/mailman/doc/reactivate-lists.txt (+1/-1)
lib/lp/services/mailman/doc/staging.txt (+6/-4)
lib/lp/services/mailman/testing/helpers.py (+0/-4)
lib/lp/services/memcache/__init__.py (+4/-0)
lib/lp/services/memcache/client.py (+22/-0)
lib/lp/services/memcache/configure.zcml (+20/-0)
lib/lp/services/memcache/doc/tales-cache.txt (+293/-0)
lib/lp/services/memcache/interfaces.py (+13/-0)
lib/lp/services/memcache/tales.py (+322/-0)
lib/lp/services/memcache/tests/__init__.py (+4/-0)
lib/lp/services/memcache/tests/test_doc.py (+71/-0)
lib/lp/services/memcache/tests/test_memcache_client.py (+42/-0)
lib/lp/services/mime.py (+34/-0)
lib/lp/services/openid/browser/configure.zcml (+0/-59)
lib/lp/services/openid/browser/openidrpconfig.py (+0/-106)
lib/lp/services/openid/configure.zcml (+0/-18)
lib/lp/services/openid/doc/openid-rp-config.txt (+0/-163)
lib/lp/services/openid/interfaces/openidrpconfig.py (+0/-120)
lib/lp/services/openid/model/openidrpconfig.py (+0/-111)
lib/lp/services/openid/stories/rpconfig-admin.txt (+0/-190)
lib/lp/services/openid/templates/openidrpconfig-add.pt (+0/-24)
lib/lp/services/openid/templates/openidrpconfig-edit.pt (+0/-24)
lib/lp/services/openid/templates/openidrpconfigset-index.pt (+0/-35)
lib/lp/services/osutils.py (+11/-1)
lib/lp/services/scripts/base.py (+3/-13)
lib/lp/services/scripts/doc/profile.txt (+2/-2)
lib/lp/services/scripts/tests/__init__.py (+2/-0)
lib/lp/services/scripts/tests/test_all_scripts.py (+4/-2)
lib/lp/services/spriteutils.py (+252/-0)
lib/lp/services/sshserver/__init__.py (+8/-0)
lib/lp/services/sshserver/accesslog.py (+41/-203)
lib/lp/services/sshserver/auth.py (+28/-59)
lib/lp/services/sshserver/events.py (+144/-0)
lib/lp/services/sshserver/service.py (+77/-59)
lib/lp/services/sshserver/session.py (+79/-0)
lib/lp/services/sshserver/sftp.py (+35/-0)
lib/lp/services/sshserver/tests/__init__.py (+8/-0)
lib/lp/services/sshserver/tests/keys/ssh_host_key_rsa (+15/-0)
lib/lp/services/sshserver/tests/keys/ssh_host_key_rsa.pub (+1/-0)
lib/lp/services/sshserver/tests/test_accesslog.py (+72/-151)
lib/lp/services/sshserver/tests/test_auth.py (+22/-104)
lib/lp/services/sshserver/tests/test_events.py (+91/-0)
lib/lp/services/testing/__init__.py (+48/-31)
lib/lp/services/tests/test_doc.py (+27/-0)
lib/lp/services/tests/test_mime.py (+47/-0)
lib/lp/services/tests/test_utils.py (+71/-0)
lib/lp/services/tests/test_vocabularies.py (+37/-0)
lib/lp/services/tests/testfiles/template.css (+20/-0)
lib/lp/services/twistedsupport/processmonitor.py (+69/-0)
lib/lp/services/twistedsupport/task.py (+88/-20)
lib/lp/services/twistedsupport/tests/test_loggingsupport.py (+3/-3)
lib/lp/services/twistedsupport/tests/test_processmonitor.py (+2/-2)
lib/lp/services/twistedsupport/tests/test_task.py (+8/-15)
lib/lp/services/twistedsupport/tests/test_twistedsupport.py (+2/-2)
lib/lp/services/twistedsupport/tests/test_xmlrpc.py (+90/-0)
lib/lp/services/twistedsupport/xmlrpc.py (+27/-0)
lib/lp/services/utils.py (+143/-0)
lib/lp/services/worlddata/browser/configure.zcml (+28/-0)
lib/lp/services/worlddata/browser/country.py (+10/-0)
lib/lp/services/worlddata/configure.zcml (+2/-0)
lib/lp/services/worlddata/doc/language.txt (+60/-3)
lib/lp/services/worlddata/doc/vocabularies.txt (+1/-1)
lib/lp/services/worlddata/interfaces/country.py (+43/-15)
lib/lp/services/worlddata/interfaces/language.py (+69/-35)
lib/lp/services/worlddata/javascript/languages.js (+66/-0)
lib/lp/services/worlddata/model/country.py (+12/-0)
lib/lp/services/worlddata/model/language.py (+40/-12)
lib/lp/services/worlddata/stories/webservice/xx-country.txt (+72/-0)
lib/lp/services/worlddata/stories/webservice/xx-language.txt (+67/-0)
lib/lp/services/worlddata/tests/test_doc.py (+12/-1)
lib/lp/services/worlddata/tests/test_language.py (+21/-0)
lib/lp/services/worlddata/vocabularies.zcml (+5/-2)
lib/lp/services/xmlrpc.py (+40/-0)
lib/lp/soyuz/adapters/archivedependencies.py (+61/-35)
lib/lp/soyuz/browser/archive.py (+224/-62)
lib/lp/soyuz/browser/archivepermission.py (+3/-1)
lib/lp/soyuz/browser/archivesubscription.py (+23/-10)
lib/lp/soyuz/browser/build.py (+67/-26)
lib/lp/soyuz/browser/builder.py (+8/-13)
lib/lp/soyuz/browser/configure.zcml (+76/-35)
lib/lp/soyuz/browser/distributionsourcepackagerelease.py (+15/-5)
lib/lp/soyuz/browser/distroarchseries.py (+2/-8)
lib/lp/soyuz/browser/distroseries.py (+18/-7)
lib/lp/soyuz/browser/packagesearch.py (+3/-0)
lib/lp/soyuz/browser/packageset.py (+19/-0)
lib/lp/soyuz/browser/publishing.py (+1/-1)
lib/lp/soyuz/browser/queue.py (+12/-1)
lib/lp/soyuz/browser/sourcepackagebuilds.py (+0/-4)
lib/lp/soyuz/browser/sourcepackagerelease.py (+122/-96)
lib/lp/soyuz/browser/tests/archive-views.txt (+89/-79)
lib/lp/soyuz/browser/tests/archivesubscription-views.txt (+26/-25)
lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt (+2/-2)
lib/lp/soyuz/browser/tests/build-views.txt (+88/-3)
lib/lp/soyuz/browser/tests/builder-views.txt (+22/-27)
lib/lp/soyuz/browser/tests/distribution-views.txt (+9/-0)
lib/lp/soyuz/browser/tests/distributionsourcepackagerelease-views.txt (+4/-4)
lib/lp/soyuz/browser/tests/publishing-views.txt (+4/-8)
lib/lp/soyuz/browser/tests/sourcepackage-views.txt (+2/-2)
lib/lp/soyuz/browser/tests/test_archive_admin_view.py (+95/-0)
lib/lp/soyuz/browser/tests/test_breadcrumbs.py (+14/-34)
lib/lp/soyuz/browser/tests/test_queue.py (+191/-0)
lib/lp/soyuz/configure.zcml (+125/-104)
lib/lp/soyuz/doc/archive-deletion.txt (+82/-0)
lib/lp/soyuz/doc/archive-dependencies.txt (+154/-63)
lib/lp/soyuz/doc/archive.txt (+323/-196)
lib/lp/soyuz/doc/archiveauthtoken.txt (+51/-39)
lib/lp/soyuz/doc/archivepermission.txt (+4/-3)
lib/lp/soyuz/doc/archivesubscriber.txt (+58/-34)
lib/lp/soyuz/doc/build-estimated-dispatch-time.txt (+31/-29)
lib/lp/soyuz/doc/build-failedtoupload-workflow.txt (+8/-2)
lib/lp/soyuz/doc/build-notification.txt (+11/-9)
lib/lp/soyuz/doc/build.txt (+159/-114)
lib/lp/soyuz/doc/buildd-dbnotes.txt (+0/-35)
lib/lp/soyuz/doc/buildd-dispatching.txt (+59/-67)
lib/lp/soyuz/doc/buildd-mass-retry.txt (+39/-0)
lib/lp/soyuz/doc/buildd-queuebuilder-lookup.txt (+3/-3)
lib/lp/soyuz/doc/buildd-scoring.txt (+28/-18)
lib/lp/soyuz/doc/buildd-sequencer.txt (+0/-243)
lib/lp/soyuz/doc/buildd-slave.txt (+10/-18)
lib/lp/soyuz/doc/buildd-slavescanner.txt (+307/-363)
lib/lp/soyuz/doc/distribution.txt (+27/-9)
lib/lp/soyuz/doc/distroarchseries.txt (+17/-3)
lib/lp/soyuz/doc/distroarchseriesbinarypackage.txt (+8/-11)
lib/lp/soyuz/doc/distroseries-publishing-lookups.txt (+3/-3)
lib/lp/soyuz/doc/distroseriesqueue-dist-upgrader.txt (+1/-1)
lib/lp/soyuz/doc/distroseriesqueue-translations.txt (+52/-18)
lib/lp/soyuz/doc/distroseriesqueue.txt (+21/-30)
lib/lp/soyuz/doc/gina-multiple-arch.txt (+8/-8)
lib/lp/soyuz/doc/gina.txt (+25/-23)
lib/lp/soyuz/doc/hasbuildrecords.txt (+1/-1)
lib/lp/soyuz/doc/initialise-from-parent.txt (+22/-2)
lib/lp/soyuz/doc/manage-chroot.txt (+2/-2)
lib/lp/soyuz/doc/nascentupload-announcements.txt (+8/-8)
lib/lp/soyuz/doc/nascentupload.txt (+5/-5)
lib/lp/soyuz/doc/package-arch-specific.txt (+2/-3)
lib/lp/soyuz/doc/package-cache-script.txt (+1/-1)
lib/lp/soyuz/doc/package-cache.txt (+22/-6)
lib/lp/soyuz/doc/package-diff.txt (+7/-6)
lib/lp/soyuz/doc/packageset.txt (+15/-3)
lib/lp/soyuz/doc/packageupload-lookups.txt (+1/-1)
lib/lp/soyuz/doc/publishing.txt (+275/-135)
lib/lp/soyuz/doc/queuebuilder.txt (+40/-32)
lib/lp/soyuz/doc/sampledata-setup.txt (+23/-0)
lib/lp/soyuz/doc/sourcepackagerelease-build-lookup.txt (+8/-8)
lib/lp/soyuz/doc/sourcepackagerelease.txt (+21/-15)
lib/lp/soyuz/doc/soyuz-files.txt (+4/-4)
lib/lp/soyuz/doc/soyuz-set-of-uploads.txt (+18/-18)
lib/lp/soyuz/doc/soyuz-upload.txt (+22/-27)
lib/lp/soyuz/doc/uploadpolicy.txt (+2/-2)
lib/lp/soyuz/help/ppa-sources-list.html (+169/-42)
lib/lp/soyuz/interfaces/archive.py (+169/-29)
lib/lp/soyuz/interfaces/archivearch.py (+11/-0)
lib/lp/soyuz/interfaces/archivepermission.py (+23/-2)
lib/lp/soyuz/interfaces/binarypackagebuild.py (+40/-234)
lib/lp/soyuz/interfaces/binarypackagename.py (+2/-1)
lib/lp/soyuz/interfaces/binarypackagerelease.py (+37/-4)
lib/lp/soyuz/interfaces/buildfarmbuildjob.py (+21/-0)
lib/lp/soyuz/interfaces/buildpackagejob.py (+35/-0)
lib/lp/soyuz/interfaces/component.py (+2/-2)
lib/lp/soyuz/interfaces/distroarchseries.py (+7/-0)
lib/lp/soyuz/interfaces/files.py (+6/-1)
lib/lp/soyuz/interfaces/packagecloner.py (+1/-1)
lib/lp/soyuz/interfaces/packageset.py (+69/-8)
lib/lp/soyuz/interfaces/packagesetgroup.py (+41/-0)
lib/lp/soyuz/interfaces/processor.py (+24/-1)
lib/lp/soyuz/interfaces/publishing.py (+170/-58)
lib/lp/soyuz/interfaces/queue.py (+4/-20)
lib/lp/soyuz/interfaces/sourcepackageformat.py (+64/-0)
lib/lp/soyuz/interfaces/sourcepackagerelease.py (+20/-0)
lib/lp/soyuz/model/archive.py (+297/-62)
lib/lp/soyuz/model/archivearch.py (+16/-0)
lib/lp/soyuz/model/archivepermission.py (+39/-13)
lib/lp/soyuz/model/archivesubscriber.py (+2/-2)
lib/lp/soyuz/model/binarypackagebuild.py (+202/-239)
lib/lp/soyuz/model/binarypackagebuildbehavior.py (+217/-0)
lib/lp/soyuz/model/binarypackagerelease.py (+46/-3)
lib/lp/soyuz/model/buildpackagejob.py (+274/-0)
lib/lp/soyuz/model/distributionsourcepackagerelease.py (+10/-8)
lib/lp/soyuz/model/distroarchseries.py (+13/-5)
lib/lp/soyuz/model/files.py (+13/-2)
lib/lp/soyuz/model/packagecloner.py (+15/-17)
lib/lp/soyuz/model/packagediff.py (+26/-1)
lib/lp/soyuz/model/packageset.py (+83/-9)
lib/lp/soyuz/model/packagesetgroup.py (+30/-0)
lib/lp/soyuz/model/processor.py (+12/-0)
lib/lp/soyuz/model/publishedpackage.py (+1/-1)
lib/lp/soyuz/model/publishing.py (+401/-316)
lib/lp/soyuz/model/queue.py (+190/-86)
lib/lp/soyuz/model/sourcepackageformat.py (+56/-0)
lib/lp/soyuz/model/sourcepackagerelease.py (+31/-84)
lib/lp/soyuz/pas.py (+94/-0)
lib/lp/soyuz/scripts/buildd.py (+119/-26)
lib/lp/soyuz/scripts/expire_archive_files.py (+90/-21)
lib/lp/soyuz/scripts/ftpmaster.py (+39/-39)
lib/lp/soyuz/scripts/gina/archive.py (+3/-2)
lib/lp/soyuz/scripts/gina/handlers.py (+68/-36)
lib/lp/soyuz/scripts/gina/library.py (+5/-2)
lib/lp/soyuz/scripts/gina/packages.py (+12/-10)
lib/lp/soyuz/scripts/gina/scripts/gina-loggrep (+1/-1)
lib/lp/soyuz/scripts/packagecopier.py (+61/-50)
lib/lp/soyuz/scripts/ppa_add_missing_builds.py (+136/-0)
lib/lp/soyuz/scripts/ppa_apache_log_parser.py (+22/-0)
lib/lp/soyuz/scripts/ppareport.py (+1/-1)
lib/lp/soyuz/scripts/processaccepted.py (+120/-2)
lib/lp/soyuz/scripts/publishdistro.py (+50/-23)
lib/lp/soyuz/scripts/queue.py (+12/-8)
lib/lp/soyuz/scripts/soyuz_process_upload.py (+12/-6)
lib/lp/soyuz/scripts/tests/gina_test_archive/dists/breezy/main/source/Sources (+17/-0)
lib/lp/soyuz/scripts/tests/gina_test_archive/dists/hoary/main/source/Sources (+14/-0)
lib/lp/soyuz/scripts/tests/gina_test_archive/pool/main/b/bar/bar_1.0-1.dsc (+22/-0)
lib/lp/soyuz/scripts/tests/ppa-apache-log-files/ppa.launchpad.net.access-log (+9/-0)
lib/lp/soyuz/scripts/tests/sync_source_home/Debian_incoming_main_Sources (+28/-0)
lib/lp/soyuz/scripts/tests/sync_source_home/sample1_1.0-1.dsc (+37/-0)
lib/lp/soyuz/scripts/tests/test_buildd_cronscripts.py (+11/-15)
lib/lp/soyuz/scripts/tests/test_copypackage.py (+338/-102)
lib/lp/soyuz/scripts/tests/test_expire_archive_files.py (+162/-108)
lib/lp/soyuz/scripts/tests/test_gina.py (+15/-0)
lib/lp/soyuz/scripts/tests/test_lpquerydistro.py (+2/-2)
lib/lp/soyuz/scripts/tests/test_obsoletedistroseries.py (+8/-10)
lib/lp/soyuz/scripts/tests/test_populatearchive.py (+60/-29)
lib/lp/soyuz/scripts/tests/test_ppa_add_missing_builds.py (+155/-0)
lib/lp/soyuz/scripts/tests/test_ppa_apache_log_parser.py (+134/-0)
lib/lp/soyuz/scripts/tests/test_processdeathrow.py (+14/-15)
lib/lp/soyuz/scripts/tests/test_processpendingpackagediffs.py (+4/-71)
lib/lp/soyuz/scripts/tests/test_processupload.py (+18/-1)
lib/lp/soyuz/scripts/tests/test_publishdistro.py (+62/-12)
lib/lp/soyuz/scripts/tests/test_queue.py (+11/-8)
lib/lp/soyuz/scripts/tests/test_removepackage.py (+14/-14)
lib/lp/soyuz/scripts/tests/test_sync_source.py (+106/-29)
lib/lp/soyuz/stories/distroseries/add-architecture.txt (+1/-1)
lib/lp/soyuz/stories/packaging/package-pages-navigation.txt (+8/-8)
lib/lp/soyuz/stories/ppa/xx-copy-packages.txt (+25/-23)
lib/lp/soyuz/stories/ppa/xx-delete-packages.txt (+7/-7)
lib/lp/soyuz/stories/ppa/xx-edit-dependencies.txt (+13/-12)
lib/lp/soyuz/stories/ppa/xx-ppa-files.txt (+43/-35)
lib/lp/soyuz/stories/ppa/xx-ppa-navigation.txt (+3/-3)
lib/lp/soyuz/stories/ppa/xx-ppa-packages.txt (+103/-49)
lib/lp/soyuz/stories/ppa/xx-ppa-private-teams.txt (+2/-2)
lib/lp/soyuz/stories/ppa/xx-ppa-workflow.txt (+169/-31)
lib/lp/soyuz/stories/ppa/xx-private-ppa-presentation.txt (+14/-11)
lib/lp/soyuz/stories/ppa/xx-private-ppa-subscription-stories.txt (+51/-45)
lib/lp/soyuz/stories/ppa/xx-private-ppa-subscriptions.txt (+74/-38)
lib/lp/soyuz/stories/ppa/xx-private-ppas.txt (+20/-14)
lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt (+66/-27)
lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt (+3/-2)
lib/lp/soyuz/stories/soyuz/xx-build-record.txt (+37/-14)
lib/lp/soyuz/stories/soyuz/xx-buildfarm-index.txt (+6/-6)
lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt (+6/-6)
lib/lp/soyuz/stories/soyuz/xx-distribution-archives.txt (+7/-3)
lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt (+39/-4)
lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt (+45/-6)
lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt (+2/-2)
lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt (+5/-5)
lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt (+2/-2)
lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt (+31/-59)
lib/lp/soyuz/stories/soyuz/xx-packagepublishinghistory.txt (+49/-0)
lib/lp/soyuz/stories/soyuz/xx-person-packages.txt (+85/-64)
lib/lp/soyuz/stories/soyuz/xx-private-builds.txt (+48/-78)
lib/lp/soyuz/stories/soyuz/xx-queue-pages-delayed-copies.txt (+13/-13)
lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt (+7/-7)
lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt (+128/-77)
lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt (+3/-3)
lib/lp/soyuz/stories/webservice/xx-archive.txt (+73/-54)
lib/lp/soyuz/stories/webservice/xx-archivedependency.txt (+18/-24)
lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt (+129/-11)
lib/lp/soyuz/stories/webservice/xx-builds.txt (+8/-7)
lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt (+13/-0)
lib/lp/soyuz/stories/webservice/xx-packageset.txt (+313/-73)
lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt (+112/-19)
lib/lp/soyuz/templates/archive-activate.pt (+0/-4)
lib/lp/soyuz/templates/archive-builds.pt (+0/-21)
lib/lp/soyuz/templates/archive-delete.pt (+32/-0)
lib/lp/soyuz/templates/archive-edit-dependencies.pt (+20/-33)
lib/lp/soyuz/templates/archive-index.pt (+35/-18)
lib/lp/soyuz/templates/archive-macros.pt (+10/-4)
lib/lp/soyuz/templates/archive-packages.pt (+4/-3)
lib/lp/soyuz/templates/archive-subscribers.pt (+1/-1)
lib/lp/soyuz/templates/build-index.pt (+4/-4)
lib/lp/soyuz/templates/builder-history.pt (+0/-20)
lib/lp/soyuz/templates/builder-index.pt (+6/-40)
lib/lp/soyuz/templates/buildfarmbranchjob-current.pt (+10/-0)
lib/lp/soyuz/templates/buildfarmbuildjob-current.pt (+8/-0)
lib/lp/soyuz/templates/buildfarmjob-current.pt (+9/-0)
lib/lp/soyuz/templates/buildqueue-current.pt (+24/-0)
lib/lp/soyuz/templates/builds-list.pt (+2/-2)
lib/lp/soyuz/templates/builds.pt (+0/-6)
lib/lp/soyuz/templates/distribution-portlet-ppa-architectures.pt (+5/-8)
lib/lp/soyuz/templates/distributionsourcepackagerelease-changes.pt (+5/-4)
lib/lp/soyuz/templates/distroarchseries-builds.pt (+0/-20)
lib/lp/soyuz/templates/distroarchseriesbinarypackagerelease-index.pt (+10/-4)
lib/lp/soyuz/templates/distroseries-builds.pt (+0/-20)
lib/lp/soyuz/templates/distroseries-portlet-latestuploads.pt (+7/-5)
lib/lp/soyuz/templates/distroseries-queue.pt (+6/-0)
lib/lp/soyuz/templates/distroseriessourcepackagerelease-index.pt (+16/-10)
lib/lp/soyuz/templates/packagepublishing-details.pt (+1/-1)
lib/lp/soyuz/templates/person-archive-subscription.pt (+2/-3)
lib/lp/soyuz/templates/person-archive-subscriptions.pt (+12/-4)
lib/lp/soyuz/templates/sourcepackage-builds.pt (+0/-20)
lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-archive-detailed.pt (+10/-3)
lib/lp/soyuz/templates/sourcepackagerelease-change-summary.pt (+0/-10)
lib/lp/soyuz/tests/ppa.py (+6/-8)
lib/lp/soyuz/tests/soyuz.py (+84/-13)
lib/lp/soyuz/tests/soyuzbuilddhelpers.py (+97/-104)
lib/lp/soyuz/tests/test_archive.py (+649/-25)
lib/lp/soyuz/tests/test_archivearch.py (+57/-0)
lib/lp/soyuz/tests/test_build.py (+116/-11)
lib/lp/soyuz/tests/test_buildpackagejob.py (+240/-0)
lib/lp/soyuz/tests/test_doc.py (+11/-0)
lib/lp/soyuz/tests/test_hasbuildrecords.py (+1/-1)
lib/lp/soyuz/tests/test_packagediff.py (+92/-0)
lib/lp/soyuz/tests/test_packageset.py (+187/-0)
lib/lp/soyuz/tests/test_packageupload.py (+67/-12)
lib/lp/soyuz/tests/test_processaccepted.py (+127/-0)
lib/lp/soyuz/tests/test_processor.py (+32/-0)
lib/lp/soyuz/tests/test_publishing.py (+197/-44)
lib/lp/soyuz/tests/test_publishing_models.py (+15/-2)
lib/lp/soyuz/tests/test_publishing_top_level_api.py (+10/-10)
lib/lp/soyuz/windmill/tests/test_archivesubscribersindex.py (+17/-15)
lib/lp/testing/__init__.py (+464/-250)
lib/lp/testing/_login.py (+25/-38)
lib/lp/testing/_webservice.py (+124/-0)
lib/lp/testing/breadcrumbs.py (+40/-56)
lib/lp/testing/factory.py (+753/-232)
lib/lp/testing/fakemethod.py (+57/-0)
lib/lp/testing/faketransaction.py (+35/-0)
lib/lp/testing/fixture.py (+15/-4)
lib/lp/testing/menu.py (+5/-4)
lib/lp/testing/publication.py (+57/-0)
lib/lp/testing/tests/test_fakemethod.py (+85/-0)
lib/lp/testing/tests/test_fixture.py (+1/-1)
lib/lp/testing/tests/test_inlinetests.py (+20/-0)
lib/lp/testing/tests/test_zope_test_in_subprocess.py (+131/-0)
lib/lp/testing/views.py (+15/-3)
lib/lp/testopenid/adapters/openid.py (+32/-0)
lib/lp/testopenid/browser/configure.zcml (+82/-0)
lib/lp/testopenid/browser/server.py (+287/-0)
lib/lp/testopenid/configure.zcml (+28/-0)
lib/lp/testopenid/interfaces/server.py (+41/-0)
lib/lp/testopenid/stories/basics.txt (+163/-0)
lib/lp/testopenid/stories/logging-in.txt (+64/-0)
lib/lp/testopenid/stories/tests.py (+22/-0)
lib/lp/testopenid/templates/application-index.pt (+5/-0)
lib/lp/testopenid/templates/application-xrds.pt (+14/-0)
lib/lp/testopenid/templates/auth.pt (+18/-0)
lib/lp/testopenid/templates/persistentidentity-index.pt (+14/-0)
lib/lp/testopenid/templates/persistentidentity-xrds.pt (+14/-0)
lib/lp/testopenid/testing/helpers.py (+74/-0)
lib/lp/translations/browser/browser_helpers.py (+4/-6)
lib/lp/translations/browser/configure.zcml (+76/-27)
lib/lp/translations/browser/customlanguagecode.py (+171/-0)
lib/lp/translations/browser/distribution.py (+9/-11)
lib/lp/translations/browser/distroseries.py (+106/-46)
lib/lp/translations/browser/hastranslationimports.py (+43/-42)
lib/lp/translations/browser/language.py (+100/-19)
lib/lp/translations/browser/person.py (+2/-0)
lib/lp/translations/browser/poexportrequest.py (+35/-0)
lib/lp/translations/browser/pofile.py (+20/-2)
lib/lp/translations/browser/potemplate.py (+165/-32)
lib/lp/translations/browser/product.py (+43/-34)
lib/lp/translations/browser/productseries.py (+18/-25)
lib/lp/translations/browser/productserieslanguage.py (+0/-57)
lib/lp/translations/browser/project.py (+9/-9)
lib/lp/translations/browser/serieslanguage.py (+130/-10)
lib/lp/translations/browser/tests/distroseries-views.txt (+72/-14)
lib/lp/translations/browser/tests/language-views.txt (+122/-8)
lib/lp/translations/browser/tests/menu-pages.txt (+0/-230)
lib/lp/translations/browser/tests/pofile-views.txt (+20/-2)
lib/lp/translations/browser/tests/test_baseexportview.py (+69/-2)
lib/lp/translations/browser/tests/test_breadcrumbs.py (+99/-128)
lib/lp/translations/browser/tests/test_distroserieslanguage_views.py (+21/-3)
lib/lp/translations/browser/tests/test_product_view.py (+58/-11)
lib/lp/translations/browser/tests/test_productserieslanguage_views.py (+3/-1)
lib/lp/translations/browser/tests/test_translationgroup.py (+69/-0)
lib/lp/translations/browser/tests/test_translationimportqueueentry.py (+211/-0)
lib/lp/translations/browser/tests/translationmessage-views.txt (+98/-0)
lib/lp/translations/browser/translationgroup.py (+24/-18)
lib/lp/translations/browser/translationimportqueue.py (+109/-18)
lib/lp/translations/browser/translationmessage.py (+49/-2)
lib/lp/translations/browser/translations.py (+1/-1)
lib/lp/translations/configure.zcml (+49/-5)
lib/lp/translations/doc/distroseries-translations-copy.txt (+6/-9)
lib/lp/translations/doc/fix_translation_credits.txt (+23/-0)
lib/lp/translations/doc/gettext-check-messages.txt (+14/-22)
lib/lp/translations/doc/poexport-language-pack.txt (+46/-32)
lib/lp/translations/doc/poexport-queue.txt (+6/-3)
lib/lp/translations/doc/poexport-request-productseries.txt (+8/-8)
lib/lp/translations/doc/poexport-request.txt (+12/-8)
lib/lp/translations/doc/poexportqueue-replication-lag.txt (+89/-0)
lib/lp/translations/doc/pofile-verify-stats.txt (+2/-2)
lib/lp/translations/doc/pofile.txt (+61/-27)
lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt (+5/-3)
lib/lp/translations/doc/poimport-pofile-old-po-imported.txt (+6/-4)
lib/lp/translations/doc/poimport-pofile-syntax-error.txt (+10/-8)
lib/lp/translations/doc/poimport-potemplate-syntax-error.txt (+5/-3)
lib/lp/translations/doc/poimport.txt (+31/-37)
lib/lp/translations/doc/potemplate.txt (+24/-10)
lib/lp/translations/doc/potmsgset.txt (+48/-26)
lib/lp/translations/doc/preferred-languages.txt (+9/-6)
lib/lp/translations/doc/request_country.txt (+4/-3)
lib/lp/translations/doc/rosetta-karma.txt (+7/-7)
lib/lp/translations/doc/rosetta-poimport-script.txt (+5/-3)
lib/lp/translations/doc/sourcepackagerelease-translations.txt (+3/-2)
lib/lp/translations/doc/translationbranchapprover.txt (+1/-41)
lib/lp/translations/doc/translationbuildapprover.txt (+82/-0)
lib/lp/translations/doc/translationgroup.txt (+37/-0)
lib/lp/translations/doc/translationimportqueue.txt (+74/-76)
lib/lp/translations/doc/translations-export-to-branch.txt (+33/-7)
lib/lp/translations/doc/translationtemplatesbuildbehavior.txt (+111/-0)
lib/lp/translations/help/directory-example.html (+53/-0)
lib/lp/translations/help/getting-started-for-your-project.html (+5/-5)
lib/lp/translations/help/imported-upload.html (+61/-0)
lib/lp/translations/help/importing-from-bzr.html (+37/-0)
lib/lp/translations/help/new-to-translating.html (+44/-0)
lib/lp/translations/help/reviewing.html (+52/-0)
lib/lp/translations/help/successful-imports.html (+46/-0)
lib/lp/translations/help/translation-groups.html (+5/-5)
lib/lp/translations/help/updated-upload.html (+40/-0)
lib/lp/translations/interfaces/customlanguagecode.py (+65/-10)
lib/lp/translations/interfaces/poexportrequest.py (+31/-9)
lib/lp/translations/interfaces/pofile.py (+13/-3)
lib/lp/translations/interfaces/potemplate.py (+44/-13)
lib/lp/translations/interfaces/potmsgset.py (+85/-10)
lib/lp/translations/interfaces/productserieslanguage.py (+7/-2)
lib/lp/translations/interfaces/translationgroup.py (+22/-12)
lib/lp/translations/interfaces/translationimporter.py (+8/-0)
lib/lp/translations/interfaces/translationimportqueue.py (+70/-16)
lib/lp/translations/interfaces/translationsoverview.py (+1/-1)
lib/lp/translations/interfaces/translationtemplatesbuildjob.py (+36/-0)
lib/lp/translations/model/approver.py (+139/-52)
lib/lp/translations/model/customlanguagecode.py (+72/-3)
lib/lp/translations/model/poexportrequest.py (+90/-37)
lib/lp/translations/model/pofile.py (+149/-95)
lib/lp/translations/model/potemplate.py (+150/-94)
lib/lp/translations/model/potmsgset.py (+127/-42)
lib/lp/translations/model/productserieslanguage.py (+10/-1)
lib/lp/translations/model/translatablemessage.py (+1/-1)
lib/lp/translations/model/translationgroup.py (+31/-17)
lib/lp/translations/model/translationimportqueue.py (+186/-101)
lib/lp/translations/model/translationmessage.py (+5/-5)
lib/lp/translations/model/translationsperson.py (+7/-6)
lib/lp/translations/model/translationtemplatesbuildbehavior.py (+121/-0)
lib/lp/translations/model/translationtemplatesbuildjob.py (+151/-0)
lib/lp/translations/pottery/detect_intltool.py (+41/-0)
lib/lp/translations/scripts/fix_translation_credits.py (+96/-0)
lib/lp/translations/scripts/message_sharing_migration.py (+212/-81)
lib/lp/translations/scripts/po_export_queue.py (+10/-24)
lib/lp/translations/scripts/po_import.py (+19/-13)
lib/lp/translations/scripts/remove_obsolete_translations.py (+7/-7)
lib/lp/translations/scripts/reupload_translations.py (+7/-2)
lib/lp/translations/scripts/tests/test-data/minimal.pot (+8/-0)
lib/lp/translations/scripts/tests/test_copy_distroseries_translations.py (+2/-10)
lib/lp/translations/scripts/tests/test_message_sharing_migration.py (+168/-76)
lib/lp/translations/scripts/tests/test_remove_translations.py (+5/-1)
lib/lp/translations/scripts/tests/test_reupload_translations.py (+61/-18)
lib/lp/translations/scripts/tests/test_translations_import.py (+62/-0)
lib/lp/translations/scripts/tests/test_translations_to_branch.py (+72/-6)
lib/lp/translations/scripts/tests/test_validate_translations_file.py (+131/-0)
lib/lp/translations/scripts/translations_to_branch.py (+58/-16)
lib/lp/translations/scripts/validate_translations_file.py (+130/-0)
lib/lp/translations/stories/buildfarm/xx-build-summary.txt (+69/-0)
lib/lp/translations/stories/distribution/xx-distribution-translations.txt (+10/-10)
lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt (+87/-24)
lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt (+24/-44)
lib/lp/translations/stories/importqueue/xx-entry-details.txt (+108/-0)
lib/lp/translations/stories/importqueue/xx-entry-error-output.txt (+46/-0)
lib/lp/translations/stories/importqueue/xx-translation-import-queue-edit-autofilling.txt (+4/-2)
lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt (+1/-0)
lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt (+23/-17)
lib/lp/translations/stories/productseries/xx-productseries-templates.txt (+0/-65)
lib/lp/translations/stories/productseries/xx-productseries-translations-settings.txt (+5/-1)
lib/lp/translations/stories/productseries/xx-productseries-translations.txt (+142/-42)
lib/lp/translations/stories/project/xx-project-translations.txt (+1/-1)
lib/lp/translations/stories/standalone/custom-language-codes.txt (+277/-0)
lib/lp/translations/stories/standalone/xx-language.txt (+73/-11)
lib/lp/translations/stories/standalone/xx-person-editlanguages.txt (+13/-13)
lib/lp/translations/stories/standalone/xx-pofile-details.txt (+53/-1)
lib/lp/translations/stories/standalone/xx-pofile-export.txt (+3/-3)
lib/lp/translations/stories/standalone/xx-pofile-translate-dismiss-suggestions.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt (+2/-2)
lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt (+62/-3)
lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt (+2/-2)
lib/lp/translations/stories/standalone/xx-pofile-translate.txt (+87/-11)
lib/lp/translations/stories/standalone/xx-potemplate-admin.txt (+106/-2)
lib/lp/translations/stories/standalone/xx-potemplate-edit.txt (+118/-19)
lib/lp/translations/stories/standalone/xx-potemplate-index.txt (+235/-22)
lib/lp/translations/stories/standalone/xx-product-translations.txt (+90/-45)
lib/lp/translations/stories/standalone/xx-rosetta-homepage.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-series-templates.txt (+182/-27)
lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt (+189/-1)
lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt (+59/-10)
lib/lp/translations/stories/standalone/xx-translations-to-complete.txt (+25/-0)
lib/lp/translations/stories/translationfocus/xx-product-translationfocus.txt (+87/-0)
lib/lp/translations/stories/translationgroups/15-product-translation-group.txt (+3/-2)
lib/lp/translations/stories/translationgroups/30-show-group-translation-targets.txt (+7/-0)
lib/lp/translations/stories/translationgroups/46-test-distro-structured-permissions.txt (+2/-2)
lib/lp/translations/stories/translationgroups/xx-change-translation-policy.txt (+92/-12)
lib/lp/translations/stories/translations/55-rosetta-potemplates.txt (+3/-2)
lib/lp/translations/stories/webservice/xx-translationfocus.txt (+34/-0)
lib/lp/translations/stories/webservice/xx-translationimportqueue.txt (+17/-2)
lib/lp/translations/templates/currenttranslationmessage-translate-one.pt (+22/-25)
lib/lp/translations/templates/customlanguagecode-add.pt (+29/-0)
lib/lp/translations/templates/customlanguagecode-index.pt (+46/-0)
lib/lp/translations/templates/customlanguagecodes-index.pt (+80/-0)
lib/lp/translations/templates/distribution-language-pack-admin-info.pt (+2/-2)
lib/lp/translations/templates/distribution-translations.pt (+19/-15)
lib/lp/translations/templates/distroseries-langchart.pt (+21/-1)
lib/lp/translations/templates/distroseries-language-packs.pt (+59/-22)
lib/lp/translations/templates/distroseries-translations.pt (+27/-20)
lib/lp/translations/templates/hastranslationgroup-portlet-translation-groups-and-permission.pt (+4/-5)
lib/lp/translations/templates/language-index.pt (+19/-33)
lib/lp/translations/templates/language-portlet-top-contributors.pt (+3/-3)
lib/lp/translations/templates/languageset-index.pt (+76/-35)
lib/lp/translations/templates/object-pots.pt (+2/-2)
lib/lp/translations/templates/object-templates.pt (+86/-45)
lib/lp/translations/templates/person-translations-relicensing.pt (+1/-1)
lib/lp/translations/templates/person-translations.pt (+3/-5)
lib/lp/translations/templates/pofile-details.pt (+9/-5)
lib/lp/translations/templates/pofile-export.pt (+11/-5)
lib/lp/translations/templates/pofile-portlet-details.pt (+11/-11)
lib/lp/translations/templates/pofile-translate-contributors.pt (+5/-3)
lib/lp/translations/templates/pofile-translate.pt (+9/-63)
lib/lp/translations/templates/pofile-upload.pt (+3/-3)
lib/lp/translations/templates/potemplate-index.pt (+11/-11)
lib/lp/translations/templates/product-portlet-not-using-launchpad.pt (+23/-0)
lib/lp/translations/templates/product-portlet-obsolete-translatables.pt (+1/-1)
lib/lp/translations/templates/product-portlet-translatables.pt (+15/-3)
lib/lp/translations/templates/product-translations.pt (+42/-87)
lib/lp/translations/templates/productseries-translations-bzr-import.pt (+4/-18)
lib/lp/translations/templates/productseries-translations-languages.pt (+35/-3)
lib/lp/translations/templates/productseries-translations-settings.pt (+37/-21)
lib/lp/translations/templates/productseries-translations-upload.pt (+34/-19)
lib/lp/translations/templates/productseries-translations.pt (+27/-19)
lib/lp/translations/templates/project-translations.pt (+3/-3)
lib/lp/translations/templates/rosetta-index.pt (+1/-9)
lib/lp/translations/templates/serieslanguage-index.pt (+39/-27)
lib/lp/translations/templates/sourcepackage-translations.pt (+16/-8)
lib/lp/translations/templates/translation-import-queue-macros.pt (+63/-37)
lib/lp/translations/templates/translationgroup-index.pt (+3/-2)
lib/lp/translations/templates/translationgroup-portlet-projects.pt (+3/-3)
lib/lp/translations/templates/translationimportqueue-index.pt (+9/-2)
lib/lp/translations/templates/translationimportqueueentry-index.pt (+15/-2)
lib/lp/translations/templates/translationimportqueueentry-portlet-details.pt (+43/-36)
lib/lp/translations/templates/translationmessage-suggestions.pt (+1/-1)
lib/lp/translations/templates/translationmessage-translate.pt (+7/-21)
lib/lp/translations/templates/translations-export.pt (+5/-0)
lib/lp/translations/templates/translations-macros.pt (+74/-4)
lib/lp/translations/tests/test_autoapproval.py (+268/-86)
lib/lp/translations/tests/test_pofile.py (+458/-83)
lib/lp/translations/tests/test_potemplate.py (+13/-0)
lib/lp/translations/tests/test_potmsgset.py (+278/-4)
lib/lp/translations/tests/test_pottery_detect_intltool.py (+293/-0)
lib/lp/translations/tests/test_productserieslanguage.py (+31/-15)
lib/lp/translations/tests/test_rosetta_branches_script.py (+2/-2)
lib/lp/translations/tests/test_shared_potemplate.py (+11/-38)
lib/lp/translations/tests/test_suggestions.py (+11/-1)
lib/lp/translations/tests/test_translatablemessage.py (+4/-1)
lib/lp/translations/tests/test_translationbranchapprover.py (+110/-25)
lib/lp/translations/tests/test_translationbuildapprover.py (+255/-0)
lib/lp/translations/tests/test_translationgroup.py (+65/-0)
lib/lp/translations/tests/test_translationimportqueue.py (+306/-0)
lib/lp/translations/tests/test_translations_to_review.py (+3/-1)
lib/lp/translations/tests/test_translationtemplatesbuildbehavior.py (+287/-0)
lib/lp/translations/tests/test_translationtemplatesbuildjob.py (+283/-0)
lib/lp/translations/tests/test_vpoexport.py (+0/-62)
lib/lp/translations/utilities/doc/gettext_mo_exporter.txt (+7/-5)
lib/lp/translations/utilities/doc/launchpad_write_tarfile.txt (+6/-3)
lib/lp/translations/utilities/doc/pluralforms.txt (+1/-1)
lib/lp/translations/utilities/doc/templatenames.txt (+42/-0)
lib/lp/translations/utilities/gettext_po_exporter.py (+65/-46)
lib/lp/translations/utilities/gettext_po_parser.py (+4/-3)
lib/lp/translations/utilities/mozilla_xpi_importer.py (+4/-1)
lib/lp/translations/utilities/pluralforms.py (+48/-30)
lib/lp/translations/utilities/rosettastats.py (+1/-1)
lib/lp/translations/utilities/template.py (+56/-0)
lib/lp/translations/utilities/tests/helpers.py (+3/-1)
lib/lp/translations/utilities/tests/test_file_importer.py (+24/-0)
lib/lp/translations/utilities/tests/test_gettext_po_exporter.py (+101/-27)
lib/lp/translations/utilities/tests/test_pluralforms.py (+70/-0)
lib/lp/translations/utilities/tests/test_templatenames.py (+61/-0)
lib/lp/translations/utilities/tests/test_translation_importer.py (+25/-0)
lib/lp/translations/utilities/tests/test_xpi_import.py (+3/-1)
lib/lp/translations/utilities/tests/test_xpi_manifest.py (+21/-10)
lib/lp/translations/utilities/tests/test_xpi_po_exporter.py (+3/-1)
lib/lp/translations/utilities/translation_export.py (+1/-1)
lib/lp/translations/utilities/translation_import.py (+21/-18)
lib/lp/translations/utilities/xpi_manifest.py (+7/-0)
lib/lp/translations/windmill/testing.py (+18/-0)
lib/lp/translations/windmill/tests/disabled_test_productseries_templates.py (+25/-42)
lib/lp/translations/windmill/tests/test_documentation_links.py (+50/-71)
lib/lp/translations/windmill/tests/test_import_queue.py (+125/-58)
lib/lp/translations/windmill/tests/test_import_queue_error_output.py.disabled (+14/-29)
lib/lp/translations/windmill/tests/test_languages.py (+102/-0)
lib/lp/translations/windmill/tests/test_pofile_translate.py (+251/-0)
lib/lp/translations/windmill/tests/test_serieslanguages.py (+78/-0)
lib/lp_sitecustomize.py (+30/-0)
lib/pprint25.py (+0/-315)
lib/psycopg.py (+0/-9)
lib/schoolbell/README.txt (+0/-7)
lib/schoolbell/__init__.py (+0/-38)
lib/schoolbell/browser.py (+0/-71)
lib/schoolbell/icalendar.py (+0/-1128)
lib/schoolbell/interfaces.py (+0/-396)
lib/schoolbell/mixins.py (+0/-314)
lib/schoolbell/simple.py (+0/-96)
lib/schoolbell/tests/__init__.py (+0/-1)
lib/schoolbell/tests/test_icalendar.py (+0/-782)
lib/schoolbell/tests/test_schoolbell.py (+0/-74)
lib/schoolbell/utils.py (+0/-164)
lp-sfood-packages (+35/-0)
script-testing.zcml (+8/-0)
script.zcml (+5/-1)
scripts/branch-distro.py (+39/-0)
scripts/branch-rewrite.py (+1/-1)
scripts/bug-export.py (+3/-3)
scripts/bug-import.py (+3/-3)
scripts/bugzilla-import.py (+3/-8)
scripts/cache-country-mirrors.py (+7/-5)
scripts/clean-sourceforge-project-entries.py (+1/-1)
scripts/close-account.py (+21/-13)
scripts/code-import-worker-monitor.py (+20/-9)
scripts/code-import-worker.py (+27/-6)
scripts/convert-person-to-team.py (+1/-1)
scripts/copy-translations-from-parent.py (+1/-1)
scripts/entitlements-to-lp.py (+2/-5)
scripts/find-email-clusters.py (+2/-3)
scripts/ftpmaster-tools/_syncorigins.py (+2/-2)
scripts/ftpmaster-tools/archive-cruft-check.py (+1/-1)
scripts/ftpmaster-tools/archive-integrity-check.py (+1/-1)
scripts/ftpmaster-tools/archive-override-check.py (+1/-1)
scripts/ftpmaster-tools/buildd-mass-retry.py (+10/-4)
scripts/ftpmaster-tools/change-override.py (+1/-1)
scripts/ftpmaster-tools/copy-package.py (+1/-1)
scripts/ftpmaster-tools/dak_utils.py (+4/-154)
scripts/ftpmaster-tools/initialise-from-parent.py (+9/-9)
scripts/ftpmaster-tools/lp-query-distro.py (+1/-1)
scripts/ftpmaster-tools/lp-remove-package.py (+1/-1)
scripts/ftpmaster-tools/manage-chroot.py (+1/-1)
scripts/ftpmaster-tools/obsolete-distroseries.py (+1/-1)
scripts/ftpmaster-tools/ppa-report.py (+1/-1)
scripts/ftpmaster-tools/queue (+1/-1)
scripts/ftpmaster-tools/remove-package.py (+11/-11)
scripts/ftpmaster-tools/sync-source.py (+113/-96)
scripts/ftpmaster-tools/unembargo-package.py (+1/-1)
scripts/get-stacked-on-branches.py (+1/-1)
scripts/gina.py (+41/-45)
scripts/import-debian-bugs.py (+1/-1)
scripts/import-packagenames.py (+2/-2)
scripts/import-zope-specs.py (+4/-4)
scripts/librarian-report.py (+39/-6)
scripts/linkreport.py (+2/-2)
scripts/list-team-members (+6/-5)
scripts/make-static.py (+0/-15)
scripts/memcached-stats.py (+117/-0)
scripts/merge-email-clusters.py (+2/-3)
scripts/migrate-bugzilla-initialcontacts.py (+1/-1)
scripts/migrate-librarian-content-md5.py (+1/-1)
scripts/mirror-branch.py (+1/-2)
scripts/mlist-import.py (+4/-4)
scripts/mlist-sync.py (+4/-4)
scripts/modified-branches.py (+1/-1)
scripts/populate-archive.py (+1/-1)
scripts/ppa-add-missing-builds.py (+16/-0)
scripts/process-accepted.py (+9/-103)
scripts/process-death-row.py (+1/-1)
scripts/process-upload.py (+1/-1)
scripts/publish-distro.py (+1/-1)
scripts/rosetta/check-distroseries-translations-diffs.py (+1/-1)
scripts/rosetta/fix_translation_credits.py (+28/-0)
scripts/rosetta/gettext_check_messages.py (+1/-1)
scripts/rosetta/message-sharing-merge.py (+2/-2)
scripts/rosetta/message-sharing-populate-test.py (+1/-1)
scripts/rosetta/message-sharing-populate.py (+1/-1)
scripts/rosetta/pottery-generate-intltool.py (+15/-0)
scripts/rosetta/remove-obsolete-translations.py (+1/-1)
scripts/rosetta/remove-translations-by.py (+1/-1)
scripts/rosetta/remove-upstream-translations.py (+2/-3)
scripts/rosetta/reupload-translations.py (+1/-1)
scripts/rosetta/share-jaunty-translations.py (+1/-1)
scripts/rosetta/validate-translations-file.py (+18/-0)
scripts/script-monitor-nagios.py (+6/-6)
scripts/script-monitor.py (+4/-4)
scripts/sourceforge-import.py (+6/-11)
scripts/start-loggerhead.py (+177/-0)
scripts/stop-loggerhead.py (+33/-0)
scripts/update-bzr-version-info.sh (+1/-1)
scripts/update-stacked-on.py (+11/-46)
scripts/upload2librarian.py (+3/-2)
setup.py (+14/-2)
sourcecode/Makefile (+11/-4)
standard_template.py (+2/-2)
standard_test_template.py (+2/-3)
test_on_merge.py (+13/-7)
utilities/apidoc-index.pt (+56/-0)
utilities/check-configs.py (+1/-1)
utilities/check-content-interfaces.py (+1/-1)
utilities/check-db-revision.py (+22/-0)
utilities/check-sampledata.py (+1/-1)
utilities/check-scripts.py (+3/-2)
utilities/community-contributions.py (+415/-160)
utilities/create-lp-wadl-and-apidoc.py (+63/-19)
utilities/ec2 (+3/-7)
utilities/findimports.py (+4/-6)
utilities/flaky.py (+1/-1)
utilities/generate-external-bug-status-docs (+1/-1)
utilities/get-branch-info (+1/-1)
utilities/launchpad-database-setup (+6/-5)
utilities/less-oops.sh (+9/-0)
utilities/list-person-references.py (+3/-1)
utilities/lp-deps.py (+35/-0)
utilities/lp.pylintrc (+1/-1)
utilities/lsconf.py (+4/-4)
utilities/make-dummy-hosted-branches (+1/-1)
utilities/make-lp-user (+117/-12)
utilities/migrater/file-ownership.txt (+2/-1)
utilities/migrater/migrater.py (+10/-5)
utilities/mock-code-import (+1/-1)
utilities/on-edge (+160/-0)
utilities/page-performance-report.ini (+35/-0)
utilities/page-performance-report.py (+18/-0)
utilities/paste (+3/-5)
utilities/pgbackup.py (+1/-1)
utilities/pgcreate.py (+1/-1)
utilities/pgkillactive.py (+1/-1)
utilities/pgkillidle.py (+1/-1)
utilities/pglogwatch.py (+1/-1)
utilities/pgmassacre.py (+20/-4)
utilities/pgrestore.py (+1/-1)
utilities/pgstats.py (+1/-1)
utilities/qa-ready (+108/-0)
utilities/rocketfuel-setup (+6/-79)
utilities/sanitize-db.py (+1/-1)
utilities/sourcedeps.conf (+16/-21)
utilities/soyuz-sampledata-setup.py (+422/-0)
utilities/start-dev-soyuz.sh (+21/-0)
utilities/summarizelogs.py (+1/-1)
utilities/top-tests.py (+1/-1)
utilities/update-revisionauthor-email.py (+1/-1)
utilities/update-sourcecode (+1/-1)
utilities/windmill.py (+0/-15)
utilities/xxxreport.py (+1/-1)
version.txt (+1/-1)
versions.cfg (+125/-90)
Changed in launchpad-registry: | |
assignee: | Edwin Grubbs (edwin-grubbs) → Curtis Hovey (sinzui) |
Changed in launchpad-registry: | |
assignee: | Curtis Hovey (sinzui) → Brad Crittenden (bac) |
Changed in launchpad-registry: | |
status: | Triaged → In Progress |
Changed in launchpad-registry: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
Fixed in db-stable r9331 <http:// bazaar. launchpad. net/~launchpad- pqm/launchpad/ db-stable/ revision/ 9331>