No way for a privileged user to override a reserved name for a pillar/person
Bug #276488 reported by
Tom Haddon
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Launchpad itself |
Fix Released
|
High
|
Unassigned |
Bug Description
Currently if you want to create a project with a reserved word in it's title (such as "launchpad") you have to create it with some other name and then run a manual query against the DB to update it. There should be an option for an admin to be able to override this and rename/create a project with a reserved name to avoid running manual queries against the database.
Related branches
lp:~sinzui/launchpad/override-blacklist-0
- Abel Deuring (community): Approve (code)
- Stuart Bishop (community): Approve (db)
- Robert Collins: Pending (db) requested
-
Diff: 650 lines (+273/-41)15 files modifieddatabase/schema/comments.sql (+1/-0)
database/schema/patch-2208-36-0.sql (+15/-0)
database/schema/security.cfg (+2/-2)
database/schema/trusted.sql (+56/-13)
lib/lp/registry/browser/nameblacklist.py (+3/-2)
lib/lp/registry/browser/tests/nameblacklist-views.txt (+13/-6)
lib/lp/registry/interfaces/nameblacklist.py (+13/-1)
lib/lp/registry/interfaces/person.py (+7/-2)
lib/lp/registry/model/nameblacklist.py (+6/-1)
lib/lp/registry/model/person.py (+8/-3)
lib/lp/registry/templates/nameblacklists-index.pt (+20/-0)
lib/lp/registry/tests/test_nameblacklist.py (+47/-4)
lib/lp/registry/tests/test_person.py (+14/-1)
lib/lp/services/fields/__init__.py (+4/-1)
lib/lp/services/fields/tests/test_fields.py (+64/-5)
Superseded
for merging
into
lp:launchpad
- Robert Collins: Pending (db) requested
- Stuart Bishop: Pending (db) requested
- Launchpad code reviewers: Pending requested
-
Diff: 30339 lines (+13830/-6764) (has conflicts)266 files modifiedBRANCH.TODO (+1/-0)
database/replication/Makefile (+12/-5)
database/sampledata/current-dev.sql (+754/-768)
database/sampledata/current.sql (+754/-768)
database/schema/comments.sql (+9/-13)
database/schema/patch-2208-01-1.sql (+14/-0)
database/schema/patch-2208-30-0.sql (+30/-0)
database/schema/patch-2208-34-0.sql (+8/-0)
database/schema/patch-2208-35-0.sql (+7/-0)
database/schema/patch-2208-97-0.sql (+15/-0)
database/schema/security.cfg (+4/-3)
database/schema/trusted.sql (+24/-8)
database/schema/upgrade.py (+143/-53)
lib/canonical/launchpad/ftests/__init__.py (+0/-39)
lib/canonical/launchpad/helpers.py (+0/-23)
lib/canonical/launchpad/interfaces/_schema_circular_imports.py (+4/-1)
lib/canonical/launchpad/security.py (+4/-7)
lib/canonical/launchpad/windmill/testing/widgets.py (+1/-1)
lib/lp/answers/doc/karma.txt (+1/-1)
lib/lp/archivepublisher/scripts/generate_ppa_htaccess.py (+7/-5)
lib/lp/archivepublisher/tests/test_generate_ppa_htaccess.py (+2/-2)
lib/lp/archiveuploader/dscfile.py (+1/-1)
lib/lp/archiveuploader/tests/test_utils.py (+1/-1)
lib/lp/archiveuploader/tests/upload-karma.txt (+1/-3)
lib/lp/archiveuploader/utils.py (+1/-1)
lib/lp/blueprints/browser/configure.zcml (+1/-1)
lib/lp/blueprints/browser/specification.py (+1/-1)
lib/lp/blueprints/browser/tests/test_specification.py (+4/-1)
lib/lp/blueprints/configure.zcml (+1/-1)
lib/lp/blueprints/interfaces/specification.py (+1/-1)
lib/lp/blueprints/model/specification.py (+1/-1)
lib/lp/blueprints/subscribers.py (+1/-1)
lib/lp/bugs/browser/bugsubscription.py (+1/-1)
lib/lp/bugs/doc/externalbugtracker-comment-imports.txt (+1/-1)
lib/lp/bugs/doc/malone-karma.txt (+1/-1)
lib/lp/bugs/interfaces/bugtask.py (+1/-1)
lib/lp/bugs/javascript/official_bug_tags.js (+1/-1)
lib/lp/bugs/model/bugtask.py (+1/-1)
lib/lp/bugs/scripts/checkwatches/core.py (+1/-1)
lib/lp/bugs/tests/test_bugtask_search.py (+2/-5)
lib/lp/code/browser/branch.py (+1/-1)
lib/lp/code/browser/branchmergeproposal.py (+1/-1)
lib/lp/code/browser/tests/test_branchmergeproposal.py (+2/-4)
lib/lp/code/browser/tests/test_branchmergeproposallisting.py (+1/-1)
lib/lp/code/doc/branch-karma.txt (+1/-1)
lib/lp/code/interfaces/branchmergeproposal.py (+1/-1)
lib/lp/code/interfaces/diff.py (+1/-1)
lib/lp/code/interfaces/sourcepackagerecipe.py (+1/-1)
lib/lp/code/mail/codehandler.py (+1/-1)
lib/lp/code/mail/tests/test_branchmergeproposal.py (+1/-1)
lib/lp/code/mail/tests/test_codehandler.py (+1/-1)
lib/lp/code/model/branchmergeproposal.py (+6/-2)
lib/lp/code/model/diff.py (+1/-2)
lib/lp/code/model/sourcepackagerecipe.py (+2/-4)
lib/lp/code/model/tests/test_branch.py (+1/-1)
lib/lp/code/model/tests/test_branchmergeproposal.py (+6/-3)
lib/lp/code/model/tests/test_branchmergeproposaljobs.py (+4/-1)
lib/lp/code/model/tests/test_codereviewvote.py (+1/-1)
lib/lp/code/model/tests/test_diff.py (+6/-2)
lib/lp/code/model/tests/test_sourcepackagerecipe.py (+1/-3)
lib/lp/code/scripts/tests/test_merge_proposal_jobs.py (+3/-3)
lib/lp/code/tests/helpers.py (+3/-3)
lib/lp/code/windmill/tests/test_branchmergeproposal_review.py (+1/-1)
lib/lp/codehosting/scanner/tests/test_bzrsync.py (+8/-3)
lib/lp/coop/answersbugs/model.py (+1/-1)
lib/lp/registry/browser/nameblacklist.py (+3/-2)
lib/lp/registry/browser/peoplemerge.py (+4/-0)
lib/lp/registry/browser/team.py (+1/-1)
lib/lp/registry/browser/tests/nameblacklist-views.txt (+13/-6)
lib/lp/registry/configure.zcml (+2/-2)
lib/lp/registry/doc/person-karma.txt (+1/-1)
lib/lp/registry/interfaces/distribution.py (+1/-4)
lib/lp/registry/interfaces/distroseries.py (+1/-2)
lib/lp/registry/interfaces/nameblacklist.py (+6/-0)
lib/lp/registry/interfaces/person.py (+7/-2)
lib/lp/registry/interfaces/product.py (+2/-6)
lib/lp/registry/interfaces/projectgroup.py (+1/-1)
lib/lp/registry/model/distribution.py (+28/-3)
lib/lp/registry/model/distroseries.py (+3/-3)
lib/lp/registry/model/nameblacklist.py (+6/-1)
lib/lp/registry/model/person.py (+8/-3)
lib/lp/registry/model/product.py (+23/-21)
lib/lp/registry/model/projectgroup.py (+14/-2)
lib/lp/registry/stories/object/xx-object-branding.txt (+2/-5)
lib/lp/registry/stories/person/xx-person-edit-profile-picture.txt (+1/-1)
lib/lp/registry/stories/person/xx-person-rdf.txt (+1/-1)
lib/lp/registry/templates/nameblacklists-index.pt (+7/-0)
lib/lp/registry/tests/test_nameblacklist.py (+29/-4)
lib/lp/registry/tests/test_person.py (+14/-1)
lib/lp/registry/tests/test_teammembership.py (+1/-1)
lib/lp/registry/windmill/tests/test_product_configuration_hidden.py (+1/-0)
lib/lp/scripts/garbo.py (+1/-1)
lib/lp/scripts/utilities/pageperformancereport.py (+3/-3)
lib/lp/scripts/utilities/tests/test_pageperformancereport.py (+1/-2)
lib/lp/services/features/testing.py (+5/-1)
lib/lp/services/features/tests/test_helpers.py (+1/-1)
lib/lp/services/features/tests/test_webapp.py (+1/-1)
lib/lp/services/fields/__init__.py (+4/-1)
lib/lp/services/fields/tests/test_fields.py (+64/-5)
lib/lp/services/mail/incoming.py (+1/-1)
lib/lp/services/mail/mailbox.py (+1/-1)
lib/lp/services/mail/notificationrecipientset.py (+1/-1)
lib/lp/services/mail/signedmessage.py (+1/-1)
lib/lp/services/mailman/testing/sync.py (+1/-1)
lib/lp/services/scripts/base.py (+1/-1)
lib/lp/services/scripts/model/scriptactivity.py (+1/-1)
lib/lp/services/worlddata/interfaces/language.py (+4/-0)
lib/lp/services/worlddata/model/language.py (+11/-1)
lib/lp/services/worlddata/tests/test_language.py (+11/-2)
lib/lp/soyuz/adapters/archivesourcepublication.py (+1/-1)
lib/lp/soyuz/interfaces/distributionjob.py (+2/-3)
lib/lp/soyuz/interfaces/publishing.py (+9/-1)
lib/lp/soyuz/interfaces/sourcepackagerelease.py (+4/-4)
lib/lp/soyuz/model/publishing.py (+9/-6)
lib/lp/soyuz/model/sourcepackagerelease.py (+2/-2)
lib/lp/soyuz/scripts/ftpmaster.py (+1/-4)
lib/lp/soyuz/scripts/gina/packages.py (+1/-1)
lib/lp/soyuz/scripts/initialise_distroseries.py (+3/-14)
lib/lp/soyuz/tests/test_initialisedistroseriesjob.py (+1/-3)
lib/lp/soyuz/tests/test_publishing.py (+17/-2)
lib/lp/testing/__init__.py (+12/-0)
lib/lp/testing/branding.py (+48/-0)
lib/lp/testing/factory.py (+179/-15)
lib/lp/testing/karma.py (+86/-17)
lib/lp/testing/mail.py (+1/-1)
lib/lp/testing/tests/test_factory.py (+98/-5)
lib/lp/testing/tests/test_karma.py (+130/-0)
lib/lp/translations/browser/configure.zcml (+1/-1)
lib/lp/translations/browser/pofile.py (+23/-41)
lib/lp/translations/browser/potemplate.py (+1/-3)
lib/lp/translations/browser/tests/language-views.txt (+3/-3)
lib/lp/translations/browser/tests/poexport-request-views.txt (+0/-130)
lib/lp/translations/browser/tests/pofile-base-views.txt (+1/-3)
lib/lp/translations/browser/tests/pofile-views.txt (+8/-10)
lib/lp/translations/browser/tests/test_poexportrequest_views.py (+168/-0)
lib/lp/translations/browser/tests/test_pofile_view.py (+23/-20)
lib/lp/translations/browser/tests/test_translatablemessage_view.py (+3/-3)
lib/lp/translations/browser/tests/test_translationmessage_view.py (+339/-60)
lib/lp/translations/browser/tests/translationmessage-views.txt (+40/-152)
lib/lp/translations/browser/translationimportqueue.py (+4/-4)
lib/lp/translations/browser/translationmessage.py (+284/-203)
lib/lp/translations/configure.zcml (+13/-0)
lib/lp/translations/doc/distroseries-translations-copy.txt (+1/-1)
lib/lp/translations/doc/gettext-check-messages.txt (+37/-42)
lib/lp/translations/doc/poexport-language-pack.txt (+7/-9)
lib/lp/translations/doc/poexport-queue.txt (+13/-4)
lib/lp/translations/doc/pofile-verify-stats.txt (+5/-3)
lib/lp/translations/doc/pofile.txt (+37/-372)
lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt (+16/-16)
lib/lp/translations/doc/poimport-pofile-old-po-imported.txt (+12/-11)
lib/lp/translations/doc/poimport-pofile-syntax-error.txt (+4/-4)
lib/lp/translations/doc/poimport-potemplate-syntax-error.txt (+4/-4)
lib/lp/translations/doc/poimport.txt (+74/-420)
lib/lp/translations/doc/potemplate.txt (+6/-2)
lib/lp/translations/doc/potmsgset.txt (+43/-48)
lib/lp/translations/doc/remove-translations-by.txt (+7/-8)
lib/lp/translations/doc/rosetta-karma.txt (+18/-18)
lib/lp/translations/doc/rosetta-translation.txt (+29/-28)
lib/lp/translations/doc/translationimportqueue.txt (+16/-16)
lib/lp/translations/doc/translationmessage-destroy.txt (+1/-1)
lib/lp/translations/doc/translationmessage.txt (+9/-9)
lib/lp/translations/doc/translations-export-to-branch.txt (+4/-3)
lib/lp/translations/doc/vpoexport.txt (+16/-7)
lib/lp/translations/help/imported-upload.html (+0/-61)
lib/lp/translations/help/pofile-upload.html (+3/-7)
lib/lp/translations/interfaces/pofile.py (+19/-14)
lib/lp/translations/interfaces/potemplate.py (+40/-0)
lib/lp/translations/interfaces/potmsgset.py (+119/-19)
lib/lp/translations/interfaces/rosettastats.py (+1/-1)
lib/lp/translations/interfaces/side.py (+75/-0)
lib/lp/translations/interfaces/translatablemessage.py (+10/-10)
lib/lp/translations/interfaces/translationgroup.py (+0/-19)
lib/lp/translations/interfaces/translationimporter.py (+2/-2)
lib/lp/translations/interfaces/translationimportqueue.py (+14/-11)
lib/lp/translations/interfaces/translationmessage.py (+58/-7)
lib/lp/translations/interfaces/translationpolicy.py (+153/-0)
lib/lp/translations/interfaces/translations.py (+4/-3)
lib/lp/translations/interfaces/vpoexport.py (+2/-2)
lib/lp/translations/model/pofile.py (+243/-305)
lib/lp/translations/model/potemplate.py (+210/-95)
lib/lp/translations/model/potmsgset.py (+678/-148)
lib/lp/translations/model/side.py (+72/-0)
lib/lp/translations/model/translatablemessage.py (+16/-17)
lib/lp/translations/model/translationgroup.py (+20/-6)
lib/lp/translations/model/translationimportqueue.py (+12/-12)
lib/lp/translations/model/translationmessage.py (+128/-104)
lib/lp/translations/model/translationpolicy.py (+186/-0)
lib/lp/translations/model/translationsperson.py (+2/-2)
lib/lp/translations/model/vpoexport.py (+2/-2)
lib/lp/translations/scripts/gettext_check_messages.py (+22/-15)
lib/lp/translations/scripts/message_sharing_migration.py (+33/-27)
lib/lp/translations/scripts/migrate_current_flag.py (+5/-5)
lib/lp/translations/scripts/remove_translations.py (+24/-17)
lib/lp/translations/scripts/tests/test_message_sharing_migration.py (+42/-39)
lib/lp/translations/scripts/tests/test_migrate_current_flag.py (+46/-41)
lib/lp/translations/scripts/tests/test_remove_translations.py (+81/-74)
lib/lp/translations/scripts/tests/test_translations_to_branch.py (+1/-1)
lib/lp/translations/stories/productseries/xx-productseries-translations.txt (+8/-10)
lib/lp/translations/stories/standalone/xx-licensing.txt (+0/-11)
lib/lp/translations/stories/standalone/xx-person-activity.txt (+5/-3)
lib/lp/translations/stories/standalone/xx-pofile-details.txt (+35/-7)
lib/lp/translations/stories/standalone/xx-pofile-export.txt (+7/-20)
lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt (+6/-6)
lib/lp/translations/stories/standalone/xx-pofile-translate.txt (+0/-15)
lib/lp/translations/stories/standalone/xx-product-translations.txt (+11/-12)
lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt (+12/-12)
lib/lp/translations/stories/standalone/xx-translations-to-complete.txt (+2/-2)
lib/lp/translations/stories/standalone/xx-translations-to-review.txt (+1/-1)
lib/lp/translations/stories/translationgroups/55-pofile-upload.txt (+4/-18)
lib/lp/translations/stories/translationgroups/60-translation-suggestions.txt (+2/-2)
lib/lp/translations/stories/translations/30-rosetta-pofile-translation-gettext-error.txt (+12/-20)
lib/lp/translations/stories/translations/43-distrorelease-translations.txt (+5/-5)
lib/lp/translations/stories/translations/55-rosetta-potemplates.txt (+5/-5)
lib/lp/translations/templates/currenttranslationmessage-translate-one.pt (+6/-6)
lib/lp/translations/templates/pofile-portlet-stats.pt (+18/-1)
lib/lp/translations/templates/pofile-translate.pt (+3/-3)
lib/lp/translations/templates/pofile-upload.pt (+4/-31)
lib/lp/translations/templates/potemplate-chart.pt (+1/-1)
lib/lp/translations/templates/productseries-translations-languages.pt (+0/-6)
lib/lp/translations/templates/rosetta-status-legend.pt (+1/-17)
lib/lp/translations/templates/rosettastats-barchart.pt (+4/-20)
lib/lp/translations/templates/serieslanguage-index.pt (+1/-1)
lib/lp/translations/templates/translations-macros.pt (+1/-1)
lib/lp/translations/tests/helpers.py (+138/-0)
lib/lp/translations/tests/potmsgset-update-translation.txt (+18/-24)
lib/lp/translations/tests/test_clearcurrenttranslation.py (+284/-0)
lib/lp/translations/tests/test_empty_messages.py (+34/-32)
lib/lp/translations/tests/test_helpers.py (+180/-0)
lib/lp/translations/tests/test_pofile.py (+1362/-680)
lib/lp/translations/tests/test_potemplate.py (+56/-4)
lib/lp/translations/tests/test_potmsgset.py (+1137/-314)
lib/lp/translations/tests/test_setcurrenttranslation.py (+1184/-0)
lib/lp/translations/tests/test_shared_potemplate.py (+474/-13)
lib/lp/translations/tests/test_side.py (+186/-0)
lib/lp/translations/tests/test_suggestions.py (+49/-81)
lib/lp/translations/tests/test_translatablemessage.py (+47/-39)
lib/lp/translations/tests/test_translatedlanguage.py (+71/-48)
lib/lp/translations/tests/test_translationmessage.py (+466/-6)
lib/lp/translations/tests/test_translationpermission.py (+7/-24)
lib/lp/translations/tests/test_translationpolicy.py (+411/-0)
lib/lp/translations/tests/test_translations_to_review.py (+4/-5)
lib/lp/translations/tests/test_translationsperson.py (+1/-2)
lib/lp/translations/utilities/doc/kde-po-file-format.txt (+1/-2)
lib/lp/translations/utilities/gettext_po_importer.py (+2/-2)
lib/lp/translations/utilities/mozilla_xpi_importer.py (+3/-3)
lib/lp/translations/utilities/sanitize.py (+194/-0)
lib/lp/translations/utilities/tests/helpers.py (+7/-5)
lib/lp/translations/utilities/tests/import-flags.txt (+10/-10)
lib/lp/translations/utilities/tests/test_file_importer.py (+173/-34)
lib/lp/translations/utilities/tests/test_gettext_po_exporter.py (+3/-3)
lib/lp/translations/utilities/tests/test_gettext_po_importer.py (+4/-4)
lib/lp/translations/utilities/tests/test_kde_po_importer.py (+13/-10)
lib/lp/translations/utilities/tests/test_sanitize.py (+276/-0)
lib/lp/translations/utilities/tests/test_superfastimports.py (+62/-51)
lib/lp/translations/utilities/tests/test_translation_importer.py (+73/-76)
lib/lp/translations/utilities/tests/test_validate.py (+86/-0)
lib/lp/translations/utilities/tests/test_xpi_import.py (+12/-13)
lib/lp/translations/utilities/tests/test_xpi_po_exporter.py (+2/-2)
lib/lp/translations/utilities/translation_import.py (+215/-220)
lib/lp/translations/utilities/validate.py (+51/-0)
lib/lp/translations/windmill/tests/test_pofile_translate.py (+4/-5)
scripts/ftpmaster-tools/sync-source.py (+6/-9)
scripts/rosetta/migrate_current_flag.py (+4/-4)
scripts/rosetta/share-jaunty-translations.py (+0/-134)
setup.py (+2/-0)
Changed in launchpad: | |
status: | New → Triaged |
tags: | added: canonical-losa-lp |
Changed in launchpad-registry: | |
importance: | Low → High |
milestone: | none → 10.10 |
tags: |
added: private-project removed: pirvate-project |
tags: |
added: disclosure removed: private-project |
Changed in launchpad-registry: | |
milestone: | 10.10 → 10.11 |
summary: |
- No way for an admin to override a reserved name for a project + No way for a privileged user to override a reserved name for a + pillar/person |
Changed in launchpad-registry: | |
milestone: | 10.11 → 10.12 |
Changed in launchpad-registry: | |
milestone: | 10.12 → series-future |
Changed in launchpad: | |
milestone: | none → 11.02 |
tags: |
added: qa-ok removed: qa-needstesting |
Changed in launchpad: | |
status: | Fix Committed → Fix Released |
tags: | added: entitlement |
Changed in launchpad: | |
assignee: | Curtis Hovey (sinzui) → nobody |
To post a comment you must log in.
This might be doable when we update the blacklist rules for private teams and projects.