Merge ~cjwatson/launchpad:doctest-reformat-headers into launchpad:master
- Git
- lp:~cjwatson/launchpad
- doctest-reformat-headers
- Merge into master
Proposed by
Colin Watson
Status: | Merged |
---|---|
Approved by: | Colin Watson |
Approved revision: | 509c09bb8067888b42b7aac9a06cb5e9a4f42539 |
Merge reported by: | Otto Co-Pilot |
Merged at revision: | not available |
Proposed branch: | ~cjwatson/launchpad:doctest-reformat-headers |
Merge into: | launchpad:master |
Diff against target: |
10666 lines (+2106/-1053) 321 files modified
configs/README.txt (+22/-11) lib/lp/answers/stories/faq-add.txt (+2/-1) lib/lp/answers/stories/faq-browse-and-search.txt (+12/-6) lib/lp/answers/stories/faq-edit.txt (+2/-1) lib/lp/answers/stories/question-add-in-other-languages.txt (+2/-1) lib/lp/answers/stories/question-browse-and-search.txt (+42/-21) lib/lp/answers/stories/question-compatibility-urls.txt (+18/-9) lib/lp/answers/stories/question-edit.txt (+6/-3) lib/lp/answers/stories/question-message.txt (+6/-3) lib/lp/answers/stories/question-obfuscation.txt (+6/-3) lib/lp/answers/stories/question-reject-and-change-status.txt (+4/-2) lib/lp/answers/stories/question-search-multiple-languages.txt (+10/-5) lib/lp/answers/stories/question-subscriptions.txt (+8/-4) lib/lp/answers/stories/this-is-a-faq.txt (+18/-9) lib/lp/app/doc/displaying-numbers.txt (+6/-3) lib/lp/app/doc/launchpadform.txt (+28/-14) lib/lp/app/doc/tales-email-formatting.txt (+6/-3) lib/lp/app/doc/validation.txt (+4/-2) lib/lp/app/stories/basics/marketing.txt (+20/-10) lib/lp/app/stories/basics/max-batch-size.txt (+2/-1) lib/lp/app/stories/basics/user-requested-oops.txt (+2/-1) lib/lp/app/stories/basics/xx-dbpolicy.txt (+2/-1) lib/lp/app/stories/basics/xx-developerexceptions.txt (+4/-2) lib/lp/app/stories/basics/xx-lowercase-redirection.txt (+2/-1) lib/lp/app/stories/basics/xx-maintenance-message.txt (+4/-2) lib/lp/app/stories/folder.txt (+10/-5) lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt (+8/-4) lib/lp/app/widgets/doc/announcement-date-widget.txt (+2/-1) lib/lp/app/widgets/doc/lower-case-text-widget.txt (+2/-1) lib/lp/app/widgets/doc/noneable-text-widgets.txt (+6/-3) lib/lp/app/widgets/doc/project-scope-widget.txt (+10/-5) lib/lp/app/widgets/doc/tokens-text-widget.txt (+2/-1) lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt (+2/-1) lib/lp/archivepublisher/tests/deathrow.txt (+4/-2) lib/lp/archiveuploader/tests/upload-path-parsing.txt (+10/-5) lib/lp/blueprints/stories/blueprints/xx-buglinks.txt (+6/-3) lib/lp/blueprints/stories/blueprints/xx-dependencies.txt (+18/-9) lib/lp/blueprints/stories/standalone/xx-batching.txt (+2/-1) lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt (+6/-3) lib/lp/bugs/browser/tests/buglinktarget-views.txt (+10/-5) lib/lp/bugs/browser/tests/bugtask-edit-views.txt (+12/-6) lib/lp/bugs/browser/tests/bugtask-search-views.txt (+10/-5) lib/lp/bugs/browser/tests/distrosourcepackage-bug-views.txt (+4/-2) lib/lp/bugs/doc/bug-change.txt (+34/-17) lib/lp/bugs/doc/bug-reported-acknowledgement.txt (+2/-1) lib/lp/bugs/doc/bug-reporting-guidelines.txt (+2/-1) lib/lp/bugs/doc/bug-set-status.txt (+6/-3) lib/lp/bugs/doc/bugmessage-visibility.txt (+2/-1) lib/lp/bugs/doc/bugmessage.txt (+12/-6) lib/lp/bugs/doc/bugnotifications.txt (+20/-10) lib/lp/bugs/doc/bugtarget.txt (+4/-2) lib/lp/bugs/doc/bugtask-package-bugcounts.txt (+6/-3) lib/lp/bugs/doc/bugtask-search-old-urls.txt (+2/-1) lib/lp/bugs/doc/bugtask-status-workflow.txt (+4/-2) lib/lp/bugs/doc/bugwidget.txt (+2/-1) lib/lp/bugs/doc/cve.txt (+12/-6) lib/lp/bugs/doc/displaying-bugs-and-tasks.txt (+10/-5) lib/lp/bugs/doc/externalbugtracker-checkwatches.txt (+4/-2) lib/lp/bugs/doc/externalbugtracker-comment-pushing.txt (+4/-2) lib/lp/bugs/doc/externalbugtracker-emailaddress.txt (+6/-3) lib/lp/bugs/doc/externalbugtracker-linking-back.txt (+4/-2) lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt (+6/-3) lib/lp/bugs/doc/externalbugtracker-mantis.txt (+6/-3) lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt (+4/-2) lib/lp/bugs/doc/externalbugtracker-roundup.txt (+12/-6) lib/lp/bugs/doc/externalbugtracker-rt.txt (+18/-9) lib/lp/bugs/doc/externalbugtracker-sourceforge.txt (+12/-6) lib/lp/bugs/doc/externalbugtracker-trac.txt (+14/-7) lib/lp/bugs/doc/product-update-remote-product-script.txt (+2/-1) lib/lp/bugs/doc/products-with-no-remote-product.txt (+2/-1) lib/lp/bugs/doc/treelookup.txt (+12/-6) lib/lp/bugs/stories/bug-also-affects/xx-also-affects-distribution-default-values.txt (+2/-1) lib/lp/bugs/stories/bug-also-affects/xx-also-affects-new-upstream.txt (+4/-2) lib/lp/bugs/stories/bug-also-affects/xx-bugtracker-information.txt (+2/-1) lib/lp/bugs/stories/bug-also-affects/xx-duplicate-bugwatches.txt (+6/-3) lib/lp/bugs/stories/bug-also-affects/xx-request-distribution-no-release-fix.txt (+6/-3) lib/lp/bugs/stories/bug-also-affects/xx-upstream-bugtracker-links.txt (+2/-1) lib/lp/bugs/stories/bug-release-management/nomination-navigation.txt (+2/-1) lib/lp/bugs/stories/bug-tags/xx-searching-for-tags.txt (+4/-2) lib/lp/bugs/stories/bugattachments/xx-delete-bug-attachment.txt (+2/-1) lib/lp/bugs/stories/bugattachments/xx-display-filesize-attachment.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-add-comment-bugtask-edit.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-add-comment-distribution-no-current-release.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-add-comment-with-bugwatch-and-cve.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-bug-affects-me-too.txt (+6/-3) lib/lp/bugs/stories/bugs/xx-bug-heat-on-bug-page.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt (+12/-6) lib/lp/bugs/stories/bugs/xx-distributionsourcepackage-bugs.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt (+6/-3) lib/lp/bugs/stories/bugs/xx-duplicate-of-private-bug.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-edit-no-currentrelease-distribution-task.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-front-page-search.txt (+14/-7) lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt (+10/-5) lib/lp/bugs/stories/bugs/xx-project-bugs-page.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt (+2/-1) lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt (+6/-3) lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt (+6/-3) lib/lp/bugs/stories/bugtask-searches/xx-filter-by-linked-branches.txt (+2/-1) lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt (+18/-9) lib/lp/bugs/stories/bugtask-searches/xx-old-urls-still-work.txt (+4/-2) lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt (+2/-1) lib/lp/bugs/stories/bugwatches/xx-bugwatch-comments.txt (+2/-1) lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt (+2/-1) lib/lp/bugs/stories/cve/xx-cve-link-xss.txt (+2/-1) lib/lp/bugs/stories/feeds/xx-bug-atom.txt (+28/-14) lib/lp/bugs/stories/feeds/xx-bug-html.txt (+14/-7) lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug-tags.txt (+2/-1) lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug.txt (+4/-2) lib/lp/bugs/stories/guided-filebug/xx-filebug-attachments.txt (+6/-3) lib/lp/bugs/stories/guided-filebug/xx-filebug-tags.txt (+6/-3) lib/lp/bugs/stories/guided-filebug/xx-options-for-bug-supervisors.txt (+4/-2) lib/lp/bugs/stories/guided-filebug/xx-productseries-guided-filebug.txt (+2/-1) lib/lp/bugs/stories/guided-filebug/xx-sorting-by-relevance.txt (+2/-1) lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt (+2/-1) lib/lp/bugs/stories/webservice/xx-bug-target.txt (+8/-4) lib/lp/bugs/stories/webservice/xx-hide-comments.txt (+2/-1) lib/lp/bugs/tests/buglinktarget.txt (+10/-5) lib/lp/bugs/tests/trac-xmlrpc-transport.txt (+14/-7) lib/lp/buildmaster/doc/buildqueue.txt (+6/-3) lib/lp/buildmaster/stories/builder-views.txt (+10/-5) lib/lp/buildmaster/stories/xx-buildfarm-index.txt (+2/-1) lib/lp/code/doc/branch-karma.txt (+8/-4) lib/lp/code/doc/branch-notifications.txt (+16/-8) lib/lp/code/doc/code-jobs.txt (+20/-10) lib/lp/code/doc/codeimport-job.txt (+18/-9) lib/lp/code/doc/codeimport-result.txt (+6/-3) lib/lp/code/doc/codereviewcomment.txt (+6/-3) lib/lp/code/doc/revision.txt (+16/-8) lib/lp/code/stories/branches/package-branch-merge-proposals.txt (+2/-1) lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt (+2/-1) lib/lp/code/stories/branches/xx-branch-listings-merge-proposal-badge.txt (+2/-1) lib/lp/code/stories/branches/xx-branch-listings.txt (+16/-8) lib/lp/code/stories/branches/xx-branch-mirror-failures.txt (+6/-3) lib/lp/code/stories/branches/xx-claiming-team-code-reviews.txt (+2/-1) lib/lp/code/stories/branches/xx-distribution-branches.txt (+2/-1) lib/lp/code/stories/branches/xx-distroseries-branches.txt (+2/-1) lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt (+2/-1) lib/lp/code/stories/branches/xx-product-overview.txt (+2/-1) lib/lp/code/stories/branches/xx-source-package-branches-empty.txt (+2/-1) lib/lp/code/stories/branches/xx-source-package-branches-listing.txt (+2/-1) lib/lp/code/stories/branches/xx-upload-directions.txt (+10/-5) lib/lp/code/stories/codeimport/xx-codeimport-machines.txt (+6/-3) lib/lp/code/stories/codeimport/xx-edit-codeimport.txt (+14/-7) lib/lp/code/stories/codeimport/xx-failing-codeimport.txt (+2/-1) lib/lp/code/stories/feeds/xx-branch-atom.txt (+12/-6) lib/lp/code/stories/feeds/xx-revision-atom.txt (+10/-5) lib/lp/code/stories/webservice/xx-branches.txt (+8/-4) lib/lp/code/stories/webservice/xx-branchmergeproposal.txt (+18/-9) lib/lp/coop/answersbugs/stories/question-buglink.txt (+8/-4) lib/lp/coop/answersbugs/stories/question-makebug.txt (+2/-1) lib/lp/registry/browser/tests/poll-views_0.txt (+8/-4) lib/lp/registry/browser/tests/team-join-views.txt (+4/-2) lib/lp/registry/codesofconduct/1.0.1.txt (+2/-1) lib/lp/registry/codesofconduct/1.0.txt (+2/-1) lib/lp/registry/codesofconduct/1.1.txt (+2/-1) lib/lp/registry/codesofconduct/2.0.txt (+6/-3) lib/lp/registry/doc/announcement.txt (+18/-9) lib/lp/registry/doc/cache-country-mirrors.txt (+2/-1) lib/lp/registry/doc/distribution-mirror.txt (+16/-8) lib/lp/registry/doc/distribution-sourcepackage.txt (+14/-7) lib/lp/registry/doc/featuredproject.txt (+2/-1) lib/lp/registry/doc/hasowner-authorization.txt (+2/-1) lib/lp/registry/doc/irc.txt (+2/-1) lib/lp/registry/doc/jabber.txt (+2/-1) lib/lp/registry/doc/karmacache.txt (+6/-3) lib/lp/registry/doc/launchpad-container.txt (+8/-4) lib/lp/registry/doc/personroles.txt (+12/-6) lib/lp/registry/doc/pillar-aliases-field.txt (+2/-1) lib/lp/registry/doc/pillar.txt (+8/-4) lib/lp/registry/doc/productrelease.txt (+2/-1) lib/lp/registry/doc/productseries.txt (+12/-6) lib/lp/registry/doc/standing.txt (+8/-4) lib/lp/registry/doc/team-nav-menus.txt (+2/-1) lib/lp/registry/doc/user-to-user.txt (+8/-4) lib/lp/registry/doc/wikiname.txt (+2/-1) lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt (+2/-1) lib/lp/registry/stories/distributionmirror/xx-distributionmirror-prober-logs.txt (+2/-1) lib/lp/registry/stories/gpg-coc/xx-gpg-coc.txt (+10/-5) lib/lp/registry/stories/mailinglists/hosted-email-address.txt (+2/-1) lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt (+8/-4) lib/lp/registry/stories/milestone/xx-milestone-description.txt (+6/-3) lib/lp/registry/stories/person/xx-add-sshkey.txt (+2/-1) lib/lp/registry/stories/person/xx-approve-members.txt (+2/-1) lib/lp/registry/stories/person/xx-person-working-on.txt (+2/-1) lib/lp/registry/stories/pillar/xx-pillar-deactivation.txt (+2/-1) lib/lp/registry/stories/pillar/xx-pillar-sprints.txt (+2/-1) lib/lp/registry/stories/pillar/xx-pillar-traversal.txt (+2/-1) lib/lp/registry/stories/product/xx-launchpad-project-search.txt (+4/-2) lib/lp/registry/stories/product/xx-product-edit-sourceforge-project.txt (+2/-1) lib/lp/registry/stories/productrelease/xx-productrelease-basics.txt (+8/-4) lib/lp/registry/stories/productrelease/xx-productrelease-delete.txt (+2/-1) lib/lp/registry/stories/project/xx-project-add.txt (+2/-1) lib/lp/registry/stories/team-polls/create-poll-options.txt (+2/-1) lib/lp/registry/stories/team-polls/edit-options.txt (+2/-1) lib/lp/registry/stories/team-polls/edit-poll.txt (+2/-1) lib/lp/registry/stories/team-polls/vote-poll.txt (+6/-3) lib/lp/registry/stories/team/xx-team-add-my-teams.txt (+2/-1) lib/lp/registry/stories/team/xx-team-contactemail-xss.txt (+2/-1) lib/lp/registry/stories/team/xx-team-contactemail.txt (+4/-2) lib/lp/registry/stories/teammembership/private-team.txt (+6/-3) lib/lp/registry/stories/teammembership/xx-member-renewed-membership.txt (+2/-1) lib/lp/registry/stories/teammembership/xx-renew-subscription.txt (+2/-1) lib/lp/registry/stories/teammembership/xx-team-leave.txt (+6/-3) lib/lp/registry/stories/webservice/xx-distribution-mirror.txt (+6/-3) lib/lp/registry/stories/webservice/xx-private-team.txt (+4/-2) lib/lp/registry/stories/webservice/xx-structuralsubscription.txt (+2/-1) lib/lp/registry/tests/bug-249185.txt (+2/-1) lib/lp/registry/tests/person_from_principal.txt (+2/-1) lib/lp/services/database/doc/decoratedresultset.txt (+14/-7) lib/lp/services/database/doc/multitablecopy.txt (+24/-12) lib/lp/services/database/doc/storm-store-reset.txt (+2/-1) lib/lp/services/database/tests/decoratedresultset.txt (+24/-12) lib/lp/services/doc/looptuner.txt (+28/-14) lib/lp/services/feeds/doc/feeds.txt (+10/-5) lib/lp/services/feeds/stories/xx-links.txt (+30/-15) lib/lp/services/feeds/stories/xx-navigation.txt (+12/-6) lib/lp/services/fields/doc/uri-field.txt (+18/-9) lib/lp/services/gpg/doc/gpghandler.txt (+10/-5) lib/lp/services/oauth/doc/oauth-pages.txt (+4/-2) lib/lp/services/oauth/stories/access-token.txt (+2/-1) lib/lp/services/oauth/stories/managing-tokens.txt (+2/-1) lib/lp/services/oauth/stories/request-token.txt (+2/-1) lib/lp/services/scripts/doc/profile.txt (+2/-1) lib/lp/services/verification/browser/tests/logintoken-views.txt (+4/-2) lib/lp/services/verification/doc/logintoken.txt (+4/-2) lib/lp/services/webapp/doc/canonical_url.txt (+24/-12) lib/lp/services/webapp/doc/canonicalurl.txt (+8/-4) lib/lp/services/webapp/doc/launchbag.txt (+2/-1) lib/lp/services/webapp/doc/menus.txt (+26/-13) lib/lp/services/webapp/doc/navigation.txt (+22/-11) lib/lp/services/webapp/doc/notification-text-escape.txt (+2/-1) lib/lp/services/webapp/doc/renamed-view.txt (+10/-5) lib/lp/services/webapp/doc/timeout.txt (+4/-2) lib/lp/services/webapp/doc/uri.txt (+2/-1) lib/lp/services/webapp/doc/xmlrpc-infrastructure.txt (+2/-1) lib/lp/services/webapp/doc/zcmldirectives.txt (+18/-9) lib/lp/services/webapp/tests/test_launchpad_login_source.txt (+2/-1) lib/lp/services/webservice/doc/launchpadlib.txt (+2/-1) lib/lp/services/webservice/doc/webservice-configuration.txt (+4/-2) lib/lp/services/webservice/doc/webservice-error.txt (+2/-1) lib/lp/services/webservice/doc/webservice-marshallers.txt (+4/-2) lib/lp/services/webservice/stories/apidoc.txt (+2/-1) lib/lp/services/webservice/stories/root.txt (+2/-1) lib/lp/services/webservice/stories/xx-wadl.txt (+2/-1) lib/lp/services/worlddata/stories/webservice/xx-country.txt (+4/-2) lib/lp/soyuz/browser/tests/archivesubscription-views.txt (+4/-2) lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt (+2/-1) lib/lp/soyuz/browser/tests/distroseriesqueue-views.txt (+4/-2) lib/lp/soyuz/browser/tests/sourcepackage-views.txt (+2/-1) lib/lp/soyuz/doc/archiveauthtoken.txt (+8/-4) lib/lp/soyuz/doc/binarypackagerelease.txt (+4/-2) lib/lp/soyuz/doc/build-failedtoupload-workflow.txt (+4/-2) lib/lp/soyuz/doc/build-files.txt (+2/-1) lib/lp/soyuz/doc/distroseriesbinarypackage.txt (+2/-1) lib/lp/soyuz/doc/fakepackager.txt (+8/-4) lib/lp/soyuz/doc/package-cache-script.txt (+2/-1) lib/lp/soyuz/doc/package-meta-classes.txt (+2/-1) lib/lp/soyuz/doc/package-relationship-pages.txt (+2/-1) lib/lp/soyuz/doc/package-relationship.txt (+2/-1) lib/lp/soyuz/doc/packagecopyrequest.txt (+2/-1) lib/lp/soyuz/doc/pocketchroot.txt (+2/-1) lib/lp/soyuz/doc/sampledata-setup.txt (+2/-1) lib/lp/soyuz/doc/sourcepackagerelease.txt (+8/-4) lib/lp/soyuz/stories/packaging/package-pages-navigation.txt (+16/-8) lib/lp/soyuz/stories/ppa/xx-edit-dependencies.txt (+14/-7) lib/lp/soyuz/stories/ppa/xx-ppa-navigation.txt (+2/-1) lib/lp/soyuz/stories/ppa/xx-private-ppa-presentation.txt (+6/-3) lib/lp/soyuz/stories/ppa/xx-private-ppa-subscription-stories.txt (+30/-15) lib/lp/soyuz/stories/ppa/xx-private-ppa-subscriptions.txt (+10/-5) lib/lp/soyuz/stories/ppa/xx-private-ppas.txt (+10/-5) lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt (+24/-12) lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt (+2/-1) lib/lp/soyuz/stories/soyuz/xx-distribution-add.txt (+2/-1) lib/lp/soyuz/stories/soyuz/xx-distribution-archives.txt (+2/-1) lib/lp/soyuz/stories/soyuz/xx-distribution-edit.txt (+2/-1) lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt (+10/-5) lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt (+2/-1) lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt (+2/-1) lib/lp/soyuz/stories/soyuz/xx-package-diff.txt (+8/-4) lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt (+2/-1) lib/lp/soyuz/stories/soyuz/xx-private-builds.txt (+10/-5) lib/lp/soyuz/stories/webservice/xx-person-createppa.txt (+6/-3) lib/lp/testing/doc/sample-data-assertions.txt (+4/-2) lib/lp/translations/browser/tests/productseries-views.txt (+6/-3) lib/lp/translations/doc/message-sharing-merge-script.txt (+2/-1) lib/lp/translations/doc/poexport-request-productseries.txt (+2/-1) lib/lp/translations/doc/poexport-request.txt (+10/-5) lib/lp/translations/doc/poexportqueue-replication-lag.txt (+2/-1) lib/lp/translations/doc/remove-translations-by.txt (+4/-2) lib/lp/translations/doc/translationbranchapprover.txt (+2/-1) lib/lp/translations/doc/translationbuildapprover.txt (+2/-1) lib/lp/translations/doc/translationrelicensingagreement.txt (+2/-1) lib/lp/translations/stories/distribution/xx-distribution-change-language-pack-admins.txt (+2/-1) lib/lp/translations/stories/importqueue/xx-entry-error-output.txt (+2/-1) lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt (+18/-9) lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt (+10/-5) lib/lp/translations/stories/navigation-links/pofile.txt (+2/-1) lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt (+12/-6) lib/lp/translations/stories/productseries/xx-productseries-translations-bzr-request.txt (+8/-4) lib/lp/translations/stories/standalone/xx-person-editlanguages.txt (+6/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-dismiss-suggestions.txt (+4/-2) lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt (+2/-1) lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt (+6/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt (+2/-1) lib/lp/translations/stories/standalone/xx-products-with-translations.txt (+2/-1) lib/lp/translations/stories/standalone/xx-rosetta-distributionsourcepackage-list.txt (+2/-1) lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt (+2/-1) lib/lp/translations/stories/standalone/xx-translation-access-display.txt (+6/-3) lib/lp/translations/stories/standalone/xx-translation-credits.txt (+2/-1) lib/lp/translations/stories/standalone/xx-translation-help.txt (+2/-1) lib/lp/translations/stories/translations/xx-translations.txt (+8/-4) lib/lp/translations/stories/webservice/xx-translationfocus.txt (+2/-1) lib/lp/translations/utilities/doc/gettext_mo_exporter.txt (+8/-4) lib/lp/translations/utilities/doc/gettext_po_exporter.txt (+8/-4) lib/lp/translations/utilities/doc/gettext_po_parser.txt (+20/-10) lib/lp/translations/utilities/doc/gettext_po_parser_context.txt (+14/-7) lib/lp/translations/utilities/doc/kde-po-file-format.txt (+18/-9) lib/lp/translations/utilities/doc/templatenames.txt (+2/-1) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Colin Watson (community) | Approve | ||
Review via email: mp+406176@code.launchpad.net |
Commit message
Reformat doctest headers in reStructuredText style
Description of the change
pocket-lint (and hence lp-lint-doctest) have been complaining about Moin-style headers in doctests for a long time, but we've never got round to fixing them all. Let's just get it over with.
Patch generated by:
git grep -El '^= .+ = *$' | fgrep .txt | \
xargs perl -pi -e 's/^= (.+) = *$/"$1\n" . ("=" x length($1))/e'
git grep -El '^== .+ == *$' | fgrep .txt | \
xargs perl -pi -e 's/^== (.+) == *$/"$1\n" . ("-" x length($1))/e'
git grep -El '^=== .+ === *$' | fgrep .txt | \
xargs perl -pi -e 's/^=== (.+) === *$/"$1\n" . ("." x length($1))/e'
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/configs/README.txt b/configs/README.txt |
2 | index 38e2893..4348000 100644 |
3 | --- a/configs/README.txt |
4 | +++ b/configs/README.txt |
5 | @@ -1,10 +1,12 @@ |
6 | -= Launchpad configs = |
7 | +Launchpad configs |
8 | +================= |
9 | |
10 | This directory defines the configurations used to run Launchpad |
11 | applications in specific environments. |
12 | |
13 | |
14 | -== Environments == |
15 | +Environments |
16 | +------------ |
17 | |
18 | This directory stores configs. The config used is selected on startup |
19 | using the LPCONFIG environment variable. |
20 | @@ -24,13 +26,15 @@ to do this if you are adding a new required config option to |
21 | launchpad-lazr.conf. |
22 | |
23 | |
24 | -== LaunchpadConfig == |
25 | +LaunchpadConfig |
26 | +--------------- |
27 | |
28 | Launchpad uses a singleton LaunchpadConfig object to select the config |
29 | to load and manage its state. |
30 | |
31 | |
32 | -=== Instance directories and process files === |
33 | +Instance directories and process files |
34 | +...................................... |
35 | |
36 | The directories in configs/ represent environment's config `instance`. |
37 | Environment and instance are synonymous in this case. The instance is |
38 | @@ -60,7 +64,8 @@ All this information is available in the config object. |
39 | '.../configs/development/launchpad-lazr.conf' |
40 | |
41 | |
42 | -=== Accessing the LaunchpadConfig in code === |
43 | +Accessing the LaunchpadConfig in code |
44 | +..................................... |
45 | |
46 | The LaunchpadConfig singleton is exposed as config in its module. |
47 | |
48 | @@ -87,7 +92,8 @@ You can learn more about lp.services.config in the doctest located at |
49 | lib/canonical/launchpad/doc/canonical-config.txt |
50 | |
51 | |
52 | -=== Testing with LaunchpadConfig === |
53 | +Testing with LaunchpadConfig |
54 | +............................ |
55 | |
56 | Configurations are meant to be immutable--applications should never |
57 | alter the config. Nor should tests. Older code and tests assumed |
58 | @@ -121,7 +127,8 @@ the config. |
59 | 'answers.launchpad.net' |
60 | |
61 | |
62 | -== lazr.conf schema and confs == |
63 | +lazr.conf schema and confs |
64 | +-------------------------- |
65 | |
66 | All Launchpad configs inherit from the Launchpad schema defined |
67 | in ../lib/lp/services/config/schema-lazr.conf (it is symlinked |
68 | @@ -166,7 +173,8 @@ You can learn more about lazr.config in the doctest located at |
69 | lib/canonical/lazr/doc/config.txt |
70 | |
71 | |
72 | -=== schema template and optional sections === |
73 | +schema template and optional sections |
74 | +..................................... |
75 | |
76 | The schema can contain [<category>.template] sections that define a |
77 | common set of keys and default value for category of sections. |
78 | @@ -238,7 +246,8 @@ Including just the section ([vhost.xmlrpc_private]) will suffice. In |
79 | this case, the two keys were redefined. |
80 | |
81 | |
82 | -=== Implicit typing === |
83 | +Implicit typing |
84 | +............... |
85 | |
86 | lazr.config support implicit typing so that the application does not |
87 | need to coerce the config values: |
88 | @@ -264,7 +273,8 @@ the callsite must split the host:port compound object and coerce the |
89 | port to an int. |
90 | |
91 | |
92 | -=== Config inheritance === |
93 | +Config inheritance |
94 | +.................. |
95 | |
96 | The lazr configurations in this directory descend from the |
97 | Launchpad schema. This is a general outline of inheritance: |
98 | @@ -323,7 +333,8 @@ There are other configuration in this directory that are not |
99 | listed here |
100 | |
101 | |
102 | -=== Viewing a configuration with lsconf.py === |
103 | +Viewing a configuration with lsconf.py |
104 | +...................................... |
105 | |
106 | You can view the complete configuration for an process using the |
107 | lsconf.py utility to assemble the configuration from the lazr |
108 | diff --git a/lib/lp/answers/stories/faq-add.txt b/lib/lp/answers/stories/faq-add.txt |
109 | index c17df73..ac6023e 100644 |
110 | --- a/lib/lp/answers/stories/faq-add.txt |
111 | +++ b/lib/lp/answers/stories/faq-add.txt |
112 | @@ -1,4 +1,5 @@ |
113 | -== Creating a new FAQ == |
114 | +Creating a new FAQ |
115 | +------------------ |
116 | |
117 | New FAQs can be created for a project by users who have 'moderation' |
118 | privileges. This includes answer contacts and the project's owner. |
119 | diff --git a/lib/lp/answers/stories/faq-browse-and-search.txt b/lib/lp/answers/stories/faq-browse-and-search.txt |
120 | index 51ba8eb..555aa33 100644 |
121 | --- a/lib/lp/answers/stories/faq-browse-and-search.txt |
122 | +++ b/lib/lp/answers/stories/faq-browse-and-search.txt |
123 | @@ -1,6 +1,8 @@ |
124 | -= Browsing and Searching FAQs = |
125 | +Browsing and Searching FAQs |
126 | +=========================== |
127 | |
128 | -== No FAQs == |
129 | +No FAQs |
130 | +------- |
131 | |
132 | Miss Piggy decided to give Kubuntu a try based on the recommendations of |
133 | Kermit. She wants to watch the wedding scene of The Muppets Take |
134 | @@ -36,7 +38,8 @@ Kubuntu: |
135 | There are no FAQs for Kubuntu. |
136 | |
137 | |
138 | -== Browsing FAQs == |
139 | +Browsing FAQs |
140 | +------------- |
141 | |
142 | She learns through Fozzie Bear that support for Kubuntu is really |
143 | happening on the Ubuntu project. |
144 | @@ -94,7 +97,8 @@ The FAQ page has a link back to the FAQ listing: |
145 | http://answers.launchpad.test/ubuntu/+faqs |
146 | |
147 | |
148 | -== Searching FAQs == |
149 | +Searching FAQs |
150 | +-------------- |
151 | |
152 | All FAQs listing have a search box at the top, where the user can |
153 | enter keywords that be used to filter the displayed FAQs. |
154 | @@ -158,7 +162,8 @@ Following the link will show the questions results: |
155 | Flash/Java web pages |
156 | |
157 | |
158 | -== Distribution Source Packages and FAQs == |
159 | +Distribution Source Packages and FAQs |
160 | +------------------------------------- |
161 | |
162 | Altough distribution source packages aren't directly associated with |
163 | FAQs. The 'All FAQs' link that appears in that context links to the |
164 | @@ -173,7 +178,8 @@ distribution FAQs. |
165 | http://answers.launchpad.test/ubuntu/+faqs |
166 | |
167 | |
168 | -== Accessing an FAQ directly == |
169 | +Accessing an FAQ directly |
170 | +------------------------- |
171 | |
172 | Asking for a non-existent FAQ or an invalid ID will raise a 404 error. |
173 | |
174 | diff --git a/lib/lp/answers/stories/faq-edit.txt b/lib/lp/answers/stories/faq-edit.txt |
175 | index dc5969c..9a635d4 100644 |
176 | --- a/lib/lp/answers/stories/faq-edit.txt |
177 | +++ b/lib/lp/answers/stories/faq-edit.txt |
178 | @@ -1,4 +1,5 @@ |
179 | -= Editing FAQs = |
180 | +Editing FAQs |
181 | +============ |
182 | |
183 | It is possible to modify the title, keywords and content of an existing |
184 | FAQ. To do this, the user goes to the FAQ that they want to modify and |
185 | diff --git a/lib/lp/answers/stories/question-add-in-other-languages.txt b/lib/lp/answers/stories/question-add-in-other-languages.txt |
186 | index 9ec7b8d..47498e5 100644 |
187 | --- a/lib/lp/answers/stories/question-add-in-other-languages.txt |
188 | +++ b/lib/lp/answers/stories/question-add-in-other-languages.txt |
189 | @@ -1,4 +1,5 @@ |
190 | -= Asking questions in languages other than English = |
191 | +Asking questions in languages other than English |
192 | +================================================ |
193 | |
194 | It is possible to ask questions in a language other than English. The |
195 | 'Ask a question' page has a pop-up where the user can select the language |
196 | diff --git a/lib/lp/answers/stories/question-browse-and-search.txt b/lib/lp/answers/stories/question-browse-and-search.txt |
197 | index 6c5bc69..ba3b8f9 100644 |
198 | --- a/lib/lp/answers/stories/question-browse-and-search.txt |
199 | +++ b/lib/lp/answers/stories/question-browse-and-search.txt |
200 | @@ -1,4 +1,5 @@ |
201 | -= Browsing and Searching Questions = |
202 | +Browsing and Searching Questions |
203 | +================================ |
204 | |
205 | This story describes some common use cases about using the browsing and |
206 | searching features of the Answer Tracker. |
207 | @@ -9,7 +10,8 @@ IP address, since we'll use that later. |
208 | >>> browser.addHeader('X_FORWARDED_FOR', '196.36.161.227') |
209 | |
210 | |
211 | -== When Nobody Uses the Answer Tracker == |
212 | +When Nobody Uses the Answer Tracker |
213 | +----------------------------------- |
214 | |
215 | Average Joe has recently installed Kubuntu. He has a problem with his |
216 | system and goes to the Kubuntu's support page in Launchpad to see if |
217 | @@ -46,7 +48,8 @@ For projects that don't have products, the Answers facet is disabled. |
218 | ... |
219 | zope.testbrowser.browser.LinkNotFoundError |
220 | |
221 | -== Browsing Questions == |
222 | +Browsing Questions |
223 | +------------------ |
224 | |
225 | He realises that support for Kubuntu is probably going on in the Ubuntu |
226 | Answers page and goes there to check. |
227 | @@ -143,7 +146,8 @@ details of the question are available. |
228 | [<div class="report"><p>I get really poor hard drive performance.</p></div>] |
229 | |
230 | |
231 | -== Jumping to Questions == |
232 | +Jumping to Questions |
233 | +-------------------- |
234 | |
235 | The Answer Tracker main page permits the user to jump to a question by |
236 | submitting the question's id in the text input field with the 'Find |
237 | @@ -188,7 +192,8 @@ is shown search results instead of the question. |
238 | There are no questions matching "question 8" with the requested statuses. |
239 | |
240 | |
241 | -== Searching Questions == |
242 | +Searching Questions |
243 | +------------------- |
244 | |
245 | Browsing is fine when the number of questions is small, but searching |
246 | is more convenient as the number of questions grow larger. |
247 | @@ -250,7 +255,8 @@ error is displayed when the user forgets to select a status. |
248 | You must choose at least one status. |
249 | |
250 | |
251 | -== Controlling the Sort Order == |
252 | +Controlling the Sort Order |
253 | +-------------------------- |
254 | |
255 | That question isn't exactly what Average Joe was looking for. Now, he'd |
256 | like to see all the questions that were related to the firefox package. |
257 | @@ -289,12 +295,14 @@ selects the 'oldest first' sort order. |
258 | </table> |
259 | |
260 | |
261 | -== Common Reports == |
262 | +Common Reports |
263 | +-------------- |
264 | |
265 | In the actions menu, we find links to some common reports. |
266 | |
267 | |
268 | -=== Open Questions === |
269 | +Open Questions |
270 | +.............. |
271 | |
272 | Nice Guy likes helping others. He uses the 'Open' link to view the most |
273 | recent questions on Mozilla Firefox. |
274 | @@ -329,7 +337,8 @@ problems: |
275 | Problem showing the SVG demo on W3C site |
276 | |
277 | |
278 | -=== Answered Questions === |
279 | +Answered Questions |
280 | +.................. |
281 | |
282 | A random user has a problem with firefox in Ubuntu. They use the |
283 | 'Answered' link on the 'Answers' facet of the distribution to look for |
284 | @@ -363,7 +372,8 @@ they enter 'Evolution' as a keyword and hit the search button. |
285 | ... |
286 | |
287 | |
288 | -=== My questions === |
289 | +My questions |
290 | +............ |
291 | |
292 | Sample Person remembers posting a question on mozilla-firefox. They use |
293 | the 'My questions' link on the distribution source package Answers facet |
294 | @@ -435,7 +445,8 @@ informing them of this fact is displayed. |
295 | You didn't ask any questions about gnomebaker. |
296 | |
297 | |
298 | -=== Need attention === |
299 | +Need attention |
300 | +.............. |
301 | |
302 | A user can often forget which questions need their attention. For |
303 | this purpose, there is a 'Need attention' report which displays the |
304 | @@ -488,7 +499,8 @@ informing them of this fact is displayed. |
305 | No questions need your attention for gnomebaker. |
306 | |
307 | |
308 | -== Person Reports == |
309 | +Person Reports |
310 | +-------------- |
311 | |
312 | The Answers facet on on person also contains various searchable |
313 | listings. |
314 | @@ -553,7 +565,8 @@ The actions menu contains links to listing that contain only a specific |
315 | type of involvement. |
316 | |
317 | |
318 | -=== Assigned === |
319 | +Assigned |
320 | +........ |
321 | |
322 | The assigned report only lists the questions to which the person is |
323 | assigned. |
324 | @@ -565,7 +578,8 @@ assigned. |
325 | No questions assigned to Foo Bar found with the requested statuses. |
326 | |
327 | |
328 | -=== Answered === |
329 | +Answered |
330 | +........ |
331 | |
332 | The 'Answered' link displays all the questions where the person is the |
333 | answerer. |
334 | @@ -579,7 +593,8 @@ answerer. |
335 | mailto: problem in webpage |
336 | |
337 | |
338 | -=== Commented === |
339 | +Commented |
340 | +......... |
341 | |
342 | The report available under the 'Commented' link displays all the |
343 | questions commented on by the person. |
344 | @@ -597,7 +612,8 @@ questions commented on by the person. |
345 | Newly installed plug-in doesn't seem to be used |
346 | |
347 | |
348 | -=== Asked === |
349 | +Asked |
350 | +..... |
351 | |
352 | The 'Asked' link displays a listing containing all the questions |
353 | asked by the person. |
354 | @@ -612,7 +628,8 @@ asked by the person. |
355 | Firefox loses focus and gets stuck |
356 | |
357 | |
358 | -=== Need attention === |
359 | +Need attention |
360 | +.............. |
361 | |
362 | The 'Need attention' link displays all the questions that need |
363 | the attention of that person. |
364 | @@ -627,7 +644,8 @@ the attention of that person. |
365 | Slow system |
366 | |
367 | |
368 | -=== Subscribed === |
369 | +Subscribed |
370 | +.......... |
371 | |
372 | Foo Bar can find all the questions to which they are subscribed by |
373 | visiting the 'Subscribed' link in the 'Answers' facet. |
374 | @@ -641,7 +659,8 @@ visiting the 'Subscribed' link in the 'Answers' facet. |
375 | Slow system |
376 | |
377 | |
378 | -== Browsing and Searching Questions in a ProjectGroup == |
379 | +Browsing and Searching Questions in a ProjectGroup |
380 | +-------------------------------------------------- |
381 | |
382 | When going to the Answers facet of a project, a listing of all the |
383 | questions filed against any of the project's products is displayed. |
384 | @@ -699,7 +718,8 @@ The same standard reports than on regular QuestionTarget are available: |
385 | Questions needing your attention for The Mozilla Project : Questions : The Mozilla Project |
386 | |
387 | |
388 | -== Searching All Questions == |
389 | +Searching All Questions |
390 | +----------------------- |
391 | |
392 | It is possible from the Answer Tracker front page to search among all |
393 | questions ever filed on Launchpad. |
394 | @@ -754,7 +774,8 @@ display all questions asked in Launchpad with the selected statuses. |
395 | Firefox cannot render Bank Site Mozilla Firefox |
396 | |
397 | |
398 | -== Searching in a Selected Project == |
399 | +Searching in a Selected Project |
400 | +------------------------------- |
401 | |
402 | From the Answers front page, the user can select to search questions |
403 | only in a particular project. In this context a "project" means either |
404 | diff --git a/lib/lp/answers/stories/question-compatibility-urls.txt b/lib/lp/answers/stories/question-compatibility-urls.txt |
405 | index 29eaf2a..25572d9 100644 |
406 | --- a/lib/lp/answers/stories/question-compatibility-urls.txt |
407 | +++ b/lib/lp/answers/stories/question-compatibility-urls.txt |
408 | @@ -1,16 +1,19 @@ |
409 | -= Backward Compatible URLs = |
410 | +Backward Compatible URLs |
411 | +======================== |
412 | |
413 | The Answer Tracker was renamed from the old Technical Support Tracker. |
414 | As part of that rename many URLs were changed to reflect the new |
415 | terminology. We provide redirect from the old names to the new ones. |
416 | |
417 | -== Answer Contact Page == |
418 | +Answer Contact Page |
419 | +------------------- |
420 | |
421 | >>> user_browser.open('http://launchpad.test/firefox/+support-contact') |
422 | >>> print(user_browser.url) |
423 | http://answers.launchpad.test/firefox/+answer-contact |
424 | |
425 | -== Add Question Page == |
426 | +Add Question Page |
427 | +----------------- |
428 | |
429 | >>> user_browser.open('http://launchpad.test/firefox/+addticket') |
430 | >>> print(user_browser.url) |
431 | @@ -20,19 +23,22 @@ terminology. We provide redirect from the old names to the new ones. |
432 | >>> print(user_browser.url) |
433 | http://answers.launchpad.test/mozilla/+addquestion |
434 | |
435 | -== My Questions Page == |
436 | +My Questions Page |
437 | +----------------- |
438 | |
439 | >>> user_browser.open('http://launchpad.test/firefox/+mytickets') |
440 | >>> print(user_browser.url) |
441 | http://answers.launchpad.test/firefox/+myquestions |
442 | |
443 | -== Questions Listing == |
444 | +Questions Listing |
445 | +----------------- |
446 | |
447 | >>> browser.open('http://launchpad.test/firefox/+tickets') |
448 | >>> print(browser.url) |
449 | http://answers.launchpad.test/firefox/+questions |
450 | |
451 | -== Question Page == |
452 | +Question Page |
453 | +------------- |
454 | |
455 | >>> browser.open('http://launchpad.test/firefox/+ticket/1') |
456 | >>> print(browser.url) |
457 | @@ -42,7 +48,8 @@ terminology. We provide redirect from the old names to the new ones. |
458 | >>> print(browser.url) |
459 | http://api.launchpad.test/devel/firefox/+question/1 |
460 | |
461 | -== Person Questions Listing == |
462 | +Person Questions Listing |
463 | +------------------------ |
464 | |
465 | >>> browser.open('http://launchpad.test/~name12/+tickets') |
466 | >>> print(browser.url) |
467 | @@ -73,7 +80,8 @@ terminology. We provide redirect from the old names to the new ones. |
468 | http://answers.launchpad.test/~name12/+subscribedquestions |
469 | |
470 | |
471 | -== Unsupported questions == |
472 | +Unsupported questions |
473 | +--------------------- |
474 | |
475 | The Unsupported View is irrelevant. The question search page provides |
476 | links to the +by-language pages that have unsolved questions. |
477 | @@ -83,7 +91,8 @@ links to the +by-language pages that have unsolved questions. |
478 | http://answers.launchpad.test/ubuntu/+questions |
479 | |
480 | |
481 | -== Enumeration changes in search URLs == |
482 | +Enumeration changes in search URLs |
483 | +---------------------------------- |
484 | |
485 | The switch from dbschema to lazr based enums changed the values of |
486 | status and sort from titles to uppercase tokens in the search URLs. |
487 | diff --git a/lib/lp/answers/stories/question-edit.txt b/lib/lp/answers/stories/question-edit.txt |
488 | index be19a95..ef36a05 100644 |
489 | --- a/lib/lp/answers/stories/question-edit.txt |
490 | +++ b/lib/lp/answers/stories/question-edit.txt |
491 | @@ -1,4 +1,5 @@ |
492 | -= Editing Questions = |
493 | +Editing Questions |
494 | +================= |
495 | |
496 | To edit the title and description of question, one uses the 'Edit |
497 | Question' menu item. You need to be logged in to see the edit form, and |
498 | @@ -61,7 +62,8 @@ You can even modify the title and description of 'Answered' and |
499 | <Link...> |
500 | |
501 | |
502 | -== Source Package == |
503 | +Source Package |
504 | +-------------- |
505 | |
506 | Distribution questions can have a source package associated with them. |
507 | Any logged in user can change the question source package on the |
508 | @@ -82,7 +84,8 @@ Product questions ignore sourcepackage information if it is submitted: |
509 | >>> user_browser.getControl('Save Changes').click() |
510 | |
511 | |
512 | -== Changing Other Metadata == |
513 | +Changing Other Metadata |
514 | +----------------------- |
515 | |
516 | A user with 'launchpad.Admin' privilege (usually the product or |
517 | distribution owner) can also change the question Assignee, and |
518 | diff --git a/lib/lp/answers/stories/question-message.txt b/lib/lp/answers/stories/question-message.txt |
519 | index 0afd96b..50e9a8c 100644 |
520 | --- a/lib/lp/answers/stories/question-message.txt |
521 | +++ b/lib/lp/answers/stories/question-message.txt |
522 | @@ -1,4 +1,5 @@ |
523 | -= Question messages = |
524 | +Question messages |
525 | +================= |
526 | |
527 | Question messages are plain text. They are formatted as HTML for web |
528 | pages. Many messages originate from emails where unwanted or |
529 | @@ -31,7 +32,8 @@ quoted passage, and a signature with an email address in it. |
530 | >>> user_browser.getControl('Add Information Request').click() |
531 | |
532 | |
533 | -== Email addresses are only shown to authenticated users == |
534 | +Email addresses are only shown to authenticated users |
535 | +----------------------------------------------------- |
536 | |
537 | Email addresses are visible to authenticated users. Sample Person is |
538 | authenticated already, so they will see 'human@somewhere.org'. |
539 | @@ -63,7 +65,8 @@ see the obfuscated email address (<email address hidden>). |
540 | Witty signatures rock! |
541 | |
542 | |
543 | -== Signatures and quoted passages are hidden == |
544 | +Signatures and quoted passages are hidden |
545 | +----------------------------------------- |
546 | |
547 | The style and script in the user_browser control the display and |
548 | behaviour of content inside tags with the class 'foldable'. The script |
549 | diff --git a/lib/lp/answers/stories/question-obfuscation.txt b/lib/lp/answers/stories/question-obfuscation.txt |
550 | index 87133b1..f6a23c9 100644 |
551 | --- a/lib/lp/answers/stories/question-obfuscation.txt |
552 | +++ b/lib/lp/answers/stories/question-obfuscation.txt |
553 | @@ -1,4 +1,5 @@ |
554 | -= Question obfuscation = |
555 | +Question obfuscation |
556 | +==================== |
557 | |
558 | Launchpad obfuscates email addresses when pages are viewed by |
559 | anonymous users to prevent address harvesting by spammers. Logged |
560 | @@ -6,7 +7,8 @@ in users can see the email address in Question descriptions. |
561 | See question-message.txt for additional documentation. |
562 | |
563 | |
564 | -== Logged in users can see email addresses == |
565 | +Logged in users can see email addresses |
566 | +--------------------------------------- |
567 | |
568 | No Privileges Person can see the email address in the tooltip of the |
569 | questions in the Latest questions solved portlet on the Answers |
570 | @@ -87,7 +89,8 @@ description. They can then see the email address in the tooltip in the |
571 | ... |
572 | |
573 | |
574 | -== Anonymous users cannot see email addresses == |
575 | +Anonymous users cannot see email addresses |
576 | +------------------------------------------ |
577 | |
578 | Anonymous cannot see the email address anywhere on the Answers front |
579 | page. |
580 | diff --git a/lib/lp/answers/stories/question-reject-and-change-status.txt b/lib/lp/answers/stories/question-reject-and-change-status.txt |
581 | index ece123c..c7466fd 100644 |
582 | --- a/lib/lp/answers/stories/question-reject-and-change-status.txt |
583 | +++ b/lib/lp/answers/stories/question-reject-and-change-status.txt |
584 | @@ -1,4 +1,5 @@ |
585 | -= Rejecting Questions = |
586 | +Rejecting Questions |
587 | +=================== |
588 | |
589 | Answer contacts and administrators can reject a question. |
590 | This should be done when the question isn't an actual pertinent question |
591 | @@ -87,7 +88,8 @@ stating that the question is already rejected: |
592 | ... print(message.decode_contents()) |
593 | The question is already rejected. |
594 | |
595 | -= Changing the Question Status = |
596 | +Changing the Question Status |
597 | +============================ |
598 | |
599 | In the previous example, that rejection was clearly a mistake: you |
600 | shouldn't reject a question because it is related to a bug, for these |
601 | diff --git a/lib/lp/answers/stories/question-search-multiple-languages.txt b/lib/lp/answers/stories/question-search-multiple-languages.txt |
602 | index aaa1ccc..5188300 100644 |
603 | --- a/lib/lp/answers/stories/question-search-multiple-languages.txt |
604 | +++ b/lib/lp/answers/stories/question-search-multiple-languages.txt |
605 | @@ -1,4 +1,5 @@ |
606 | -= Searching Questions in Multiple Languages = |
607 | +Searching Questions in Multiple Languages |
608 | +========================================= |
609 | |
610 | By default, only questions written in English or one of the user |
611 | preferred languages are listed and searched. |
612 | @@ -10,7 +11,8 @@ African IP address, since we'll use that later. |
613 | >>> user_browser.addHeader('X_FORWARDED_FOR', '196.36.161.227') |
614 | |
615 | |
616 | -== Anonymous searching == |
617 | +Anonymous searching |
618 | +------------------- |
619 | |
620 | For example, a user who isn't logged in will only see questions |
621 | written in English, in one of the language configured in their browser, |
622 | @@ -154,7 +156,8 @@ then questions with those language will be displayed: |
623 | Installation failed |
624 | |
625 | |
626 | -== Authenticated searching == |
627 | +Authenticated searching |
628 | +----------------------- |
629 | |
630 | Authenticated users without preferred languages are assumed to have |
631 | the languages determined by what their browser sends in the |
632 | @@ -261,7 +264,8 @@ English, and can use it to locate English questions. |
633 | Slow system |
634 | |
635 | |
636 | -== Questions by language == |
637 | +Questions by language |
638 | +--------------------- |
639 | |
640 | When open questions are in languages that no answer contacts |
641 | speak, the project questions page displays links to see those |
642 | @@ -308,7 +312,8 @@ the preceding page. |
643 | The page in all other respects behaves like a question search page. |
644 | |
645 | |
646 | -== My questions ignores preferred languages == |
647 | +My questions ignores preferred languages |
648 | +---------------------------------------- |
649 | |
650 | The "My questions" view ignores the user's language preferences, because |
651 | they may change them over time, but they must always see their questions. For |
652 | diff --git a/lib/lp/answers/stories/question-subscriptions.txt b/lib/lp/answers/stories/question-subscriptions.txt |
653 | index 3ceaf6a..e4e6b2e 100644 |
654 | --- a/lib/lp/answers/stories/question-subscriptions.txt |
655 | +++ b/lib/lp/answers/stories/question-subscriptions.txt |
656 | @@ -1,10 +1,12 @@ |
657 | -= Question Subscriptions = |
658 | +Question Subscriptions |
659 | +====================== |
660 | |
661 | Users can subscribe to specific questions. When they are subscribed they |
662 | will receive notifications for any changes to the question. |
663 | |
664 | |
665 | -== Subscribing == |
666 | +Subscribing |
667 | +----------- |
668 | |
669 | To subscribe, users use the 'Subscribe' link and then confirm that |
670 | they want to subscribe by clicking on the 'Subscribe' button. The user |
671 | @@ -27,7 +29,8 @@ A message confirming that they were subscribed is displayed: |
672 | You have subscribed to this question. |
673 | |
674 | |
675 | -== Unsubscribing == |
676 | +Unsubscribing |
677 | +------------- |
678 | |
679 | When the user is subscribed to the question, the 'Subscribe' link |
680 | becomes an 'Unsubscribe' link. To unsubscribe, the user follows that |
681 | @@ -49,7 +52,8 @@ A confirmation is displayed: |
682 | You have unsubscribed from this question. |
683 | |
684 | |
685 | -== Subscribing While Posting A Message == |
686 | +Subscribing While Posting A Message |
687 | +----------------------------------- |
688 | |
689 | It is also possible to subscribe at the same time than posting a message |
690 | on an existing question. The user can simply check the 'Email me future |
691 | diff --git a/lib/lp/answers/stories/this-is-a-faq.txt b/lib/lp/answers/stories/this-is-a-faq.txt |
692 | index 3164116..ec9e715 100644 |
693 | --- a/lib/lp/answers/stories/this-is-a-faq.txt |
694 | +++ b/lib/lp/answers/stories/this-is-a-faq.txt |
695 | @@ -1,4 +1,5 @@ |
696 | -= Link to a FAQ = |
697 | +Link to a FAQ |
698 | +============= |
699 | |
700 | Even though similar questions are shown when a user creates a new |
701 | question, common questions still happen for a number of reasons. |
702 | @@ -6,7 +7,8 @@ The Answer Tracker can be used to manage common answers |
703 | (a.k.a. Frequently Asked Question - FAQ) which can be used to answer |
704 | a particular question. |
705 | |
706 | -== Fix up sample data == |
707 | +Fix up sample data |
708 | +------------------ |
709 | |
710 | The sample data has question titles which perform poorly with the sample data's |
711 | answers in fulltext searching, using efficient tsearch2 queries; we are going |
712 | @@ -23,7 +25,8 @@ permits better matching. See bug 612384. |
713 | >>> logout() |
714 | |
715 | |
716 | -== Linking to a FAQ == |
717 | +Linking to a FAQ |
718 | +---------------- |
719 | |
720 | Any logged in user can use the 'Link to a FAQ' action item to link |
721 | the question to an existing FAQ. |
722 | @@ -140,7 +143,8 @@ The answer message was added to the question's discussion: |
723 | FAQ #10: \u201cHow do I install plugins... |
724 | |
725 | |
726 | -== Modifying the FAQ == |
727 | +Modifying the FAQ |
728 | +----------------- |
729 | |
730 | The link to the FAQ can be changed by using the same 'Link to a FAQ' |
731 | option. Continuing on the previous example, the user went on to read |
732 | @@ -193,7 +197,8 @@ The link was also removed from the details portlet: |
733 | Related FAQ: None ... |
734 | |
735 | |
736 | -== Creating a new FAQ == |
737 | +Creating a new FAQ |
738 | +------------------ |
739 | |
740 | When no existing FAQs are relevant, it is possible to create a new FAQ |
741 | from the same 'Link to a FAQ' action. But this option is reserved to |
742 | @@ -289,7 +294,8 @@ description: |
743 | Related FAQ: Displaying SVG in Firefox ... |
744 | |
745 | |
746 | -== Viewing a FAQ == |
747 | +Viewing a FAQ |
748 | +------------- |
749 | |
750 | From a question page which has a related FAQ, the user can click on the |
751 | FAQ title to display the FAQ content. |
752 | @@ -328,7 +334,8 @@ the FAQ: |
753 | http://answers.launchpad.test/firefox/+question/2 |
754 | |
755 | |
756 | -== Distribution and Source Packages == |
757 | +Distribution and Source Packages |
758 | +-------------------------------- |
759 | |
760 | Questions asked about a distribution or distribution source package |
761 | can also be linked to FAQs. |
762 | @@ -351,7 +358,8 @@ can also be linked to FAQs. |
763 | 'Is question #8 a FAQ... |
764 | |
765 | |
766 | -== Solved questions can be linked to a FAQ == |
767 | +Solved questions can be linked to a FAQ |
768 | +--------------------------------------- |
769 | |
770 | When linking a solved question to a FAQ the action is treated as a |
771 | comment. |
772 | @@ -397,7 +405,8 @@ discussion. |
773 | FAQ #6: ...How can I play MP3/Divx/DVDs/Quicktime/Realmedia files... |
774 | |
775 | |
776 | -== FAQs are links == |
777 | +FAQs are links |
778 | +-------------- |
779 | |
780 | You can respond to a question by pointing people to a FAQ. FAQs are |
781 | linkified as you would expect! You can use the "this is a FAQ" menu |
782 | diff --git a/lib/lp/app/doc/displaying-numbers.txt b/lib/lp/app/doc/displaying-numbers.txt |
783 | index eb1069b..fcdd4e0 100644 |
784 | --- a/lib/lp/app/doc/displaying-numbers.txt |
785 | +++ b/lib/lp/app/doc/displaying-numbers.txt |
786 | @@ -1,8 +1,10 @@ |
787 | -= Displaying Numbers with ZPT = |
788 | +Displaying Numbers with ZPT |
789 | +=========================== |
790 | |
791 | >>> from lp.testing import test_tales |
792 | |
793 | -== bytes: Byte contractions == |
794 | +bytes: Byte contractions |
795 | +------------------------ |
796 | |
797 | The TALES formatter for numbers allows them to be rendered as byte |
798 | contractions as per IEC60027-2: |
799 | @@ -37,7 +39,8 @@ that (thank god!) |
800 | >>> test_tales('foo/fmt:bytes', foo=123456789012345678901234567890) |
801 | '102121.1 YiB' |
802 | |
803 | -== float: Float formatting == |
804 | +float: Float formatting |
805 | +----------------------- |
806 | |
807 | There's a method that allows formatting float values in TAL analogously |
808 | to how the Python "%f" string formatter works: |
809 | diff --git a/lib/lp/app/doc/launchpadform.txt b/lib/lp/app/doc/launchpadform.txt |
810 | index e79a5ec..5bf686b 100644 |
811 | --- a/lib/lp/app/doc/launchpadform.txt |
812 | +++ b/lib/lp/app/doc/launchpadform.txt |
813 | @@ -1,4 +1,5 @@ |
814 | -= LaunchpadFormView = |
815 | +LaunchpadFormView |
816 | +================= |
817 | |
818 | LaunchpadFormView is a base class for form views in Launchpad. It is |
819 | intended as a replacement for GeneralFormView. |
820 | @@ -39,7 +40,8 @@ There is also a LaunchpadEditFormView class to make it easier to write |
821 | edit views. |
822 | |
823 | |
824 | -== The Schema == |
825 | +The Schema |
826 | +---------- |
827 | |
828 | The schema can be an interface implemented by your content object, or |
829 | an interface specifically tailored for data entry. Below is an |
830 | @@ -77,7 +79,8 @@ A form that handles all fields in the schema needs only set the |
831 | ['name', 'displayname', 'password'] |
832 | |
833 | |
834 | -== Restricting Displayed Fields == |
835 | +Restricting Displayed Fields |
836 | +---------------------------- |
837 | |
838 | The list of fields can be restricted with the "field_names" attribute: |
839 | |
840 | @@ -93,7 +96,8 @@ The list of fields can be restricted with the "field_names" attribute: |
841 | ['name', 'displayname'] |
842 | |
843 | |
844 | -== Custom Adapters == |
845 | +Custom Adapters |
846 | +--------------- |
847 | |
848 | Sometimes a schema is used for a form that is not actually implemented |
849 | by the context widget. This can be handled by providing some custom |
850 | @@ -123,7 +127,8 @@ should in turn have the FormTest instance as a context: |
851 | True |
852 | |
853 | |
854 | -== Custom Widgets == |
855 | +Custom Widgets |
856 | +-------------- |
857 | |
858 | In some cases we will want to use a custom widget for a particular |
859 | field. These can be installed easily with a "custom_widget_NAME" |
860 | @@ -150,7 +155,8 @@ attribute: |
861 | <...TextWidget object at ...> |
862 | |
863 | |
864 | -== Using Another Context == |
865 | +Using Another Context |
866 | +--------------------- |
867 | |
868 | setUpWidgets() uses the view's context by default when setting up the |
869 | widgets, but it's also possible to specify the context explicitly. |
870 | @@ -167,7 +173,8 @@ widgets, but it's also possible to specify the context explicitly. |
871 | True |
872 | |
873 | |
874 | -== Actions == |
875 | +Actions |
876 | +------- |
877 | |
878 | In order for a form to accept submissions, it will need one or more |
879 | submit actions. These are added to the view class using the "action" |
880 | @@ -201,7 +208,8 @@ method. Instead, it should be performed in the validate() method, or |
881 | in per-field validators. |
882 | |
883 | |
884 | -== Form Wide Validation == |
885 | +Form Wide Validation |
886 | +-------------------- |
887 | |
888 | While constraints on individual fields and schema invariants can catch |
889 | the majority of input errors, in some cases it is necessary to |
890 | @@ -319,7 +327,8 @@ The default behaviour is to validate all widgets. |
891 | Password: Required input is missing. |
892 | |
893 | |
894 | -== Redirect URL == |
895 | +Redirect URL |
896 | +------------ |
897 | |
898 | If the form is successfully posted, then LaunchpadFormView will |
899 | redirect the user to another URL. The URL is specified by the |
900 | @@ -348,7 +357,8 @@ redirect the user to another URL. The URL is specified by the |
901 | http://www.ubuntu.com/ |
902 | |
903 | |
904 | -== Form Rendering == |
905 | +Form Rendering |
906 | +-------------- |
907 | |
908 | (Let's define the view for the rendering tests.) |
909 | >>> class RenderFormTest(LaunchpadFormView): |
910 | @@ -414,7 +424,8 @@ This is also true of failure handlers: |
911 | Some errors occured. |
912 | |
913 | |
914 | -== Initial Focused Widget == |
915 | +Initial Focused Widget |
916 | +---------------------- |
917 | |
918 | The standard template for LaunchpadFormView can set the initial focus |
919 | on a form element. This is achieved by some javascript that gets run |
920 | @@ -461,7 +472,8 @@ error, the generated script will focus the first widget with an error: |
921 | // --> |
922 | |
923 | |
924 | -== Hidden widgets == |
925 | +Hidden widgets |
926 | +-------------- |
927 | |
928 | Any widget can be hidden in a LaunchpadFormView while still having its |
929 | value POSTed with the values of the other (visible) ones. The widget's |
930 | @@ -513,7 +525,8 @@ using its hidden() method, which should return a hidden <input> tag. |
931 | >>> os.remove(filename) |
932 | |
933 | |
934 | -== Safe Actions == |
935 | +Safe Actions |
936 | +------------ |
937 | |
938 | By default, LaunchpadFormView requires that form submissions be done |
939 | via POST requests. There are a number of reasons for this: |
940 | @@ -580,7 +593,8 @@ In contrast, the "search" action can be submitted with a GET request: |
941 | |
942 | |
943 | |
944 | -== LaunchpadEditFormView == |
945 | +LaunchpadEditFormView |
946 | +--------------------- |
947 | |
948 | The LaunchpadEditFormView differs from LaunchpadFormView in the |
949 | following ways: |
950 | diff --git a/lib/lp/app/doc/tales-email-formatting.txt b/lib/lp/app/doc/tales-email-formatting.txt |
951 | index 8c5fc79..0dd70cb 100644 |
952 | --- a/lib/lp/app/doc/tales-email-formatting.txt |
953 | +++ b/lib/lp/app/doc/tales-email-formatting.txt |
954 | @@ -1,4 +1,5 @@ |
955 | -= TALES email formatting = |
956 | +TALES email formatting |
957 | +====================== |
958 | |
959 | There are many edge-cases when marking up email text for presentation. |
960 | There is subtle differences in how people quote text that must be |
961 | @@ -12,7 +13,8 @@ First, let's bring in a small helper function: |
962 | |
963 | >>> from lp.testing import test_tales |
964 | |
965 | -== Quoting styles == |
966 | +Quoting styles |
967 | +-------------- |
968 | |
969 | Paragraphs that mix quoted and reply text fold only the quoted lines. |
970 | |
971 | @@ -100,7 +102,8 @@ wrapped in a foldable-quoted span. |
972 | </span></p> |
973 | |
974 | |
975 | -== Python interpreter and dpkg handling == |
976 | +Python interpreter and dpkg handling |
977 | +------------------------------------ |
978 | |
979 | The output from the Python interpreter is not quoted text. Passages |
980 | of text that start with '>>> ' are exempted from the 'foldable-quoted' |
981 | diff --git a/lib/lp/app/doc/validation.txt b/lib/lp/app/doc/validation.txt |
982 | index 7244fe5..3eff615 100644 |
983 | --- a/lib/lp/app/doc/validation.txt |
984 | +++ b/lib/lp/app/doc/validation.txt |
985 | @@ -1,6 +1,8 @@ |
986 | -= Validation = |
987 | +Validation |
988 | +========== |
989 | |
990 | -== LaunchpadValidationError == |
991 | +LaunchpadValidationError |
992 | +------------------------ |
993 | |
994 | LaunchpadValidationError is the standard exception used for custom |
995 | validators upon a validation error. Rendering one is done by getting |
996 | diff --git a/lib/lp/app/stories/basics/marketing.txt b/lib/lp/app/stories/basics/marketing.txt |
997 | index 714be3a..eeb08b6 100644 |
998 | --- a/lib/lp/app/stories/basics/marketing.txt |
999 | +++ b/lib/lp/app/stories/basics/marketing.txt |
1000 | @@ -1,4 +1,5 @@ |
1001 | -= Launchpad tour = |
1002 | +Launchpad tour |
1003 | +============== |
1004 | |
1005 | From Launchpad's front page, you can access the tour. |
1006 | |
1007 | @@ -50,7 +51,8 @@ But the source directory isn't available: |
1008 | zope.publisher.interfaces.NotFound: ... |
1009 | |
1010 | |
1011 | -== +about compatibility == |
1012 | ++about compatibility |
1013 | +-------------------- |
1014 | |
1015 | Each application used to have an introduction living at +about, this is |
1016 | now redirected to the relevant tour page. |
1017 | @@ -80,7 +82,8 @@ now redirected to the relevant tour page. |
1018 | http://launchpad.test/+tour/community-support |
1019 | |
1020 | |
1021 | -== +tour compatibility == |
1022 | ++tour compatibility |
1023 | +------------------- |
1024 | |
1025 | Similarly, each application has their +tour redirecting to their proper |
1026 | tour page. |
1027 | @@ -110,7 +113,8 @@ tour page. |
1028 | http://launchpad.test/+tour/community-support |
1029 | |
1030 | |
1031 | -== +faq compatibility == |
1032 | ++faq compatibility |
1033 | +------------------ |
1034 | |
1035 | Each application also had a +faq link, that link is also redirected to |
1036 | the appropriate tour page. |
1037 | @@ -136,13 +140,15 @@ the appropriate tour page. |
1038 | http://launchpad.test/+tour/community-support |
1039 | |
1040 | |
1041 | -== Links to tour on application main page == |
1042 | +Links to tour on application main page |
1043 | +-------------------------------------- |
1044 | |
1045 | Each application home page features a 'Take a tour' button that brings |
1046 | the user to the appropriate tour page. |
1047 | |
1048 | |
1049 | -=== Code === |
1050 | +Code |
1051 | +.... |
1052 | |
1053 | >>> browser.open('http://code.launchpad.test') |
1054 | >>> tour_link = browser.getLink('Take a tour') |
1055 | @@ -151,7 +157,8 @@ the user to the appropriate tour page. |
1056 | >>> tour_link.click() |
1057 | |
1058 | |
1059 | -=== Bugs === |
1060 | +Bugs |
1061 | +.... |
1062 | |
1063 | >>> browser.open('http://bugs.launchpad.test') |
1064 | >>> tour_link = browser.getLink('take a tour') |
1065 | @@ -160,7 +167,8 @@ the user to the appropriate tour page. |
1066 | >>> tour_link.click() |
1067 | |
1068 | |
1069 | -=== Blueprints === |
1070 | +Blueprints |
1071 | +.......... |
1072 | |
1073 | >>> browser.open('http://blueprints.launchpad.test') |
1074 | >>> tour_link = browser.getLink('Take a tour') |
1075 | @@ -169,7 +177,8 @@ the user to the appropriate tour page. |
1076 | >>> tour_link.click() |
1077 | |
1078 | |
1079 | -=== Translations === |
1080 | +Translations |
1081 | +............ |
1082 | |
1083 | >>> browser.open('http://translations.launchpad.test') |
1084 | >>> tour_link = browser.getLink('Take a tour') |
1085 | @@ -178,7 +187,8 @@ the user to the appropriate tour page. |
1086 | >>> tour_link.click() |
1087 | |
1088 | |
1089 | -=== Answers === |
1090 | +Answers |
1091 | +....... |
1092 | |
1093 | >>> browser.open('http://answers.launchpad.test') |
1094 | >>> tour_link = browser.getLink('Take a tour') |
1095 | diff --git a/lib/lp/app/stories/basics/max-batch-size.txt b/lib/lp/app/stories/basics/max-batch-size.txt |
1096 | index 9bd585b..ce3d44b 100644 |
1097 | --- a/lib/lp/app/stories/basics/max-batch-size.txt |
1098 | +++ b/lib/lp/app/stories/basics/max-batch-size.txt |
1099 | @@ -1,4 +1,5 @@ |
1100 | -= Invalid batch size = |
1101 | +Invalid batch size |
1102 | +================== |
1103 | |
1104 | To prevent users from exhausting server resources, pages that use |
1105 | batching have a maximum on the batch size. For example, requesting 1000 |
1106 | diff --git a/lib/lp/app/stories/basics/user-requested-oops.txt b/lib/lp/app/stories/basics/user-requested-oops.txt |
1107 | index d2475a0..0be69d2 100644 |
1108 | --- a/lib/lp/app/stories/basics/user-requested-oops.txt |
1109 | +++ b/lib/lp/app/stories/basics/user-requested-oops.txt |
1110 | @@ -1,4 +1,5 @@ |
1111 | -= Requesting an OOPS from Launchpad = |
1112 | +Requesting an OOPS from Launchpad |
1113 | +================================= |
1114 | |
1115 | OOPSes happen from time to time in Launchpad, and they contain lots of |
1116 | interesting information for helping debug. Sometimes though it is useful to |
1117 | diff --git a/lib/lp/app/stories/basics/xx-dbpolicy.txt b/lib/lp/app/stories/basics/xx-dbpolicy.txt |
1118 | index 1d42045..433973f 100644 |
1119 | --- a/lib/lp/app/stories/basics/xx-dbpolicy.txt |
1120 | +++ b/lib/lp/app/stories/basics/xx-dbpolicy.txt |
1121 | @@ -1,4 +1,5 @@ |
1122 | -= Application Server Database Policy = |
1123 | +Application Server Database Policy |
1124 | +================================== |
1125 | |
1126 | The database policy chooses the default Storm store to used. Its goal |
1127 | is to distribute load away from the master databases to read only |
1128 | diff --git a/lib/lp/app/stories/basics/xx-developerexceptions.txt b/lib/lp/app/stories/basics/xx-developerexceptions.txt |
1129 | index a8d08b6..ee8c170 100644 |
1130 | --- a/lib/lp/app/stories/basics/xx-developerexceptions.txt |
1131 | +++ b/lib/lp/app/stories/basics/xx-developerexceptions.txt |
1132 | @@ -1,4 +1,5 @@ |
1133 | -= Developer exceptions = |
1134 | +Developer exceptions |
1135 | +==================== |
1136 | |
1137 | Launchpad developers get tracebacks and a linkified OOPS if an exception |
1138 | occurs. Other users get no traceback and only the OOPS ID. |
1139 | @@ -96,7 +97,8 @@ unregister the adapter. |
1140 | >>> error_view_fixture.cleanUp() |
1141 | |
1142 | |
1143 | -= http handle_errors = |
1144 | +http handle_errors |
1145 | +================== |
1146 | |
1147 | lp.testing.pages.http accepts the handle_errors parameter in case you |
1148 | want to see tracebacks instead of error pages. |
1149 | diff --git a/lib/lp/app/stories/basics/xx-lowercase-redirection.txt b/lib/lp/app/stories/basics/xx-lowercase-redirection.txt |
1150 | index 394eda3..b477fe3 100644 |
1151 | --- a/lib/lp/app/stories/basics/xx-lowercase-redirection.txt |
1152 | +++ b/lib/lp/app/stories/basics/xx-lowercase-redirection.txt |
1153 | @@ -1,4 +1,5 @@ |
1154 | -= Redirection of Mixed Case paths = |
1155 | +Redirection of Mixed Case paths |
1156 | +=============================== |
1157 | |
1158 | When someone visits a page such as http://launchpad.net/jOkOshEr |
1159 | launchpad does a permanent redirect to the lowercase path: |
1160 | diff --git a/lib/lp/app/stories/basics/xx-maintenance-message.txt b/lib/lp/app/stories/basics/xx-maintenance-message.txt |
1161 | index 51a2a7f..6416bbf 100644 |
1162 | --- a/lib/lp/app/stories/basics/xx-maintenance-message.txt |
1163 | +++ b/lib/lp/app/stories/basics/xx-maintenance-message.txt |
1164 | @@ -1,4 +1,5 @@ |
1165 | -= Launchpad maintenance messages = |
1166 | +Launchpad maintenance messages |
1167 | +============================== |
1168 | |
1169 | A system adminstrator can write an iso format timestamp to the file |
1170 | "+maintenancetime.txt" in the launchpad application root directory. |
1171 | @@ -95,7 +96,8 @@ Remove +maintenancetime.txt to clean up. |
1172 | >>> os.remove('+maintenancetime.txt') |
1173 | |
1174 | |
1175 | -== Per-page maintenance messages == |
1176 | +Per-page maintenance messages |
1177 | +----------------------------- |
1178 | |
1179 | Alternatively, a maintenance message can be set in the |
1180 | app.maintenance_message feature flag, which can be scoped to particular |
1181 | diff --git a/lib/lp/app/stories/folder.txt b/lib/lp/app/stories/folder.txt |
1182 | index 8ebd441..8124932 100644 |
1183 | --- a/lib/lp/app/stories/folder.txt |
1184 | +++ b/lib/lp/app/stories/folder.txt |
1185 | @@ -1,9 +1,11 @@ |
1186 | -= Serving directories of files = |
1187 | +Serving directories of files |
1188 | +============================ |
1189 | |
1190 | LAZR adds special views that can be used to serve all the files under a |
1191 | particular directory. |
1192 | |
1193 | -== ExportedFolder == |
1194 | +ExportedFolder |
1195 | +-------------- |
1196 | |
1197 | This is the base implementation. To export a directory, you need to |
1198 | subclass that view and provide a folder property returning the path of |
1199 | @@ -99,7 +101,8 @@ As requesting a non-existent file. |
1200 | zope.publisher.interfaces.NotFound: ... |
1201 | |
1202 | |
1203 | -== ExportedImageFolder == |
1204 | +ExportedImageFolder |
1205 | +------------------- |
1206 | |
1207 | For images, it's often convenient not to request the extension. There is |
1208 | an ExportedImageFolder subclass, that will accept serving an image file |
1209 | @@ -140,7 +143,8 @@ If a file without extension exists, that one will be served. |
1210 | Image with extension |
1211 | |
1212 | |
1213 | -== Exporting trees == |
1214 | +Exporting trees |
1215 | +--------------- |
1216 | |
1217 | By default ExportedFolder doesn't export contained folders, but if the |
1218 | export_subdirectories is set to True, it will allow traversing to |
1219 | @@ -201,7 +205,8 @@ NotFound. |
1220 | zope.publisher.interfaces.NotFound: ... |
1221 | |
1222 | |
1223 | -== Clean-up == |
1224 | +Clean-up |
1225 | +-------- |
1226 | |
1227 | >>> import shutil |
1228 | >>> shutil.rmtree(resource_dir) |
1229 | diff --git a/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt b/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt |
1230 | index bf0dd16..3f1771a 100644 |
1231 | --- a/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt |
1232 | +++ b/lib/lp/app/stories/launchpad-root/xx-featuredprojects.txt |
1233 | @@ -1,5 +1,6 @@ |
1234 | |
1235 | -= Featured Projects = |
1236 | +Featured Projects |
1237 | +================= |
1238 | |
1239 | We maintain a list of featured projects, which are displayed on the home |
1240 | page and managed via a special admin-only page. |
1241 | @@ -7,7 +8,8 @@ page and managed via a special admin-only page. |
1242 | >>> MANAGE_LINK = "Manage featured project list" |
1243 | |
1244 | |
1245 | -== The home page listing == |
1246 | +The home page listing |
1247 | +--------------------- |
1248 | |
1249 | Featured projects are visible to everyone on the home page. One poject is |
1250 | featured as "project of the day" depending on the current day. As we do not |
1251 | @@ -44,7 +46,8 @@ projects' pages in Launchpad. The "project of the day" is listed separately. |
1252 | Mozilla Thunderbird |
1253 | Ubuntu |
1254 | |
1255 | -== Adding a featured project == |
1256 | +Adding a featured project |
1257 | +------------------------- |
1258 | |
1259 | Anonymous users cannot see the link to administer featured projects: |
1260 | |
1261 | @@ -112,7 +115,8 @@ is now at index '4' and is therefore displayed as the top project: |
1262 | Mozilla Thunderbird |
1263 | Ubuntu |
1264 | |
1265 | -== Removing a project == |
1266 | +Removing a project |
1267 | +------------------ |
1268 | |
1269 | >>> admin_browser.getLink(MANAGE_LINK).click() |
1270 | >>> admin_browser.getControl('Apache').click() |
1271 | diff --git a/lib/lp/app/widgets/doc/announcement-date-widget.txt b/lib/lp/app/widgets/doc/announcement-date-widget.txt |
1272 | index c6ac676..b33fcaa 100644 |
1273 | --- a/lib/lp/app/widgets/doc/announcement-date-widget.txt |
1274 | +++ b/lib/lp/app/widgets/doc/announcement-date-widget.txt |
1275 | @@ -1,4 +1,5 @@ |
1276 | -= AnnouncementDateWidget = |
1277 | +AnnouncementDateWidget |
1278 | +====================== |
1279 | |
1280 | This widget combines radio buttons and a DateTimeWidget. It allows you to |
1281 | choose to publish an announcement immediately, at a predetermined date in the |
1282 | diff --git a/lib/lp/app/widgets/doc/lower-case-text-widget.txt b/lib/lp/app/widgets/doc/lower-case-text-widget.txt |
1283 | index eb84fe1..d9a0237 100644 |
1284 | --- a/lib/lp/app/widgets/doc/lower-case-text-widget.txt |
1285 | +++ b/lib/lp/app/widgets/doc/lower-case-text-widget.txt |
1286 | @@ -1,4 +1,5 @@ |
1287 | -= LowerCaseTextWidget = |
1288 | +LowerCaseTextWidget |
1289 | +=================== |
1290 | |
1291 | This custom widget is used to convert strings to lower case. |
1292 | |
1293 | diff --git a/lib/lp/app/widgets/doc/noneable-text-widgets.txt b/lib/lp/app/widgets/doc/noneable-text-widgets.txt |
1294 | index 911a9e3..85ca174 100644 |
1295 | --- a/lib/lp/app/widgets/doc/noneable-text-widgets.txt |
1296 | +++ b/lib/lp/app/widgets/doc/noneable-text-widgets.txt |
1297 | @@ -1,10 +1,12 @@ |
1298 | -= Noneable widgets = |
1299 | +Noneable widgets |
1300 | +================ |
1301 | |
1302 | In the spirit of Postel's Law, the Noneable widgets permits users to enter |
1303 | just whitespace, while ensuring that the schema's field value is None. |
1304 | |
1305 | |
1306 | -== Noneable TextLine widget == |
1307 | +Noneable TextLine widget |
1308 | +------------------------ |
1309 | |
1310 | This custom widget is used to normalise the value of meaning less |
1311 | text value to None. |
1312 | @@ -36,7 +38,8 @@ Excess whitespace and newlines are stripped. |
1313 | flower |
1314 | |
1315 | |
1316 | -== Noneable Description widget == |
1317 | +Noneable Description widget |
1318 | +--------------------------- |
1319 | |
1320 | This custom widget is used to normalise the value of meaning less |
1321 | text value to None. |
1322 | diff --git a/lib/lp/app/widgets/doc/project-scope-widget.txt b/lib/lp/app/widgets/doc/project-scope-widget.txt |
1323 | index 8816009..e0bf442 100644 |
1324 | --- a/lib/lp/app/widgets/doc/project-scope-widget.txt |
1325 | +++ b/lib/lp/app/widgets/doc/project-scope-widget.txt |
1326 | @@ -1,4 +1,5 @@ |
1327 | -= The Project Scope Widget = |
1328 | +The Project Scope Widget |
1329 | +======================== |
1330 | |
1331 | Many application front pages contain a search form. The search |
1332 | can usually be across the whole Launchpad or only in one project. |
1333 | @@ -74,7 +75,8 @@ By default, the 'All projects' scope is selected: |
1334 | One project: |
1335 | ... |
1336 | |
1337 | -== Selecting All Projects == |
1338 | +Selecting All Projects |
1339 | +---------------------- |
1340 | |
1341 | When the 'All projects' option is selected, the widget returns None. |
1342 | |
1343 | @@ -88,7 +90,8 @@ When the 'All projects' option is selected, the widget returns None. |
1344 | >>> widget.getInputValue() is None |
1345 | True |
1346 | |
1347 | -== Selecting One Project == |
1348 | +Selecting One Project |
1349 | +--------------------- |
1350 | |
1351 | If we select a project, the project with that name is returned |
1352 | by getInputValue(). |
1353 | @@ -159,7 +162,8 @@ If no project name is given at all, a widget error is also raised: |
1354 | >>> print(widget.error()) |
1355 | Please enter a project name |
1356 | |
1357 | -== setRenderedValue() == |
1358 | +setRenderedValue() |
1359 | +------------------ |
1360 | |
1361 | In order to initialize the widget with a value, setRenderedValue() is |
1362 | used. Passing a product to it will select the 'One project' radio |
1363 | @@ -197,7 +201,8 @@ Setting the scope to None, will default to the 'All projects' option. |
1364 | type="radio" value="all" /> |
1365 | ... |
1366 | |
1367 | -== getScope() and partial queries == |
1368 | +getScope() and partial queries |
1369 | +------------------------------ |
1370 | |
1371 | In some cases, forms with a ProjectScopeWidget are requested by bots |
1372 | which incorrectly build the query string without without the `scope` |
1373 | diff --git a/lib/lp/app/widgets/doc/tokens-text-widget.txt b/lib/lp/app/widgets/doc/tokens-text-widget.txt |
1374 | index e51ff15..040b911 100644 |
1375 | --- a/lib/lp/app/widgets/doc/tokens-text-widget.txt |
1376 | +++ b/lib/lp/app/widgets/doc/tokens-text-widget.txt |
1377 | @@ -1,4 +1,5 @@ |
1378 | -= Tokens TextLine Widget = |
1379 | +Tokens TextLine Widget |
1380 | +====================== |
1381 | |
1382 | This custom widget is used to normalise the space between words, |
1383 | strip punctuation, and strip leading and trailing whitespace. |
1384 | diff --git a/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt b/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt |
1385 | index 241526d..5888dee 100644 |
1386 | --- a/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt |
1387 | +++ b/lib/lp/app/widgets/doc/zope3-widgets-use-form-ng.txt |
1388 | @@ -1,4 +1,5 @@ |
1389 | -= Zope Widgets use IBrowserFormNG = |
1390 | +Zope Widgets use IBrowserFormNG |
1391 | +=============================== |
1392 | |
1393 | Regular Zope widgets have the problem of failing with low-level |
1394 | exceptions (TypeError, AttributeError, ...) when the request contains |
1395 | diff --git a/lib/lp/archivepublisher/tests/deathrow.txt b/lib/lp/archivepublisher/tests/deathrow.txt |
1396 | index 92b4381..4d77654 100644 |
1397 | --- a/lib/lp/archivepublisher/tests/deathrow.txt |
1398 | +++ b/lib/lp/archivepublisher/tests/deathrow.txt |
1399 | @@ -1,4 +1,5 @@ |
1400 | -= Package Death Row = |
1401 | +Package Death Row |
1402 | +================= |
1403 | |
1404 | We start by creating a pair of temporary directories to be used in |
1405 | this test. |
1406 | @@ -29,7 +30,8 @@ The no-operation use case, reflects the sampledata status. |
1407 | DEBUG Marking 0 condemned packages as removed. |
1408 | |
1409 | |
1410 | -== Removal unreferenced packages == |
1411 | +Removal unreferenced packages |
1412 | +----------------------------- |
1413 | |
1414 | Setup `SoyuzTestPublisher` for creating publications for Ubuntu/hoary. |
1415 | |
1416 | diff --git a/lib/lp/archiveuploader/tests/upload-path-parsing.txt b/lib/lp/archiveuploader/tests/upload-path-parsing.txt |
1417 | index ea7666e..c4c998d 100644 |
1418 | --- a/lib/lp/archiveuploader/tests/upload-path-parsing.txt |
1419 | +++ b/lib/lp/archiveuploader/tests/upload-path-parsing.txt |
1420 | @@ -1,4 +1,5 @@ |
1421 | -= Upload path parsing = |
1422 | +Upload path parsing |
1423 | +=================== |
1424 | |
1425 | The upload path is used to decide in which context a uploaded package |
1426 | will be processed. |
1427 | @@ -19,7 +20,8 @@ in several scenarios. |
1428 | ... print('Suite: %s' % suite_name) |
1429 | |
1430 | |
1431 | -== Distribution uploads == |
1432 | +Distribution uploads |
1433 | +-------------------- |
1434 | |
1435 | Upload placed on 'root', i.e, no 'relative_path' will be targeted to |
1436 | 'ubuntu' primary archive. |
1437 | @@ -74,7 +76,8 @@ is raised. |
1438 | lp.archiveuploader.uploadprocessor.UploadPathError: Could not find suite 'imaginary'. |
1439 | |
1440 | |
1441 | -== PPA uploads == |
1442 | +PPA uploads |
1443 | +----------- |
1444 | |
1445 | An upload will be considered targeted to a PPA if the first path term |
1446 | starts with '~', then the subsequent text in this term will be looked |
1447 | @@ -204,7 +207,8 @@ And the upload now found its way to the new named PPA. |
1448 | Suite: None |
1449 | |
1450 | |
1451 | -== Non-sense upload paths == |
1452 | +Non-sense upload paths |
1453 | +---------------------- |
1454 | |
1455 | Obviously upload paths can be completely bogus and the processing function |
1456 | identifies and warns users accordingly. |
1457 | @@ -259,7 +263,8 @@ An old-style named PPA upload missing '~'. |
1458 | lp.archiveuploader.uploadprocessor.UploadPathError: Path format mismatch. |
1459 | |
1460 | |
1461 | -== Binary uploads from build slaves == |
1462 | +Binary uploads from build slaves |
1463 | +-------------------------------- |
1464 | |
1465 | A relative path for a binary upload from a build slave will have the |
1466 | following format: <archive_id>/<distribution_name> where archive_id |
1467 | diff --git a/lib/lp/blueprints/stories/blueprints/xx-buglinks.txt b/lib/lp/blueprints/stories/blueprints/xx-buglinks.txt |
1468 | index 6c4e692..04ea753 100644 |
1469 | --- a/lib/lp/blueprints/stories/blueprints/xx-buglinks.txt |
1470 | +++ b/lib/lp/blueprints/stories/blueprints/xx-buglinks.txt |
1471 | @@ -1,4 +1,5 @@ |
1472 | -= Linking Specs and Bugs = |
1473 | +Linking Specs and Bugs |
1474 | +====================== |
1475 | |
1476 | Specifications can be linked to bugs. Bug reports exposing problems that |
1477 | will be solved by the specification are likely candidates for such |
1478 | @@ -16,7 +17,8 @@ the 'Related Bugs' section. |
1479 | Bug #1: Firefox does not support SVG New |
1480 | |
1481 | |
1482 | -== Adding Links == |
1483 | +Adding Links |
1484 | +------------ |
1485 | |
1486 | Linking a bug report to a specification is done by using the |
1487 | 'Link to a bug report' link. |
1488 | @@ -46,7 +48,8 @@ link. |
1489 | ...Reflow problems with complex page layouts...</div> |
1490 | |
1491 | |
1492 | -== Removing Links == |
1493 | +Removing Links |
1494 | +-------------- |
1495 | |
1496 | Oops, that was actually the wrong bug. So lets remove the link. This is |
1497 | done by using the 'Remove bug link' link. |
1498 | diff --git a/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt b/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt |
1499 | index 9b66034..9021466 100644 |
1500 | --- a/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt |
1501 | +++ b/lib/lp/blueprints/stories/blueprints/xx-dependencies.txt |
1502 | @@ -1,4 +1,5 @@ |
1503 | -= Blueprint dependencies = |
1504 | +Blueprint dependencies |
1505 | +====================== |
1506 | |
1507 | Blueprints support the idea of dependencies: one blueprint can require |
1508 | another blueprint be complete before its own implementation can |
1509 | @@ -18,7 +19,8 @@ itself. |
1510 | True |
1511 | |
1512 | |
1513 | -== Adding a new dependency == |
1514 | +Adding a new dependency |
1515 | +----------------------- |
1516 | |
1517 | Let's add a new dependency for the "canvas" blueprint. We'll add the |
1518 | "extension-manager-upgrades" blueprint as a dependency. First, we |
1519 | @@ -67,7 +69,8 @@ dependency. |
1520 | 'http://blueprints.launchpad.test/firefox/+spec/canvas' |
1521 | |
1522 | |
1523 | -== Removing a dependency == |
1524 | +Removing a dependency |
1525 | +--------------------- |
1526 | |
1527 | But we don't want to keep that, so we will remove it as a dependency. First |
1528 | we make sure we can see the link to remove a dependency. We need to be |
1529 | @@ -122,9 +125,11 @@ users with launchpad.Edit permission for the blueprint. |
1530 | zope.security.interfaces.Unauthorized: ... |
1531 | |
1532 | |
1533 | -== Corner cases == |
1534 | +Corner cases |
1535 | +------------ |
1536 | |
1537 | -=== Cross-project blueprints === |
1538 | +Cross-project blueprints |
1539 | +........................ |
1540 | |
1541 | Blueprints can only depend on blueprints in the same project. To |
1542 | show this, we register a blueprint for a different project. |
1543 | @@ -152,7 +157,8 @@ blueprint we registered in jokosher. |
1544 | True |
1545 | |
1546 | |
1547 | -=== Circular dependencies === |
1548 | +Circular dependencies |
1549 | +..................... |
1550 | |
1551 | In order to prevent circular dependencies, it is impossible to mark a |
1552 | blueprint A as depending on blueprint B, if B is already marked as |
1553 | @@ -170,7 +176,8 @@ We know that "canvas" depends on "e4x". We try to make "e4x" depend on |
1554 | True |
1555 | |
1556 | |
1557 | -=== Status === |
1558 | +Status |
1559 | +...... |
1560 | |
1561 | It should be possible to indicate any blueprint as a dependency, |
1562 | regardless of its status. Let's mark mergewin as Implemented: |
1563 | @@ -196,7 +203,8 @@ And ensure it works: |
1564 | 'http://blueprints.launchpad.test/firefox/+spec/canvas' |
1565 | |
1566 | |
1567 | -== Project dependency charts == |
1568 | +Project dependency charts |
1569 | +------------------------- |
1570 | |
1571 | We know that no blueprints depend on "canvas", but "canvas" depends on |
1572 | "e4x" and "e4x" depends on "svg-support". So the big picture is that |
1573 | @@ -256,7 +264,8 @@ is useful for experimenting with the dot layout using production data. |
1574 | digraph "deptree" { |
1575 | ... |
1576 | |
1577 | -== Distro blueprints == |
1578 | +Distro blueprints |
1579 | +----------------- |
1580 | |
1581 | Let's look at blueprints targetting a distribution, rather than a product. |
1582 | We create two blueprints in `ubuntu`. |
1583 | diff --git a/lib/lp/blueprints/stories/standalone/xx-batching.txt b/lib/lp/blueprints/stories/standalone/xx-batching.txt |
1584 | index 0c3ca4c..619b246 100644 |
1585 | --- a/lib/lp/blueprints/stories/standalone/xx-batching.txt |
1586 | +++ b/lib/lp/blueprints/stories/standalone/xx-batching.txt |
1587 | @@ -1,4 +1,5 @@ |
1588 | -= Blueprint Batching = |
1589 | +Blueprint Batching |
1590 | +================== |
1591 | |
1592 | For projects with large numbers of blueprints, it's important that users are |
1593 | able to navigate easily through those blueprints. It's also important for us |
1594 | diff --git a/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt b/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt |
1595 | index e2d67f8..0603ab6 100644 |
1596 | --- a/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt |
1597 | +++ b/lib/lp/blueprints/stories/standalone/xx-informational-blueprints.txt |
1598 | @@ -1,4 +1,5 @@ |
1599 | -= Informational Blueprints = |
1600 | +Informational Blueprints |
1601 | +======================== |
1602 | |
1603 | Informational blueprints are blueprints for which no implementation is |
1604 | necessary, other than writing the blueprint itself. We track such blueprints |
1605 | @@ -6,7 +7,8 @@ by setting their ''implementation_status'' to ''informational'' and using |
1606 | only their ''definition_status'' to follow change. |
1607 | |
1608 | |
1609 | -== Tracking informational blueprints == |
1610 | +Tracking informational blueprints |
1611 | +--------------------------------- |
1612 | |
1613 | When a blueprint does not require an implementation at all, it can be |
1614 | said to be ''informational'', and it isn't necessary to track its |
1615 | @@ -38,7 +40,8 @@ The blueprint is displayed with the ''informational'' icon. |
1616 | <...Informational blueprint, no implementation necessary...> |
1617 | |
1618 | |
1619 | -== Documentation == |
1620 | +Documentation |
1621 | +------------- |
1622 | |
1623 | An informational blueprint that has been approved, displays on the its |
1624 | project's documentation page. |
1625 | diff --git a/lib/lp/bugs/browser/tests/buglinktarget-views.txt b/lib/lp/bugs/browser/tests/buglinktarget-views.txt |
1626 | index 192d936..ed48965 100644 |
1627 | --- a/lib/lp/bugs/browser/tests/buglinktarget-views.txt |
1628 | +++ b/lib/lp/bugs/browser/tests/buglinktarget-views.txt |
1629 | @@ -1,4 +1,5 @@ |
1630 | -= IBugLinkTarget Views = |
1631 | +IBugLinkTarget Views |
1632 | +==================== |
1633 | |
1634 | The +linkbug and +unlinkbug views operates on IBugLinkTarget. |
1635 | |
1636 | @@ -24,7 +25,8 @@ The +linkbug and +unlinkbug views operates on IBugLinkTarget. |
1637 | >>> login('no-priv@canonical.com') |
1638 | |
1639 | |
1640 | -== Link Bug View == |
1641 | +Link Bug View |
1642 | +------------- |
1643 | |
1644 | The +linkbug view is used to link bugs to IBugLinkTarget. |
1645 | |
1646 | @@ -72,7 +74,8 @@ A ObjectModifiedEvent was sent: |
1647 | >>> collected_events = [] |
1648 | |
1649 | |
1650 | -== Unlink Bugs View == |
1651 | +Unlink Bugs View |
1652 | +---------------- |
1653 | |
1654 | (Link some other bugs first.) |
1655 | >>> link = cve.linkBug(bugset.get(2)) |
1656 | @@ -122,7 +125,8 @@ A ObjectModifiedEvent was sent: |
1657 | [1, 2, 3] |
1658 | |
1659 | |
1660 | -== Bug titles are escaped in notifications == |
1661 | +Bug titles are escaped in notifications |
1662 | +--------------------------------------- |
1663 | |
1664 | Bug titles may legitimately contain HTML markup, such as reporting that |
1665 | there is "Too much space between <h1> and <h2>". Notifications, like the |
1666 | @@ -149,7 +153,8 @@ The notification contains the escaped bug title. |
1667 | ...<script>window.alert("Hello!")</script>.... |
1668 | |
1669 | |
1670 | -== Cleanup == |
1671 | +Cleanup |
1672 | +------- |
1673 | |
1674 | (Deactivate the event listener.) |
1675 | >>> modified_listener.cleanUp() |
1676 | diff --git a/lib/lp/bugs/browser/tests/bugtask-edit-views.txt b/lib/lp/bugs/browser/tests/bugtask-edit-views.txt |
1677 | index 1896e5e..6dfeb04 100644 |
1678 | --- a/lib/lp/bugs/browser/tests/bugtask-edit-views.txt |
1679 | +++ b/lib/lp/bugs/browser/tests/bugtask-edit-views.txt |
1680 | @@ -1,10 +1,12 @@ |
1681 | -= Editing Bug Tasks = |
1682 | +Editing Bug Tasks |
1683 | +================= |
1684 | |
1685 | A bugtask's status, assignee, package name, milestone, etc., can be |
1686 | modified on its +editstatus page. |
1687 | |
1688 | |
1689 | -== Edit the Status == |
1690 | +Edit the Status |
1691 | +--------------- |
1692 | |
1693 | Let's start simple and edit the status of a bug task logged in as Sample |
1694 | Person: |
1695 | @@ -33,7 +35,8 @@ Person: |
1696 | 'In Progress' |
1697 | |
1698 | |
1699 | -== Edit the Package == |
1700 | +Edit the Package |
1701 | +---------------- |
1702 | |
1703 | When editing the package of a distribution task, the user may enter |
1704 | either a binary or a source package name. We only deal with bugs on |
1705 | @@ -91,7 +94,8 @@ exist in Launchpad. we'll get an error message. |
1706 | An error is reported to the user when a bug is retargeted and there is |
1707 | an existing task for the same target. |
1708 | |
1709 | -== Edit the Product == |
1710 | +Edit the Product |
1711 | +---------------- |
1712 | |
1713 | +editstatus allows a bug to be retargeted to another product. |
1714 | |
1715 | @@ -141,7 +145,8 @@ If no product name is given, an error message is displayed. |
1716 | ('product', 'Project', RequiredMissing('product')) |
1717 | |
1718 | |
1719 | -== Bug Watch Linkage == |
1720 | +Bug Watch Linkage |
1721 | +----------------- |
1722 | |
1723 | Let's edit a bugtask which is linked to a remote bug. The most |
1724 | important thing to edit is the bug watch, since it controls the status |
1725 | @@ -204,7 +209,8 @@ set to their default values: |
1726 | True |
1727 | |
1728 | |
1729 | -== Milestone Editing Permissions == |
1730 | +Milestone Editing Permissions |
1731 | +----------------------------- |
1732 | |
1733 | A milestone can be edited only by a user with launchpad.Edit permissions |
1734 | on the distribution or product context. When the user has this |
1735 | diff --git a/lib/lp/bugs/browser/tests/bugtask-search-views.txt b/lib/lp/bugs/browser/tests/bugtask-search-views.txt |
1736 | index 97120cc..041a1fa 100644 |
1737 | --- a/lib/lp/bugs/browser/tests/bugtask-search-views.txt |
1738 | +++ b/lib/lp/bugs/browser/tests/bugtask-search-views.txt |
1739 | @@ -1,4 +1,5 @@ |
1740 | -= Distribution Search page = |
1741 | +Distribution Search page |
1742 | +======================== |
1743 | |
1744 | In the 'Bugs' facet of a distribution we can find a list of bugs |
1745 | reported in that distribution and simple and advanced search forms. |
1746 | @@ -208,7 +209,8 @@ in each series. In this case, the component search widget is hidden. |
1747 | False |
1748 | |
1749 | |
1750 | -== Distribution Series search page == |
1751 | +Distribution Series search page |
1752 | +------------------------------- |
1753 | |
1754 | >>> sarge = debian.getSeries('sarge') |
1755 | |
1756 | @@ -286,7 +288,8 @@ The same is true for a sarge package. |
1757 | [] |
1758 | |
1759 | |
1760 | -== ProjectGroup Search Page == |
1761 | +ProjectGroup Search Page |
1762 | +------------------------ |
1763 | |
1764 | >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet |
1765 | >>> mozilla = getUtility(IProjectGroupSet).getByName('mozilla') |
1766 | @@ -353,7 +356,8 @@ Check what milestones are displayed on the advanced search form: |
1767 | Mozilla Firefox 1.0 (2056-10-16) |
1768 | |
1769 | |
1770 | -== Searching by information type == |
1771 | +Searching by information type |
1772 | +----------------------------- |
1773 | |
1774 | The advanced form allows us to query for bugs matching specific |
1775 | information types. |
1776 | @@ -390,7 +394,8 @@ Submit the search: |
1777 | >>> flush_database_updates() |
1778 | |
1779 | |
1780 | -== Constructing search filter urls == |
1781 | +Constructing search filter urls |
1782 | +------------------------------- |
1783 | |
1784 | There is a helper method, get_buglisting_search_filter_url(), which can |
1785 | be used to construct bug search URLs. It takes keyword parameters for |
1786 | diff --git a/lib/lp/bugs/browser/tests/distrosourcepackage-bug-views.txt b/lib/lp/bugs/browser/tests/distrosourcepackage-bug-views.txt |
1787 | index 48620d1..c3a85c2 100644 |
1788 | --- a/lib/lp/bugs/browser/tests/distrosourcepackage-bug-views.txt |
1789 | +++ b/lib/lp/bugs/browser/tests/distrosourcepackage-bug-views.txt |
1790 | @@ -1,6 +1,8 @@ |
1791 | -= Distro Source Package Bug Views = |
1792 | +Distro Source Package Bug Views |
1793 | +=============================== |
1794 | |
1795 | -== Searching == |
1796 | +Searching |
1797 | +--------- |
1798 | |
1799 | Simple searching is possible on the distro source package bug view page. |
1800 | |
1801 | diff --git a/lib/lp/bugs/doc/bug-change.txt b/lib/lp/bugs/doc/bug-change.txt |
1802 | index f2e2170..f51c352 100644 |
1803 | --- a/lib/lp/bugs/doc/bug-change.txt |
1804 | +++ b/lib/lp/bugs/doc/bug-change.txt |
1805 | @@ -1,4 +1,5 @@ |
1806 | -= Tracking changes to a bug = |
1807 | +Tracking changes to a bug |
1808 | +========================= |
1809 | |
1810 | The base class for BugChanges doesn't actually implement anything. |
1811 | |
1812 | @@ -190,9 +191,11 @@ notification you'll get an error. |
1813 | AssertionError: notification_data must include a `text` value. |
1814 | |
1815 | |
1816 | -== BugChange subclasses == |
1817 | +BugChange subclasses |
1818 | +-------------------- |
1819 | |
1820 | -=== Getting the right bug change class === |
1821 | +Getting the right bug change class |
1822 | +.................................. |
1823 | |
1824 | Given that we know what's changing and the name of the field that is |
1825 | being changed, we can find a suitable IBugChange implementation to |
1826 | @@ -221,7 +224,8 @@ get_bug_change_class will also work for BugTasks. |
1827 | <class '...BugTaskImportanceChange'> |
1828 | |
1829 | |
1830 | -=== AttributeChange === |
1831 | +AttributeChange |
1832 | +............... |
1833 | |
1834 | The AttributeChange class offers basic functionality for dealing with |
1835 | bug attribute changes. |
1836 | @@ -244,7 +248,8 @@ method. |
1837 | 'whatchanged': 'title'} |
1838 | |
1839 | |
1840 | -=== BugDescriptionChange === |
1841 | +BugDescriptionChange |
1842 | +.................... |
1843 | |
1844 | This describes a change to the description of a |
1845 | bug. getBugNotification() returns a formatted description of the |
1846 | @@ -264,7 +269,8 @@ change. |
1847 | + Well, maybe not |
1848 | |
1849 | |
1850 | -=== BugTitleChange === |
1851 | +BugTitleChange |
1852 | +.............. |
1853 | |
1854 | This, surprisingly, describes a title change for a bug. Again, |
1855 | getBugNotification() returns a specially formatted description of |
1856 | @@ -291,7 +297,8 @@ within the UI. |
1857 | summary |
1858 | |
1859 | |
1860 | -=== BugDuplicateChange === |
1861 | +BugDuplicateChange |
1862 | +.................. |
1863 | |
1864 | This describes a change to the duplicate marker for a bug. |
1865 | |
1866 | @@ -316,7 +323,8 @@ returned fields. |
1867 | 'whatchanged': 'marked as duplicate'} |
1868 | |
1869 | |
1870 | -== BugTagsChange == |
1871 | +BugTagsChange |
1872 | +------------- |
1873 | |
1874 | BugTagsChange is used to represent a change in a Bug's tag list. |
1875 | |
1876 | @@ -345,7 +353,8 @@ Addtions and removals are expressed separately in the notification. |
1877 | ** Tags added: zillionth-tag |
1878 | |
1879 | |
1880 | -=== CveLinkedToBug / CveUnlinkedFromBug === |
1881 | +CveLinkedToBug / CveUnlinkedFromBug |
1882 | +................................... |
1883 | |
1884 | These describe the linking or unlinking of a CVE to a bug. |
1885 | |
1886 | @@ -381,7 +390,8 @@ And when a CVE is unlinked from a bug. |
1887 | ** CVE removed: https://cve.mitre.org/cgi-bin/cvename.cgi?name=1999-8979 |
1888 | |
1889 | |
1890 | -== BugAttachmentChange == |
1891 | +BugAttachmentChange |
1892 | +------------------- |
1893 | |
1894 | BugAttachmentChange is used to handle the addition and removal of |
1895 | attachments from a bug. |
1896 | @@ -426,7 +436,8 @@ Or remove one. |
1897 | http://bugs.launchpad.test/bugs/.../+attachment/.../+files/... |
1898 | |
1899 | |
1900 | -== BugTaskAttributeChange == |
1901 | +BugTaskAttributeChange |
1902 | +---------------------- |
1903 | |
1904 | BugTaskAttributeChange is a generic BugChange that can be used to |
1905 | represent a change in the attributes of one of a Bug's BugTasks. It is |
1906 | @@ -467,7 +478,8 @@ Several types of attribute change can be handled by |
1907 | BugTaskAttributeChange. |
1908 | |
1909 | |
1910 | -=== Status changes === |
1911 | +Status changes |
1912 | +.............. |
1913 | |
1914 | Status changes use a BugTaskStatus's `title` attribute to describe to |
1915 | the user what has changed. |
1916 | @@ -490,7 +502,8 @@ the user what has changed. |
1917 | Status: New => Fix Released |
1918 | |
1919 | |
1920 | -=== Importance changes === |
1921 | +Importance changes |
1922 | +.................. |
1923 | |
1924 | Importance changes use a BugTaskImportance's `title` attribute to |
1925 | describe to the user what has changed. |
1926 | @@ -514,7 +527,8 @@ describe to the user what has changed. |
1927 | Importance: Undecided => Critical |
1928 | |
1929 | |
1930 | -=== Milestone changes === |
1931 | +Milestone changes |
1932 | +................. |
1933 | |
1934 | Milestone changes use a Milestone's `name` attribute to describe to |
1935 | the user what has changed. |
1936 | @@ -541,7 +555,8 @@ the user what has changed. |
1937 | Milestone: None => example-milestone |
1938 | |
1939 | |
1940 | -=== Bugwatch changes === |
1941 | +Bugwatch changes |
1942 | +................ |
1943 | |
1944 | Bugwatch changes use a Bugwatch's `title` attribute to describe to the |
1945 | user what has changed. |
1946 | @@ -570,7 +585,8 @@ user what has changed. |
1947 | Remote watch: None => bugs.example.com/ #1245 |
1948 | |
1949 | |
1950 | -=== Assignee changes === |
1951 | +Assignee changes |
1952 | +................ |
1953 | |
1954 | Assignee changes use the assignee's `unique_displayname` attribute to |
1955 | describe to the user what has changed. |
1956 | @@ -593,7 +609,8 @@ describe to the user what has changed. |
1957 | Assignee: (unassigned) => Ford Prefect (ford-prefect) |
1958 | |
1959 | |
1960 | -=== Target (Affects) changes === |
1961 | +Target (Affects) changes |
1962 | +........................ |
1963 | |
1964 | Changes to the bug task target (aka affects) use the BugTaskTargetChange |
1965 | class to describe the change. It inspects the `bugtargetname` |
1966 | diff --git a/lib/lp/bugs/doc/bug-reported-acknowledgement.txt b/lib/lp/bugs/doc/bug-reported-acknowledgement.txt |
1967 | index 6997fa4..393b23b 100644 |
1968 | --- a/lib/lp/bugs/doc/bug-reported-acknowledgement.txt |
1969 | +++ b/lib/lp/bugs/doc/bug-reported-acknowledgement.txt |
1970 | @@ -1,4 +1,5 @@ |
1971 | -= Bug Reported Acknowledgement Message = |
1972 | +Bug Reported Acknowledgement Message |
1973 | +==================================== |
1974 | |
1975 | A message of acknowledgement to be displayed to bug reporters after they've |
1976 | reported a bug can be set at the Distribution, DistributionSourcePackage, |
1977 | diff --git a/lib/lp/bugs/doc/bug-reporting-guidelines.txt b/lib/lp/bugs/doc/bug-reporting-guidelines.txt |
1978 | index b6ebff5..44cb6c4 100644 |
1979 | --- a/lib/lp/bugs/doc/bug-reporting-guidelines.txt |
1980 | +++ b/lib/lp/bugs/doc/bug-reporting-guidelines.txt |
1981 | @@ -1,4 +1,5 @@ |
1982 | -= Bug Reporting Guidelines = |
1983 | +Bug Reporting Guidelines |
1984 | +======================== |
1985 | |
1986 | Guidelines can be set at the Distribution, DistributionSourcePackage, |
1987 | ProjectGroup or Product level to help users file good bug reports, direct |
1988 | diff --git a/lib/lp/bugs/doc/bug-set-status.txt b/lib/lp/bugs/doc/bug-set-status.txt |
1989 | index af6cd66..89caa02 100644 |
1990 | --- a/lib/lp/bugs/doc/bug-set-status.txt |
1991 | +++ b/lib/lp/bugs/doc/bug-set-status.txt |
1992 | @@ -1,4 +1,5 @@ |
1993 | -= Setting the status of a bug = |
1994 | +Setting the status of a bug |
1995 | +=========================== |
1996 | |
1997 | If you have a bug and a target, there's method which makes it easier to |
1998 | change the bug's status for that specific target. It expects the user |
1999 | @@ -67,7 +68,8 @@ bugtask already has the specified status, None is returned. |
2000 | >>> print(bug.setStatus(firefox, BugTaskStatus.CONFIRMED, no_priv)) |
2001 | None |
2002 | |
2003 | -=== Product series === |
2004 | +Product series |
2005 | +.............. |
2006 | |
2007 | If a product series is specified, but the bug is target only to the |
2008 | product, not the product series, the product bugtask is edited. |
2009 | @@ -126,7 +128,8 @@ updated automatically. |
2010 | >>> firefox_bugtask.status.name |
2011 | 'CONFIRMED' |
2012 | |
2013 | -=== Distributions and packages === |
2014 | +Distributions and packages |
2015 | +.......................... |
2016 | |
2017 | Setting the status of a distribution or package bugtask work the same as |
2018 | for product tasks. |
2019 | diff --git a/lib/lp/bugs/doc/bugmessage-visibility.txt b/lib/lp/bugs/doc/bugmessage-visibility.txt |
2020 | index 0c91cfb..43c683e 100644 |
2021 | --- a/lib/lp/bugs/doc/bugmessage-visibility.txt |
2022 | +++ b/lib/lp/bugs/doc/bugmessage-visibility.txt |
2023 | @@ -1,4 +1,5 @@ |
2024 | -= Bug message visibility = |
2025 | +Bug message visibility |
2026 | +====================== |
2027 | |
2028 | Bug messages have a visible field, which provides a means |
2029 | for hiding messages rather than having to delete them. |
2030 | diff --git a/lib/lp/bugs/doc/bugmessage.txt b/lib/lp/bugs/doc/bugmessage.txt |
2031 | index 9e14348..34c4e7f 100644 |
2032 | --- a/lib/lp/bugs/doc/bugmessage.txt |
2033 | +++ b/lib/lp/bugs/doc/bugmessage.txt |
2034 | @@ -1,4 +1,5 @@ |
2035 | -= Bug Messages = |
2036 | +Bug Messages |
2037 | +============ |
2038 | |
2039 | Bug messages are messages associated with bugs. A bug message is |
2040 | described by the IBugMessage interface. |
2041 | @@ -6,7 +7,8 @@ described by the IBugMessage interface. |
2042 | One IMessage can be associated with many IBugs, but one IBugMessage is |
2043 | always associated with exactly one bug. |
2044 | |
2045 | -== Retrieving bug messages == |
2046 | +Retrieving bug messages |
2047 | +----------------------- |
2048 | |
2049 | IBugMessageSet represents the set of all IBugMessages in the |
2050 | system. |
2051 | @@ -47,7 +49,8 @@ bug watch. |
2052 | ... |
2053 | |
2054 | |
2055 | -== Creating bug messages == |
2056 | +Creating bug messages |
2057 | +--------------------- |
2058 | |
2059 | To create a bug message, use IBugMessageSet.createMessage: |
2060 | |
2061 | @@ -74,7 +77,8 @@ And the index of the bugmessage is set: |
2062 | 2 |
2063 | |
2064 | |
2065 | -== Links and CVEs in bug messages == |
2066 | +Links and CVEs in bug messages |
2067 | +------------------------------ |
2068 | |
2069 | If a bug message contains links to an external bug report or a CVE, |
2070 | bugwatches resp. CVE watches are automatically created. We add this |
2071 | @@ -156,7 +160,8 @@ an external bug tracker. |
2072 | http://some.bugzilla/show_bug.cgi?id=9876 |
2073 | |
2074 | |
2075 | -== Last message date == |
2076 | +Last message date |
2077 | +----------------- |
2078 | |
2079 | For each bug, we cache the date of the last message linked to it using |
2080 | the attribute `date_last_message` in order to optimize searches the need |
2081 | @@ -174,7 +179,8 @@ to compare this value for every bug in a large set. |
2082 | True |
2083 | |
2084 | |
2085 | -== Retrieving IMessage.id from IBugMessage == |
2086 | +Retrieving IMessage.id from IBugMessage |
2087 | +--------------------------------------- |
2088 | |
2089 | Each IBugMessage has a message_id attribute, which allows access |
2090 | to IBugMessage.IMessage.id without the additional query. |
2091 | diff --git a/lib/lp/bugs/doc/bugnotifications.txt b/lib/lp/bugs/doc/bugnotifications.txt |
2092 | index 1e364cc..d4ea291 100644 |
2093 | --- a/lib/lp/bugs/doc/bugnotifications.txt |
2094 | +++ b/lib/lp/bugs/doc/bugnotifications.txt |
2095 | @@ -1,15 +1,18 @@ |
2096 | |
2097 | -= Bug notifications = |
2098 | +Bug notifications |
2099 | +================= |
2100 | |
2101 | |
2102 | -== What is a bug notification? == |
2103 | +What is a bug notification? |
2104 | +--------------------------- |
2105 | |
2106 | A bug notification gets added when something interesting happens to the |
2107 | bug. It's stored in a a table, and later on a cronscript constructs an |
2108 | email and sends the notification to the bug's subscribers. |
2109 | |
2110 | |
2111 | -== When do bug notifications get added? == |
2112 | +When do bug notifications get added? |
2113 | +------------------------------------ |
2114 | |
2115 | Not *every* change on a bug causes a notification to be added. This |
2116 | section will give a rundown of the things that do cause notifications to |
2117 | @@ -21,7 +24,8 @@ Here are the things that cause bug notifications to be added and what |
2118 | those notifications look like. |
2119 | |
2120 | |
2121 | -=== Reporting a new bug === |
2122 | +Reporting a new bug |
2123 | +................... |
2124 | |
2125 | >>> from zope.event import notify |
2126 | >>> from lazr.lifecycle.event import ObjectCreatedEvent |
2127 | @@ -63,7 +67,8 @@ bugactivity.txt, but for now here is a small demo. |
2128 | Sample Person |
2129 | |
2130 | |
2131 | -=== Editing a bug report === |
2132 | +Editing a bug report |
2133 | +.................... |
2134 | |
2135 | >>> from lp.services.webapp.snapshot import notify_modified |
2136 | |
2137 | @@ -88,7 +93,8 @@ bugactivity.txt, but for now here is a small demo. |
2138 | a new description |
2139 | |
2140 | |
2141 | -=== Filing a new task on an existing bug === |
2142 | +Filing a new task on an existing bug |
2143 | +.................................... |
2144 | |
2145 | There are three kinds of tasks that can be added to an existing |
2146 | bug. Let's take a look at each type. |
2147 | @@ -201,7 +207,8 @@ bug. Let's take a look at each type. |
2148 | ... |
2149 | |
2150 | |
2151 | -=== Commenting on a bug report === |
2152 | +Commenting on a bug report |
2153 | +.......................... |
2154 | |
2155 | >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet |
2156 | |
2157 | @@ -223,7 +230,8 @@ bug. Let's take a look at each type. |
2158 | just a test comment |
2159 | |
2160 | |
2161 | -=== Editing a task === |
2162 | +Editing a task |
2163 | +.............. |
2164 | |
2165 | Let's demonstrate a notification email where Sample Person marks a |
2166 | task Fixed, and assigns themselves to it. |
2167 | @@ -265,7 +273,8 @@ task Fixed, and assigns themselves to it. |
2168 | ... |
2169 | |
2170 | |
2171 | -=== Adding and editing a CVE reference === |
2172 | +Adding and editing a CVE reference |
2173 | +.................................. |
2174 | |
2175 | Adding a CVE reference to a bug also causes a notification email to go |
2176 | out to the bug notification recipient list. Let's create a CVE ref and |
2177 | @@ -290,7 +299,8 @@ this document: |
2178 | ** CVE added: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2004-0276 |
2179 | |
2180 | |
2181 | -=== Expiring notifications === |
2182 | +Expiring notifications |
2183 | +...................... |
2184 | |
2185 | During bulk imports or changes of bugs, we often want to suppress |
2186 | email notifications. Due to the previous operation, there is a |
2187 | diff --git a/lib/lp/bugs/doc/bugtarget.txt b/lib/lp/bugs/doc/bugtarget.txt |
2188 | index 9fa9f2d..59a60fd 100644 |
2189 | --- a/lib/lp/bugs/doc/bugtarget.txt |
2190 | +++ b/lib/lp/bugs/doc/bugtarget.txt |
2191 | @@ -1,10 +1,12 @@ |
2192 | -= Bug Targets = |
2193 | +Bug Targets |
2194 | +=========== |
2195 | |
2196 | A bug target is a thing on which a bug can be reported, e.g., an |
2197 | IDistributionSourcePackage, an IProduct, etc. |
2198 | |
2199 | |
2200 | -== Bug Tasks on Bug Targets == |
2201 | +Bug Tasks on Bug Targets |
2202 | +------------------------ |
2203 | |
2204 | Bug targets have a bugtargetdisplayname attribute, which returns a value |
2205 | tailored for human reading (e.g. display in Web pages); and a bugtargetname |
2206 | diff --git a/lib/lp/bugs/doc/bugtask-package-bugcounts.txt b/lib/lp/bugs/doc/bugtask-package-bugcounts.txt |
2207 | index 60af96d..7d24bfc 100644 |
2208 | --- a/lib/lp/bugs/doc/bugtask-package-bugcounts.txt |
2209 | +++ b/lib/lp/bugs/doc/bugtask-package-bugcounts.txt |
2210 | @@ -1,4 +1,5 @@ |
2211 | -= Bug Counts For Open Bugs on Packages = |
2212 | +Bug Counts For Open Bugs on Packages |
2213 | +==================================== |
2214 | |
2215 | BugTaskset has a method, getBugCountsForPackages(), which returns counts |
2216 | for open bugs on each package. |
2217 | @@ -128,7 +129,8 @@ If we mark the bug as In Progress, the open_inprogress will increase. |
2218 | open_unassigned: 1 |
2219 | package: mozilla-firefox (Ubuntu) |
2220 | |
2221 | -== Privacy == |
2222 | +Privacy |
2223 | +------- |
2224 | |
2225 | Only those bugs that the user has access to are shown, so if we mark the |
2226 | bug as private, No Privileges Person will only see that there is one |
2227 | @@ -160,7 +162,8 @@ Foo Bar still can see all the bugs, though. |
2228 | open_unassigned: 1 |
2229 | package: mozilla-firefox (Ubuntu) |
2230 | |
2231 | -== Duplicate Bugs == |
2232 | +Duplicate Bugs |
2233 | +-------------- |
2234 | |
2235 | Duplicates bugs are omitted from the counts. |
2236 | |
2237 | diff --git a/lib/lp/bugs/doc/bugtask-search-old-urls.txt b/lib/lp/bugs/doc/bugtask-search-old-urls.txt |
2238 | index 388be56..34a6b7b 100644 |
2239 | --- a/lib/lp/bugs/doc/bugtask-search-old-urls.txt |
2240 | +++ b/lib/lp/bugs/doc/bugtask-search-old-urls.txt |
2241 | @@ -1,4 +1,5 @@ |
2242 | -= Searching bugtasks with old statuses = |
2243 | +Searching bugtasks with old statuses |
2244 | +==================================== |
2245 | |
2246 | The BugWorkflow spec renames several bug statuses, but we need |
2247 | bookmarks, etc., to keep working using the old status names. Instead |
2248 | diff --git a/lib/lp/bugs/doc/bugtask-status-workflow.txt b/lib/lp/bugs/doc/bugtask-status-workflow.txt |
2249 | index 3363180..2ffd3be 100644 |
2250 | --- a/lib/lp/bugs/doc/bugtask-status-workflow.txt |
2251 | +++ b/lib/lp/bugs/doc/bugtask-status-workflow.txt |
2252 | @@ -1,4 +1,5 @@ |
2253 | -= BugTask Status Workflow = |
2254 | +BugTask Status Workflow |
2255 | +======================= |
2256 | |
2257 | BugTasks have a natural status workflow: New => Confirmed => In |
2258 | Progress => Fix Committed => Fix Released, etc. Some state transitions |
2259 | @@ -301,7 +302,8 @@ setting an assignee has "side effects". |
2260 | True |
2261 | |
2262 | |
2263 | -== date_xxx and the UNKNOWN status == |
2264 | +date_xxx and the UNKNOWN status |
2265 | +------------------------------- |
2266 | |
2267 | When an IBugTask is set to status UNKNOWN, the date_confirmed, |
2268 | date_closed, date_inprogress, date_triaged, date_fixcommitted |
2269 | diff --git a/lib/lp/bugs/doc/bugwidget.txt b/lib/lp/bugs/doc/bugwidget.txt |
2270 | index 680bf16..f20d44a 100644 |
2271 | --- a/lib/lp/bugs/doc/bugwidget.txt |
2272 | +++ b/lib/lp/bugs/doc/bugwidget.txt |
2273 | @@ -1,4 +1,5 @@ |
2274 | -= Widget for entering a bug id = |
2275 | +Widget for entering a bug id |
2276 | +============================ |
2277 | |
2278 | The BugWidget converts string bug ids to the corresponding bug object. |
2279 | |
2280 | diff --git a/lib/lp/bugs/doc/cve.txt b/lib/lp/bugs/doc/cve.txt |
2281 | index 631cd55..6801d8f 100644 |
2282 | --- a/lib/lp/bugs/doc/cve.txt |
2283 | +++ b/lib/lp/bugs/doc/cve.txt |
2284 | @@ -1,4 +1,5 @@ |
2285 | -= Common Vulnerabilities and Exposures (CVE) = |
2286 | +Common Vulnerabilities and Exposures (CVE) |
2287 | +========================================== |
2288 | |
2289 | Malone supports attaching CVE references to bugs. From |
2290 | https://cve.mitre.org/about/ CVE is: |
2291 | @@ -11,11 +12,13 @@ For more information, consult the CVE website: |
2292 | |
2293 | https://cve.mitre.org/ |
2294 | |
2295 | -== CveSet == |
2296 | +CveSet |
2297 | +------ |
2298 | |
2299 | The ICveSet utility is used to create and get CVEs and BugCves. |
2300 | |
2301 | -=== Creating CVE entries === |
2302 | +Creating CVE entries |
2303 | +.................... |
2304 | |
2305 | CVE references can be created with the ICveSet utility. |
2306 | |
2307 | @@ -35,7 +38,8 @@ To create a CVE, call ICveSet.new(sequence, description, |
2308 | >>> print(cve.displayname) |
2309 | CVE-2004-0276 |
2310 | |
2311 | -=== Number of CVE links === |
2312 | +Number of CVE links |
2313 | +................... |
2314 | |
2315 | We can get the number of CVE links to bugs in Launchpad using |
2316 | getBugCveCount. |
2317 | @@ -62,7 +66,8 @@ And if we unlink it, the count will decrease. |
2318 | >>> cveset.getBugCveCount() |
2319 | 2 |
2320 | |
2321 | -== Linking CVEs to Bugs == |
2322 | +Linking CVEs to Bugs |
2323 | +-------------------- |
2324 | |
2325 | You can link a CVE to a bug. You can also see which CVEs are currently |
2326 | linked to a bug: |
2327 | @@ -139,7 +144,8 @@ Text references to CVEs using 2014 format can be found: |
2328 | True |
2329 | >>> b.unlinkCVE(cve_2014, user=no_priv) |
2330 | |
2331 | -== CVE Reports == |
2332 | +CVE Reports |
2333 | +----------- |
2334 | |
2335 | Launchpad offers distributions, distribution releases and products with |
2336 | reports that inform on the status of bugs related to CVEs in the |
2337 | diff --git a/lib/lp/bugs/doc/displaying-bugs-and-tasks.txt b/lib/lp/bugs/doc/displaying-bugs-and-tasks.txt |
2338 | index 25f9674..3e4af4f 100644 |
2339 | --- a/lib/lp/bugs/doc/displaying-bugs-and-tasks.txt |
2340 | +++ b/lib/lp/bugs/doc/displaying-bugs-and-tasks.txt |
2341 | @@ -1,11 +1,13 @@ |
2342 | -= Displaying Information on Bugs and Bug Tasks = |
2343 | +Displaying Information on Bugs and Bug Tasks |
2344 | +============================================ |
2345 | |
2346 | This document discusses TALES techniques and IBugTask object |
2347 | attributes that may be useful to you, if you're writing some code to |
2348 | display bug and bug task information. |
2349 | |
2350 | |
2351 | -== Displaying an Icon with image:icon == |
2352 | +Displaying an Icon with image:icon |
2353 | +---------------------------------- |
2354 | |
2355 | image:sprite_css is a TALES adapter that returns the CSS class for |
2356 | an icon for a bugtask. |
2357 | @@ -60,7 +62,8 @@ Let's use a few examples to demonstrate: |
2358 | ... ORIGINAL_IMPORTANCE, getUtility(ILaunchBag).user) |
2359 | |
2360 | |
2361 | -== Displaying Logos for Bug Tasks == |
2362 | +Displaying Logos for Bug Tasks |
2363 | +------------------------------ |
2364 | |
2365 | The logo for a bug task display the corresponding logo for its |
2366 | target. |
2367 | @@ -85,7 +88,8 @@ And the logo for a distro bug task shows the source package icon: |
2368 | '<img alt="" width="64" height="64" src="/@@/distribution-logo" />' |
2369 | |
2370 | |
2371 | -== Displaying Status == |
2372 | +Displaying Status |
2373 | +----------------- |
2374 | |
2375 | Sometimes it's useful to display the status of an IBugTask as a |
2376 | human-readable string. So, instead of displaying something like: |
2377 | @@ -157,7 +161,8 @@ Lastly, some cleanup: |
2378 | >>> test_task.transitionToAssignee(ORIGINAL_ASSIGNEE) |
2379 | |
2380 | |
2381 | -== Status Elsewhere == |
2382 | +Status Elsewhere |
2383 | +---------------- |
2384 | |
2385 | It's often useful to present information about the status of a bug in |
2386 | other contexts. Again, the listing-view holds a method which provides us |
2387 | diff --git a/lib/lp/bugs/doc/externalbugtracker-checkwatches.txt b/lib/lp/bugs/doc/externalbugtracker-checkwatches.txt |
2388 | index 0f4c01e..42d4c58 100644 |
2389 | --- a/lib/lp/bugs/doc/externalbugtracker-checkwatches.txt |
2390 | +++ b/lib/lp/bugs/doc/externalbugtracker-checkwatches.txt |
2391 | @@ -1,4 +1,5 @@ |
2392 | -= External Bug Tracker: checkwatches = |
2393 | +External Bug Tracker: checkwatches |
2394 | +================================== |
2395 | |
2396 | Strictly speaking, checkwatches is the name of a cronscript and a |
2397 | module in the Launchpad codebase. In the absence of a more complete |
2398 | @@ -12,7 +13,8 @@ framework. |
2399 | -- Gavin Panella, 2007-07-18 |
2400 | |
2401 | |
2402 | -== get_external_bugtracker == |
2403 | +get_external_bugtracker |
2404 | +----------------------- |
2405 | |
2406 | get_external_bugtracker is used to get an ExternalBugTracker suitable |
2407 | for a particular bugtracker. |
2408 | diff --git a/lib/lp/bugs/doc/externalbugtracker-comment-pushing.txt b/lib/lp/bugs/doc/externalbugtracker-comment-pushing.txt |
2409 | index e64217b..86d0359 100644 |
2410 | --- a/lib/lp/bugs/doc/externalbugtracker-comment-pushing.txt |
2411 | +++ b/lib/lp/bugs/doc/externalbugtracker-comment-pushing.txt |
2412 | @@ -1,4 +1,5 @@ |
2413 | -= Pushing comments to external bugtrackers = |
2414 | +Pushing comments to external bugtrackers |
2415 | +======================================== |
2416 | |
2417 | Some ExternalBugTrackers support the pushing of comments from Launchpad |
2418 | to the remote bug tracker. |
2419 | @@ -268,7 +269,8 @@ invalid remote comment ID, an error will be raised: |
2420 | AssertionError: A remote_comment_id must be specified. |
2421 | |
2422 | |
2423 | -== Formatting pushed comments == |
2424 | +Formatting pushed comments |
2425 | +-------------------------- |
2426 | |
2427 | The comments that have been pushed to the remote bugtracker have been |
2428 | formatted to include data about the comment in Launchpad. |
2429 | diff --git a/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt b/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt |
2430 | index c440f94..9e6adf8 100644 |
2431 | --- a/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt |
2432 | +++ b/lib/lp/bugs/doc/externalbugtracker-emailaddress.txt |
2433 | @@ -1,6 +1,8 @@ |
2434 | -= Email addresses as bug trackers = |
2435 | +Email addresses as bug trackers |
2436 | +=============================== |
2437 | |
2438 | -== The EMAILADDRESS BugTrackerType == |
2439 | +The EMAILADDRESS BugTrackerType |
2440 | +------------------------------- |
2441 | |
2442 | Launchpad allows users to register an email address as an external bug |
2443 | tracker. This means that bugs for that bug tracker can be forwarded to |
2444 | @@ -66,7 +68,8 @@ the local part of an email address (e.g. <local_name>@foobar.com). |
2445 | auto-another.bugtracker |
2446 | |
2447 | |
2448 | -== Adding a BugWatch to an upstream email address == |
2449 | +Adding a BugWatch to an upstream email address |
2450 | +---------------------------------------------- |
2451 | |
2452 | We can add a bug watch to an upstream email address in the normal |
2453 | fashion. For email addresses, we record the message ID of the mail sent |
2454 | diff --git a/lib/lp/bugs/doc/externalbugtracker-linking-back.txt b/lib/lp/bugs/doc/externalbugtracker-linking-back.txt |
2455 | index 32186e3..28b8597 100644 |
2456 | --- a/lib/lp/bugs/doc/externalbugtracker-linking-back.txt |
2457 | +++ b/lib/lp/bugs/doc/externalbugtracker-linking-back.txt |
2458 | @@ -1,4 +1,5 @@ |
2459 | -= Remote bugs linking back to Launchpad = |
2460 | +Remote bugs linking back to Launchpad |
2461 | +===================================== |
2462 | |
2463 | Some bug trackers support linking back to bugs in Launchpad. This way we |
2464 | can tell external bug trackers that we're watching the bug, and make it |
2465 | @@ -69,7 +70,8 @@ be related to a bug task, not just a bug. |
2466 | ... external_bugtracker, [bug_watch_without_bugtask]) |
2467 | |
2468 | |
2469 | -== BugWatchUpdater.linkLaunchpadBug() == |
2470 | +BugWatchUpdater.linkLaunchpadBug() |
2471 | +---------------------------------- |
2472 | |
2473 | The BugWatchUpdater method that does the work of setting the Launchpad |
2474 | bug link is linkLaunchpadBug(). This method first retrieves the |
2475 | diff --git a/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt b/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt |
2476 | index 0cd932f..d9fb120 100644 |
2477 | --- a/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt |
2478 | +++ b/lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt |
2479 | @@ -1,4 +1,5 @@ |
2480 | -= ExternalBugTracker: Mantis = |
2481 | +ExternalBugTracker: Mantis |
2482 | +========================== |
2483 | |
2484 | This covers the implementation of the Mantis bug watch updater when |
2485 | used in the "CSV export" mode. The default mode is to page-scrape |
2486 | @@ -8,7 +9,8 @@ installations work with it (at least two prominent installations |
2487 | return empty exports). |
2488 | |
2489 | |
2490 | -== Basics == |
2491 | +Basics |
2492 | +------ |
2493 | |
2494 | The class that implements ExternalBugTracker for Mantis is called, |
2495 | surprisingly, Mantis! It doesn't do any version probing and simply |
2496 | @@ -42,7 +44,8 @@ If the status can't be converted an UnknownRemoteStatusError is raised. |
2497 | lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: foo: bar |
2498 | |
2499 | |
2500 | -== Updating Bug Watches == |
2501 | +Updating Bug Watches |
2502 | +-------------------- |
2503 | |
2504 | Let's set up a BugTracker and some watches for the Example.com Bug |
2505 | Tracker: |
2506 | diff --git a/lib/lp/bugs/doc/externalbugtracker-mantis.txt b/lib/lp/bugs/doc/externalbugtracker-mantis.txt |
2507 | index bfc1b0a..bf2768b 100644 |
2508 | --- a/lib/lp/bugs/doc/externalbugtracker-mantis.txt |
2509 | +++ b/lib/lp/bugs/doc/externalbugtracker-mantis.txt |
2510 | @@ -1,9 +1,11 @@ |
2511 | -= ExternalBugTracker: Mantis = |
2512 | +ExternalBugTracker: Mantis |
2513 | +========================== |
2514 | |
2515 | This covers the implementation of the Mantis bug watch updater. |
2516 | |
2517 | |
2518 | -== Basics == |
2519 | +Basics |
2520 | +------ |
2521 | |
2522 | The class that implements ExternalBugTracker for Mantis is called, |
2523 | surprisingly, Mantis! It doesn't do any version probing and simply |
2524 | @@ -45,7 +47,8 @@ If the status can't be converted an UnknownRemoteStatusError is raised. |
2525 | lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: foo: bar |
2526 | |
2527 | |
2528 | -== Updating Bug Watches == |
2529 | +Updating Bug Watches |
2530 | +-------------------- |
2531 | |
2532 | Let's set up a BugTracker and some watches for the Example.com Bug |
2533 | Tracker: |
2534 | diff --git a/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt b/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt |
2535 | index ee95543..4c2916a 100644 |
2536 | --- a/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt |
2537 | +++ b/lib/lp/bugs/doc/externalbugtracker-roundup-python-bugs.txt |
2538 | @@ -1,4 +1,5 @@ |
2539 | -= ExternalBugTracker: Python = |
2540 | +ExternalBugTracker: Python |
2541 | +========================== |
2542 | |
2543 | This covers the implementation of the ExternalBugTracker class for |
2544 | Python bugwatches. |
2545 | @@ -11,7 +12,8 @@ common to Roundup and Python instances, see |
2546 | externalbugtracker-roundup.txt |
2547 | |
2548 | |
2549 | -== Status Conversion == |
2550 | +Status Conversion |
2551 | +----------------- |
2552 | |
2553 | The basic Python bug statuses map to Launchpad bug statuses. |
2554 | Roundup.convertRemoteStatus() handles the conversion. |
2555 | diff --git a/lib/lp/bugs/doc/externalbugtracker-roundup.txt b/lib/lp/bugs/doc/externalbugtracker-roundup.txt |
2556 | index b4f4963..1d369a2 100644 |
2557 | --- a/lib/lp/bugs/doc/externalbugtracker-roundup.txt |
2558 | +++ b/lib/lp/bugs/doc/externalbugtracker-roundup.txt |
2559 | @@ -1,10 +1,12 @@ |
2560 | -= ExternalBugTracker: Roundup = |
2561 | +ExternalBugTracker: Roundup |
2562 | +=========================== |
2563 | |
2564 | This covers the implementation of the ExternalBugTracker class for Roundup |
2565 | bugwatches. |
2566 | |
2567 | |
2568 | -== Basics == |
2569 | +Basics |
2570 | +------ |
2571 | |
2572 | The ExternalBugTracker descendant class which implements methods for updating |
2573 | bug watches on Roundup bug trackers is externalbugtracker.Roundup, which |
2574 | @@ -22,7 +24,8 @@ implements IExternalBugTracker. |
2575 | True |
2576 | |
2577 | |
2578 | -== Status Conversion == |
2579 | +Status Conversion |
2580 | +----------------- |
2581 | |
2582 | The basic Roundup bug statuses (i.e. those available by default in new |
2583 | Roundup instances) map to Launchpad bug statuses. |
2584 | @@ -70,7 +73,8 @@ understand an UnknownRemoteStatusError will be raised. |
2585 | lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: Unrecognized value for field 1 (status): eggs |
2586 | |
2587 | |
2588 | -== Initialization == |
2589 | +Initialization |
2590 | +-------------- |
2591 | |
2592 | Calling initializeRemoteBugDB() on our Roundup instance and passing it a set |
2593 | of remote bug IDs will fetch those bug IDs from the server and file them in a |
2594 | @@ -88,7 +92,8 @@ avoids relying on a working network connection. |
2595 | [1] |
2596 | |
2597 | |
2598 | -== Export Methods == |
2599 | +Export Methods |
2600 | +-------------- |
2601 | |
2602 | There are two means by which we can export Roundup bug statuses: on a |
2603 | bug-by-bug basis and as a batch. When the number of bugs that need updating is |
2604 | @@ -115,7 +120,8 @@ fetched as a batch: |
2605 | GET http://test.roundup/issue?...@startwith=0 |
2606 | |
2607 | |
2608 | -== Updating Bug Watches == |
2609 | +Updating Bug Watches |
2610 | +-------------------- |
2611 | |
2612 | First, we create some bug watches to test with: |
2613 | |
2614 | diff --git a/lib/lp/bugs/doc/externalbugtracker-rt.txt b/lib/lp/bugs/doc/externalbugtracker-rt.txt |
2615 | index 215cf9d..2feb460 100644 |
2616 | --- a/lib/lp/bugs/doc/externalbugtracker-rt.txt |
2617 | +++ b/lib/lp/bugs/doc/externalbugtracker-rt.txt |
2618 | @@ -1,10 +1,12 @@ |
2619 | -= ExternalBugTracker: RT = |
2620 | +ExternalBugTracker: RT |
2621 | +====================== |
2622 | |
2623 | This covers the implementation of an ExternalBugTracker class for RT |
2624 | instances. |
2625 | |
2626 | |
2627 | -== Basics == |
2628 | +Basics |
2629 | +------ |
2630 | |
2631 | When importing bugs from remote RT instances, we use an RT-specific |
2632 | implementation of ExternalBugTracker, RequestTracker. |
2633 | @@ -22,7 +24,8 @@ implementation of ExternalBugTracker, RequestTracker. |
2634 | True |
2635 | |
2636 | |
2637 | -== Authentication Credentials == |
2638 | +Authentication Credentials |
2639 | +-------------------------- |
2640 | |
2641 | RT instances require that we log in to be able to export statuses for |
2642 | their tickets. The RequestTracker ExternalBugTracker class has a |
2643 | @@ -45,7 +48,8 @@ configuration files. rt.example.com is known to Launchpad. |
2644 | >>> print(pretty(rt_two.credentials)) |
2645 | {'pass': 'pangalacticgargleblaster', 'user': 'zaphod'} |
2646 | |
2647 | -== Status Conversion == |
2648 | +Status Conversion |
2649 | +----------------- |
2650 | |
2651 | The RequestTracker class can convert the default RT ticket statuses into |
2652 | Launchpad statuses: |
2653 | @@ -72,7 +76,8 @@ result in an UnknownRemoteStatusError being raised. |
2654 | lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: spam |
2655 | |
2656 | |
2657 | -== Importance Conversion == |
2658 | +Importance Conversion |
2659 | +--------------------- |
2660 | |
2661 | There is no obvious mapping from ticket priorities to importances. They |
2662 | are all imported as Unknown. No exception is raised, because they are |
2663 | @@ -82,7 +87,8 @@ all unknown. |
2664 | 'Unknown' |
2665 | |
2666 | |
2667 | -== Initialization == |
2668 | +Initialization |
2669 | +-------------- |
2670 | |
2671 | Calling initializeRemoteBugDB() on our RequestTracker instance and |
2672 | passing it a set of remote bug IDs will fetch those bug IDs from the |
2673 | @@ -119,7 +125,8 @@ Subsequent requests use this. |
2674 | GET http://example.com/REST/1.0/search/ticket/?... |
2675 | |
2676 | |
2677 | -== Export Methods == |
2678 | +Export Methods |
2679 | +-------------- |
2680 | |
2681 | There are two means by which we can export RT bug statuses: on a |
2682 | bug-by-bug basis and as a batch. When the number of bugs that need |
2683 | @@ -166,7 +173,8 @@ This can also be demonstrated for importing bugs as a batch: |
2684 | ... |
2685 | lp.bugs.externalbugtracker.base.BugTrackerConnectError: ... |
2686 | |
2687 | -== Updating Bug Watches == |
2688 | +Updating Bug Watches |
2689 | +-------------------- |
2690 | |
2691 | First, we create some bug watches to test with. Example.com hosts an RT |
2692 | instance which has several bugs that we wish to watch: |
2693 | @@ -252,7 +260,8 @@ statuses: |
2694 | Remote bug 1589: Invalid |
2695 | |
2696 | |
2697 | -== Getting the remote product for a bug == |
2698 | +Getting the remote product for a bug |
2699 | +------------------------------------ |
2700 | |
2701 | It's possible to get the remote product for a remote RT bug using |
2702 | getRemoteProduct(). In the case of RT, what we refer to in Launchpad as |
2703 | diff --git a/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt b/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt |
2704 | index bcaf316..707bbb4 100644 |
2705 | --- a/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt |
2706 | +++ b/lib/lp/bugs/doc/externalbugtracker-sourceforge.txt |
2707 | @@ -1,10 +1,12 @@ |
2708 | -= ExternalBugTracker: SourceForge = |
2709 | +ExternalBugTracker: SourceForge |
2710 | +=============================== |
2711 | |
2712 | This covers the implementation of the ExternalBugTracker class for |
2713 | SourceForge bugwatches. |
2714 | |
2715 | |
2716 | -== Basics == |
2717 | +Basics |
2718 | +------ |
2719 | |
2720 | The ExternalBugTracker descendant class which implements methods for |
2721 | updating bug watches on SourceForge bug trackers is |
2722 | @@ -20,7 +22,8 @@ externalbugtracker.SourceForge, which implements IExternalBugTracker. |
2723 | True |
2724 | |
2725 | |
2726 | -== Status Conversion == |
2727 | +Status Conversion |
2728 | +----------------- |
2729 | |
2730 | The SourceForge bug status/resolution combinations map to Launchpad bug |
2731 | statuses. SourceForge.convertRemoteStatus() handles the conversion. |
2732 | @@ -73,7 +76,8 @@ understand an UnknownRemoteStatusError will be raised. |
2733 | lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: eggs |
2734 | |
2735 | |
2736 | -== Initialization == |
2737 | +Initialization |
2738 | +-------------- |
2739 | |
2740 | Calling initializeRemoteBugDB() on our SourceForge instance and passing |
2741 | it a set of remote bug IDs will fetch those bug IDs from the server and |
2742 | @@ -136,7 +140,8 @@ a PrivateRemoteBug error. |
2743 | lp.bugs.externalbugtracker.base.PrivateRemoteBug: Bug 99 on http://example.com is private. |
2744 | |
2745 | |
2746 | -== Updating Bug Watches == |
2747 | +Updating Bug Watches |
2748 | +-------------------- |
2749 | |
2750 | First, we create some bug watches to test with. Example.com hosts a |
2751 | SourceForge instance which has several bugs that we wish to watch: |
2752 | @@ -260,7 +265,8 @@ statuses: |
2753 | Remote bug 1722259: Won't Fix |
2754 | |
2755 | |
2756 | -== Getting the remote product for a bug == |
2757 | +Getting the remote product for a bug |
2758 | +------------------------------------ |
2759 | |
2760 | It's possible to get the remote product for a bug by calling |
2761 | SourceForge.getRemoteProduct(). In SourceForge's case, what we refer to |
2762 | diff --git a/lib/lp/bugs/doc/externalbugtracker-trac.txt b/lib/lp/bugs/doc/externalbugtracker-trac.txt |
2763 | index 2dc976a..53df563 100644 |
2764 | --- a/lib/lp/bugs/doc/externalbugtracker-trac.txt |
2765 | +++ b/lib/lp/bugs/doc/externalbugtracker-trac.txt |
2766 | @@ -1,10 +1,12 @@ |
2767 | -= ExternalBugTracker: Trac = |
2768 | +ExternalBugTracker: Trac |
2769 | +======================== |
2770 | |
2771 | This covers the implementation of the ExternalBugTracker class for Trac |
2772 | bugwatches. |
2773 | |
2774 | |
2775 | -== Basics == |
2776 | +Basics |
2777 | +------ |
2778 | |
2779 | The ExternalBugTracker descendant class which implements methods for updating |
2780 | bug watches on Trac bug trackers is externalbugtracker.Trac, which implements |
2781 | @@ -21,7 +23,8 @@ IExternalBugTracker. |
2782 | True |
2783 | |
2784 | |
2785 | -== LP plugin == |
2786 | +LP plugin |
2787 | +--------- |
2788 | |
2789 | Some Trac instances have a plugin installed to make it easier for us to |
2790 | communicate with them. getExternalBugTrackerToUse() probes the bug |
2791 | @@ -99,7 +102,8 @@ persists. |
2792 | True |
2793 | |
2794 | |
2795 | -== Status Conversion == |
2796 | +Status Conversion |
2797 | +----------------- |
2798 | |
2799 | The basic Trac ticket statuses map to Launchpad bug statuses. |
2800 | Trac.convertRemoteStatus() handles the conversion. |
2801 | @@ -140,7 +144,8 @@ an UnknownRemoteStatusError will be raised. |
2802 | lp.bugs.externalbugtracker.base.UnknownRemoteStatusError: eggs |
2803 | |
2804 | |
2805 | -== Initialization == |
2806 | +Initialization |
2807 | +-------------- |
2808 | |
2809 | Calling initializeRemoteBugDB() on our Trac instance and passing it a set of |
2810 | remote bug IDs will fetch those bug IDs from the server and file them in a |
2811 | @@ -164,7 +169,8 @@ If we initialize with a different set of keys we overwrite the first set: |
2812 | [6, 7, 8, 9, 10, 11, 12] |
2813 | |
2814 | |
2815 | -== Export Methods == |
2816 | +Export Methods |
2817 | +-------------- |
2818 | |
2819 | There are two means by which we can export Trac bug statuses: on a bug-by-bug |
2820 | basis and as a batch. When the number of bugs that need updating is less than |
2821 | @@ -263,7 +269,8 @@ export, it will raise an UnparsableBugData error. |
2822 | lp.bugs.externalbugtracker.base.UnparsableBugData: External bugtracker http://test.trac does not define all the necessary fields for bug status imports (Defined field names: ['<html>']). |
2823 | |
2824 | |
2825 | -== Updating Bug Watches == |
2826 | +Updating Bug Watches |
2827 | +-------------------- |
2828 | |
2829 | First, we create some bug watches to test with: |
2830 | |
2831 | diff --git a/lib/lp/bugs/doc/product-update-remote-product-script.txt b/lib/lp/bugs/doc/product-update-remote-product-script.txt |
2832 | index 4f76945..c0801b6 100644 |
2833 | --- a/lib/lp/bugs/doc/product-update-remote-product-script.txt |
2834 | +++ b/lib/lp/bugs/doc/product-update-remote-product-script.txt |
2835 | @@ -1,4 +1,5 @@ |
2836 | -== update-remote-product.py == |
2837 | +update-remote-product.py |
2838 | +------------------------ |
2839 | |
2840 | The script that uses RemoteProductUpdater is update-remote-product.py. |
2841 | |
2842 | diff --git a/lib/lp/bugs/doc/products-with-no-remote-product.txt b/lib/lp/bugs/doc/products-with-no-remote-product.txt |
2843 | index 6646de1..bb3d587 100644 |
2844 | --- a/lib/lp/bugs/doc/products-with-no-remote-product.txt |
2845 | +++ b/lib/lp/bugs/doc/products-with-no-remote-product.txt |
2846 | @@ -1,4 +1,5 @@ |
2847 | -= Products with no remote_product = |
2848 | +Products with no remote_product |
2849 | +=============================== |
2850 | |
2851 | Product.remote_product is used to keep track of which remote product in |
2852 | an upstream bug tracker, a Product registered in Launchpad corresponds |
2853 | diff --git a/lib/lp/bugs/doc/treelookup.txt b/lib/lp/bugs/doc/treelookup.txt |
2854 | index 7dfd661..7ef5b4e 100644 |
2855 | --- a/lib/lp/bugs/doc/treelookup.txt |
2856 | +++ b/lib/lp/bugs/doc/treelookup.txt |
2857 | @@ -1,4 +1,5 @@ |
2858 | -= Doing lookups in a tree = |
2859 | +Doing lookups in a tree |
2860 | +======================= |
2861 | |
2862 | >>> from lp.bugs.adapters.treelookup import ( |
2863 | ... LookupBranch, LookupTree) |
2864 | @@ -35,7 +36,8 @@ tree, because it would not make sense for it to appear in any other |
2865 | position. |
2866 | |
2867 | |
2868 | -== Creation == |
2869 | +Creation |
2870 | +-------- |
2871 | |
2872 | >>> tree = LookupTree( |
2873 | ... ('Snack', LookupTree( |
2874 | @@ -92,7 +94,8 @@ instances), `LookupTree._verify` also checks that every branch is a |
2875 | TypeError: Not a LookupBranch: ...'Greenland' |
2876 | |
2877 | |
2878 | -== Searching == |
2879 | +Searching |
2880 | +--------- |
2881 | |
2882 | Just call `tree.find`. |
2883 | |
2884 | @@ -113,7 +116,8 @@ But an exception is raised if it does not reach a leaf. |
2885 | KeyError: ...'Snack' |
2886 | |
2887 | |
2888 | -== Development == |
2889 | +Development |
2890 | +----------- |
2891 | |
2892 | `LookupTree` makes development easy, because `describe` gives a |
2893 | complete description of the tree you've created. |
2894 | @@ -152,7 +156,8 @@ Simple keys are shown without quotes, to aid readability, and default |
2895 | branches are shown with '*' as the key. |
2896 | |
2897 | |
2898 | -== Pruning == |
2899 | +Pruning |
2900 | +------- |
2901 | |
2902 | During tree creation, branches which have keys that already appear in |
2903 | earlier branches are cloned and have those already seen keys |
2904 | @@ -180,7 +185,8 @@ branches with keys are candidates for being discarded. |
2905 | ) |
2906 | |
2907 | |
2908 | -== Documentation == |
2909 | +Documentation |
2910 | +------------- |
2911 | |
2912 | You can discover the minimum and maximum depth of a tree. |
2913 | |
2914 | diff --git a/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-distribution-default-values.txt b/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-distribution-default-values.txt |
2915 | index f5c7d6e..c6a1a27 100644 |
2916 | --- a/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-distribution-default-values.txt |
2917 | +++ b/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-distribution-default-values.txt |
2918 | @@ -1,4 +1,5 @@ |
2919 | -= Default values on the +distrotask form = |
2920 | +Default values on the +distrotask form |
2921 | +====================================== |
2922 | |
2923 | Source packages often share names across distributions, especially |
2924 | Debian and Ubuntu. So when you want to indicate that the bug affects |
2925 | diff --git a/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-new-upstream.txt b/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-new-upstream.txt |
2926 | index cbfe9a9..876f24e 100644 |
2927 | --- a/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-new-upstream.txt |
2928 | +++ b/lib/lp/bugs/stories/bug-also-affects/xx-also-affects-new-upstream.txt |
2929 | @@ -1,4 +1,5 @@ |
2930 | -= Registering an upstream affected by a given bug = |
2931 | +Registering an upstream affected by a given bug |
2932 | +=============================================== |
2933 | |
2934 | The test browser does not support javascript |
2935 | >>> user_browser.open( |
2936 | @@ -93,7 +94,8 @@ the bug as affecting another (unregistered) upstream. |
2937 | The Bar Project ... auto-bugs.foo.org #123 |
2938 | The Bar Project ... auto-bugs.foo.org #421 |
2939 | |
2940 | -== Error handling == |
2941 | +Error handling |
2942 | +-------------- |
2943 | |
2944 | If the URL of the remote bug is not recognized by Launchpad, we'll tell the |
2945 | user and ask them to check if it's correct. |
2946 | diff --git a/lib/lp/bugs/stories/bug-also-affects/xx-bugtracker-information.txt b/lib/lp/bugs/stories/bug-also-affects/xx-bugtracker-information.txt |
2947 | index 3ea9322..a238e64 100644 |
2948 | --- a/lib/lp/bugs/stories/bug-also-affects/xx-bugtracker-information.txt |
2949 | +++ b/lib/lp/bugs/stories/bug-also-affects/xx-bugtracker-information.txt |
2950 | @@ -1,4 +1,5 @@ |
2951 | -= Bug tracker information = |
2952 | +Bug tracker information |
2953 | +======================= |
2954 | |
2955 | If a product doesn't use Launchpad to track its bugs, there's |
2956 | information about the product's bug tracker when adding an upstream |
2957 | diff --git a/lib/lp/bugs/stories/bug-also-affects/xx-duplicate-bugwatches.txt b/lib/lp/bugs/stories/bug-also-affects/xx-duplicate-bugwatches.txt |
2958 | index 9d380cf..53c99f1 100644 |
2959 | --- a/lib/lp/bugs/stories/bug-also-affects/xx-duplicate-bugwatches.txt |
2960 | +++ b/lib/lp/bugs/stories/bug-also-affects/xx-duplicate-bugwatches.txt |
2961 | @@ -1,6 +1,8 @@ |
2962 | -= Duplicate bug watches = |
2963 | +Duplicate bug watches |
2964 | +===================== |
2965 | |
2966 | -== Adding the same bug watch twice to a bug == |
2967 | +Adding the same bug watch twice to a bug |
2968 | +---------------------------------------- |
2969 | |
2970 | When adding bug watches, existing bug watches are re-used if there |
2971 | already is one pointing to the same remote bug. For example, let's start |
2972 | @@ -64,7 +66,8 @@ same bug watch. |
2973 | pmount (Debian) ... Unknown Unknown debbugs #42 |
2974 | |
2975 | |
2976 | -== Adding the same bug watch to two different bugs == |
2977 | +Adding the same bug watch to two different bugs |
2978 | +----------------------------------------------- |
2979 | |
2980 | If a bug watch which is already added to another bug is added, a |
2981 | notification is added linking to the bug. This is useful for detecting |
2982 | diff --git a/lib/lp/bugs/stories/bug-also-affects/xx-request-distribution-no-release-fix.txt b/lib/lp/bugs/stories/bug-also-affects/xx-request-distribution-no-release-fix.txt |
2983 | index a840405..072ba0a 100644 |
2984 | --- a/lib/lp/bugs/stories/bug-also-affects/xx-request-distribution-no-release-fix.txt |
2985 | +++ b/lib/lp/bugs/stories/bug-also-affects/xx-request-distribution-no-release-fix.txt |
2986 | @@ -1,10 +1,12 @@ |
2987 | -= Requesting a fix for a distribution with no current release = |
2988 | +Requesting a fix for a distribution with no current release |
2989 | +=========================================================== |
2990 | |
2991 | Sometimes a distribution might not have any releases, thus it won't have |
2992 | a current release either. In this case it will still be possible to |
2993 | request a fix for these releases. |
2994 | |
2995 | -== A distribution using Launchpad == |
2996 | +A distribution using Launchpad |
2997 | +------------------------------ |
2998 | |
2999 | Gentoo is currently using Launchpad. |
3000 | |
3001 | @@ -22,7 +24,8 @@ Any user can request a fix for it. |
3002 | >>> user_browser.url |
3003 | 'http://bugs.launchpad.test/gentoo/+bug/4' |
3004 | |
3005 | -== A distribution not using Launchpad == |
3006 | +A distribution not using Launchpad |
3007 | +---------------------------------- |
3008 | |
3009 | If we change Gentoo not to use Launchpad, any user can still add a task and |
3010 | link to a external bug for it. |
3011 | diff --git a/lib/lp/bugs/stories/bug-also-affects/xx-upstream-bugtracker-links.txt b/lib/lp/bugs/stories/bug-also-affects/xx-upstream-bugtracker-links.txt |
3012 | index 9cc69fc..1d29a68 100644 |
3013 | --- a/lib/lp/bugs/stories/bug-also-affects/xx-upstream-bugtracker-links.txt |
3014 | +++ b/lib/lp/bugs/stories/bug-also-affects/xx-upstream-bugtracker-links.txt |
3015 | @@ -1,4 +1,5 @@ |
3016 | -= Links to upstream bug trackers = |
3017 | +Links to upstream bug trackers |
3018 | +============================== |
3019 | |
3020 | Sometimes people will want to mark a bug as being upstream but will |
3021 | either not know what the bug's upstream URL is or will know that the bug |
3022 | diff --git a/lib/lp/bugs/stories/bug-release-management/nomination-navigation.txt b/lib/lp/bugs/stories/bug-release-management/nomination-navigation.txt |
3023 | index 5c951e4..b974d94 100644 |
3024 | --- a/lib/lp/bugs/stories/bug-release-management/nomination-navigation.txt |
3025 | +++ b/lib/lp/bugs/stories/bug-release-management/nomination-navigation.txt |
3026 | @@ -1,4 +1,5 @@ |
3027 | -= Bug nomination navigation = |
3028 | +Bug nomination navigation |
3029 | +========================= |
3030 | |
3031 | Most people don't see the separate page for approving or declining a |
3032 | release nomination for a bug, because it's handled using an expandable |
3033 | diff --git a/lib/lp/bugs/stories/bug-tags/xx-searching-for-tags.txt b/lib/lp/bugs/stories/bug-tags/xx-searching-for-tags.txt |
3034 | index c51e388..4c45b07 100644 |
3035 | --- a/lib/lp/bugs/stories/bug-tags/xx-searching-for-tags.txt |
3036 | +++ b/lib/lp/bugs/stories/bug-tags/xx-searching-for-tags.txt |
3037 | @@ -1,4 +1,5 @@ |
3038 | -= Searching for bug tags = |
3039 | +Searching for bug tags |
3040 | +====================== |
3041 | |
3042 | On the advanced search page it's possible to search for a specific tag. |
3043 | |
3044 | @@ -38,7 +39,8 @@ If an invalid tag name is entered, an error message will be displayed. |
3045 | allowed after the first character. |
3046 | |
3047 | |
3048 | -== Cross-Site Scripting, or XSS == |
3049 | +Cross-Site Scripting, or XSS |
3050 | +---------------------------- |
3051 | |
3052 | The tags field and its related messages are properly escaped in order |
3053 | to prevent XSS. |
3054 | diff --git a/lib/lp/bugs/stories/bugattachments/xx-delete-bug-attachment.txt b/lib/lp/bugs/stories/bugattachments/xx-delete-bug-attachment.txt |
3055 | index b9f7292..00561d1 100644 |
3056 | --- a/lib/lp/bugs/stories/bugattachments/xx-delete-bug-attachment.txt |
3057 | +++ b/lib/lp/bugs/stories/bugattachments/xx-delete-bug-attachment.txt |
3058 | @@ -1,4 +1,5 @@ |
3059 | -= Deleting bug attachments = |
3060 | +Deleting bug attachments |
3061 | +======================== |
3062 | |
3063 | If some attachment gets added which isn't relevant to the bug, it can be |
3064 | deleted again from the bug attachment edit page. |
3065 | diff --git a/lib/lp/bugs/stories/bugattachments/xx-display-filesize-attachment.txt b/lib/lp/bugs/stories/bugattachments/xx-display-filesize-attachment.txt |
3066 | index 83571e0..4d94cd4 100644 |
3067 | --- a/lib/lp/bugs/stories/bugattachments/xx-display-filesize-attachment.txt |
3068 | +++ b/lib/lp/bugs/stories/bugattachments/xx-display-filesize-attachment.txt |
3069 | @@ -1,4 +1,5 @@ |
3070 | -== Display of filesize and mime type of attachments == |
3071 | +Display of filesize and mime type of attachments |
3072 | +------------------------------------------------ |
3073 | |
3074 | File size and mime type are displayed for each attachment |
3075 | |
3076 | diff --git a/lib/lp/bugs/stories/bugs/xx-add-comment-bugtask-edit.txt b/lib/lp/bugs/stories/bugs/xx-add-comment-bugtask-edit.txt |
3077 | index d2e6dcb..1698d19 100644 |
3078 | --- a/lib/lp/bugs/stories/bugs/xx-add-comment-bugtask-edit.txt |
3079 | +++ b/lib/lp/bugs/stories/bugs/xx-add-comment-bugtask-edit.txt |
3080 | @@ -1,4 +1,5 @@ |
3081 | -= Add a comment while editing the bugtask = |
3082 | +Add a comment while editing the bugtask |
3083 | +======================================= |
3084 | |
3085 | When editing a bug task it's possible to add a comment as well. It's not |
3086 | necessary to actually edit the bug task in order to add the comment, |
3087 | diff --git a/lib/lp/bugs/stories/bugs/xx-add-comment-distribution-no-current-release.txt b/lib/lp/bugs/stories/bugs/xx-add-comment-distribution-no-current-release.txt |
3088 | index b90a49f..f68811c 100644 |
3089 | --- a/lib/lp/bugs/stories/bugs/xx-add-comment-distribution-no-current-release.txt |
3090 | +++ b/lib/lp/bugs/stories/bugs/xx-add-comment-distribution-no-current-release.txt |
3091 | @@ -1,4 +1,5 @@ |
3092 | -= Add a comment on a bug on a distribution with no current release = |
3093 | +Add a comment on a bug on a distribution with no current release |
3094 | +================================================================ |
3095 | |
3096 | If a bug is reported distribution with no current release, like Gentoo, |
3097 | it's still possible to add comments to the bug. |
3098 | diff --git a/lib/lp/bugs/stories/bugs/xx-add-comment-with-bugwatch-and-cve.txt b/lib/lp/bugs/stories/bugs/xx-add-comment-with-bugwatch-and-cve.txt |
3099 | index 6228d8c..147cc45 100644 |
3100 | --- a/lib/lp/bugs/stories/bugs/xx-add-comment-with-bugwatch-and-cve.txt |
3101 | +++ b/lib/lp/bugs/stories/bugs/xx-add-comment-with-bugwatch-and-cve.txt |
3102 | @@ -1,4 +1,5 @@ |
3103 | -= links to remote bug reports and CVEs in bug comments = |
3104 | +links to remote bug reports and CVEs in bug comments |
3105 | +==================================================== |
3106 | |
3107 | When a comment is added to a bug, links to "remote" bug reports and CVEs are |
3108 | added to the bugwatches resp CVEs related to this bug |
3109 | diff --git a/lib/lp/bugs/stories/bugs/xx-bug-affects-me-too.txt b/lib/lp/bugs/stories/bugs/xx-bug-affects-me-too.txt |
3110 | index e1c6458..33ce24b 100644 |
3111 | --- a/lib/lp/bugs/stories/bugs/xx-bug-affects-me-too.txt |
3112 | +++ b/lib/lp/bugs/stories/bugs/xx-bug-affects-me-too.txt |
3113 | @@ -1,4 +1,5 @@ |
3114 | -= Marking a bug as affecting the user = |
3115 | +Marking a bug as affecting the user |
3116 | +=================================== |
3117 | |
3118 | Users can mark bugs as affecting them. Let's create a sample bug to |
3119 | try this out. |
3120 | @@ -66,7 +67,8 @@ Back at the bug page, the text changes once again. |
3121 | This bug affects 1 person, but not you |
3122 | |
3123 | |
3124 | -== Anonymous users == |
3125 | +Anonymous users |
3126 | +--------------- |
3127 | |
3128 | Anonymous users just see the number of affected users. |
3129 | |
3130 | @@ -87,7 +89,8 @@ appear at all to anonymous users. |
3131 | None |
3132 | |
3133 | |
3134 | -== Static and dynamic support == |
3135 | +Static and dynamic support |
3136 | +-------------------------- |
3137 | |
3138 | A bug page contains markup to support both static (no Javascript) and |
3139 | dynamic (Javascript enabled) scenarios. |
3140 | diff --git a/lib/lp/bugs/stories/bugs/xx-bug-heat-on-bug-page.txt b/lib/lp/bugs/stories/bugs/xx-bug-heat-on-bug-page.txt |
3141 | index d42f14c..141f6e8 100644 |
3142 | --- a/lib/lp/bugs/stories/bugs/xx-bug-heat-on-bug-page.txt |
3143 | +++ b/lib/lp/bugs/stories/bugs/xx-bug-heat-on-bug-page.txt |
3144 | @@ -1,4 +1,5 @@ |
3145 | -= Bug heat on bug page = |
3146 | +Bug heat on bug page |
3147 | +==================== |
3148 | |
3149 | Bug heat appears on the bug index page: |
3150 | |
3151 | diff --git a/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt b/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt |
3152 | index e92f1ef..31fb476 100644 |
3153 | --- a/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt |
3154 | +++ b/lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt |
3155 | @@ -1,4 +1,5 @@ |
3156 | -= Hide bug comments = |
3157 | +Hide bug comments |
3158 | +================= |
3159 | |
3160 | Comments that have had their visible attribute set to False |
3161 | will not show up when browsing the comment list for a bug. |
3162 | diff --git a/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt b/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt |
3163 | index b1697d3..f5b0609 100644 |
3164 | --- a/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt |
3165 | +++ b/lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt |
3166 | @@ -1,4 +1,5 @@ |
3167 | -= Bug nominations = |
3168 | +Bug nominations |
3169 | +=============== |
3170 | |
3171 | Bug nominations are displayed in the table at the top of the bug page, |
3172 | using the +bugtasks-and-nominations-table-row view. This view allows |
3173 | diff --git a/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt b/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt |
3174 | index aedbffd..d2e9c6d 100644 |
3175 | --- a/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt |
3176 | +++ b/lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt |
3177 | @@ -1,4 +1,5 @@ |
3178 | -= Bug Text Pages = |
3179 | +Bug Text Pages |
3180 | +============== |
3181 | |
3182 | Launchpad provides a way for users to view textual descriptions of bug reports, |
3183 | as an alternative to the graphical user interface. |
3184 | @@ -43,7 +44,8 @@ toggle away from Fix Released we must be the target owner): |
3185 | >>> flush_database_updates() |
3186 | |
3187 | |
3188 | -== Text Pages from a Bug Context == |
3189 | +Text Pages from a Bug Context |
3190 | +----------------------------- |
3191 | |
3192 | Users can view a textual description of any bug at that bug's text page, |
3193 | according to the following URL pattern: |
3194 | @@ -167,7 +169,8 @@ The comments are represented as a MIME message. |
3195 | comment for file with space |
3196 | |
3197 | |
3198 | -== Text Pages from a Bug Task Context == |
3199 | +Text Pages from a Bug Task Context |
3200 | +---------------------------------- |
3201 | |
3202 | Users can also view a textual description of a bug from the context of a task |
3203 | relating to that bug, according to the following URL pattern: |
3204 | @@ -234,7 +237,8 @@ The only differences are the download URLs of bug attachments: |
3205 | http://bugs.launchpad.test/bugs/1/.../+files/bug-patch.diff text/plain |
3206 | http://bugs.launchpad.test/firefox/+bug/.../+files/bug-patch.diff text/plain |
3207 | |
3208 | -== Duplicate Bugs == |
3209 | +Duplicate Bugs |
3210 | +-------------- |
3211 | |
3212 | When one bug duplicates another bug, the textual description includes the |
3213 | duplicated bug's ID: |
3214 | @@ -268,7 +272,8 @@ duplicate bug IDs: |
3215 | ... |
3216 | |
3217 | |
3218 | -== Bug Lists == |
3219 | +Bug Lists |
3220 | +--------- |
3221 | |
3222 | Users can also see a list of all bug IDs for a given target by viewing that |
3223 | product's bugs text page, according to the following URL pattern: |
3224 | @@ -322,7 +327,8 @@ This page is also available for project groups. |
3225 | 4 |
3226 | |
3227 | |
3228 | -== Private bugs == |
3229 | +Private bugs |
3230 | +------------ |
3231 | |
3232 | When a bug is private, the textual description reflects this: |
3233 | |
3234 | diff --git a/lib/lp/bugs/stories/bugs/xx-distributionsourcepackage-bugs.txt b/lib/lp/bugs/stories/bugs/xx-distributionsourcepackage-bugs.txt |
3235 | index da5542b..4608aa3 100644 |
3236 | --- a/lib/lp/bugs/stories/bugs/xx-distributionsourcepackage-bugs.txt |
3237 | +++ b/lib/lp/bugs/stories/bugs/xx-distributionsourcepackage-bugs.txt |
3238 | @@ -1,4 +1,5 @@ |
3239 | -= Distribution Source Package Bugs = |
3240 | +Distribution Source Package Bugs |
3241 | +================================ |
3242 | |
3243 | This page is like most bug listing pages, but it also has a portlet |
3244 | "portlet-publishing-details" giving information about the latest published |
3245 | diff --git a/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt b/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt |
3246 | index 7d95a21..5be0bc6 100644 |
3247 | --- a/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt |
3248 | +++ b/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt |
3249 | @@ -1,4 +1,5 @@ |
3250 | -== The Distribution Series Bugs Page == |
3251 | +The Distribution Series Bugs Page |
3252 | +--------------------------------- |
3253 | |
3254 | The +bugs page for a distribution series presents some basic information the |
3255 | bugs, as well as a listing. |
3256 | @@ -26,7 +27,8 @@ It also has a link to subscribe to bug mail. |
3257 | http://bugs.launchpad.test/ubuntu/warty/+subscribe |
3258 | |
3259 | |
3260 | -== Bugs Fixed Elsewhere == |
3261 | +Bugs Fixed Elsewhere |
3262 | +-------------------- |
3263 | |
3264 | The Bugs frontpage includes the number of bugs that are fixed in some |
3265 | other context. |
3266 | @@ -46,7 +48,8 @@ The link takes you to the list of the bugs fixed elsewhere. |
3267 | ... |
3268 | |
3269 | |
3270 | -== Expirable Bugs == |
3271 | +Expirable Bugs |
3272 | +-------------- |
3273 | |
3274 | The bugs page displays the number of Incomplete, unattended bugs that |
3275 | can expire when the project has enabled bug expiration. |
3276 | diff --git a/lib/lp/bugs/stories/bugs/xx-duplicate-of-private-bug.txt b/lib/lp/bugs/stories/bugs/xx-duplicate-of-private-bug.txt |
3277 | index 68bf232..c25ee8c 100644 |
3278 | --- a/lib/lp/bugs/stories/bugs/xx-duplicate-of-private-bug.txt |
3279 | +++ b/lib/lp/bugs/stories/bugs/xx-duplicate-of-private-bug.txt |
3280 | @@ -1,4 +1,5 @@ |
3281 | -= Showing a duplicate of a private bug = |
3282 | +Showing a duplicate of a private bug |
3283 | +==================================== |
3284 | |
3285 | When showing a duplicate of a private bug, the title of the private |
3286 | bug is not included in the page if the user does not have permission |
3287 | diff --git a/lib/lp/bugs/stories/bugs/xx-edit-no-currentrelease-distribution-task.txt b/lib/lp/bugs/stories/bugs/xx-edit-no-currentrelease-distribution-task.txt |
3288 | index 6a0539e..1d0245d 100644 |
3289 | --- a/lib/lp/bugs/stories/bugs/xx-edit-no-currentrelease-distribution-task.txt |
3290 | +++ b/lib/lp/bugs/stories/bugs/xx-edit-no-currentrelease-distribution-task.txt |
3291 | @@ -1,4 +1,5 @@ |
3292 | -= Editing a Distribution task with no current release = |
3293 | +Editing a Distribution task with no current release |
3294 | +=================================================== |
3295 | |
3296 | If a distribution doesn't have a current release, like Gentoo, it's |
3297 | still possible to edit its tasks from the bug page. There are no Gentoo |
3298 | diff --git a/lib/lp/bugs/stories/bugs/xx-front-page-search.txt b/lib/lp/bugs/stories/bugs/xx-front-page-search.txt |
3299 | index c7914a7..7367a15 100644 |
3300 | --- a/lib/lp/bugs/stories/bugs/xx-front-page-search.txt |
3301 | +++ b/lib/lp/bugs/stories/bugs/xx-front-page-search.txt |
3302 | @@ -1,4 +1,5 @@ |
3303 | -= Searching from the Bugs front page = |
3304 | +Searching from the Bugs front page |
3305 | +================================== |
3306 | |
3307 | It's possible to search bug reports across all of Launchpad from the |
3308 | Bugs front page. |
3309 | @@ -14,7 +15,8 @@ Either all projects, or a specific one can be searched. |
3310 | >>> anon_browser.getControl('One project') is not None |
3311 | True |
3312 | |
3313 | -== Searching all projects == |
3314 | +Searching all projects |
3315 | +---------------------- |
3316 | |
3317 | When choosing to search all the projects, all open bug reports in |
3318 | Launchpad will be searched, and the bug target will be visible in the |
3319 | @@ -69,7 +71,8 @@ the form at the front page. |
3320 | >>> anon_browser.title |
3321 | 'Search all bug reports' |
3322 | |
3323 | -== Searching one project == |
3324 | +Searching one project |
3325 | +--------------------- |
3326 | |
3327 | If the user chooses to search only one project, they will be forwarded to |
3328 | the project's bug listing, and the search will be performed there. If no |
3329 | @@ -116,7 +119,8 @@ support javascript, so a 'Find' link pointing to /bugs is displayed. |
3330 | 'Project' in this context means either a product, distribution or a |
3331 | project group. |
3332 | |
3333 | -=== Searching a product === |
3334 | +Searching a product |
3335 | +................... |
3336 | |
3337 | >>> anon_browser.open('http://bugs.launchpad.test/') |
3338 | >>> anon_browser.getControl('One project').selected = True |
3339 | @@ -131,7 +135,8 @@ project group. |
3340 | 7 A test bug Evolution |
3341 | Medium New |
3342 | |
3343 | -=== Searching a project === |
3344 | +Searching a project |
3345 | +................... |
3346 | |
3347 | >>> anon_browser.open('http://bugs.launchpad.test/') |
3348 | >>> anon_browser.getControl('One project').selected = True |
3349 | @@ -146,7 +151,8 @@ project group. |
3350 | 7 A test bug |
3351 | Evolution Medium New |
3352 | |
3353 | -=== Searching a distribution === |
3354 | +Searching a distribution |
3355 | +........................ |
3356 | |
3357 | >>> anon_browser.open('http://bugs.launchpad.test/') |
3358 | >>> anon_browser.getControl('One project').selected = True |
3359 | @@ -161,7 +167,8 @@ project group. |
3360 | 10 another test bug |
3361 | linux-source-2.6.15 (Ubuntu) Medium New |
3362 | |
3363 | -=== Jumping to a bug === |
3364 | +Jumping to a bug |
3365 | +................ |
3366 | |
3367 | Like with all other bug searches, it's possible to jump a bug by |
3368 | specifying only the bug id as the search term. |
3369 | diff --git a/lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt b/lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt |
3370 | index 918a76e..48782c7 100644 |
3371 | --- a/lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt |
3372 | +++ b/lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt |
3373 | @@ -1,4 +1,5 @@ |
3374 | -= Launchpad Bug Statistics = |
3375 | +Launchpad Bug Statistics |
3376 | +======================== |
3377 | |
3378 | The Bugs front page shows some statistics: |
3379 | |
3380 | diff --git a/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt b/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt |
3381 | index f93df7f..b54b9f1 100644 |
3382 | --- a/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt |
3383 | +++ b/lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt |
3384 | @@ -1,4 +1,5 @@ |
3385 | -= Incomplete bugs = |
3386 | +Incomplete bugs |
3387 | +=============== |
3388 | |
3389 | Bugs can have their status set to 'Incomplete', to indicate that more |
3390 | information is required before they can be confirmed. |
3391 | @@ -79,7 +80,8 @@ incomplete bugs without response. |
3392 | False |
3393 | |
3394 | |
3395 | -== Bugs that can expire display a notice == |
3396 | +Bugs that can expire display a notice |
3397 | +------------------------------------- |
3398 | |
3399 | Projects that use Launchpad to track bugs will expire 'Incomplete' |
3400 | bugs after the configured expiration age has passed. The rules |
3401 | @@ -129,7 +131,8 @@ date. We alter the date_last_updated field of bug 11 to demonstrate this. |
3402 | >>> user_browser.getLink('find out why').url |
3403 | 'https://help.launchpad.net/BugExpiry' |
3404 | |
3405 | -== The expirable bug search == |
3406 | +The expirable bug search |
3407 | +------------------------ |
3408 | |
3409 | Users can view a list of expirable bugs via a link on the project's |
3410 | bug page. To see the behaviour of the bug listing, we need another |
3411 | @@ -213,7 +216,8 @@ Jokosher's bug page. |
3412 | 12 Copy, Cut and Delete operations should work ... |
3413 | |
3414 | |
3415 | -== Incomplete bugs that do not expire == |
3416 | +Incomplete bugs that do not expire |
3417 | +---------------------------------- |
3418 | |
3419 | Debian does not use launchpad to track bugs, so its incomplete bugs |
3420 | cannot expire. No Privileges Person sets a Debian bug to Incomplete, |
3421 | @@ -246,7 +250,8 @@ expirable bugs they read that Debian does not use bug expiration. |
3422 | updating the project's details. See Bugs/Expiry. |
3423 | |
3424 | |
3425 | -== Default search parameters for incomplete bugs == |
3426 | +Default search parameters for incomplete bugs |
3427 | +--------------------------------------------- |
3428 | |
3429 | Default bug searches look for both Incomplete (with response) and |
3430 | Incomplete (without response) bugs. |
3431 | diff --git a/lib/lp/bugs/stories/bugs/xx-project-bugs-page.txt b/lib/lp/bugs/stories/bugs/xx-project-bugs-page.txt |
3432 | index 1ac1b71..6d9ad58 100644 |
3433 | --- a/lib/lp/bugs/stories/bugs/xx-project-bugs-page.txt |
3434 | +++ b/lib/lp/bugs/stories/bugs/xx-project-bugs-page.txt |
3435 | @@ -1,4 +1,5 @@ |
3436 | -= The ProjectGroup Bugs Page = |
3437 | +The ProjectGroup Bugs Page |
3438 | +========================== |
3439 | |
3440 | The default page for a ProjectGroup on the bugs domain shows the bug listing |
3441 | for the ProjectGroup. |
3442 | diff --git a/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt b/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt |
3443 | index 5fc9584..b183d8f 100644 |
3444 | --- a/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt |
3445 | +++ b/lib/lp/bugs/stories/bugs/xx-unique-ids-on-bug-page.txt |
3446 | @@ -1,4 +1,5 @@ |
3447 | -= Inline Editing of BugTasks = |
3448 | +Inline Editing of BugTasks |
3449 | +========================== |
3450 | |
3451 | On the bug page, the bugtasks are editable inline. This means that |
3452 | basically the same form is included on the page for each bugtask. Even |
3453 | diff --git a/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt b/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt |
3454 | index fe928ec..ff2d0cd 100644 |
3455 | --- a/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt |
3456 | +++ b/lib/lp/bugs/stories/bugtask-management/xx-bug-privileged-statuses.txt |
3457 | @@ -1,4 +1,5 @@ |
3458 | -= Bug Privileged Statuses = |
3459 | +Bug Privileged Statuses |
3460 | +======================= |
3461 | |
3462 | Some statuses, e.g. Won't Fix, are restricted. Only members of the Bug |
3463 | Supervisor team may change a bug to that status. |
3464 | @@ -7,7 +8,8 @@ Supervisor team may change a bug to that status. |
3465 | >>> def print_highlighted_bugtask(browser): |
3466 | ... print_bug_affects_table(browser.contents, highlighted_only=True) |
3467 | |
3468 | -== Unprivileged users == |
3469 | +Unprivileged users |
3470 | +------------------ |
3471 | |
3472 | >>> user_browser.open( |
3473 | ... 'http://bugs.launchpad.test/ubuntu/+source/' |
3474 | @@ -50,7 +52,8 @@ those statuses are not shown in the UI: |
3475 | ... |
3476 | zope.testbrowser.browser.ItemNotFoundError: Triaged |
3477 | |
3478 | -== Bug Supervisor == |
3479 | +Bug Supervisor |
3480 | +-------------- |
3481 | |
3482 | Ubuntu needs a Bug Supervisor first of all: |
3483 | |
3484 | diff --git a/lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt b/lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt |
3485 | index f42e154..a238b7c 100644 |
3486 | --- a/lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt |
3487 | +++ b/lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt |
3488 | @@ -1,4 +1,5 @@ |
3489 | -= Editing Email Address bugtasks = |
3490 | +Editing Email Address bugtasks |
3491 | +============================== |
3492 | |
3493 | >>> import transaction |
3494 | >>> from zope.component import getUtility |
3495 | @@ -34,7 +35,8 @@ |
3496 | ... print('Status: %s\nImportance: %s' % (status, importance)) |
3497 | |
3498 | |
3499 | -== "Normal" (not Email Address) bugtasks == |
3500 | +"Normal" (not Email Address) bugtasks |
3501 | +------------------------------------- |
3502 | |
3503 | Normally, it's not possible to edit the status or importance of a |
3504 | bugtask associated with a bugwatch that is linked to an external bug |
3505 | @@ -95,7 +97,8 @@ And the bug supervisor can't see the widgets either. |
3506 | Importance: False |
3507 | |
3508 | |
3509 | -== Email Address bugtasks == |
3510 | +Email Address bugtasks |
3511 | +---------------------- |
3512 | |
3513 | The status and importance of a bugtask with an email address bugwatch |
3514 | will be editable. |
3515 | diff --git a/lib/lp/bugs/stories/bugtask-searches/xx-filter-by-linked-branches.txt b/lib/lp/bugs/stories/bugtask-searches/xx-filter-by-linked-branches.txt |
3516 | index 2d0e8fe..a7514ff 100644 |
3517 | --- a/lib/lp/bugs/stories/bugtask-searches/xx-filter-by-linked-branches.txt |
3518 | +++ b/lib/lp/bugs/stories/bugtask-searches/xx-filter-by-linked-branches.txt |
3519 | @@ -1,4 +1,5 @@ |
3520 | -= Searching for bugs with linked branches = |
3521 | +Searching for bugs with linked branches |
3522 | +======================================= |
3523 | |
3524 | Using the "advanced search" form, we can limit a bug task search |
3525 | to bugs that are linked to branches or to bugs that are not linked |
3526 | diff --git a/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt b/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt |
3527 | index 2076c5b..e6921f7 100644 |
3528 | --- a/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt |
3529 | +++ b/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt |
3530 | @@ -1,4 +1,5 @@ |
3531 | -= Bug listings = |
3532 | +Bug listings |
3533 | +============ |
3534 | |
3535 | This test looks at various aspects of bug listings. Here's a very basic |
3536 | use case: Sample Person views the bug task listing for the Mozilla |
3537 | @@ -35,7 +36,8 @@ But you can make it show fixed ones to: |
3538 | 8 Printing doesn't work mozilla-firefox (Debian) Medium Fix Released |
3539 | |
3540 | |
3541 | -== Example listings == |
3542 | +Example listings |
3543 | +---------------- |
3544 | |
3545 | An anonymous user views the bug tasks in upstream Ubuntu. |
3546 | |
3547 | @@ -96,7 +98,8 @@ Do an advanced search with dupes turned on and find the duplicate in the results |
3548 | Mozilla Firefox Low New |
3549 | |
3550 | |
3551 | -== Critical bugs == |
3552 | +Critical bugs |
3553 | +------------- |
3554 | |
3555 | A list of critical bugs reported in a given upstream can be viewed by |
3556 | clicking the "critical" quick search link. Debian has no open critical bugs: |
3557 | @@ -113,7 +116,8 @@ But Firefox has a fixed one that Foo Bar can see: |
3558 | Mozilla Firefox Critical New |
3559 | |
3560 | |
3561 | -== My todo list == |
3562 | +My todo list |
3563 | +------------ |
3564 | |
3565 | The "my todo list" link gives the logged in user the ability to |
3566 | quickly see which bugs have been assigned to them. |
3567 | @@ -130,7 +134,8 @@ This also works for upstream listings: |
3568 | Mozilla Firefox Critical New |
3569 | |
3570 | |
3571 | -== Looking at unassigned bugs == |
3572 | +Looking at unassigned bugs |
3573 | +-------------------------- |
3574 | |
3575 | View the unassigned bug tasks listing as user Sample Person. |
3576 | |
3577 | @@ -140,7 +145,8 @@ View the unassigned bug tasks listing as user Sample Person. |
3578 | Mozilla Firefox Medium New |
3579 | |
3580 | |
3581 | -== Search criteria is persistent == |
3582 | +Search criteria is persistent |
3583 | +----------------------------- |
3584 | |
3585 | The bug listing pages save their search criteria. |
3586 | |
3587 | @@ -167,7 +173,8 @@ The result set is filtered to show only New bugs. |
3588 | 2 Blackhole Trash folder Ubuntu Medium New |
3589 | |
3590 | |
3591 | -== Searching for simple strings == |
3592 | +Searching for simple strings |
3593 | +---------------------------- |
3594 | |
3595 | The bugtask search facility supports searching on a simple text |
3596 | string. |
3597 | @@ -199,7 +206,8 @@ it'll say so. |
3598 | ... |
3599 | |
3600 | |
3601 | -== Bug Badge Decoration == |
3602 | +Bug Badge Decoration |
3603 | +-------------------- |
3604 | |
3605 | We display bug badges for associated branches, specifications, patches, etc. |
3606 | |
3607 | @@ -265,7 +273,8 @@ Patches also appear as badges in bug listings. |
3608 | Badge: haspatch |
3609 | |
3610 | |
3611 | -== Bug heat in listings == |
3612 | +Bug heat in listings |
3613 | +-------------------- |
3614 | |
3615 | Bug listings display the bug heat in the last column. Heat is displayed |
3616 | as a number. |
3617 | diff --git a/lib/lp/bugs/stories/bugtask-searches/xx-old-urls-still-work.txt b/lib/lp/bugs/stories/bugtask-searches/xx-old-urls-still-work.txt |
3618 | index 99d8893..2992c0b 100644 |
3619 | --- a/lib/lp/bugs/stories/bugtask-searches/xx-old-urls-still-work.txt |
3620 | +++ b/lib/lp/bugs/stories/bugtask-searches/xx-old-urls-still-work.txt |
3621 | @@ -1,4 +1,5 @@ |
3622 | -= Keeping old bookmarks working = |
3623 | +Keeping old bookmarks working |
3624 | +============================= |
3625 | |
3626 | As part of the bug workflow spec various statuses are being changed |
3627 | but we need old bookmarks to keep working with the status names. |
3628 | @@ -70,7 +71,8 @@ the new status names in place of the old. |
3629 | field.status:list=Unconfirmed --> field.status:list=New |
3630 | field.status:list=Needs Info --> field.status:list=Incomplete |
3631 | |
3632 | -== Assigned, Reported and Subscribed Bugs == |
3633 | +Assigned, Reported and Subscribed Bugs |
3634 | +-------------------------------------- |
3635 | |
3636 | Bugs searched for in the context of a person or team are redirected |
3637 | too. |
3638 | diff --git a/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt b/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt |
3639 | index ba0cc92..d8f2e1a 100644 |
3640 | --- a/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt |
3641 | +++ b/lib/lp/bugs/stories/bugtracker/xx-bugtracker-handshake-tokens.txt |
3642 | @@ -1,4 +1,5 @@ |
3643 | -= Handling BugTracker handshake tokens = |
3644 | +Handling BugTracker handshake tokens |
3645 | +==================================== |
3646 | |
3647 | Launchpad can generate LoginTokens which can then be used to |
3648 | authenticate it with remote bug trackers. Generating these tokens is |
3649 | diff --git a/lib/lp/bugs/stories/bugwatches/xx-bugwatch-comments.txt b/lib/lp/bugs/stories/bugwatches/xx-bugwatch-comments.txt |
3650 | index 576043d..b64a470 100644 |
3651 | --- a/lib/lp/bugs/stories/bugwatches/xx-bugwatch-comments.txt |
3652 | +++ b/lib/lp/bugs/stories/bugwatches/xx-bugwatch-comments.txt |
3653 | @@ -1,4 +1,5 @@ |
3654 | -= Comments Imported From a Bug Watch = |
3655 | +Comments Imported From a Bug Watch |
3656 | +================================== |
3657 | |
3658 | Comments can be imported from remote bugtrackers. |
3659 | |
3660 | diff --git a/lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt b/lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt |
3661 | index ba403de..2501411 100644 |
3662 | --- a/lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt |
3663 | +++ b/lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt |
3664 | @@ -1,4 +1,5 @@ |
3665 | -= Displaying Bug Watch Errors to the User = |
3666 | +Displaying Bug Watch Errors to the User |
3667 | +======================================= |
3668 | |
3669 | If an error occurs when importing the remote status of a bug that is |
3670 | being watched in Launchpad that error will be displayed to users. |
3671 | diff --git a/lib/lp/bugs/stories/cve/xx-cve-link-xss.txt b/lib/lp/bugs/stories/cve/xx-cve-link-xss.txt |
3672 | index 96b75a0..8676508 100644 |
3673 | --- a/lib/lp/bugs/stories/cve/xx-cve-link-xss.txt |
3674 | +++ b/lib/lp/bugs/stories/cve/xx-cve-link-xss.txt |
3675 | @@ -1,4 +1,5 @@ |
3676 | -== Cross-Site Scripting, or XSS == |
3677 | +Cross-Site Scripting, or XSS |
3678 | +---------------------------- |
3679 | |
3680 | The CVE Sequence Number field and its related messages are properly |
3681 | escaped in order to prevent XSS. |
3682 | diff --git a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt |
3683 | index b36d6c8..a71dfc5 100644 |
3684 | --- a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt |
3685 | +++ b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt |
3686 | @@ -1,4 +1,5 @@ |
3687 | -= Atom Feeds = |
3688 | +Atom Feeds |
3689 | +========== |
3690 | |
3691 | Atom feeds produce XML not HTML. Therefore we must parse the output as XML |
3692 | by asking BeautifulSoup to use lxml. |
3693 | @@ -17,7 +18,8 @@ will arrange the entries in a different sort order based on the update |
3694 | time. |
3695 | |
3696 | |
3697 | -== Latest bugs for a product == |
3698 | +Latest bugs for a product |
3699 | +------------------------- |
3700 | |
3701 | This feed gets the latest bugs reported against a product. The feed |
3702 | includes summary information about the bugs such as ID, title, author, |
3703 | @@ -77,7 +79,8 @@ The Atom feed must have the content-type of "application/atom+xml". |
3704 | >>> browser.headers['content-type'] |
3705 | 'application/atom+xml;charset=utf-8' |
3706 | |
3707 | -== Latest bugs for a project == |
3708 | +Latest bugs for a project |
3709 | +------------------------- |
3710 | |
3711 | This feed gets the latest bugs for a project, and has the same type of content |
3712 | as the latest bugs feed for a product. |
3713 | @@ -138,7 +141,8 @@ Ensure the entries are in reverse chronological order by published date. |
3714 | >>> assert check_entries_order(entries), ( |
3715 | ... "Published dates are not sorted.") |
3716 | |
3717 | -== Latest bugs for a distro == |
3718 | +Latest bugs for a distro |
3719 | +------------------------ |
3720 | |
3721 | This feed gets the latest bugs for a distribution, and has the same type |
3722 | of content as the latest bugs feed for a product. |
3723 | @@ -176,7 +180,8 @@ of content as the latest bugs feed for a product. |
3724 | >>> assert check_entries_order(entries), ( |
3725 | ... "Published dates are not sorted.") |
3726 | |
3727 | -=== Private teams as assignees === |
3728 | +Private teams as assignees |
3729 | +.......................... |
3730 | |
3731 | Create a private team and assign an ubuntu distro bug to that team. |
3732 | |
3733 | @@ -222,7 +227,8 @@ Private teams should show as '-'. |
3734 | - |
3735 | - |
3736 | |
3737 | -== Latest bugs for a source package == |
3738 | +Latest bugs for a source package |
3739 | +-------------------------------- |
3740 | |
3741 | This feed gets the latest bugs for a source package, and has the same |
3742 | type of content as the latest bugs feed for a product. |
3743 | @@ -255,7 +261,8 @@ type of content as the latest bugs feed for a product. |
3744 | ... "Published dates are not sorted.") |
3745 | |
3746 | |
3747 | -== Latest bugs for a distroseries == |
3748 | +Latest bugs for a distroseries |
3749 | +------------------------------ |
3750 | |
3751 | This feed gets the latest bugs for a distribution series, and has the same |
3752 | type of content as the latest bugs feed for a product. |
3753 | @@ -295,7 +302,8 @@ type of content as the latest bugs feed for a product. |
3754 | ... "Published dates are not sorted.") |
3755 | |
3756 | |
3757 | -== Latest bugs for a product series == |
3758 | +Latest bugs for a product series |
3759 | +-------------------------------- |
3760 | |
3761 | This feed gets the latest bugs for a product series, and has the same |
3762 | type of content as the latest bugs feed for a product. |
3763 | @@ -335,7 +343,8 @@ type of content as the latest bugs feed for a product. |
3764 | ... "Published dates are not sorted.") |
3765 | |
3766 | |
3767 | -== Latest bugs for a person == |
3768 | +Latest bugs for a person |
3769 | +------------------------ |
3770 | |
3771 | This feed gets the latest bugs for a person. |
3772 | |
3773 | @@ -381,7 +390,8 @@ This feed gets the latest bugs for a person. |
3774 | ... "Published dates are not sorted.") |
3775 | |
3776 | |
3777 | -== Latest bugs for a team == |
3778 | +Latest bugs for a team |
3779 | +---------------------- |
3780 | |
3781 | This feed gets the latest bugs for a whole team. |
3782 | First, make a team responsible for some bugs. |
3783 | @@ -438,7 +448,8 @@ some results. |
3784 | ... "Published dates are not sorted.") |
3785 | |
3786 | |
3787 | -== Latest bugs for any target == |
3788 | +Latest bugs for any target |
3789 | +-------------------------- |
3790 | |
3791 | This feed gets the latest bugs reported against any target. |
3792 | |
3793 | @@ -476,7 +487,8 @@ This feed gets the latest bugs reported against any target. |
3794 | ... "Published dates are not sorted.") |
3795 | |
3796 | |
3797 | -== General bug search == |
3798 | +General bug search |
3799 | +------------------ |
3800 | |
3801 | This feed is the most useful of them all. Any bug search can be turned into |
3802 | a feed. |
3803 | @@ -550,7 +562,8 @@ to True. |
3804 | http://bugs.launchpad.test/~name12 |
3805 | |
3806 | |
3807 | -== Results for a single bug == |
3808 | +Results for a single bug |
3809 | +------------------------ |
3810 | |
3811 | This feed shows the status of a single bug. |
3812 | |
3813 | @@ -570,7 +583,8 @@ This feed shows the status of a single bug. |
3814 | ... print(link) |
3815 | <link href="http://feeds.launchpad.test/bugs/1/bug.atom" rel="self"/> |
3816 | |
3817 | -== Feeds Configuration Options == |
3818 | +Feeds Configuration Options |
3819 | +--------------------------- |
3820 | |
3821 | The max_bug_feed_cache_minutes configuration is provided to allow |
3822 | overriding the Expires and Cache-Control headers so that the feeds |
3823 | diff --git a/lib/lp/bugs/stories/feeds/xx-bug-html.txt b/lib/lp/bugs/stories/feeds/xx-bug-html.txt |
3824 | index 3b6a6c1..782b8f2 100644 |
3825 | --- a/lib/lp/bugs/stories/feeds/xx-bug-html.txt |
3826 | +++ b/lib/lp/bugs/stories/feeds/xx-bug-html.txt |
3827 | @@ -1,4 +1,5 @@ |
3828 | -= HTML Feeds = |
3829 | +HTML Feeds |
3830 | +========== |
3831 | |
3832 | HTML feeds produce snippets of html for inclusion in user's own web pages. |
3833 | The content of an HTML feed is very similar to an Atom feed, but is formatted |
3834 | @@ -40,7 +41,8 @@ And two for printing the results: |
3835 | ... return bug_numbers |
3836 | |
3837 | |
3838 | -== Latest bugs for a product == |
3839 | +Latest bugs for a product |
3840 | +------------------------- |
3841 | |
3842 | This feed gets the latest bugs reported against a product. The feed includes |
3843 | summary information about the bugs such as ID, title, author, and a link to |
3844 | @@ -67,7 +69,8 @@ the bug itself. |
3845 | >>> get_bug_numbers(entries) |
3846 | [12, 11] |
3847 | |
3848 | -== Latest bugs for a project == |
3849 | +Latest bugs for a project |
3850 | +------------------------- |
3851 | |
3852 | This feed gets the latest bugs for a project, and has the same type of content |
3853 | as the latest bugs feed for a product. |
3854 | @@ -93,7 +96,8 @@ as the latest bugs feed for a product. |
3855 | >>> get_bug_numbers(entries) |
3856 | [15, 15, 9, 9, 5, 5, 5, 4, 1, 1, 1] |
3857 | |
3858 | -=== Private teams as assignees === |
3859 | +Private teams as assignees |
3860 | +.......................... |
3861 | |
3862 | Create a private team and assign a mozilla bug to that team. |
3863 | |
3864 | @@ -121,7 +125,8 @@ Get the mozilla/latest-bugs feed. The previous bug should be included. |
3865 | >>> get_bug_numbers(entries) |
3866 | [15, 15, 9, 9, 5, 5, 5, 4, 1, 1, 1] |
3867 | |
3868 | -== Latest bugs for a person == |
3869 | +Latest bugs for a person |
3870 | +------------------------ |
3871 | |
3872 | This feed gets the latest bugs for a person. |
3873 | |
3874 | @@ -147,7 +152,8 @@ This feed gets the latest bugs for a person. |
3875 | [15, 15, 12, 11, 10, 9, 9, 7, 7, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1] |
3876 | |
3877 | |
3878 | -== Latest bugs for any target == |
3879 | +Latest bugs for any target |
3880 | +-------------------------- |
3881 | |
3882 | This feed gets the latest bugs reported against any target. |
3883 | |
3884 | @@ -174,7 +180,8 @@ This feed gets the latest bugs reported against any target. |
3885 | 2, 1, 1, 1] |
3886 | |
3887 | |
3888 | -== General bug search == |
3889 | +General bug search |
3890 | +------------------ |
3891 | |
3892 | This feed is the most useful of them all. Any bug search can be turned into |
3893 | a feed. |
3894 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug-tags.txt b/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug-tags.txt |
3895 | index 48b4589..52aa4ef 100644 |
3896 | --- a/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug-tags.txt |
3897 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug-tags.txt |
3898 | @@ -1,4 +1,5 @@ |
3899 | -= Adding tags when filing bugs = |
3900 | +Adding tags when filing bugs |
3901 | +============================ |
3902 | |
3903 | Even though there's no input field for adding tags on the normal |
3904 | +filebug page, it's still possible to add tags to filed bugs on that |
3905 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug.txt b/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug.txt |
3906 | index f835994..3755680 100644 |
3907 | --- a/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug.txt |
3908 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-distro-guided-filebug.txt |
3909 | @@ -1,4 +1,5 @@ |
3910 | -= Filing bugs on Distributions = |
3911 | +Filing bugs on Distributions |
3912 | +============================ |
3913 | |
3914 | Like filing bugs on products, filing bugs on distributions involves |
3915 | first finding out if you're bug has already been reported. |
3916 | @@ -73,7 +74,8 @@ Finally, let's submit the bug. |
3917 | http://bugs.launchpad.test/ubuntu/+source/mozilla-firefox/+bug/... |
3918 | |
3919 | |
3920 | -== Filing a bug when there are none similar == |
3921 | +Filing a bug when there are none similar |
3922 | +---------------------------------------- |
3923 | |
3924 | When no similar bugs are found the form works the same but appears |
3925 | different in the user agent. |
3926 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-filebug-attachments.txt b/lib/lp/bugs/stories/guided-filebug/xx-filebug-attachments.txt |
3927 | index 4843c14..ac1f245 100644 |
3928 | --- a/lib/lp/bugs/stories/guided-filebug/xx-filebug-attachments.txt |
3929 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-filebug-attachments.txt |
3930 | @@ -1,11 +1,13 @@ |
3931 | -= Adding attachments when filing a bug = |
3932 | +Adding attachments when filing a bug |
3933 | +==================================== |
3934 | |
3935 | It is possible to add attachments when filing a bug. The tests in this |
3936 | file will cover this functionality for both the guided and advanced |
3937 | filebug forms. |
3938 | |
3939 | |
3940 | -== Guided filebug form == |
3941 | +Guided filebug form |
3942 | +------------------- |
3943 | |
3944 | Adding an attachment to a new bug is part of the second step of the |
3945 | guided filebug form. |
3946 | @@ -50,7 +52,8 @@ No Privileges Person can see the attachment in the attachments portlet. |
3947 | 'http://bugs.launchpad.test/firefox/+bug/.../+attachment/.../+files/ex...' |
3948 | |
3949 | |
3950 | -== Empty Attachment Fields == |
3951 | +Empty Attachment Fields |
3952 | +----------------------- |
3953 | |
3954 | Sometimes browsers submit values empty fields, leading them to being |
3955 | treated as non-empty by the receiving view. The attachment form will |
3956 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-filebug-tags.txt b/lib/lp/bugs/stories/guided-filebug/xx-filebug-tags.txt |
3957 | index f01789f..94d1640 100644 |
3958 | --- a/lib/lp/bugs/stories/guided-filebug/xx-filebug-tags.txt |
3959 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-filebug-tags.txt |
3960 | @@ -1,7 +1,9 @@ |
3961 | -= Adding tags = |
3962 | +Adding tags |
3963 | +=========== |
3964 | |
3965 | |
3966 | -== Normal bug filing page == |
3967 | +Normal bug filing page |
3968 | +---------------------- |
3969 | |
3970 | On the normal +filebug page, tags can be added to the bug as the bug |
3971 | is being filed. |
3972 | @@ -25,7 +27,8 @@ is being filed. |
3973 | unofficial-tag foo |
3974 | |
3975 | |
3976 | -== Pre-populating the tags field == |
3977 | +Pre-populating the tags field |
3978 | +----------------------------- |
3979 | |
3980 | For people wanting to pre-fill the tags field with certain tags, it's |
3981 | possible to do so by supplying a 'field.tags' URL parameter. |
3982 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-options-for-bug-supervisors.txt b/lib/lp/bugs/stories/guided-filebug/xx-options-for-bug-supervisors.txt |
3983 | index f5d8da2..ed42952 100644 |
3984 | --- a/lib/lp/bugs/stories/guided-filebug/xx-options-for-bug-supervisors.txt |
3985 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-options-for-bug-supervisors.txt |
3986 | @@ -1,4 +1,5 @@ |
3987 | -= Bug filing options for bug supervisors = |
3988 | +Bug filing options for bug supervisors |
3989 | +====================================== |
3990 | |
3991 | During the bug filing process, normal or advanced, bug supervisors are |
3992 | able to set the status and importance of the bug being filed, can |
3993 | @@ -55,7 +56,8 @@ Users who are bug supervisors can see these options: |
3994 | <Control name='field.assignee' type='text'> |
3995 | |
3996 | |
3997 | -== Using these extra options == |
3998 | +Using these extra options |
3999 | +------------------------- |
4000 | |
4001 | >>> from lp.bugs.tests.bug import print_bug_affects_table |
4002 | |
4003 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-productseries-guided-filebug.txt b/lib/lp/bugs/stories/guided-filebug/xx-productseries-guided-filebug.txt |
4004 | index 699005f..af6d155 100644 |
4005 | --- a/lib/lp/bugs/stories/guided-filebug/xx-productseries-guided-filebug.txt |
4006 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-productseries-guided-filebug.txt |
4007 | @@ -1,4 +1,5 @@ |
4008 | -= Filing a bug from the product series page = |
4009 | +Filing a bug from the product series page |
4010 | +========================================= |
4011 | |
4012 | The product series Bugs frontpage includes a link to report a bug. |
4013 | |
4014 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-sorting-by-relevance.txt b/lib/lp/bugs/stories/guided-filebug/xx-sorting-by-relevance.txt |
4015 | index 994b4d1..f021320 100644 |
4016 | --- a/lib/lp/bugs/stories/guided-filebug/xx-sorting-by-relevance.txt |
4017 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-sorting-by-relevance.txt |
4018 | @@ -1,4 +1,5 @@ |
4019 | -= Sorting the similar bugs found by relevance = |
4020 | +Sorting the similar bugs found by relevance |
4021 | +=========================================== |
4022 | |
4023 | When displaying the similar bugs, we display only a small number, even |
4024 | though the search usually returns a huge number of results. For this |
4025 | diff --git a/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt b/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt |
4026 | index cbc2de2..00bea23 100644 |
4027 | --- a/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt |
4028 | +++ b/lib/lp/bugs/stories/upstream-bugprivacy/xx-upstream-bug-privacy.txt |
4029 | @@ -62,7 +62,8 @@ bug listing. |
4030 | ...<div class="importance importanceUNDECIDED"> Undecided </div>... |
4031 | ...<span class="bugnumber">#BUG-ID</span>... |
4032 | |
4033 | -== Checking basic access to the private bug pages == |
4034 | +Checking basic access to the private bug pages |
4035 | +---------------------------------------------- |
4036 | |
4037 | Trying to access the task edit page of a task on a private bug |
4038 | fails, because we pretend that inaccessible private bugs do not exist. |
4039 | diff --git a/lib/lp/bugs/stories/webservice/xx-bug-target.txt b/lib/lp/bugs/stories/webservice/xx-bug-target.txt |
4040 | index f4e4c45..6017625 100644 |
4041 | --- a/lib/lp/bugs/stories/webservice/xx-bug-target.txt |
4042 | +++ b/lib/lp/bugs/stories/webservice/xx-bug-target.txt |
4043 | @@ -1,10 +1,12 @@ |
4044 | -= Introduction = |
4045 | +Introduction |
4046 | +============ |
4047 | |
4048 | Many exposed objects in the API provide IBugTarget, including |
4049 | projects, distributions, distribution series, and source packages. |
4050 | |
4051 | |
4052 | -== bug_reporting_guidelines == |
4053 | +bug_reporting_guidelines |
4054 | +------------------------ |
4055 | |
4056 | All bug targets have a read/write bug_reporting_guidelines property. |
4057 | |
4058 | @@ -38,7 +40,8 @@ Not everyone can modify it however: |
4059 | (<Product at ...>, 'bug_reporting_guidelines', 'launchpad.BugSupervisor') |
4060 | |
4061 | |
4062 | -== Official Bug Tags == |
4063 | +Official Bug Tags |
4064 | +----------------- |
4065 | |
4066 | We can access official bug tag targets and add and remove tags. We |
4067 | create a new product, owned by ~salgado. |
4068 | @@ -138,7 +141,8 @@ We can also access official tags as a list. |
4069 | ... dumps({'official_bug_tags': [u'foo', u'bar']}))) |
4070 | HTTP/1.1 209 Content Returned... |
4071 | |
4072 | -== bug_supervisor == |
4073 | +bug_supervisor |
4074 | +-------------- |
4075 | |
4076 | We can retrieve or set a person or team as the bug supervisor for projects. |
4077 | |
4078 | diff --git a/lib/lp/bugs/stories/webservice/xx-hide-comments.txt b/lib/lp/bugs/stories/webservice/xx-hide-comments.txt |
4079 | index dd5510e..8a2a6e1 100644 |
4080 | --- a/lib/lp/bugs/stories/webservice/xx-hide-comments.txt |
4081 | +++ b/lib/lp/bugs/stories/webservice/xx-hide-comments.txt |
4082 | @@ -1,4 +1,5 @@ |
4083 | -= Hide bug comments = |
4084 | +Hide bug comments |
4085 | +================= |
4086 | |
4087 | Bug comments can be hidden by setting visible to False. There is |
4088 | a corresponding API method to do this. Call the method with the |
4089 | diff --git a/lib/lp/bugs/tests/buglinktarget.txt b/lib/lp/bugs/tests/buglinktarget.txt |
4090 | index c8c4099..119c94e 100644 |
4091 | --- a/lib/lp/bugs/tests/buglinktarget.txt |
4092 | +++ b/lib/lp/bugs/tests/buglinktarget.txt |
4093 | @@ -1,4 +1,5 @@ |
4094 | -= IBugLinkTarget Interface = |
4095 | +IBugLinkTarget Interface |
4096 | +======================== |
4097 | |
4098 | Launchpad includes Malone, the powerful bug tracker. One of the best |
4099 | features of Malone is the ability to track a bug in multiple products |
4100 | @@ -22,7 +23,8 @@ shouldn't have any bugs linked to it at the start of the test.) |
4101 | >>> verifyObject(IBugLinkTarget, target) |
4102 | True |
4103 | |
4104 | -== linkBug() == |
4105 | +linkBug() |
4106 | +--------- |
4107 | |
4108 | >>> bugset = getUtility(IBugSet) |
4109 | >>> bug1 = bugset.get(1) |
4110 | @@ -100,7 +102,8 @@ if they are an administrator: |
4111 | >>> target.linkBug(private_bug, admin) |
4112 | True |
4113 | |
4114 | -== bugs == |
4115 | +bugs |
4116 | +---- |
4117 | |
4118 | The list of bugs linked to the target should be available in the bugs |
4119 | attributes: |
4120 | @@ -108,7 +111,8 @@ attributes: |
4121 | >>> [bug.id for bug in target.bugs] |
4122 | [1, 2, 6] |
4123 | |
4124 | -== unlinkBug() == |
4125 | +unlinkBug() |
4126 | +----------- |
4127 | |
4128 | The unlinkBug() method is used to remove a link between a bug and |
4129 | the target. |
4130 | @@ -169,7 +173,8 @@ the bug or if they are an administrator. |
4131 | >>> target.unlinkBug(private_bug, admin) |
4132 | True |
4133 | |
4134 | -== Cleanup == |
4135 | +Cleanup |
4136 | +------- |
4137 | |
4138 | # Unregister event listeners. |
4139 | >>> linked_event_listener.cleanUp() |
4140 | diff --git a/lib/lp/bugs/tests/trac-xmlrpc-transport.txt b/lib/lp/bugs/tests/trac-xmlrpc-transport.txt |
4141 | index 66de8e7..7f52f95 100644 |
4142 | --- a/lib/lp/bugs/tests/trac-xmlrpc-transport.txt |
4143 | +++ b/lib/lp/bugs/tests/trac-xmlrpc-transport.txt |
4144 | @@ -1,4 +1,5 @@ |
4145 | -= TestTracXMLRPCTransport = |
4146 | +TestTracXMLRPCTransport |
4147 | +======================= |
4148 | |
4149 | TestTracXMLRPCTransport is an XML-RPC transport which simulates the LP |
4150 | Trac plugin. It can be used to avoid network traffic while testing, and |
4151 | @@ -26,7 +27,8 @@ some cookie is set. |
4152 | >>> trac_transport.setCookie('trac_auth=auth_cookie') |
4153 | |
4154 | |
4155 | -== launchpad.bugtracker_version() == |
4156 | +launchpad.bugtracker_version() |
4157 | +------------------------------ |
4158 | |
4159 | bugtracker_version() returns a list of |
4160 | [Trac version, plugin version, dupe knowledge]. The version numbers are |
4161 | @@ -37,7 +39,8 @@ instance knows how to track duplicate bugs. |
4162 | ['0.11.0', '1.0', False] |
4163 | |
4164 | |
4165 | -== launchpad.time_snapshot() == |
4166 | +launchpad.time_snapshot() |
4167 | +------------------------- |
4168 | |
4169 | time_snapshot returns information about what the Trac instance thinks |
4170 | the current time is. It returns the local time zone, the local time, and |
4171 | @@ -57,7 +60,8 @@ isn't suitable. |
4172 | US/Eastern 1206328061 1206342461 |
4173 | |
4174 | |
4175 | -== launchpad.bug_info() == |
4176 | +launchpad.bug_info() |
4177 | +-------------------- |
4178 | |
4179 | bug_info() returns, as the name suggests, info about a given bug or set |
4180 | of bugs. It takes two parameters: level, an integer indicating how much |
4181 | @@ -215,7 +219,8 @@ are in the bugs list being returned. |
4182 | [{'id': '1'}] |
4183 | |
4184 | |
4185 | -== launchpad.get_comments() == |
4186 | +launchpad.get_comments() |
4187 | +------------------------ |
4188 | |
4189 | get_comments() returns a list of comment dicts. The comment dicts |
4190 | returned correspond to the comment IDs passed in the comments parameter. |
4191 | @@ -245,7 +250,8 @@ returned correspond to the comment IDs passed in the comments parameter. |
4192 | |
4193 | |
4194 | |
4195 | -== launchpad.add_comment() == |
4196 | +launchpad.add_comment() |
4197 | +----------------------- |
4198 | |
4199 | The Trac XML-RPC API allows us to push comments to remote bug trackers |
4200 | via the launchpad.add_comment() method. |
4201 | @@ -281,7 +287,8 @@ The comment will be included in the remote bug's comments. |
4202 | user: launchpad |
4203 | |
4204 | |
4205 | -== Getting and setting the Launchpad bug ID == |
4206 | +Getting and setting the Launchpad bug ID |
4207 | +---------------------------------------- |
4208 | |
4209 | The Trac XML-RPC API allows us to tell the remote tracker which |
4210 | Launchpad bug links to a particular one of its bugs and also allows us |
4211 | diff --git a/lib/lp/buildmaster/doc/buildqueue.txt b/lib/lp/buildmaster/doc/buildqueue.txt |
4212 | index e55c68a..f864ac2 100644 |
4213 | --- a/lib/lp/buildmaster/doc/buildqueue.txt |
4214 | +++ b/lib/lp/buildmaster/doc/buildqueue.txt |
4215 | @@ -1,4 +1,5 @@ |
4216 | -= BuildQueue = |
4217 | +BuildQueue |
4218 | +========== |
4219 | |
4220 | BuildQueue class represents the run-time-records of builds being |
4221 | processed. |
4222 | @@ -90,7 +91,8 @@ set 'manual' attribute atomically. For this we use manualScore: |
4223 | (True, 1000) |
4224 | |
4225 | |
4226 | -== Dispatching and Reseting jobs == |
4227 | +Dispatching and Reseting jobs |
4228 | +----------------------------- |
4229 | |
4230 | The sampledata contains an active job, being built by the 'bob' |
4231 | builder. |
4232 | @@ -151,7 +153,8 @@ the specified builder. |
4233 | BUILDING |
4234 | |
4235 | |
4236 | -== BuildQueueSet utility == |
4237 | +BuildQueueSet utility |
4238 | +--------------------- |
4239 | |
4240 | Now perform the tests for the BuildQueue zope utility, BuildQueueSet. |
4241 | Check if the instance returned as utility corresponds to its |
4242 | diff --git a/lib/lp/buildmaster/stories/builder-views.txt b/lib/lp/buildmaster/stories/builder-views.txt |
4243 | index f93d409..67d5ba3 100644 |
4244 | --- a/lib/lp/buildmaster/stories/builder-views.txt |
4245 | +++ b/lib/lp/buildmaster/stories/builder-views.txt |
4246 | @@ -1,4 +1,5 @@ |
4247 | -= Builder View Classes and Pages = |
4248 | +Builder View Classes and Pages |
4249 | +============================== |
4250 | |
4251 | >>> from zope.component import getMultiAdapter, getUtility |
4252 | >>> from lp.buildmaster.interfaces.builder import IBuilderSet |
4253 | @@ -28,7 +29,8 @@ mode button. |
4254 | Switch to manual-mode |
4255 | |
4256 | |
4257 | -== Builder history == |
4258 | +Builder history |
4259 | +--------------- |
4260 | |
4261 | Let's instantiate a view for +history: |
4262 | |
4263 | @@ -49,7 +51,8 @@ mock_form: |
4264 | 5 |
4265 | |
4266 | |
4267 | -== Builder edit == |
4268 | +Builder edit |
4269 | +------------ |
4270 | |
4271 | Let's instantiate the view for +edit and check that the correct title, |
4272 | fields and actions are displayed: |
4273 | @@ -118,7 +121,8 @@ After editing a builder, a relevant notification is added to the view. |
4274 | The builder "Bob The Builder" was updated successfully. |
4275 | |
4276 | |
4277 | -== Builders building private jobs == |
4278 | +Builders building private jobs |
4279 | +------------------------------ |
4280 | |
4281 | In order to restrict access to private PPA details in general, we also |
4282 | need to be able to hide the fact that a builder is building a private |
4283 | @@ -229,7 +233,8 @@ again. |
4284 | >>> login(ANONYMOUS) |
4285 | |
4286 | |
4287 | -== BuilderSet view == |
4288 | +BuilderSet view |
4289 | +--------------- |
4290 | |
4291 | BuilderSetView offer a way to treat the currently registered builders |
4292 | in categories. They are: |
4293 | diff --git a/lib/lp/buildmaster/stories/xx-buildfarm-index.txt b/lib/lp/buildmaster/stories/xx-buildfarm-index.txt |
4294 | index 5ab1e01..16932a5 100644 |
4295 | --- a/lib/lp/buildmaster/stories/xx-buildfarm-index.txt |
4296 | +++ b/lib/lp/buildmaster/stories/xx-buildfarm-index.txt |
4297 | @@ -1,4 +1,5 @@ |
4298 | -= BuildFarm page = |
4299 | +BuildFarm page |
4300 | +============== |
4301 | |
4302 | The BuildFarm page is accessible from the root page, although we don't |
4303 | link to it yet because we are not yet sure of the benefits of doing |
4304 | diff --git a/lib/lp/code/doc/branch-karma.txt b/lib/lp/code/doc/branch-karma.txt |
4305 | index f780602..5b44699 100644 |
4306 | --- a/lib/lp/code/doc/branch-karma.txt |
4307 | +++ b/lib/lp/code/doc/branch-karma.txt |
4308 | @@ -1,4 +1,5 @@ |
4309 | -= Karma for branch related activity = |
4310 | +Karma for branch related activity |
4311 | +================================= |
4312 | |
4313 | We want people to register their branches on Launchpad, and also to |
4314 | link their branches to bugs and specs, so we give them some karma for |
4315 | @@ -29,7 +30,8 @@ give karma for it. |
4316 | >>> karma_helper = KarmaAssignedEventListener(show_person=True) |
4317 | >>> karma_helper.register_listener() |
4318 | |
4319 | -== Registering branches == |
4320 | +Registering branches |
4321 | +-------------------- |
4322 | |
4323 | Karma is added for registering a branch. |
4324 | |
4325 | @@ -44,7 +46,8 @@ However, no karma is added for junk branches. |
4326 | >>> junk_branch = factory.makePersonalBranch(owner=eric) |
4327 | |
4328 | |
4329 | -== Linking bugs and branches == |
4330 | +Linking bugs and branches |
4331 | +------------------------- |
4332 | |
4333 | You get karma for linking a bug to a branch. |
4334 | |
4335 | @@ -59,7 +62,8 @@ As long as it is not a junk branch. |
4336 | >>> branch_link = bug.linkBranch(junk_branch, eric) |
4337 | |
4338 | |
4339 | -== Linking blueprints and branches == |
4340 | +Linking blueprints and branches |
4341 | +------------------------------- |
4342 | |
4343 | You get karma for linking a blueprint to a branch. |
4344 | |
4345 | diff --git a/lib/lp/code/doc/branch-notifications.txt b/lib/lp/code/doc/branch-notifications.txt |
4346 | index 00696fe..d59000b 100644 |
4347 | --- a/lib/lp/code/doc/branch-notifications.txt |
4348 | +++ b/lib/lp/code/doc/branch-notifications.txt |
4349 | @@ -1,4 +1,5 @@ |
4350 | -= Email Notifications for Branches = |
4351 | +Email Notifications for Branches |
4352 | +================================ |
4353 | |
4354 | Only subscribers get email notifications. If the owner/author of the |
4355 | branch wants to receive emails, then they need to subscribe to the |
4356 | @@ -12,7 +13,8 @@ There are two situations where emails are sent out for branches: |
4357 | - when the branch scanner scans new revisions in the branches history |
4358 | |
4359 | |
4360 | -== Email Format == |
4361 | +Email Format |
4362 | +------------ |
4363 | |
4364 | All branch notification emails use a standard email template. |
4365 | |
4366 | @@ -77,7 +79,8 @@ also sends the email to the list of recipients. |
4367 | >>> branch.unsubscribe(branch.owner, branch.owner) |
4368 | |
4369 | |
4370 | -== Subscriptions == |
4371 | +Subscriptions |
4372 | +------------- |
4373 | |
4374 | When users subscribe to the branch, they specify which branch |
4375 | modified events they want to receive email for. This is one of the |
4376 | @@ -192,7 +195,8 @@ to allow email filtering. |
4377 | mark@example.com Send entire diff Subscriber |
4378 | |
4379 | |
4380 | -== Limiting the size of diff received by email == |
4381 | +Limiting the size of diff received by email |
4382 | +------------------------------------------- |
4383 | |
4384 | # A helper function to print out the To header and |
4385 | # email body |
4386 | @@ -359,7 +363,8 @@ Unsubscribe everybody. |
4387 | 0 |
4388 | |
4389 | |
4390 | -== Group subscriptions == |
4391 | +Group subscriptions |
4392 | +------------------- |
4393 | |
4394 | If a group is subscribed the emails are sent to the members of that team. |
4395 | If an individual is also subscribed to the branch, then the setting |
4396 | @@ -398,7 +403,8 @@ that is used rather than the email addresses of the seven members. |
4397 | support@ubuntu.com 1000 lines Subscriber @ubuntu-team |
4398 | |
4399 | |
4400 | -== Attribute emails == |
4401 | +Attribute emails |
4402 | +---------------- |
4403 | |
4404 | # Another helper function to print out the To, From and Subject headers |
4405 | # and the email body |
4406 | @@ -522,7 +528,8 @@ something like this: |
4407 | http://code.launchpad.test/~name12/firefox/new-name/+edit-subscription |
4408 | |
4409 | |
4410 | -== Unicode in emails == |
4411 | +Unicode in emails |
4412 | +----------------- |
4413 | |
4414 | All the text fields of a branch are considered unicode, so the email |
4415 | must also handle the unicode. |
4416 | @@ -551,7 +558,8 @@ must also handle the unicode. |
4417 | http://code.launchpad.test/~name12/firefox/new-name/+edit-subscription |
4418 | |
4419 | |
4420 | -== Modifications by users other than the branch owner == |
4421 | +Modifications by users other than the branch owner |
4422 | +-------------------------------------------------- |
4423 | |
4424 | If another user modified some branch attributes, then an email is sent |
4425 | to the branch owner. |
4426 | diff --git a/lib/lp/code/doc/code-jobs.txt b/lib/lp/code/doc/code-jobs.txt |
4427 | index 991cca4..732d9d6 100644 |
4428 | --- a/lib/lp/code/doc/code-jobs.txt |
4429 | +++ b/lib/lp/code/doc/code-jobs.txt |
4430 | @@ -1,9 +1,11 @@ |
4431 | -= Code Jobs = |
4432 | +Code Jobs |
4433 | +========= |
4434 | |
4435 | The addition of the Job table provides a generic way to have server side jobs |
4436 | processing events generated from the web UI. |
4437 | |
4438 | -== Branch Jobs == |
4439 | +Branch Jobs |
4440 | +----------- |
4441 | |
4442 | This type of job processes events that have been generated for branches. |
4443 | |
4444 | @@ -18,7 +20,8 @@ created. |
4445 | The BranchJob table has a json_data field to hold details specific |
4446 | to the particular type of subscription job. |
4447 | |
4448 | -=== BranchJobType.REVISION === |
4449 | +BranchJobType.REVISION |
4450 | +...................... |
4451 | |
4452 | The json data would hold: |
4453 | from_revno - the first revision number to process |
4454 | @@ -26,19 +29,22 @@ The json data would hold: |
4455 | to_revno - the last revision number to process |
4456 | to_revid - the revision id of the to revno |
4457 | |
4458 | -=== BranchJobType.ATTRIBUTE === |
4459 | +BranchJobType.ATTRIBUTE |
4460 | +....................... |
4461 | |
4462 | The json data would hold the from and to values of the change, and for values |
4463 | where we only show the new values, it would hold those too. |
4464 | |
4465 | -=== BranchJobType.IMPORT === |
4466 | +BranchJobType.IMPORT |
4467 | +.................... |
4468 | |
4469 | The json data here would effectively store the text of the message. Used |
4470 | primarily in the status changes on the import job itself. Perhpas this should |
4471 | be combined with the attribute type email and have a general preamble for the |
4472 | generated email. |
4473 | |
4474 | -== Branch Merge Proposal Jobs == |
4475 | +Branch Merge Proposal Jobs |
4476 | +-------------------------- |
4477 | |
4478 | Jobs for merge proposals are slightly different from individual branch |
4479 | subscription based emails as merge proposal jobs end up sending emails to |
4480 | @@ -52,22 +58,26 @@ subscribers of both the source and target branches. |
4481 | |
4482 | Each job also has some optional json data. |
4483 | |
4484 | -=== BranchMergeProposalJobType.NEW === |
4485 | +BranchMergeProposalJobType.NEW |
4486 | +.............................. |
4487 | |
4488 | The json data includes the identity of the initial comment if one was made, |
4489 | and the initial reviewer if one was requested. |
4490 | |
4491 | |
4492 | -=== BranchMergeProposalJobType.COMMENT === |
4493 | +BranchMergeProposalJobType.COMMENT |
4494 | +.................................. |
4495 | |
4496 | The json data here refers to the identify of the commit message. |
4497 | |
4498 | -=== BranchMergeProposalJobType.NEW_REVIEWER === |
4499 | +BranchMergeProposalJobType.NEW_REVIEWER |
4500 | +....................................... |
4501 | |
4502 | The json data here refers to the new reviewer and the type of review |
4503 | requested. |
4504 | |
4505 | -=== BranchMergeProposalJobType.DIFF_GENERATION === |
4506 | +BranchMergeProposalJobType.DIFF_GENERATION |
4507 | +.......................................... |
4508 | |
4509 | The dynamic moving diff has been determined to be out of date, and a new diff |
4510 | needs to be generated. This is processed by the merge analysis deamon. |
4511 | diff --git a/lib/lp/code/doc/codeimport-job.txt b/lib/lp/code/doc/codeimport-job.txt |
4512 | index 0e83ca1..e28e6d8 100644 |
4513 | --- a/lib/lp/code/doc/codeimport-job.txt |
4514 | +++ b/lib/lp/code/doc/codeimport-job.txt |
4515 | @@ -1,4 +1,5 @@ |
4516 | -= Code Import Jobs = |
4517 | +Code Import Jobs |
4518 | +================ |
4519 | |
4520 | A CodeImportJob is a record of a pending or running code import job. |
4521 | |
4522 | @@ -45,7 +46,8 @@ modified using the CodeImportJobWorkflow utility. |
4523 | True |
4524 | |
4525 | |
4526 | -== Sample data of interest == |
4527 | +Sample data of interest |
4528 | +----------------------- |
4529 | |
4530 | There are two CodeImport objects of interest in the sample data. |
4531 | |
4532 | @@ -79,7 +81,8 @@ required to initiate the action. |
4533 | >>> nopriv = person_set.getByName('no-priv') |
4534 | |
4535 | |
4536 | -== Test helpers == |
4537 | +Test helpers |
4538 | +------------ |
4539 | |
4540 | The NewEvents class helps testing the creation of CodeImportEvent |
4541 | objects. |
4542 | @@ -88,7 +91,8 @@ objects. |
4543 | ... NewEvents) |
4544 | |
4545 | |
4546 | -== Testing whether a job is overdue == |
4547 | +Testing whether a job is overdue |
4548 | +-------------------------------- |
4549 | |
4550 | CodeImportJob objects have a date_due attribute that specifies when the |
4551 | job should ideally be started. If the date_due is in the past, the job |
4552 | @@ -129,7 +133,8 @@ current transaction, then the job is overdue. |
4553 | True |
4554 | |
4555 | |
4556 | -== Creating a new job == |
4557 | +Creating a new job |
4558 | +------------------ |
4559 | |
4560 | CodeImportJob objects are created using the CodeImportJobWorkflow.newJob |
4561 | method. |
4562 | @@ -158,7 +163,8 @@ the date due may be UTC_NOW or a timestamp in the future. This is |
4563 | covered in detail in the test_codeimportjob.py file. |
4564 | |
4565 | |
4566 | -== Deleting a pending job == |
4567 | +Deleting a pending job |
4568 | +---------------------- |
4569 | |
4570 | In normal use, the only case where a job object is deleted explicitly is |
4571 | when the review status of a code import is modified. This case is |
4572 | @@ -173,7 +179,8 @@ associated job is not running, the job is deleted. |
4573 | None |
4574 | |
4575 | |
4576 | -== Requesting a job run == |
4577 | +Requesting a job run |
4578 | +-------------------- |
4579 | |
4580 | When a job is pending, users can request that it be run as soon as |
4581 | possible. |
4582 | @@ -213,7 +220,8 @@ another user, present a message explaining that this has happened. |
4583 | ~vcs-imports/gnome-terminal/import was already requested by no-priv. |
4584 | |
4585 | |
4586 | -== Starting a job == |
4587 | +Starting a job |
4588 | +-------------- |
4589 | |
4590 | When a job is about to performed by a code import worker, the startJob |
4591 | workflow method updates the job's fields to indicate that it is now |
4592 | @@ -235,7 +243,8 @@ The event is also recorded in the CodeImportEvent audit trail. |
4593 | START ~vcs-imports/gnome-terminal/import bazaar-importer |
4594 | |
4595 | |
4596 | -== Recording progress on a job == |
4597 | +Recording progress on a job |
4598 | +--------------------------- |
4599 | |
4600 | As the code import worker progresses, it calls the updateHeartbeat |
4601 | method at least every minute to indicate that it is still progressing. |
4602 | diff --git a/lib/lp/code/doc/codeimport-result.txt b/lib/lp/code/doc/codeimport-result.txt |
4603 | index 0e0fc26..402de61 100644 |
4604 | --- a/lib/lp/code/doc/codeimport-result.txt |
4605 | +++ b/lib/lp/code/doc/codeimport-result.txt |
4606 | @@ -1,4 +1,5 @@ |
4607 | -= Code Import Results = |
4608 | +Code Import Results |
4609 | +=================== |
4610 | |
4611 | A CodeImportResult is a record of a completed code import job. They |
4612 | are accessed via a utility registered for the ICodeImportResultSet |
4613 | @@ -19,7 +20,8 @@ member of the vcs-imports team and can access the objects freely. |
4614 | |
4615 | >>> login('david.allouche@canonical.com') |
4616 | |
4617 | -== Creating CodeImportResults == |
4618 | +Creating CodeImportResults |
4619 | +-------------------------- |
4620 | |
4621 | Creating CodeImportResult objects is usually done by the finishJob() |
4622 | method of the CodeImportWorkflow utility, but here we use the object |
4623 | @@ -85,7 +87,8 @@ A helper property exists to give the duration of the job run. |
4624 | 4:00:00 |
4625 | |
4626 | |
4627 | -== Retrieving CodeImportResults == |
4628 | +Retrieving CodeImportResults |
4629 | +---------------------------- |
4630 | |
4631 | The CodeImportResult objects for a given import can be retrieved in |
4632 | reverse chronological order with the results attribute on a code import. |
4633 | diff --git a/lib/lp/code/doc/codereviewcomment.txt b/lib/lp/code/doc/codereviewcomment.txt |
4634 | index 950915f..8023afd 100644 |
4635 | --- a/lib/lp/code/doc/codereviewcomment.txt |
4636 | +++ b/lib/lp/code/doc/codereviewcomment.txt |
4637 | @@ -1,4 +1,5 @@ |
4638 | -= Code review comments = |
4639 | +Code review comments |
4640 | +==================== |
4641 | |
4642 | When code is proposed to be merged, it's common to perform a review of |
4643 | that code, which is often in the form of a conversation. The reviewer |
4644 | @@ -13,7 +14,8 @@ It has an IMessage as a member (in a one-to-one relationship), a vote |
4645 | about. |
4646 | |
4647 | |
4648 | -== Creating CodeReviewComments == |
4649 | +Creating CodeReviewComments |
4650 | +--------------------------- |
4651 | |
4652 | CodeReviewComments are created from their BranchMergeProposals: |
4653 | |
4654 | @@ -101,7 +103,8 @@ Now run the pending job to send the email. |
4655 | True |
4656 | |
4657 | |
4658 | -== Interfaces == |
4659 | +Interfaces |
4660 | +---------- |
4661 | |
4662 | The CodeReviewComment must implement the ICodeReviewComment interface. |
4663 | |
4664 | diff --git a/lib/lp/code/doc/revision.txt b/lib/lp/code/doc/revision.txt |
4665 | index e514d69..054aa34 100644 |
4666 | --- a/lib/lp/code/doc/revision.txt |
4667 | +++ b/lib/lp/code/doc/revision.txt |
4668 | @@ -1,10 +1,12 @@ |
4669 | -= Bazaar Revisions = |
4670 | +Bazaar Revisions |
4671 | +================ |
4672 | |
4673 | Branches are collection of revisions, and a revision can exist independently |
4674 | from any branch. Revisions are created automatically by scanning branches, |
4675 | they have no creation interface and Launchpad cannot create or modify them. |
4676 | |
4677 | -== Interfaces == |
4678 | +Interfaces |
4679 | +---------- |
4680 | |
4681 | >>> from lp.services.database.interfaces import IStore |
4682 | >>> from lp.testing import verifyObject |
4683 | @@ -27,7 +29,8 @@ they have no creation interface and Launchpad cannot create or modify them. |
4684 | ... IStore(BranchRevision).find(BranchRevision).any()) |
4685 | True |
4686 | |
4687 | -== Creating revisions == |
4688 | +Creating revisions |
4689 | +------------------ |
4690 | |
4691 | The creator of a revision is identified by a RevisionAuthor. A RevisionAuthor |
4692 | is not a person because that is only an informational attribute, and even if |
4693 | @@ -61,7 +64,8 @@ while the date_created is the time when the database record was created. |
4694 | ... revision_author=author, revision_id=revision_id_1, |
4695 | ... revision_date=date) |
4696 | |
4697 | -== Parents == |
4698 | +Parents |
4699 | +------- |
4700 | |
4701 | Bazaar revisions can have multiple parents, the "leftmost" parent is the |
4702 | revision that was used as a base when committing, other parents are used to |
4703 | @@ -78,7 +82,8 @@ we can represent revisions whose at least one parent is a ghost revision. |
4704 | >>> rev2_parent = RevisionParent(sequence=0, revision=revision_2, |
4705 | ... parent_id=revision_1.revision_id) |
4706 | |
4707 | -== Branch ancestry == |
4708 | +Branch ancestry |
4709 | +--------------- |
4710 | |
4711 | Revisions are associated to branches through the BranchRevision table. A given |
4712 | revision may appear in different positions in different branches thanks to |
4713 | @@ -98,7 +103,8 @@ BranchRevision rows are created using `Branch.createBranchRevision`. |
4714 | >>> rev_no_1.branch == rev_no_2.branch == branch |
4715 | True |
4716 | |
4717 | -=== Accessing BranchRevision === |
4718 | +Accessing BranchRevision |
4719 | +........................ |
4720 | |
4721 | >>> branch = getUtility(IBranchLookup).getByUniqueName( |
4722 | ... '~name12/+junk/junk.contrib') |
4723 | @@ -161,7 +167,8 @@ history of the branch. |
4724 | foo@localhost-20051031170357-1301ad6d387feb23 |
4725 | |
4726 | |
4727 | -=== Deleting BranchRevisions === |
4728 | +Deleting BranchRevisions |
4729 | +........................ |
4730 | |
4731 | If a branch gets overwritten or some revisions get uncommitted, |
4732 | Launchpad's view of the branch will differ from the actual state of the |
4733 | @@ -211,7 +218,8 @@ may be referenced by some other branch): |
4734 | foo@localhost-20051031170357-1301ad6d387feb23 |
4735 | |
4736 | |
4737 | -== IRevisionSet.new() == |
4738 | +IRevisionSet.new() |
4739 | +------------------ |
4740 | |
4741 | Revision objects can be created using the IRevisionSet utility. |
4742 | Associated RevisionAuthor and RevisionParent objects will be created |
4743 | diff --git a/lib/lp/code/stories/branches/package-branch-merge-proposals.txt b/lib/lp/code/stories/branches/package-branch-merge-proposals.txt |
4744 | index aa63f94..298659e 100644 |
4745 | --- a/lib/lp/code/stories/branches/package-branch-merge-proposals.txt |
4746 | +++ b/lib/lp/code/stories/branches/package-branch-merge-proposals.txt |
4747 | @@ -1,4 +1,5 @@ |
4748 | -= Package branch merge proposals = |
4749 | +Package branch merge proposals |
4750 | +============================== |
4751 | |
4752 | Package branches can be used for merge proposals just like normal upstream |
4753 | branches. |
4754 | diff --git a/lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt b/lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt |
4755 | index fd71f6a..9dfe4e0 100644 |
4756 | --- a/lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt |
4757 | +++ b/lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt |
4758 | @@ -1,4 +1,5 @@ |
4759 | -= Package branch merging with product branches = |
4760 | +Package branch merging with product branches |
4761 | +============================================ |
4762 | |
4763 | If the source package is linked to the product, then package branches for that |
4764 | source package are allowed to be proposed for merging into product branches |
4765 | diff --git a/lib/lp/code/stories/branches/xx-branch-listings-merge-proposal-badge.txt b/lib/lp/code/stories/branches/xx-branch-listings-merge-proposal-badge.txt |
4766 | index ce25e5c..63ab38c 100644 |
4767 | --- a/lib/lp/code/stories/branches/xx-branch-listings-merge-proposal-badge.txt |
4768 | +++ b/lib/lp/code/stories/branches/xx-branch-listings-merge-proposal-badge.txt |
4769 | @@ -1,4 +1,5 @@ |
4770 | -= Check if the merge proposal badge is shown = |
4771 | +Check if the merge proposal badge is shown |
4772 | +========================================== |
4773 | |
4774 | >>> def branchSummary(browser): |
4775 | ... table = find_tag_by_id(browser.contents, 'branchtable') |
4776 | diff --git a/lib/lp/code/stories/branches/xx-branch-listings.txt b/lib/lp/code/stories/branches/xx-branch-listings.txt |
4777 | index b1e0399..1df95ae 100644 |
4778 | --- a/lib/lp/code/stories/branches/xx-branch-listings.txt |
4779 | +++ b/lib/lp/code/stories/branches/xx-branch-listings.txt |
4780 | @@ -1,4 +1,5 @@ |
4781 | -= Branch Listing Pages = |
4782 | +Branch Listing Pages |
4783 | +==================== |
4784 | |
4785 | Pages that want to display lists of branches use the branch-listing |
4786 | page template, and views derived from BranchListingView. |
4787 | @@ -12,7 +13,8 @@ various kinds and badge decoration. |
4788 | >>> reset_all_branch_last_modified() |
4789 | |
4790 | |
4791 | -== Branch Batching == |
4792 | +Branch Batching |
4793 | +--------------- |
4794 | |
4795 | Batching is applied to branch listings where there are many items. |
4796 | Luckily for us, many is 5 in the tests. |
4797 | @@ -73,7 +75,8 @@ needed, then the table is sortable and no batching navigation links are shown. |
4798 | True |
4799 | |
4800 | |
4801 | -== Lifecycle Filtering for Person Branches == |
4802 | +Lifecycle Filtering for Person Branches |
4803 | +--------------------------------------- |
4804 | |
4805 | When the branches for a person is first loaded, only the 'Current' branches |
4806 | are shown. Current branches are those that have a lifecycle status of |
4807 | @@ -206,7 +209,8 @@ first. |
4808 | |
4809 | |
4810 | |
4811 | -== Branch Badge Decoration == |
4812 | +Branch Badge Decoration |
4813 | +----------------------- |
4814 | |
4815 | We display badges for associated bugs. |
4816 | |
4817 | @@ -268,7 +272,8 @@ Now the badge is still shown for Sample Person... |
4818 | Linked to a bug |
4819 | |
4820 | |
4821 | -== Sorting Branch Listings == |
4822 | +Sorting Branch Listings |
4823 | +----------------------- |
4824 | |
4825 | Aside from the implicitly sorted listings of recently registered, |
4826 | imported and changed branches, all branch listings have a widget that |
4827 | @@ -361,7 +366,8 @@ Finally, sorting by a particular criterion has the desired effect. |
4828 | lp://dev/~name12/gnome-terminal/mirrored Development ... |
4829 | |
4830 | |
4831 | -== Highlighting the development focus branch == |
4832 | +Highlighting the development focus branch |
4833 | +----------------------------------------- |
4834 | |
4835 | The branch associated with the development focus series is highlighted |
4836 | on the branch listings using the same CSS style that is used to |
4837 | @@ -415,7 +421,8 @@ The current development focus is shown first though. |
4838 | lp://dev/gnome-terminal Series: trunk, alpha, pre-1.0 ... |
4839 | |
4840 | |
4841 | -== Lifecycle Filtering for Product Branches == |
4842 | +Lifecycle Filtering for Product Branches |
4843 | +---------------------------------------- |
4844 | |
4845 | When the branches for a product are first loaded, only the 'Current' |
4846 | branches are shown. Current branches are those that have a |
4847 | @@ -464,7 +471,8 @@ first. |
4848 | lp://dev/gnome-terminal Series: trunk... Development ... |
4849 | |
4850 | |
4851 | -== The last commit == |
4852 | +The last commit |
4853 | +--------------- |
4854 | |
4855 | The last commit column shows the revision number, and part of the |
4856 | revision log for the last commit that Launchpad knows about. The |
4857 | diff --git a/lib/lp/code/stories/branches/xx-branch-mirror-failures.txt b/lib/lp/code/stories/branches/xx-branch-mirror-failures.txt |
4858 | index ac1ce8b..47b2a43 100644 |
4859 | --- a/lib/lp/code/stories/branches/xx-branch-mirror-failures.txt |
4860 | +++ b/lib/lp/code/stories/branches/xx-branch-mirror-failures.txt |
4861 | @@ -1,4 +1,5 @@ |
4862 | -= Branch mirror failure messages = |
4863 | +Branch mirror failure messages |
4864 | +============================== |
4865 | |
4866 | If a branch fails to mirror, that information is displayed in the mirror's |
4867 | page, together with the last failure message we got when mirroring. |
4868 | @@ -160,7 +161,8 @@ display any failure-related information. |
4869 | None |
4870 | |
4871 | |
4872 | -== Errors for ssh protocols == |
4873 | +Errors for ssh protocols |
4874 | +------------------------ |
4875 | |
4876 | If a branch has a sftp or bzr+ssh URL, immediately display an error message |
4877 | (even before mirroring is attempted) and do not display the mirror failure |
4878 | @@ -182,7 +184,8 @@ or passwords, neither of which is currently supported. |
4879 | Launchpad cannot mirror this branch because its URL uses sftp or bzr+ssh. |
4880 | |
4881 | |
4882 | -== Remote branches don't error on ssh access == |
4883 | +Remote branches don't error on ssh access |
4884 | +----------------------------------------- |
4885 | |
4886 | If a remote branch specifies a location with the scheme 'sftp' or 'bzr+ssh' |
4887 | then there is no error shown. |
4888 | diff --git a/lib/lp/code/stories/branches/xx-claiming-team-code-reviews.txt b/lib/lp/code/stories/branches/xx-claiming-team-code-reviews.txt |
4889 | index 3cded73..41f91b3 100644 |
4890 | --- a/lib/lp/code/stories/branches/xx-claiming-team-code-reviews.txt |
4891 | +++ b/lib/lp/code/stories/branches/xx-claiming-team-code-reviews.txt |
4892 | @@ -1,4 +1,5 @@ |
4893 | -= Claiming Team Code Reviews = |
4894 | +Claiming Team Code Reviews |
4895 | +========================== |
4896 | |
4897 | When a team has been requested to review a merge proposal, any member of that |
4898 | team can claim that review. This can be done by clicking on the "[Review]" |
4899 | diff --git a/lib/lp/code/stories/branches/xx-distribution-branches.txt b/lib/lp/code/stories/branches/xx-distribution-branches.txt |
4900 | index b5d0038..fe2cde8 100644 |
4901 | --- a/lib/lp/code/stories/branches/xx-distribution-branches.txt |
4902 | +++ b/lib/lp/code/stories/branches/xx-distribution-branches.txt |
4903 | @@ -1,4 +1,5 @@ |
4904 | -= Branch listings for distributions = |
4905 | +Branch listings for distributions |
4906 | +================================= |
4907 | |
4908 | All source package branches are associated with a distribution series, and |
4909 | hence a distribution. |
4910 | diff --git a/lib/lp/code/stories/branches/xx-distroseries-branches.txt b/lib/lp/code/stories/branches/xx-distroseries-branches.txt |
4911 | index adebd1e..e80ff33 100644 |
4912 | --- a/lib/lp/code/stories/branches/xx-distroseries-branches.txt |
4913 | +++ b/lib/lp/code/stories/branches/xx-distroseries-branches.txt |
4914 | @@ -1,4 +1,5 @@ |
4915 | -= Branch listings for distroseries = |
4916 | +Branch listings for distroseries |
4917 | +================================ |
4918 | |
4919 | All source package branches are associated with a distribution series and a |
4920 | source package name. |
4921 | diff --git a/lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt b/lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt |
4922 | index b9886ed..c071545 100644 |
4923 | --- a/lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt |
4924 | +++ b/lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt |
4925 | @@ -1,4 +1,5 @@ |
4926 | -= Person Team Branches Portlet = |
4927 | +Person Team Branches Portlet |
4928 | +============================ |
4929 | |
4930 | The purpose of this portlet is to indiciate that there are teams |
4931 | that this person participates in that has branches. |
4932 | diff --git a/lib/lp/code/stories/branches/xx-product-overview.txt b/lib/lp/code/stories/branches/xx-product-overview.txt |
4933 | index 7f9b8dd..28588f0 100644 |
4934 | --- a/lib/lp/code/stories/branches/xx-product-overview.txt |
4935 | +++ b/lib/lp/code/stories/branches/xx-product-overview.txt |
4936 | @@ -1,4 +1,5 @@ |
4937 | -== Latest branches == |
4938 | +Latest branches |
4939 | +--------------- |
4940 | |
4941 | On the product overview page there is a portlet to show recently |
4942 | registered branches. |
4943 | diff --git a/lib/lp/code/stories/branches/xx-source-package-branches-empty.txt b/lib/lp/code/stories/branches/xx-source-package-branches-empty.txt |
4944 | index b38fe32..70b29f4 100644 |
4945 | --- a/lib/lp/code/stories/branches/xx-source-package-branches-empty.txt |
4946 | +++ b/lib/lp/code/stories/branches/xx-source-package-branches-empty.txt |
4947 | @@ -1,4 +1,5 @@ |
4948 | -= Empty source package branch listings = |
4949 | +Empty source package branch listings |
4950 | +==================================== |
4951 | |
4952 | When you look at an empty source package branch listing, you see some nice, |
4953 | helpful text. |
4954 | diff --git a/lib/lp/code/stories/branches/xx-source-package-branches-listing.txt b/lib/lp/code/stories/branches/xx-source-package-branches-listing.txt |
4955 | index 7f8a8f7..a90c1e9 100644 |
4956 | --- a/lib/lp/code/stories/branches/xx-source-package-branches-listing.txt |
4957 | +++ b/lib/lp/code/stories/branches/xx-source-package-branches-listing.txt |
4958 | @@ -1,4 +1,5 @@ |
4959 | -= Populated source package branch listings = |
4960 | +Populated source package branch listings |
4961 | +======================================== |
4962 | |
4963 | Going to a source package branch page shows a list of branches. |
4964 | |
4965 | diff --git a/lib/lp/code/stories/branches/xx-upload-directions.txt b/lib/lp/code/stories/branches/xx-upload-directions.txt |
4966 | index bbe8717..4e894dd 100644 |
4967 | --- a/lib/lp/code/stories/branches/xx-upload-directions.txt |
4968 | +++ b/lib/lp/code/stories/branches/xx-upload-directions.txt |
4969 | @@ -1,4 +1,5 @@ |
4970 | -= Directions to upload to branches = |
4971 | +Directions to upload to branches |
4972 | +================================ |
4973 | |
4974 | The branch ~name12/gnome-terminal/pushed is an upload branch. Its index page |
4975 | shows contextual directions on how to upload to it. |
4976 | @@ -41,7 +42,8 @@ We will also need a ssh key. Save it now. |
4977 | ... '8nAA7z21wAukvE1Pl6AQyG0e7U1sYS8Pc8dtmzJvdtVZWBl02/gqQJ7f06mFvn' |
4978 | ... 'sN45rR1Uyxnrwl6rbFwqabZDlyD5Ac6Icbvz9SG1gBOiI= andrew@trogdor') |
4979 | |
4980 | -== Branch owned by a person == |
4981 | +Branch owned by a person |
4982 | +------------------------ |
4983 | |
4984 | Initially, the user is not logged in, the branch page points to the owner of |
4985 | the branch, and suggest logging in for directions. |
4986 | @@ -79,7 +81,8 @@ URL for the branch. |
4987 | bzr push --use-existing-dir lp://dev/~name12/gnome-terminal/pushed |
4988 | |
4989 | |
4990 | -== SSH key directions == |
4991 | +SSH key directions |
4992 | +------------------ |
4993 | |
4994 | If the user has the permission to upload to a branch, but does not have an SSH |
4995 | key registered, point to the SSH keys form. |
4996 | @@ -129,7 +132,8 @@ appear. |
4997 | None |
4998 | |
4999 | |
5000 | -== Branch owned by a team == |
The diff has been truncated for viewing.
Self-approving (trivial and mechanical).