Merge lp:~stevenk/launchpad/death-to-private_bugs into lp:launchpad

Proposed by Steve Kowalik on 2012-10-07
Status: Merged
Approved by: William Grant on 2012-10-09
Approved revision: no longer in the source branch.
Merged at revision: 16130
Proposed branch: lp:~stevenk/launchpad/death-to-private_bugs
Merge into: lp:launchpad
Diff against target: 1465 lines (+115/-657)
24 files modified
database/sampledata/current-dev.sql (+26/-26)
database/sampledata/current.sql (+26/-26)
lib/lp/bugs/browser/bugtarget.py (+2/-9)
lib/lp/bugs/browser/tests/test_bugs.py (+15/-59)
lib/lp/bugs/browser/tests/test_bugtarget_configure.py (+2/-63)
lib/lp/bugs/browser/tests/test_bugtarget_filebug.py (+8/-45)
lib/lp/bugs/doc/bug-private-by-default.txt (+0/-52)
lib/lp/bugs/model/bug.py (+0/-14)
lib/lp/bugs/model/tests/test_bug.py (+2/-22)
lib/lp/bugs/scripts/bugimport.py (+14/-25)
lib/lp/bugs/scripts/tests/test_bugimport.py (+1/-14)
lib/lp/bugs/tests/test_bug.py (+0/-24)
lib/lp/bugs/tests/test_bugs_webservice.py (+0/-29)
lib/lp/bugs/tests/test_doc.py (+0/-6)
lib/lp/registry/browser/product.py (+3/-38)
lib/lp/registry/browser/tests/product-views.txt (+2/-11)
lib/lp/registry/interfaces/product.py (+0/-18)
lib/lp/registry/model/product.py (+2/-41)
lib/lp/registry/model/productjob.py (+0/-1)
lib/lp/registry/tests/test_product.py (+2/-100)
lib/lp/registry/tests/test_product_webservice.py (+6/-4)
lib/lp/registry/tests/test_productjob.py (+1/-4)
lib/lp/security.py (+0/-6)
lib/lp/testing/factory.py (+3/-20)
To merge this branch: bzr merge lp:~stevenk/launchpad/death-to-private_bugs
Reviewer Review Type Date Requested Status
William Grant code 2012-10-07 Approve on 2012-10-08
Review via email: mp+128398@code.launchpad.net

Commit Message

Consign IProduct.private_bugs to the big bit bucket in the sky, sharing is the in thing.

Description of the Change

Now that all projects have moved to sharing, we can destroy the legacy code. First on the chopping block is IProduct.private_bugs. We can't delete the attribute itself, since it's exported over the API, but IProduct.setPrivateBugs() and friends can take the bullet instead. I have also deleted every test that mentioned private_bugs and then actually went on to use the attribute (since some tests will mention private_bugs and then just play with private bugs).

The actual database column Product.private_bugs will be dropped in a later branch, and once this one is deployed.

To post a comment you must log in.
Curtis Hovey (sinzui) wrote :

The clause first created by Elliot makes no sense once you remove the check for .private_bugs. It wants to subscribe someone because sharing is not on, the next line asks
    and params.target.bug_sharing_policy is None'

We know this line must evaluate to false for this branch to land, so the entire block can go. There may be other tests that can also go.

Curtis Hovey (sinzui) wrote :

Do the change to lib/lp/bugs/scripts/bugimport.py make it impossible to import a proprietary project? Will the import fail because the script is not checking the bug_sharing_policy and forcing the type to PROPRIETARY?

William Grant (wgrant) wrote :

44 === modified file 'lib/lp/bugs/browser/tests/test_bugs.py'

It might be worth adding a test for the behaviour when the sharing policy is PUBLIC.

388 === modified file 'lib/lp/bugs/model/bug.py'
389 --- lib/lp/bugs/model/bug.py 2012-10-04 14:22:59 +0000
390 +++ lib/lp/bugs/model/bug.py 2012-10-07 23:54:23 +0000
391 @@ -2629,7 +2629,7 @@
392 # XXX: ElliotMurphy 2007-06-14: If we ever allow filing private
393 # non-security bugs, this test might be simplified to checking
394 # params.private.
395 - if (IProduct.providedBy(params.target) and params.target.private_bugs
396 + if (IProduct.providedBy(params.target)
397 and params.target.bug_sharing_policy is None
398 and params.information_type not in SECURITY_INFORMATION_TYPES):
399 # Subscribe the bug supervisor to all bugs,

private_bugs was a top-level conjunct, so the block could never fire unless it was set. By removing private_bugs we're treating it as if it was false everywhere, so this whole block should be deleted.

408 -class TestBugPrivateAndSecurityRelatedUpdatesMixin:
409 +class TestBugPrivateAndSecurityRelatedUpdatesMixin(TestCaseWithFactory):

This is no longer a mixin, so please rename the class.

448 === modified file 'lib/lp/bugs/scripts/bugimport.py'
449 --- lib/lp/bugs/scripts/bugimport.py 2012-06-29 08:40:05 +0000
450 +++ lib/lp/bugs/scripts/bugimport.py 2012-10-07 23:54:23 +0000
451 @@ -295,9 +295,6 @@
452
453 private = get_value(bugnode, 'private') == 'True'
454 security_related = get_value(bugnode, 'security_related') == 'True'
455 - # If the product has private_bugs, we force private to True.
456 - if self.product.private_bugs:
457 - private = True
458 information_type = convert_to_information_type(
459 private, security_related)

Do we want to add an assertion in the importer to reject imports into a product with a policy other than PUBLIC?

461 @@ -323,11 +320,6 @@
462 bug.linkMessage(msg)
463 self.createAttachments(bug, msg, commentnode)
464
465 - # Security bugs must be created private, so set it correctly.
466 - if not self.product.private_bugs:
467 - information_type = convert_to_information_type(
468 - private, security_related)
469 - bug.transitionToInformationType(information_type, owner)

This block should simply be enabled, not removed. We'd ideally also create it with the correct information_type, now that we have that capability.

516 def test_createBug_proprietary_subscribers(self):

This test will probably fail due to your change on line 395. Once that block is removed, this test no longer has value and can be removed.

650 - field_names = [
651 - "project_reviewed",
652 - "license_approved",
653 - "active",
654 - "private_bugs",
655 - "reviewer_whiteboard",
656 - ]
657 + field_names = ["project_reviewed", "license_approved", "active",
658 + "reviewer_whiteboard"]

I think we prefer the old style, but we certainly don't prefer the new style without an initial newline.

795 """See `IDistribution.`"""

orly

review: Needs Fixing (code)
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'database/sampledata/current-dev.sql'
2--- database/sampledata/current-dev.sql 2012-10-08 13:33:43 +0000
3+++ database/sampledata/current-dev.sql 2012-10-11 04:47:20 +0000
4@@ -1,6 +1,6 @@
5 -- Copyright 2010-2011 Canonical Ltd. This software is licensed under the
6 -- GNU Affero General Public License version 3 (see the file LICENSE).
7--- Created using pg_dump (PostgreSQL) 9.1.4
8+-- Created using pg_dump (PostgreSQL) 9.1.6
9
10 SET check_function_bodies = false;
11 SET client_encoding = 'UTF8';
12@@ -1799,30 +1799,30 @@
13
14 ALTER TABLE product DISABLE TRIGGER ALL;
15
16-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (1, 1, 17, 'tomcat', 'Tomcat', 'Tomcat', 'The servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies.', 'Apache Tomcat is developed in an open and participatory environment and released under the Apache Software License. This project has nothing to do with Ubuntu, but this description uses the word "Ubuntu" for the purpose of testing search results.', '2004-09-24 20:58:00.655518', 'http://tomcat.apache.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 16, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 17, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
17-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (2, 2, 2, 'unassigned', 'unassigned syncs', 'unassigned syncs', 'syncs still not assigned to a real product', 'unassigned syncs, will not be processed, to be moved to real projects ASAP.', '2004-09-24 20:58:00.674409', 'http://archive.apache.org/dist/tomcat', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 17, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
18-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (3, 3, 2, 'arch-mirrors', 'Arch mirrors', 'Arch archive mirrors', 'Arch Archive Mirroring project.', 'Arch archive full-archive mirror tasks', '2004-09-24 20:58:00.691047', 'http://arch.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 15, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
19-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (4, 4, 12, 'firefox', 'Mozilla Firefox', 'Mozilla Firefox', 'The Mozilla Firefox web browser', 'The Mozilla Firefox web browser', '2004-09-24 20:58:02.185708', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, false, true, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, true, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 20, 10, 10, true, 1, NULL, NULL, NULL);
20+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (1, 1, 17, 'tomcat', 'Tomcat', 'Tomcat', 'The servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies.', 'Apache Tomcat is developed in an open and participatory environment and released under the Apache Software License. This project has nothing to do with Ubuntu, but this description uses the word "Ubuntu" for the purpose of testing search results.', '2004-09-24 20:58:00.655518', 'http://tomcat.apache.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 16, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 17, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
21+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (2, 2, 2, 'unassigned', 'unassigned syncs', 'unassigned syncs', 'syncs still not assigned to a real product', 'unassigned syncs, will not be processed, to be moved to real projects ASAP.', '2004-09-24 20:58:00.674409', 'http://archive.apache.org/dist/tomcat', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 17, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
22+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (3, 3, 2, 'arch-mirrors', 'Arch mirrors', 'Arch archive mirrors', 'Arch Archive Mirroring project.', 'Arch archive full-archive mirror tasks', '2004-09-24 20:58:00.691047', 'http://arch.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 15, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
23+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (4, 4, 12, 'firefox', 'Mozilla Firefox', 'Mozilla Firefox', 'The Mozilla Firefox web browser', 'The Mozilla Firefox web browser', '2004-09-24 20:58:02.185708', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, false, true, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, true, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 20, 10, 10, true, 1, 1, NULL, NULL);
24 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (5, 5, 12, 'evolution', 'Evolution', 'The Evolution Groupware Application', 'Evolution is an email client, addressbook and calendar application that is very well integrated with the Gnome desktop. Evolution is the standard mail client in the Ubuntu distribution, and supports all current mail system standards.', 'Recently, Evolution has seen significant work to make it interoperable with the proprietary Microsoft Exchange Server protocols and formats, allowing organisations to replace Outlook on Windows with Evolution and Linux.
25
26-The current stable release series of Evolution is 2.0.', '2004-09-24 20:58:02.240163', 'http://www.gnome.org/evolution/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, true, true, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, NULL, NULL, NULL);
27-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (6, 5, 12, 'gnome-terminal', 'GNOME Terminal', 'The GNOME Terminal Emulator', 'Gnome Terminal is a simple terminal application for your Gnome desktop. It allows quick access to console applications, supports all console types, and has many useful features such as tabbed consoles (many consoles in a single window with quick switching between them).', 'The Gnome Terminal application fully supports Gnome 2 and is a standard part of the Gnome Desktop.', '2004-09-24 20:58:02.256678', 'http://www.gnome.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, 2, 14, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, 'gnome-terminal', NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
28-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (7, 6, 12, 'iso-codes', 'iso-codes', 'The iso-codes', 'foo', 'bar', '2004-09-24 20:58:02.258743', 'http://www.novell.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 13, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
29-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (8, 4, 12, 'thunderbird', 'Mozilla Thunderbird', 'Mozilla Thunderbird', 'The Mozilla Thunderbird email client', 'The Mozilla Thunderbird email client', '2004-09-24 20:58:04.478988', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
30+The current stable release series of Evolution is 2.0.', '2004-09-24 20:58:02.240163', 'http://www.gnome.org/evolution/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, true, true, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, 1, NULL, NULL);
31+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (6, 5, 12, 'gnome-terminal', 'GNOME Terminal', 'The GNOME Terminal Emulator', 'Gnome Terminal is a simple terminal application for your Gnome desktop. It allows quick access to console applications, supports all console types, and has many useful features such as tabbed consoles (many consoles in a single window with quick switching between them).', 'The Gnome Terminal application fully supports Gnome 2 and is a standard part of the Gnome Desktop.', '2004-09-24 20:58:02.256678', 'http://www.gnome.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, 2, 14, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, 'gnome-terminal', NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
32+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (7, 6, 12, 'iso-codes', 'iso-codes', 'The iso-codes', 'foo', 'bar', '2004-09-24 20:58:02.258743', 'http://www.novell.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 13, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
33+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (8, 4, 12, 'thunderbird', 'Mozilla Thunderbird', 'Mozilla Thunderbird', 'The Mozilla Thunderbird email client', 'The Mozilla Thunderbird email client', '2004-09-24 20:58:04.478988', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
34 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (9, 5, 16, 'applets', 'Gnome Applets', 'The Gnome Panel Applets', 'The Gnome Panel Applets are a collection of standard widgets that can be installed on your desktop Panel. These icons act as launchers for applications, or indicators of the status of your machine. For example, panel applets exist to show you your battery status or wifi network signal strength.', 'This is the collection of Panel Applets that is part of the default Gnome release. Additional Panel Applets are available from third parties. A complete set of Panel Applets is included in the Ubuntu OS, for example.
35
36-The Gnome Panel team includes Abel Kascinsky, Frederick Wurst and Andreas Andropovitch Axelsson.', '2004-10-03 16:46:09.113721', 'http://www.gnome.org/panel/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 12, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
37-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (10, NULL, 2, 'python-gnome2-dev', 'python gnome2 dev', 'python gnome2 dev', 'Python bindings for the GNOME desktop environment', 'Python bindings for the GNOME desktop environment', '2004-09-24 20:58:00.674409', 'http://www.daa.com.au/~james/software/pygtk/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 18, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
38-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (11, 5, 12, 'netapplet', 'NetApplet', 'Network Applet', 'The Novell Network Applet', 'Displays current network status and allows network switching', '2005-03-10 16:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 5, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
39-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (12, NULL, 16, 'a52dec', 'a52dec', 'Liba52 Test Decoder', 'a52dec is a test program for liba52.', 'This tool decodes ATSC A/52 streams, and also includes a demultiplexer for mpeg-1 and mpeg-2 program streams. The liba52 source code is always distributed in the a52dec package, to make sure it easier for people to test it.', '2005-04-14 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
40-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (13, 5, 16, 'gnomebaker', 'gnomebaker', 'Gnome Baker', 'Gnome Baker is a CD burning application', 'Gnome Baker burns CDs like there''s no tomorrow', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 11, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
41-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (14, NULL, 12, 'bazaar', 'Bazaar', 'Bazaar', 'Bazaar is a distributed revision control system', 'Bazaar is all about source control and double-dashes.', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 10, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
42-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (15, NULL, 1, 'alsa-utils', 'alsa-utils', 'ALSA utilities', 'Utilities for configurating and using the Advanced Linux Sound Architecture', '', '2005-09-15 09:05:11.472752', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, true, false, NULL, NULL, NULL, 8, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, NULL, NULL, NULL);
43+The Gnome Panel team includes Abel Kascinsky, Frederick Wurst and Andreas Andropovitch Axelsson.', '2004-10-03 16:46:09.113721', 'http://www.gnome.org/panel/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 12, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
44+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (10, NULL, 2, 'python-gnome2-dev', 'python gnome2 dev', 'python gnome2 dev', 'Python bindings for the GNOME desktop environment', 'Python bindings for the GNOME desktop environment', '2004-09-24 20:58:00.674409', 'http://www.daa.com.au/~james/software/pygtk/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 18, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
45+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (11, 5, 12, 'netapplet', 'NetApplet', 'Network Applet', 'The Novell Network Applet', 'Displays current network status and allows network switching', '2005-03-10 16:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 5, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
46+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (12, NULL, 16, 'a52dec', 'a52dec', 'Liba52 Test Decoder', 'a52dec is a test program for liba52.', 'This tool decodes ATSC A/52 streams, and also includes a demultiplexer for mpeg-1 and mpeg-2 program streams. The liba52 source code is always distributed in the a52dec package, to make sure it easier for people to test it.', '2005-04-14 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
47+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (13, 5, 16, 'gnomebaker', 'gnomebaker', 'Gnome Baker', 'Gnome Baker is a CD burning application', 'Gnome Baker burns CDs like there''s no tomorrow', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 11, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
48+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (14, NULL, 12, 'bazaar', 'Bazaar', 'Bazaar', 'Bazaar is a distributed revision control system', 'Bazaar is all about source control and double-dashes.', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 10, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
49+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (15, NULL, 1, 'alsa-utils', 'alsa-utils', 'ALSA utilities', 'Utilities for configurating and using the Advanced Linux Sound Architecture', '', '2005-09-15 09:05:11.472752', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, true, false, NULL, NULL, NULL, 8, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, 1, NULL, NULL);
50 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (16, NULL, 12, 'landscape', 'The Landscape Project', 'The Landscape Project', 'Landscape is a system being developed by Canonical to allow remote management of systems using a web interface.', 'Landscape is a system being developed by Canonical to allow remote management of systems using a web interface. The scope of the project isn''t limited, and will grow up as new features are planned.
51
52-The Landscape system consists of two major parts: a client daemon which delivers information to the server and acts on server-provided requests; and a web server responsible for handling communication with clients and the user interface itself.', '2006-07-11 19:59:17.311451', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 9, NULL, NULL, NULL, NULL, false, true, false, 'Internal Canonical project', false, false, NULL, 'User notified of licence policy on 2012-10-08.', false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 4, NULL, NULL, NULL);
53-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (17, NULL, 12, 'launchpad', 'Launchpad', 'Launchpad', 'Launchpad is a catalogue of libre software projects and products. Projects registered in the Launchpad are linked to their translations in Rosetta, their bugs in Malone, their RCS imports in Bazaar, and their packages in Soyuz.', 'Launchpad''s design is inspired by the Description of a Project (DOAP) framework by Edd Dumbill, with extensions for actual releases of products.', '2006-11-24 12:48:19.178553', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 19, NULL, NULL, NULL, NULL, true, false, false, 'Internal Canonical project', false, false, NULL, 'User notified of licence policy on 2012-10-08.', false, 12, NULL, NULL, NULL, NULL, 20, 10, 10, true, 4, NULL, NULL, NULL);
54-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (18, NULL, 37, 'upstart', 'Upstart', 'The Upstart System Initialization Process', 'Event-based init daemon.', 'upstart is a replacement for the /sbin/init daemon which handles starting of tasks and services during boot, stopping them during shutdown and supervising them while the system is running.', '2007-03-14 18:47:04.891546', 'http://upstart.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 20, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 37, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
55+The Landscape system consists of two major parts: a client daemon which delivers information to the server and acts on server-provided requests; and a web server responsible for handling communication with clients and the user interface itself.', '2006-07-11 19:59:17.311451', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 9, NULL, NULL, NULL, NULL, false, true, false, 'Internal Canonical project', false, false, NULL, 'User notified of licence policy on 2012-10-08.', false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 4, 3, NULL, NULL);
56+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (17, NULL, 12, 'launchpad', 'Launchpad', 'Launchpad', 'Launchpad is a catalogue of libre software projects and products. Projects registered in the Launchpad are linked to their translations in Rosetta, their bugs in Malone, their RCS imports in Bazaar, and their packages in Soyuz.', 'Launchpad''s design is inspired by the Description of a Project (DOAP) framework by Edd Dumbill, with extensions for actual releases of products.', '2006-11-24 12:48:19.178553', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 19, NULL, NULL, NULL, NULL, true, false, false, 'Internal Canonical project', false, false, NULL, 'User notified of licence policy on 2012-10-08.', false, 12, NULL, NULL, NULL, NULL, 20, 10, 10, true, 4, 1, NULL, NULL);
57+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (18, NULL, 37, 'upstart', 'Upstart', 'The Upstart System Initialization Process', 'Event-based init daemon.', 'upstart is a replacement for the /sbin/init daemon which handles starting of tasks and services during boot, stopping them during shutdown and supervising them while the system is running.', '2007-03-14 18:47:04.891546', 'http://upstart.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 20, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 37, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
58 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (19, NULL, 28, 'aptoncd', 'APTonCD', 'APTonCD, Get APT Anywhere', 'A simple yet powerful tool which allows you to create one (or more) CD/DVD-Repository containing all of the packages downloaded via apt-get or aptitude.', 'A GUI-based tool that allows you to create a CD/DVD with all downloaded packages with APT-GET, creating a removable-repository.
59
60 With aptoncd you can:
61@@ -1832,12 +1832,12 @@
62 * Upgrade a lot of computers with same DVD
63 * And more is expected...
64
65-In the "Create APTonCD" feature we have the possibility to make a CD/DVD with all previously downloaded packages with apt-get or aptitude. It uses apt-cache (/var/cache/apt/archives) and scans for packages and makes a repository in one (or more) CD/DVD, exactly as the previous option.', '2007-03-14 18:53:13.112116', 'http://aptoncd.sourceforge.net/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 21, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 28, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
66-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (20, NULL, 14, 'jokosher', 'Jokosher', 'Jokosher Audio Editor', 'Jokosher is a simple yet powerful multi-track studio. With it you can create and record music, podcasts and more, all from an integrated simple environment.', 'Jokosher brings together many sources of audio into a seamless environment where you can record, mix and publish your audio content.', '2007-03-15 20:11:49.501871', 'http://www.jokosher.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 22, NULL, NULL, NULL, NULL, false, false, false, NULL, false, true, NULL, NULL, false, 14, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
67+In the "Create APTonCD" feature we have the possibility to make a CD/DVD with all previously downloaded packages with apt-get or aptitude. It uses apt-cache (/var/cache/apt/archives) and scans for packages and makes a repository in one (or more) CD/DVD, exactly as the previous option.', '2007-03-14 18:53:13.112116', 'http://aptoncd.sourceforge.net/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 21, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 28, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
68+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (20, NULL, 14, 'jokosher', 'Jokosher', 'Jokosher Audio Editor', 'Jokosher is a simple yet powerful multi-track studio. With it you can create and record music, podcasts and more, all from an integrated simple environment.', 'Jokosher brings together many sources of audio into a seamless environment where you can record, mix and publish your audio content.', '2007-03-15 20:11:49.501871', 'http://www.jokosher.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 22, NULL, NULL, NULL, NULL, false, false, false, NULL, false, true, NULL, NULL, false, 14, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
69 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (21, NULL, 12, 'bzr', 'Bazaar', 'Bazaar Version Control System', 'Bazaar is a distributed revision control system. It allows team members to branch and merge upstream code very easily. Most importantly, it is very robust in handling renames so that merges across radical restructurings of the tree are efficient and correct.', 'Bazaar aims to be a distributed RCS system that the open source community loves to use.
70
71-Distributed revision control systems allow multiple people to have their own branch of a project, and merge code efficiently between them. This enables new contributors to immediately have access to the full tools that previously have been limited to just the committers to a project.', '2007-03-27 16:28:27.763632', 'http://bazaar-vcs.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 23, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
72-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (22, NULL, 12, 'redfish', 'Redfish', 'Redfish', 'The redfish project.', 'The redfish project.', '2007-04-18 20:58:56.846607', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 24, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
73+Distributed revision control systems allow multiple people to have their own branch of a project, and merge code efficiently between them. This enables new contributors to immediately have access to the full tools that previously have been limited to just the committers to a project.', '2007-03-27 16:28:27.763632', 'http://bazaar-vcs.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 23, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
74+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (22, NULL, 12, 'redfish', 'Redfish', 'Redfish', 'The redfish project.', 'The redfish project.', '2007-04-18 20:58:56.846607', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 24, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
75 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (23, 1, 1, 'derby', 'Derby', 'Derby - Java Database', 'Apache Derby, an Apache DB subproject, is an open source relational database implemented entirely in Java and available under the Apache License, Version 2.0.', 'Some key advantages include:
76
77 * Derby has a small footprint -- about 2 megabytes for the base engine and embedded JDBC driver.
78@@ -1845,9 +1845,9 @@
79 * Derby provides an embedded JDBC driver that lets you embed Derby in any Java-based solution.
80 * Derby also supports the more familiar client/server mode with the Derby Network Client JDBC driver and Derby Network Server.
81 * Derby is easy to install, deploy, and use.
82-', '2007-11-19 12:44:30.603892', 'http://db.apache.org/derby/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 25, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
83-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (24, NULL, 243623, 'mega-money-maker', 'Mega Money Maker', 'Sample Commercial Project', 'Proprietary project', NULL, '2008-06-27 14:51:47.366199', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 26, NULL, NULL, NULL, NULL, false, false, false, 'All rights reserved. Not free.', false, false, NULL, NULL, false, 243623, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
84-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (26, NULL, 16, 'obsolete-junk', 'Obsolete Junk', 'The Great Mass of Obsolete Junk', 'If you have junk that you don''t want clogging up your product, dump it here.', NULL, '2009-05-02 21:33:15.310312', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 28, NULL, NULL, NULL, NULL, false, false, false, '(We have them all because we are junk. Junk. Junk I tell you.)', false, false, NULL, NULL, true, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
85+', '2007-11-19 12:44:30.603892', 'http://db.apache.org/derby/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 25, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
86+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (24, NULL, 243623, 'mega-money-maker', 'Mega Money Maker', 'Sample Commercial Project', 'Proprietary project', NULL, '2008-06-27 14:51:47.366199', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 26, NULL, NULL, NULL, NULL, false, false, false, 'All rights reserved. Not free.', false, false, NULL, NULL, false, 243623, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
87+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (26, NULL, 16, 'obsolete-junk', 'Obsolete Junk', 'The Great Mass of Obsolete Junk', 'If you have junk that you don''t want clogging up your product, dump it here.', NULL, '2009-05-02 21:33:15.310312', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 28, NULL, NULL, NULL, NULL, false, false, false, '(We have them all because we are junk. Junk. Junk I tell you.)', false, false, NULL, NULL, true, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
88
89
90 ALTER TABLE product ENABLE TRIGGER ALL;
91
92=== modified file 'database/sampledata/current.sql'
93--- database/sampledata/current.sql 2012-10-08 13:33:43 +0000
94+++ database/sampledata/current.sql 2012-10-11 04:47:20 +0000
95@@ -1,6 +1,6 @@
96 -- Copyright 2010-2011 Canonical Ltd. This software is licensed under the
97 -- GNU Affero General Public License version 3 (see the file LICENSE).
98--- Created using pg_dump (PostgreSQL) 9.1.4
99+-- Created using pg_dump (PostgreSQL) 9.1.6
100
101 SET check_function_bodies = false;
102 SET client_encoding = 'UTF8';
103@@ -1798,30 +1798,30 @@
104
105 ALTER TABLE product DISABLE TRIGGER ALL;
106
107-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (1, 1, 17, 'tomcat', 'Tomcat', 'Tomcat', 'The servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies.', 'Apache Tomcat is developed in an open and participatory environment and released under the Apache Software License. This project has nothing to do with Ubuntu, but this description uses the word "Ubuntu" for the purpose of testing search results.', '2004-09-24 20:58:00.655518', 'http://tomcat.apache.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 16, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 17, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
108-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (2, 2, 2, 'unassigned', 'unassigned syncs', 'unassigned syncs', 'syncs still not assigned to a real product', 'unassigned syncs, will not be processed, to be moved to real projects ASAP.', '2004-09-24 20:58:00.674409', 'http://archive.apache.org/dist/tomcat', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 17, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
109-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (3, 3, 2, 'arch-mirrors', 'Arch mirrors', 'Arch archive mirrors', 'Arch Archive Mirroring project.', 'Arch archive full-archive mirror tasks', '2004-09-24 20:58:00.691047', 'http://arch.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 15, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
110-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (4, 4, 12, 'firefox', 'Mozilla Firefox', 'Mozilla Firefox', 'The Mozilla Firefox web browser', 'The Mozilla Firefox web browser', '2004-09-24 20:58:02.185708', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, false, true, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, true, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
111+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (1, 1, 17, 'tomcat', 'Tomcat', 'Tomcat', 'The servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies.', 'Apache Tomcat is developed in an open and participatory environment and released under the Apache Software License. This project has nothing to do with Ubuntu, but this description uses the word "Ubuntu" for the purpose of testing search results.', '2004-09-24 20:58:00.655518', 'http://tomcat.apache.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 16, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 17, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
112+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (2, 2, 2, 'unassigned', 'unassigned syncs', 'unassigned syncs', 'syncs still not assigned to a real product', 'unassigned syncs, will not be processed, to be moved to real projects ASAP.', '2004-09-24 20:58:00.674409', 'http://archive.apache.org/dist/tomcat', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 17, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
113+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (3, 3, 2, 'arch-mirrors', 'Arch mirrors', 'Arch archive mirrors', 'Arch Archive Mirroring project.', 'Arch archive full-archive mirror tasks', '2004-09-24 20:58:00.691047', 'http://arch.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 15, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
114+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (4, 4, 12, 'firefox', 'Mozilla Firefox', 'Mozilla Firefox', 'The Mozilla Firefox web browser', 'The Mozilla Firefox web browser', '2004-09-24 20:58:02.185708', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, false, true, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, true, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
115 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (5, 5, 12, 'evolution', 'Evolution', 'The Evolution Groupware Application', 'Evolution is an email client, addressbook and calendar application that is very well integrated with the Gnome desktop. Evolution is the standard mail client in the Ubuntu distribution, and supports all current mail system standards.', 'Recently, Evolution has seen significant work to make it interoperable with the proprietary Microsoft Exchange Server protocols and formats, allowing organisations to replace Outlook on Windows with Evolution and Linux.
116
117-The current stable release series of Evolution is 2.0.', '2004-09-24 20:58:02.240163', 'http://www.gnome.org/evolution/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, true, true, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, NULL, NULL, NULL);
118-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (6, 5, 12, 'gnome-terminal', 'GNOME Terminal', 'The GNOME Terminal Emulator', 'Gnome Terminal is a simple terminal application for your Gnome desktop. It allows quick access to console applications, supports all console types, and has many useful features such as tabbed consoles (many consoles in a single window with quick switching between them).', 'The Gnome Terminal application fully supports Gnome 2 and is a standard part of the Gnome Desktop.', '2004-09-24 20:58:02.256678', 'http://www.gnome.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, 2, 14, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, 'gnome-terminal', NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
119-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (7, 6, 12, 'iso-codes', 'iso-codes', 'The iso-codes', 'foo', 'bar', '2004-09-24 20:58:02.258743', 'http://www.novell.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 13, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
120-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (8, 4, 12, 'thunderbird', 'Mozilla Thunderbird', 'Mozilla Thunderbird', 'The Mozilla Thunderbird email client', 'The Mozilla Thunderbird email client', '2004-09-24 20:58:04.478988', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
121+The current stable release series of Evolution is 2.0.', '2004-09-24 20:58:02.240163', 'http://www.gnome.org/evolution/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, 1, 100, true, true, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, 1, NULL, NULL);
122+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (6, 5, 12, 'gnome-terminal', 'GNOME Terminal', 'The GNOME Terminal Emulator', 'Gnome Terminal is a simple terminal application for your Gnome desktop. It allows quick access to console applications, supports all console types, and has many useful features such as tabbed consoles (many consoles in a single window with quick switching between them).', 'The Gnome Terminal application fully supports Gnome 2 and is a standard part of the Gnome Desktop.', '2004-09-24 20:58:02.256678', 'http://www.gnome.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, 2, 14, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, 'gnome-terminal', NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
123+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (7, 6, 12, 'iso-codes', 'iso-codes', 'The iso-codes', 'foo', 'bar', '2004-09-24 20:58:02.258743', 'http://www.novell.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 13, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
124+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (8, 4, 12, 'thunderbird', 'Mozilla Thunderbird', 'Mozilla Thunderbird', 'The Mozilla Thunderbird email client', 'The Mozilla Thunderbird email client', '2004-09-24 20:58:04.478988', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
125 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (9, 5, 16, 'applets', 'Gnome Applets', 'The Gnome Panel Applets', 'The Gnome Panel Applets are a collection of standard widgets that can be installed on your desktop Panel. These icons act as launchers for applications, or indicators of the status of your machine. For example, panel applets exist to show you your battery status or wifi network signal strength.', 'This is the collection of Panel Applets that is part of the default Gnome release. Additional Panel Applets are available from third parties. A complete set of Panel Applets is included in the Ubuntu OS, for example.
126
127-The Gnome Panel team includes Abel Kascinsky, Frederick Wurst and Andreas Andropovitch Axelsson.', '2004-10-03 16:46:09.113721', 'http://www.gnome.org/panel/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 12, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
128-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (10, NULL, 2, 'python-gnome2-dev', 'python gnome2 dev', 'python gnome2 dev', 'Python bindings for the GNOME desktop environment', 'Python bindings for the GNOME desktop environment', '2004-09-24 20:58:00.674409', 'http://www.daa.com.au/~james/software/pygtk/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 18, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
129-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (11, 5, 12, 'netapplet', 'NetApplet', 'Network Applet', 'The Novell Network Applet', 'Displays current network status and allows network switching', '2005-03-10 16:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 5, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
130-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (12, NULL, 16, 'a52dec', 'a52dec', 'Liba52 Test Decoder', 'a52dec is a test program for liba52.', 'This tool decodes ATSC A/52 streams, and also includes a demultiplexer for mpeg-1 and mpeg-2 program streams. The liba52 source code is always distributed in the a52dec package, to make sure it easier for people to test it.', '2005-04-14 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
131-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (13, 5, 16, 'gnomebaker', 'gnomebaker', 'Gnome Baker', 'Gnome Baker is a CD burning application', 'Gnome Baker burns CDs like there''s no tomorrow', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 11, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
132-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (14, NULL, 12, 'bazaar', 'Bazaar', 'Bazaar', 'Bazaar is a distributed revision control system', 'Bazaar is all about source control and double-dashes.', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 10, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
133-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (15, NULL, 1, 'alsa-utils', 'alsa-utils', 'ALSA utilities', 'Utilities for configurating and using the Advanced Linux Sound Architecture', '', '2005-09-15 09:05:11.472752', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, true, false, NULL, NULL, NULL, 8, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, NULL, NULL, NULL);
134+The Gnome Panel team includes Abel Kascinsky, Frederick Wurst and Andreas Andropovitch Axelsson.', '2004-10-03 16:46:09.113721', 'http://www.gnome.org/panel/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 12, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
135+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (10, NULL, 2, 'python-gnome2-dev', 'python gnome2 dev', 'python gnome2 dev', 'Python bindings for the GNOME desktop environment', 'Python bindings for the GNOME desktop environment', '2004-09-24 20:58:00.674409', 'http://www.daa.com.au/~james/software/pygtk/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, false, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 18, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 2, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
136+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (11, 5, 12, 'netapplet', 'NetApplet', 'Network Applet', 'The Novell Network Applet', 'Displays current network status and allows network switching', '2005-03-10 16:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 5, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
137+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (12, NULL, 16, 'a52dec', 'a52dec', 'Liba52 Test Decoder', 'a52dec is a test program for liba52.', 'This tool decodes ATSC A/52 streams, and also includes a demultiplexer for mpeg-1 and mpeg-2 program streams. The liba52 source code is always distributed in the a52dec package, to make sure it easier for people to test it.', '2005-04-14 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
138+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (13, 5, 16, 'gnomebaker', 'gnomebaker', 'Gnome Baker', 'Gnome Baker is a CD burning application', 'Gnome Baker burns CDs like there''s no tomorrow', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 11, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
139+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (14, NULL, 12, 'bazaar', 'Bazaar', 'Bazaar', 'Bazaar is a distributed revision control system', 'Bazaar is all about source control and double-dashes.', '2005-08-26 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 10, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
140+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (15, NULL, 1, 'alsa-utils', 'alsa-utils', 'ALSA utilities', 'Utilities for configurating and using the Advanced Linux Sound Architecture', '', '2005-09-15 09:05:11.472752', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, true, false, NULL, NULL, NULL, 8, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 20, true, 1, 1, NULL, NULL);
141 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (16, NULL, 12, 'landscape', 'The Landscape Project', 'The Landscape Project', 'Landscape is a system being developed by Canonical to allow remote management of systems using a web interface.', 'Landscape is a system being developed by Canonical to allow remote management of systems using a web interface. The scope of the project isn''t limited, and will grow up as new features are planned.
142
143-The Landscape system consists of two major parts: a client daemon which delivers information to the server and acts on server-provided requests; and a web server responsible for handling communication with clients and the user interface itself.', '2006-07-11 19:59:17.311451', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 9, NULL, NULL, NULL, NULL, false, true, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 4, NULL, NULL, NULL);
144-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (17, NULL, 12, 'launchpad', 'Launchpad', 'Launchpad', 'Launchpad is a catalogue of libre software projects and products. Projects registered in the Launchpad are linked to their translations in Rosetta, their bugs in Malone, their RCS imports in Bazaar, and their packages in Soyuz.', 'Launchpad''s design is inspired by the Description of a Project (DOAP) framework by Edd Dumbill, with extensions for actual releases of products.', '2006-11-24 12:48:19.178553', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 19, NULL, NULL, NULL, NULL, true, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 4, NULL, NULL, NULL);
145-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (18, NULL, 37, 'upstart', 'Upstart', 'The Upstart System Initialization Process', 'Event-based init daemon.', 'upstart is a replacement for the /sbin/init daemon which handles starting of tasks and services during boot, stopping them during shutdown and supervising them while the system is running.', '2007-03-14 18:47:04.891546', 'http://upstart.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 20, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 37, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
146+The Landscape system consists of two major parts: a client daemon which delivers information to the server and acts on server-provided requests; and a web server responsible for handling communication with clients and the user interface itself.', '2006-07-11 19:59:17.311451', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 9, NULL, NULL, NULL, NULL, false, true, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 4, 3, NULL, NULL);
147+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (17, NULL, 12, 'launchpad', 'Launchpad', 'Launchpad', 'Launchpad is a catalogue of libre software projects and products. Projects registered in the Launchpad are linked to their translations in Rosetta, their bugs in Malone, their RCS imports in Bazaar, and their packages in Soyuz.', 'Launchpad''s design is inspired by the Description of a Project (DOAP) framework by Edd Dumbill, with extensions for actual releases of products.', '2006-11-24 12:48:19.178553', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 19, NULL, NULL, NULL, NULL, true, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 4, 1, NULL, NULL);
148+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (18, NULL, 37, 'upstart', 'Upstart', 'The Upstart System Initialization Process', 'Event-based init daemon.', 'upstart is a replacement for the /sbin/init daemon which handles starting of tasks and services during boot, stopping them during shutdown and supervising them while the system is running.', '2007-03-14 18:47:04.891546', 'http://upstart.ubuntu.com/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 20, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 37, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
149 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (19, NULL, 28, 'aptoncd', 'APTonCD', 'APTonCD, Get APT Anywhere', 'A simple yet powerful tool which allows you to create one (or more) CD/DVD-Repository containing all of the packages downloaded via apt-get or aptitude.', 'A GUI-based tool that allows you to create a CD/DVD with all downloaded packages with APT-GET, creating a removable-repository.
150
151 With aptoncd you can:
152@@ -1831,12 +1831,12 @@
153 * Upgrade a lot of computers with same DVD
154 * And more is expected...
155
156-In the "Create APTonCD" feature we have the possibility to make a CD/DVD with all previously downloaded packages with apt-get or aptitude. It uses apt-cache (/var/cache/apt/archives) and scans for packages and makes a repository in one (or more) CD/DVD, exactly as the previous option.', '2007-03-14 18:53:13.112116', 'http://aptoncd.sourceforge.net/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 21, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 28, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
157-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (20, NULL, 14, 'jokosher', 'Jokosher', 'Jokosher Audio Editor', 'Jokosher is a simple yet powerful multi-track studio. With it you can create and record music, podcasts and more, all from an integrated simple environment.', 'Jokosher brings together many sources of audio into a seamless environment where you can record, mix and publish your audio content.', '2007-03-15 20:11:49.501871', 'http://www.jokosher.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 22, NULL, NULL, NULL, NULL, false, false, false, NULL, false, true, NULL, NULL, false, 14, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
158+In the "Create APTonCD" feature we have the possibility to make a CD/DVD with all previously downloaded packages with apt-get or aptitude. It uses apt-cache (/var/cache/apt/archives) and scans for packages and makes a repository in one (or more) CD/DVD, exactly as the previous option.', '2007-03-14 18:53:13.112116', 'http://aptoncd.sourceforge.net/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 21, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 28, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
159+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (20, NULL, 14, 'jokosher', 'Jokosher', 'Jokosher Audio Editor', 'Jokosher is a simple yet powerful multi-track studio. With it you can create and record music, podcasts and more, all from an integrated simple environment.', 'Jokosher brings together many sources of audio into a seamless environment where you can record, mix and publish your audio content.', '2007-03-15 20:11:49.501871', 'http://www.jokosher.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, NULL, NULL, NULL, 22, NULL, NULL, NULL, NULL, false, false, false, NULL, false, true, NULL, NULL, false, 14, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
160 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (21, NULL, 12, 'bzr', 'Bazaar', 'Bazaar Version Control System', 'Bazaar is a distributed revision control system. It allows team members to branch and merge upstream code very easily. Most importantly, it is very robust in handling renames so that merges across radical restructurings of the tree are efficient and correct.', 'Bazaar aims to be a distributed RCS system that the open source community loves to use.
161
162-Distributed revision control systems allow multiple people to have their own branch of a project, and merge code efficiently between them. This enables new contributors to immediately have access to the full tools that previously have been limited to just the committers to a project.', '2007-03-27 16:28:27.763632', 'http://bazaar-vcs.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 23, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
163-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (22, NULL, 12, 'redfish', 'Redfish', 'Redfish', 'The redfish project.', 'The redfish project.', '2007-04-18 20:58:56.846607', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 24, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
164+Distributed revision control systems allow multiple people to have their own branch of a project, and merge code efficiently between them. This enables new contributors to immediately have access to the full tools that previously have been limited to just the committers to a project.', '2007-03-27 16:28:27.763632', 'http://bazaar-vcs.org/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 23, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
165+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (22, NULL, 12, 'redfish', 'Redfish', 'Redfish', 'The redfish project.', 'The redfish project.', '2007-04-18 20:58:56.846607', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, true, 64, NULL, NULL, 24, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 12, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
166 INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (23, 1, 1, 'derby', 'Derby', 'Derby - Java Database', 'Apache Derby, an Apache DB subproject, is an open source relational database implemented entirely in Java and available under the Apache License, Version 2.0.', 'Some key advantages include:
167
168 * Derby has a small footprint -- about 2 megabytes for the base engine and embedded JDBC driver.
169@@ -1844,9 +1844,9 @@
170 * Derby provides an embedded JDBC driver that lets you embed Derby in any Java-based solution.
171 * Derby also supports the more familiar client/server mode with the Derby Network Client JDBC driver and Derby Network Server.
172 * Derby is easy to install, deploy, and use.
173-', '2007-11-19 12:44:30.603892', 'http://db.apache.org/derby/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 25, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
174-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (24, NULL, 243623, 'mega-money-maker', 'Mega Money Maker', 'Sample Commercial Project', 'Proprietary project', NULL, '2008-06-27 14:51:47.366199', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 26, NULL, NULL, NULL, NULL, false, false, false, 'All rights reserved. Not free.', false, false, NULL, NULL, false, 243623, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
175-INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (26, NULL, 16, 'obsolete-junk', 'Obsolete Junk', 'The Great Mass of Obsolete Junk', 'If you have junk that you don''t want clogging up your product, dump it here.', NULL, '2009-05-02 21:33:15.310312', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 28, NULL, NULL, NULL, NULL, false, false, false, '(We have them all because we are junk. Junk. Junk I tell you.)', false, false, NULL, NULL, true, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, NULL, NULL, NULL);
176+', '2007-11-19 12:44:30.603892', 'http://db.apache.org/derby/', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 25, NULL, NULL, NULL, NULL, false, false, false, NULL, false, false, NULL, NULL, false, 1, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
177+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (24, NULL, 243623, 'mega-money-maker', 'Mega Money Maker', 'Sample Commercial Project', 'Proprietary project', NULL, '2008-06-27 14:51:47.366199', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 26, NULL, NULL, NULL, NULL, false, false, false, 'All rights reserved. Not free.', false, false, NULL, NULL, false, 243623, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
178+INSERT INTO product (id, project, owner, name, displayname, title, summary, description, datecreated, homepageurl, screenshotsurl, wikiurl, listurl, programminglang, downloadurl, lastdoap, sourceforgeproject, freshmeatproject, reviewed, active, fti, autoupdate, translationgroup, translationpermission, official_rosetta, official_malone, bug_supervisor, driver, bugtracker, development_focus, homepage_content, icon, mugshot, logo, official_answers, private_bugs, private_specs, license_info, official_blueprints, enable_bug_expiration, bug_reporting_guidelines, reviewer_whiteboard, license_approved, registrant, remote_product, translation_focus, max_bug_heat, bug_reported_acknowledgement, answers_usage, blueprints_usage, translations_usage, enable_bugfiling_duplicate_search, branch_sharing_policy, bug_sharing_policy, specification_sharing_policy, information_type) VALUES (26, NULL, 16, 'obsolete-junk', 'Obsolete Junk', 'The Great Mass of Obsolete Junk', 'If you have junk that you don''t want clogging up your product, dump it here.', NULL, '2009-05-02 21:33:15.310312', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, true, true, NULL, false, NULL, 1, false, false, NULL, NULL, NULL, 28, NULL, NULL, NULL, NULL, false, false, false, '(We have them all because we are junk. Junk. Junk I tell you.)', false, false, NULL, NULL, true, 16, NULL, NULL, NULL, NULL, 10, 10, 10, true, 1, 1, NULL, NULL);
179
180
181 ALTER TABLE product ENABLE TRIGGER ALL;
182
183=== modified file 'lib/lp/bugs/browser/bugtarget.py'
184--- lib/lp/bugs/browser/bugtarget.py 2012-10-03 18:06:22 +0000
185+++ lib/lp/bugs/browser/bugtarget.py 2012-10-11 04:47:20 +0000
186@@ -119,10 +119,7 @@
187 from lp.bugs.publisher import BugsLayer
188 from lp.bugs.utilities.filebugdataparser import FileBugData
189 from lp.hardwaredb.interfaces.hwdb import IHWSubmissionSet
190-from lp.registry.browser.product import (
191- ProductConfigureBase,
192- ProductPrivateBugsMixin,
193- )
194+from lp.registry.browser.product import ProductConfigureBase
195 from lp.registry.interfaces.distribution import IDistribution
196 from lp.registry.interfaces.distributionsourcepackage import (
197 IDistributionSourcePackage,
198@@ -158,8 +155,6 @@
199
200 bug_supervisor = copy_field(
201 IHasBugSupervisor['bug_supervisor'], readonly=False)
202- private_bugs = copy_field(
203- IProduct['private_bugs'], readonly=False)
204 official_malone = copy_field(ILaunchpadUsage['official_malone'])
205 enable_bug_expiration = copy_field(
206 ILaunchpadUsage['enable_bug_expiration'])
207@@ -180,8 +175,7 @@
208 return product
209
210
211-class ProductConfigureBugTrackerView(ProductPrivateBugsMixin,
212- ProductConfigureBase):
213+class ProductConfigureBugTrackerView(ProductConfigureBase):
214 """View class to configure the bug tracker for a project."""
215
216 label = "Configure bug tracker"
217@@ -202,7 +196,6 @@
218 "bug_reporting_guidelines",
219 "bug_reported_acknowledgement",
220 "enable_bugfiling_duplicate_search",
221- "private_bugs"
222 ]
223 if check_permission("launchpad.Edit", self.context):
224 field_names.append("bug_supervisor")
225
226=== modified file 'lib/lp/bugs/browser/tests/test_bugs.py'
227--- lib/lp/bugs/browser/tests/test_bugs.py 2012-10-04 23:06:58 +0000
228+++ lib/lp/bugs/browser/tests/test_bugs.py 2012-10-11 04:47:20 +0000
229@@ -141,75 +141,31 @@
230 related_bug = self.factory.makeBug()
231 self._assert_getBugData(related_bug)
232
233- def test_createBug_default_private_bugs_true(self):
234+ def test_createBug_public_bug_sharing_policy_public(self):
235 # createBug() does not adapt the default kwargs when they are none.
236- project = self.factory.makeLegacyProduct(
237- licenses=[License.OTHER_PROPRIETARY])
238- with person_logged_in(project.owner):
239- project.setPrivateBugs(True, project.owner)
240- bug = self.application.createBug(
241- project.owner, 'title', 'description', project)
242- self.assertEqual(InformationType.USERDATA, bug.information_type)
243-
244- def test_createBug_public_bug_private_bugs_true(self):
245- # createBug() adapts a kwarg to InformationType if one is is not None.
246- project = self.factory.makeLegacyProduct(
247- licenses=[License.OTHER_PROPRIETARY])
248- with person_logged_in(project.owner):
249- project.setPrivateBugs(True, project.owner)
250- bug = self.application.createBug(
251- project.owner, 'title', 'description', project, private=False)
252- self.assertEqual(InformationType.PUBLIC, bug.information_type)
253+ product = self.factory.makeProduct()
254+ with person_logged_in(product.owner):
255+ product.setBugSharingPolicy(BugSharingPolicy.PUBLIC)
256+ bug = self.application.createBug(
257+ product.owner, 'title', 'description', product)
258+ self.assertEqual(InformationType.PUBLIC, bug.information_type)
259
260 def test_createBug_default_sharing_policy_proprietary(self):
261 # createBug() does not adapt the default kwargs when they are none.
262- project = self.factory.makeProduct(
263+ product = self.factory.makeProduct(
264 licenses=[License.OTHER_PROPRIETARY])
265- with person_logged_in(project.owner):
266- project.setBugSharingPolicy(
267- BugSharingPolicy.PROPRIETARY_OR_PUBLIC)
268+ with person_logged_in(product.owner):
269+ product.setBugSharingPolicy(BugSharingPolicy.PROPRIETARY_OR_PUBLIC)
270 bug = self.application.createBug(
271- project.owner, 'title', 'description', project)
272+ product.owner, 'title', 'description', product)
273 self.assertEqual(InformationType.PROPRIETARY, bug.information_type)
274
275 def test_createBug_public_bug_sharing_policy_proprietary(self):
276 # createBug() adapts a kwarg to InformationType if one is is not None.
277- project = self.factory.makeProduct(
278+ product = self.factory.makeProduct(
279 licenses=[License.OTHER_PROPRIETARY])
280- with person_logged_in(project.owner):
281- project.setBugSharingPolicy(
282- BugSharingPolicy.PROPRIETARY_OR_PUBLIC)
283+ with person_logged_in(product.owner):
284+ product.setBugSharingPolicy(BugSharingPolicy.PROPRIETARY_OR_PUBLIC)
285 bug = self.application.createBug(
286- project.owner, 'title', 'description', project, private=False)
287+ product.owner, 'title', 'description', product, private=False)
288 self.assertEqual(InformationType.PUBLIC, bug.information_type)
289-
290- def test_createBug_default_private_bugs_false(self):
291- # createBug() does not adapt the default kwargs when they are none.
292- project = self.factory.makeLegacyProduct(
293- licenses=[License.OTHER_PROPRIETARY])
294- with person_logged_in(project.owner):
295- project.setPrivateBugs(False, project.owner)
296- bug = self.application.createBug(
297- project.owner, 'title', 'description', project)
298- self.assertEqual(InformationType.PUBLIC, bug.information_type)
299-
300- def test_createBug_proprietary_project(self):
301- # crateBug() make proprietary bugs for proprietary projects.
302- project = self.factory.makeProduct(
303- licenses=[License.OTHER_PROPRIETARY],
304- information_type=InformationType.PROPRIETARY)
305- with person_logged_in(removeSecurityProxy(project).owner):
306- project.setPrivateBugs(False, project.owner)
307- bug = self.application.createBug(
308- project.owner, 'title', 'description', project)
309- self.assertEqual(InformationType.PROPRIETARY, bug.information_type)
310-
311- def test_createBug_private_bug_private_bugs_false(self):
312- # createBug() adapts a kwarg to InformationType if one is is not None.
313- project = self.factory.makeLegacyProduct(
314- licenses=[License.OTHER_PROPRIETARY])
315- with person_logged_in(project.owner):
316- project.setPrivateBugs(False, project.owner)
317- bug = self.application.createBug(
318- project.owner, 'title', 'description', project, private=True)
319- self.assertEqual(InformationType.USERDATA, bug.information_type)
320
321=== modified file 'lib/lp/bugs/browser/tests/test_bugtarget_configure.py'
322--- lib/lp/bugs/browser/tests/test_bugtarget_configure.py 2012-08-21 04:04:47 +0000
323+++ lib/lp/bugs/browser/tests/test_bugtarget_configure.py 2012-10-11 04:47:20 +0000
324@@ -38,7 +38,6 @@
325 'field.bug_reporting_guidelines': 'guidelines',
326 'field.bug_reported_acknowledgement': 'acknowledgement message',
327 'field.enable_bugfiling_duplicate_search': False,
328- 'field.private_bugs': 'off',
329 'field.actions.change': 'Change',
330 }
331
332@@ -50,8 +49,7 @@
333 fields = [
334 'bugtracker', 'enable_bug_expiration', 'remote_product',
335 'bug_reporting_guidelines', 'bug_reported_acknowledgement',
336- 'enable_bugfiling_duplicate_search', 'private_bugs',
337- 'bug_supervisor']
338+ 'enable_bugfiling_duplicate_search', 'bug_supervisor']
339 self.assertEqual(fields, view.field_names)
340 self.assertEqual('http://launchpad.dev/boing', view.next_url)
341 self.assertEqual('http://launchpad.dev/boing', view.cancel_url)
342@@ -65,7 +63,7 @@
343 fields = [
344 'bugtracker', 'enable_bug_expiration', 'remote_product',
345 'bug_reporting_guidelines', 'bug_reported_acknowledgement',
346- 'enable_bugfiling_duplicate_search', 'private_bugs']
347+ 'enable_bugfiling_duplicate_search']
348 self.assertEqual(fields, view.field_names)
349 self.assertEqual('http://launchpad.dev/boing', view.next_url)
350 self.assertEqual('http://launchpad.dev/boing', view.cancel_url)
351@@ -160,62 +158,3 @@
352 self.assertEqual([], view.errors)
353 self.assertEqual(
354 'new guidelines', self.product.bug_reporting_guidelines)
355-
356- def test_commercial_subscriber_can_turn_on_private_bugs(self):
357- # Verify commercial subscribers can set private_bugs to on.
358- form = self._makeForm()
359- self.factory.makeCommercialSubscription(self.product)
360- form['field.private_bugs'] = 'on'
361- login_person(self.bug_supervisor)
362- view = create_initialized_view(
363- self.product, name='+configure-bugtracker', form=form)
364- self.assertEqual([], view.errors)
365- self.assertTrue(self.product.private_bugs)
366-
367- def test_expired_commercial_subscriber_cannot_turn_on_private_bugs(self):
368- # Verify expired commercial subscribers cannot set private_bugs to on.
369- form = self._makeForm()
370- self.factory.makeCommercialSubscription(self.product, expired=True)
371- form['field.private_bugs'] = 'on'
372- login_person(self.bug_supervisor)
373- view = create_initialized_view(
374- self.product, name='+configure-bugtracker', form=form)
375- self.assertEqual(
376- [u'A valid commercial subscription is required to turn on '
377- u'default private bugs.'],
378- view.errors)
379-
380- def test_unauthorised_cannot_turn_on_private_bugs(self):
381- # Verify unauthorised users cannot set private_bugs to on.
382- form = self._makeForm()
383- form['field.private_bugs'] = 'on'
384- view = create_initialized_view(
385- self.product, name='+configure-bugtracker', form=form)
386- self.assertEqual(
387- [u'A valid commercial subscription is required to turn on '
388- u'default private bugs.'],
389- view.errors)
390-
391- def test_unauthorised_cannot_turn_off_private_bugs(self):
392- # Verify unauthorised user cannot set private_bugs off.
393- registry_expert = self.factory.makeRegistryExpert()
394- self.product.setPrivateBugs(True, registry_expert)
395- anyperson = self.factory.makePerson()
396- login_person(anyperson)
397- form = self._makeForm()
398- view = create_initialized_view(
399- self.product, name='+configure-bugtracker', form=form)
400- self.assertEqual(
401- [u'Only bug supervisors can turn off default private bugs.'],
402- view.errors)
403-
404- def test_bug_supervisor_can_turn_off_private_bugs(self):
405- # Verify the bug supervisor can always set private_bugs off.
406- registry_expert = self.factory.makeRegistryExpert()
407- self.product.setPrivateBugs(True, registry_expert)
408- form = self._makeForm()
409- login_person(self.bug_supervisor)
410- view = create_initialized_view(
411- self.product, name='+configure-bugtracker', form=form)
412- self.assertEqual([], view.errors)
413- self.assertFalse(self.product.private_bugs)
414
415=== modified file 'lib/lp/bugs/browser/tests/test_bugtarget_filebug.py'
416--- lib/lp/bugs/browser/tests/test_bugtarget_filebug.py 2012-10-04 15:12:52 +0000
417+++ lib/lp/bugs/browser/tests/test_bugtarget_filebug.py 2012-10-11 04:47:20 +0000
418@@ -366,7 +366,7 @@
419 }]
420 self.assertEqual(expected_guidelines, view.bug_reporting_guidelines)
421
422- def filebug_via_view(self, private_bugs=False, information_type=None,
423+ def filebug_via_view(self, information_type=None,
424 bug_sharing_policy=None, extra_data_token=None):
425 form = {
426 'field.title': 'A bug',
427@@ -375,9 +375,7 @@
428 }
429 if information_type:
430 form['field.information_type'] = information_type
431- product = self.factory.makeLegacyProduct(official_malone=True)
432- if private_bugs:
433- removeSecurityProxy(product).private_bugs = True
434+ product = self.factory.makeProduct(official_malone=True)
435 if bug_sharing_policy:
436 self.factory.makeCommercialSubscription(product=product)
437 with person_logged_in(product.owner):
438@@ -394,8 +392,7 @@
439 return (getUtility(IBugSet).getByNameOrID(bug_number), view)
440
441 def test_filebug_default_information_type(self):
442- # If we don't specify the bug's information_type, it is PUBLIC for
443- # products with private_bugs=False.
444+ # If we don't specify the bug's information_type, it is PUBLIC.
445 bug, view = self.filebug_via_view()
446 self.assertEqual(
447 InformationType.PUBLIC, view.default_information_type)
448@@ -407,14 +404,6 @@
449 self.assertEqual(
450 InformationType.PRIVATESECURITY, bug.information_type)
451
452- def test_filebug_information_type_with_private_bugs(self):
453- # If we don't specify the bug's information_type, it is USERDATA for
454- # products with private_bugs=True.
455- bug, view = self.filebug_via_view(private_bugs=True)
456- self.assertEqual(
457- InformationType.USERDATA, view.default_information_type)
458- self.assertEqual(InformationType.USERDATA, bug.information_type)
459-
460 def test_filebug_information_type_with_bug_sharing_policy(self):
461 # If we don't specify the bug's information_type, it follows the
462 # target's getDefaultBugInformationType().
463@@ -711,7 +700,7 @@
464
465 layer = DatabaseFunctionalLayer
466
467- def filebug_via_view(self, private_bugs=False, bug_sharing_policy=None,
468+ def filebug_via_view(self, bug_sharing_policy=None,
469 security_related=False):
470 form = {
471 'field.title': 'A bug',
472@@ -719,9 +708,7 @@
473 'field.security_related': 'on' if security_related else '',
474 'field.actions.submit_bug': 'Submit Bug Request',
475 }
476- product = self.factory.makeLegacyProduct(official_malone=True)
477- if private_bugs:
478- removeSecurityProxy(product).private_bugs = True
479+ product = self.factory.makeProduct(official_malone=True)
480 if bug_sharing_policy:
481 self.factory.makeCommercialSubscription(product=product)
482 with person_logged_in(product.owner):
483@@ -735,31 +722,16 @@
484 return getUtility(IBugSet).getByNameOrID(bug_number)
485
486 def test_filebug_non_security_related(self):
487- # Non security related bugs are PUBLIC for products with
488- # private_bugs=False.
489+ # Non security related bugs are PUBLIC.
490 bug = self.filebug_via_view()
491 self.assertEqual(InformationType.PUBLIC, bug.information_type)
492
493 def test_filebug_security_related(self):
494- # Security related bugs are PRIVATESECURITY for products with
495- # private_bugs=False.
496+ # Security related bugs are PRIVATESECURITY.
497 bug = self.filebug_via_view(security_related=True)
498 self.assertEqual(
499 InformationType.PRIVATESECURITY, bug.information_type)
500
501- def test_filebug_security_related_with_private_bugs(self):
502- # Security related bugs are PRIVATESECURITY for products with
503- # private_bugs=True.
504- bug = self.filebug_via_view(private_bugs=True, security_related=True)
505- self.assertEqual(
506- InformationType.PRIVATESECURITY, bug.information_type)
507-
508- def test_filebug_with_private_bugs(self):
509- # Non security related bugs are USERDATA for products with
510- # private_bugs=True.
511- bug = self.filebug_via_view(private_bugs=True)
512- self.assertEqual(InformationType.USERDATA, bug.information_type)
513-
514 def test_filebug_with_proprietary_sharing(self):
515 # Non security related bugs are PROPRIETARY for products with a
516 # proprietary sharing policy.
517@@ -818,7 +790,7 @@
518
519 layer = DatabaseFunctionalLayer
520
521- def _assert_cache_values(self, view, duplicate_search, private_bugs=False):
522+ def _assert_cache_values(self, view, duplicate_search):
523 cache = IJSONRequestCache(view.request).objects
524 self.assertEqual(
525 duplicate_search, cache['enable_bugfiling_duplicate_search'])
526@@ -865,7 +837,6 @@
527 bugtask_importance_data.append(new_item)
528 self.assertEqual(
529 bugtask_importance_data, cache['bugtask_importance_data'])
530- self.assertEqual(cache['bug_private_by_default'], private_bugs)
531 bugtask_info_type_data = {}
532 if not IProjectGroup.providedBy(view.context):
533 for item in view.context.getAllowedBugInformationTypes():
534@@ -884,14 +855,6 @@
535 view = create_initialized_view(project, '+filebug', principal=user)
536 self._assert_cache_values(view, True)
537
538- def test_product_private_bugs(self):
539- project = self.factory.makeLegacyProduct(
540- official_malone=True, private_bugs=True)
541- user = self.factory.makePerson()
542- login_person(user)
543- view = create_initialized_view(project, '+filebug', principal=user)
544- self._assert_cache_values(view, True, True)
545-
546 def test_product_no_duplicate_search(self):
547 product = self.factory.makeProduct(official_malone=True)
548 removeSecurityProxy(product).enable_bugfiling_duplicate_search = False
549
550=== removed file 'lib/lp/bugs/doc/bug-private-by-default.txt'
551--- lib/lp/bugs/doc/bug-private-by-default.txt 2012-09-17 16:13:40 +0000
552+++ lib/lp/bugs/doc/bug-private-by-default.txt 1970-01-01 00:00:00 +0000
553@@ -1,52 +0,0 @@
554-Private by default bugs
555-=======================
556-
557-A product with private bugs by default must always have a bug supervisor
558-(this is enforced by a DB constraint).
559-
560- >>> from lp.bugs.interfaces.bug import CreateBugParams
561- >>> from lp.app.enums import InformationType
562- >>> from lp.registry.interfaces.person import IPersonSet
563- >>> from lp.registry.interfaces.product import IProductSet
564- >>> from lp.testing.dbuser import switch_dbuser
565-
566- >>> switch_dbuser('launchpad')
567- >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
568- >>> name16 = getUtility(IPersonSet).get(16)
569- >>> landscape = getUtility(IProductSet).getByName('landscape')
570- >>> landscape.private_bugs
571- True
572-
573- >>> login('no-priv@canonical.com')
574-
575- >>> bug_params = CreateBugParams(
576- ... owner=no_priv, title='Some bug', comment='I like monkeys.')
577-
578- >>> bug = landscape.createBug(bug_params)
579- >>> [landscape_task] = bug.bugtasks
580- >>> landscape_task.bug.private
581- True
582-
583- >>> landscape_task.bug.security_related
584- False
585-
586- >>> landscape.bug_supervisor.name
587- u'landscape-developers'
588-
589- >>> landscape.owner.name
590- u'name12'
591-
592- >>> sorted(sub.name for sub in landscape_task.bug.getDirectSubscribers())
593- [u'landscape-developers', u'no-priv']
594-
595-The bug supervisor is always subscribed, except in the case of a security
596-related bug.
597-
598- >>> security_bug_params = CreateBugParams(
599- ... owner=no_priv, title='Security bug',
600- ... comment='A monkey took my GPG keys.',
601- ... information_type=InformationType.PRIVATESECURITY)
602- >>> security_bug = landscape.createBug(security_bug_params)
603- >>> [security_bug_task] = security_bug.bugtasks
604- >>> security_bug_task.bug.private
605- True
606
607=== modified file 'lib/lp/bugs/model/bug.py'
608--- lib/lp/bugs/model/bug.py 2012-10-10 02:45:36 +0000
609+++ lib/lp/bugs/model/bug.py 2012-10-11 04:47:20 +0000
610@@ -2621,20 +2621,6 @@
611 getUtility(IBugTaskSet).createTask(
612 bug, params.owner, params.target, status=params.status)
613
614- # XXX: ElliotMurphy 2007-06-14: If we ever allow filing private
615- # non-security bugs, this test might be simplified to checking
616- # params.private.
617- if (IProduct.providedBy(params.target) and params.target.private_bugs
618- and params.target.bug_sharing_policy is None
619- and params.information_type not in SECURITY_INFORMATION_TYPES):
620- # Subscribe the bug supervisor to all bugs,
621- # because all their bugs are private by default
622- # otherwise only subscribe the bug reporter by default.
623- if params.target.bug_supervisor:
624- bug.subscribe(params.target.bug_supervisor, params.owner)
625- else:
626- bug.subscribe(params.target.owner, params.owner)
627-
628 if params.subscribe_owner:
629 bug.subscribe(params.owner, params.owner)
630 # Subscribe other users.
631
632=== modified file 'lib/lp/bugs/model/tests/test_bug.py'
633--- lib/lp/bugs/model/tests/test_bug.py 2012-10-03 16:11:18 +0000
634+++ lib/lp/bugs/model/tests/test_bug.py 2012-10-11 04:47:20 +0000
635@@ -8,12 +8,12 @@
636 timedelta,
637 )
638
639+from lazr.lifecycle.event import ObjectCreatedEvent
640 from pytz import UTC
641 from storm.store import Store
642 from testtools.testcase import ExpectedException
643 from zope.component import getUtility
644 from zope.security.proxy import removeSecurityProxy
645-from lazr.lifecycle.event import ObjectCreatedEvent
646
647 from lp.app.enums import InformationType
648 from lp.app.interfaces.launchpad import ILaunchpadCelebrities
649@@ -586,7 +586,7 @@
650 self.assertEqual(0, len(recorder.events))
651
652
653-class TestBugPrivateAndSecurityRelatedUpdatesMixin:
654+class TestBugPrivateAndSecurityRelatedUpdatesProject(TestCaseWithFactory):
655
656 layer = DatabaseFunctionalLayer
657
658@@ -625,8 +625,6 @@
659 bug_product = self.factory.makeProduct(
660 owner=product_owner, bug_supervisor=bug_supervisor,
661 driver=product_driver)
662- if self.private_project:
663- removeSecurityProxy(bug_product).private_bugs = True
664 bug = self.factory.makeBug(owner=bug_owner, target=bug_product)
665 with person_logged_in(bug_owner):
666 if private_security_related:
667@@ -939,24 +937,6 @@
668 InformationType.PUBLIC, bug.owner)
669
670
671-class TestBugPrivateAndSecurityRelatedUpdatesPrivateProject(
672- TestBugPrivateAndSecurityRelatedUpdatesMixin, TestCaseWithFactory):
673-
674- def setUp(self):
675- s = super(TestBugPrivateAndSecurityRelatedUpdatesPrivateProject, self)
676- s.setUp()
677- self.private_project = True
678-
679-
680-class TestBugPrivateAndSecurityRelatedUpdatesPublicProject(
681- TestBugPrivateAndSecurityRelatedUpdatesMixin, TestCaseWithFactory):
682-
683- def setUp(self):
684- s = super(TestBugPrivateAndSecurityRelatedUpdatesPublicProject, self)
685- s.setUp()
686- self.private_project = False
687-
688-
689 class TestBugPrivateAndSecurityRelatedUpdatesSpecialCase(TestCaseWithFactory):
690
691 layer = DatabaseFunctionalLayer
692
693=== modified file 'lib/lp/bugs/scripts/bugimport.py'
694--- lib/lp/bugs/scripts/bugimport.py 2012-06-29 08:40:05 +0000
695+++ lib/lp/bugs/scripts/bugimport.py 2012-10-11 04:47:20 +0000
696@@ -7,7 +7,6 @@
697 is described in the RELAX-NG schema 'doc/bug-export.rnc'.
698 """
699
700-
701 __metaclass__ = type
702
703 __all__ = [
704@@ -21,25 +20,14 @@
705 import logging
706 import os
707 import time
708-
709-
710-try:
711- import xml.etree.cElementTree as ET
712-except ImportError:
713- import cElementTree as ET
714+from xml.etree import cElementTree
715
716 import pytz
717-
718 from storm.store import Store
719-
720 from zope.component import getUtility
721 from zope.contenttype import guess_content_type
722
723-from lp.services.database.constants import UTC_NOW
724-from lp.services.identity.interfaces.emailaddress import IEmailAddressSet
725 from lp.app.interfaces.launchpad import ILaunchpadCelebrities
726-from lp.services.librarian.interfaces import ILibraryFileAliasSet
727-from lp.services.messages.interfaces.message import IMessageSet
728 from lp.bugs.adapters.bug import convert_to_information_type
729 from lp.bugs.interfaces.bug import (
730 CreateBugParams,
731@@ -60,11 +48,16 @@
732 NoBugTrackerFound,
733 )
734 from lp.bugs.interfaces.cve import ICveSet
735+from lp.bugs.scripts.bugexport import BUGS_XMLNS
736+from lp.registry.enums import BugSharingPolicy
737 from lp.registry.interfaces.person import (
738 IPersonSet,
739 PersonCreationRationale,
740 )
741-from lp.bugs.scripts.bugexport import BUGS_XMLNS
742+from lp.services.database.constants import UTC_NOW
743+from lp.services.identity.interfaces.emailaddress import IEmailAddressSet
744+from lp.services.librarian.interfaces import ILibraryFileAliasSet
745+from lp.services.messages.interfaces.message import IMessageSet
746
747
748 DEFAULT_LOGGER = logging.getLogger('lp.bugs.scripts.bugimport')
749@@ -151,6 +144,10 @@
750 # duplicates of this bug.
751 self.pending_duplicates = {}
752
753+ # We can't currently sensibly import into non-PUBLIC products.
754+ if self.product:
755+ assert self.product.bug_sharing_policy == BugSharingPolicy.PUBLIC
756+
757 def getPerson(self, node):
758 """Get the Launchpad user corresponding to the given XML node"""
759 if node is None:
760@@ -256,7 +253,7 @@
761
762 def importBugs(self, ztm):
763 """Import bugs from a file."""
764- tree = ET.parse(self.bugs_filename)
765+ tree = cElementTree.parse(self.bugs_filename)
766 root = tree.getroot()
767 assert root.tag == '{%s}launchpad-bugs' % BUGS_XMLNS, (
768 "Root element is wrong: %s" % root.tag)
769@@ -295,9 +292,6 @@
770
771 private = get_value(bugnode, 'private') == 'True'
772 security_related = get_value(bugnode, 'security_related') == 'True'
773- # If the product has private_bugs, we force private to True.
774- if self.product.private_bugs:
775- private = True
776 information_type = convert_to_information_type(
777 private, security_related)
778
779@@ -318,16 +312,11 @@
780
781 # Process remaining comments
782 for commentnode in comments:
783- msg = self.createMessage(commentnode,
784- defaulttitle=bug.followup_subject())
785+ msg = self.createMessage(
786+ commentnode, defaulttitle=bug.followup_subject())
787 bug.linkMessage(msg)
788 self.createAttachments(bug, msg, commentnode)
789
790- # Security bugs must be created private, so set it correctly.
791- if not self.product.private_bugs:
792- information_type = convert_to_information_type(
793- private, security_related)
794- bug.transitionToInformationType(information_type, owner)
795 bug.name = get_value(bugnode, 'nickname')
796 description = get_value(bugnode, 'description')
797 if description:
798
799=== modified file 'lib/lp/bugs/scripts/tests/test_bugimport.py'
800--- lib/lp/bugs/scripts/tests/test_bugimport.py 2012-08-08 05:22:14 +0000
801+++ lib/lp/bugs/scripts/tests/test_bugimport.py 2012-10-11 04:47:20 +0000
802@@ -5,6 +5,7 @@
803
804 import os
805 import re
806+import xml.etree.cElementTree as ET
807
808 import pytz
809 from testtools.content import text_content
810@@ -28,7 +29,6 @@
811 from lp.bugs.interfaces.externalbugtracker import UNKNOWN_REMOTE_IMPORTANCE
812 from lp.bugs.model.bugnotification import BugNotification
813 from lp.bugs.scripts import bugimport
814-from lp.bugs.scripts.bugimport import ET
815 from lp.bugs.scripts.checkwatches import (
816 CheckwatchesMaster,
817 core,
818@@ -656,19 +656,6 @@
819 self.assertEqual(bug101.private, False)
820 self.assertEqual(bug101.security_related, True)
821
822- def test_public_bug_product_private_bugs(self):
823- # Test that if we import a public bug into a product with
824- # private_bugs, the bug is private.
825- product = getUtility(IProductSet).getByName('netapplet')
826- removeSecurityProxy(product).private_bugs = True
827- importer = bugimport.BugImporter(
828- product, 'bugs.xml', 'bug-map.pickle', verify_users=True)
829- bugnode = ET.fromstring(public_security_bug)
830- bug101 = importer.importBug(bugnode)
831- self.assertIsNot(None, bug101)
832- self.assertTrue(bug101.private)
833- self.assertTrue(bug101.security_related)
834-
835
836 class BugImportCacheTestCase(TestCase):
837 """Test of bug mapping cache load/save routines."""
838
839=== modified file 'lib/lp/bugs/tests/test_bug.py'
840--- lib/lp/bugs/tests/test_bug.py 2012-09-06 09:32:21 +0000
841+++ lib/lp/bugs/tests/test_bug.py 2012-10-11 04:47:20 +0000
842@@ -23,7 +23,6 @@
843 UserCannotEditBugTaskImportance,
844 UserCannotEditBugTaskMilestone,
845 )
846-from lp.registry.enums import BugSharingPolicy
847 from lp.testing import (
848 person_logged_in,
849 StormStatementRecorder,
850@@ -301,26 +300,3 @@
851 target = self.factory.makeProduct()
852 bug = self.createBug(owner=person, target=target)
853 self.assertContentEqual([person], bug.getDirectSubscribers())
854-
855- def test_createBug_legacy_private_bugs_subscribers(self):
856- # If a project is using the legacy private_bugs setting, the bug
857- # supervisor is subscribed to new non-security bugs.
858- person = self.factory.makePerson()
859- target = self.factory.makeLegacyProduct(
860- private_bugs=True, bug_supervisor=self.factory.makePerson())
861- bug = self.createBug(owner=person, target=target)
862- with person_logged_in(person):
863- self.assertContentEqual(
864- [person, target.bug_supervisor], bug.getDirectSubscribers())
865-
866- def test_createBug_proprietary_subscribers(self):
867- # If a project's sharing policy requests proprietary bugs, only
868- # the reporter is subscribed. Even if private_bugs is set.
869- person = self.factory.makePerson()
870- target = self.factory.makeProduct(
871- bug_sharing_policy=BugSharingPolicy.PROPRIETARY,
872- private_bugs=True)
873- bug = self.createBug(owner=person, target=target)
874- with person_logged_in(person):
875- self.assertContentEqual(
876- [person], bug.getDirectSubscribers())
877
878=== modified file 'lib/lp/bugs/tests/test_bugs_webservice.py'
879--- lib/lp/bugs/tests/test_bugs_webservice.py 2012-10-08 10:07:11 +0000
880+++ lib/lp/bugs/tests/test_bugs_webservice.py 2012-10-11 04:47:20 +0000
881@@ -398,35 +398,6 @@
882
883 layer = DatabaseFunctionalLayer
884
885- def test_default_private_bugs_true(self):
886- # Verify the path through user submission, to MaloneApplication to
887- # BugSet, and back to the user creates a private bug according
888- # to the project's bugs are private by default rule.
889- project = self.factory.makeLegacyProduct(
890- licenses=[License.OTHER_PROPRIETARY])
891- with person_logged_in(project.owner):
892- project.setPrivateBugs(True, project.owner)
893- webservice = launchpadlib_for('test', 'salgado')
894- bugs_collection = webservice.load('/bugs')
895- bug = bugs_collection.createBug(
896- target=api_url(project), title='title', description='desc')
897- self.assertEqual('Private', bug.information_type)
898-
899- def test_explicit_private_private_bugs_true(self):
900- # Verify the path through user submission, to MaloneApplication to
901- # BugSet, and back to the user creates a private bug because the
902- # user commands it.
903- project = self.factory.makeLegacyProduct(
904- licenses=[License.OTHER_PROPRIETARY])
905- with person_logged_in(project.owner):
906- project.setPrivateBugs(True, project.owner)
907- webservice = launchpadlib_for('test', 'salgado')
908- bugs_collection = webservice.load('/bugs')
909- bug = bugs_collection.createBug(
910- target=api_url(project), title='title', description='desc',
911- private=True)
912- self.assertEqual('Private', bug.information_type)
913-
914 def test_default_sharing_policy_proprietary(self):
915 # Verify the path through user submission, to MaloneApplication to
916 # BugSet, and back to the user creates a private bug according
917
918=== modified file 'lib/lp/bugs/tests/test_doc.py'
919--- lib/lp/bugs/tests/test_doc.py 2012-06-06 16:04:34 +0000
920+++ lib/lp/bugs/tests/test_doc.py 2012-10-11 04:47:20 +0000
921@@ -233,12 +233,6 @@
922 tearDown=tearDown,
923 layer=LaunchpadZopelessLayer
924 ),
925- 'bug-private-by-default.txt': LayeredDocFileSuite(
926- '../doc/bug-private-by-default.txt',
927- setUp=setUp,
928- tearDown=tearDown,
929- layer=LaunchpadZopelessLayer
930- ),
931 'bugtracker-person.txt': LayeredDocFileSuite(
932 '../doc/bugtracker-person.txt',
933 setUp=checkwatchesSetUp,
934
935=== modified file 'lib/lp/registry/browser/product.py'
936--- lib/lp/registry/browser/product.py 2012-10-11 04:14:37 +0000
937+++ lib/lp/registry/browser/product.py 2012-10-11 04:47:20 +0000
938@@ -26,7 +26,6 @@
939 'ProductOverviewMenu',
940 'ProductPackagesView',
941 'ProductPackagesPortletView',
942- 'ProductPrivateBugsMixin',
943 'ProductPurchaseSubscriptionView',
944 'ProductRdfView',
945 'ProductReviewLicenseView',
946@@ -1365,37 +1364,6 @@
947 usage_fieldname = 'answers_usage'
948
949
950-class ProductPrivateBugsMixin():
951- """A mixin for setting the product private_bugs field."""
952- def setUpFields(self):
953- # private_bugs is readonly since we are using a mutator but we need
954- # to edit it on the form.
955- super(ProductPrivateBugsMixin, self).setUpFields()
956- self.form_fields = self.form_fields.omit('private_bugs')
957- private_bugs = copy_field(IProduct['private_bugs'], readonly=False)
958- self.form_fields += form.Fields(private_bugs, render_context=True)
959-
960- def validate(self, data):
961- super(ProductPrivateBugsMixin, self).validate(data)
962- private_bugs = data.get('private_bugs')
963- if private_bugs is None:
964- return
965- try:
966- self.context.checkPrivateBugsTransitionAllowed(
967- private_bugs, self.user)
968- except Exception as e:
969- self.setFieldError('private_bugs', e.message)
970-
971- def updateContextFromData(self, data, context=None, notify_modified=True):
972- # private_bugs uses a mutator to check permissions, so it needs to
973- # be handled separately.
974- if 'private_bugs' in data:
975- self.context.setPrivateBugs(data['private_bugs'], self.user)
976- del data['private_bugs']
977- parent = super(ProductPrivateBugsMixin, self)
978- return parent.updateContextFromData(data, context, notify_modified)
979-
980-
981 class ProductEditView(ProductLicenseMixin, LaunchpadEditFormView):
982 """View class that lets you edit a Product object."""
983
984@@ -1487,8 +1455,7 @@
985 canonical_url(self.context, view_name='+packages')))
986
987
988-class ProductAdminView(ProductPrivateBugsMixin, ProductEditView,
989- ProductValidationMixin):
990+class ProductAdminView(ProductEditView, ProductValidationMixin):
991 """View for $project/+admin"""
992 label = "Administer project details"
993 default_field_names = [
994@@ -1496,7 +1463,6 @@
995 "owner",
996 "active",
997 "autoupdate",
998- "private_bugs",
999 ]
1000
1001 @property
1002@@ -1565,15 +1531,14 @@
1003 return canonical_url(self.context)
1004
1005
1006-class ProductReviewLicenseView(ReturnToReferrerMixin, ProductPrivateBugsMixin,
1007- ProductEditView, ProductValidationMixin):
1008+class ProductReviewLicenseView(ReturnToReferrerMixin, ProductEditView,
1009+ ProductValidationMixin):
1010 """A view to review a project and change project privileges."""
1011 label = "Review project"
1012 field_names = [
1013 "project_reviewed",
1014 "license_approved",
1015 "active",
1016- "private_bugs",
1017 "reviewer_whiteboard",
1018 ]
1019
1020
1021=== modified file 'lib/lp/registry/browser/tests/product-views.txt'
1022--- lib/lp/registry/browser/tests/product-views.txt 2012-08-08 07:22:51 +0000
1023+++ lib/lp/registry/browser/tests/product-views.txt 2012-10-11 04:47:20 +0000
1024@@ -153,8 +153,7 @@
1025 judge the licences.
1026
1027 >>> view.field_names
1028- ['project_reviewed', 'license_approved', 'active', 'private_bugs',
1029- 'reviewer_whiteboard']
1030+ ['project_reviewed', 'license_approved', 'active', 'reviewer_whiteboard']
1031
1032 The reviewer cannot deactivate a project if it is linked
1033 to a source package.
1034@@ -193,15 +192,10 @@
1035 >>> print product.reviewer_whiteboard
1036 Looks bogus
1037
1038-The reviewer can enable privileged features like private bugs. He can
1039-also reactivate the project at the same time.
1040-
1041- >>> firefox.private_bugs
1042- False
1043+The reviewer can reactivate the project.
1044
1045 >>> form = {
1046 ... 'field.active': 'on',
1047- ... 'field.private_bugs': 'on',
1048 ... 'field.reviewer_whiteboard': 'Reinstated old project',
1049 ... 'field.actions.change': 'Change',
1050 ... }
1051@@ -212,8 +206,6 @@
1052 []
1053 >>> firefox.active
1054 True
1055- >>> firefox.private_bugs
1056- True
1057 >>> print firefox.reviewer_whiteboard
1058 Reinstated old project
1059
1060@@ -222,7 +214,6 @@
1061
1062 >>> from lp.registry.interfaces.product import License
1063
1064- >>> firefox.setPrivateBugs(False, commercial_member)
1065 >>> login('test@canonical.com')
1066 >>> firefox.licenses = [License.OTHER_PROPRIETARY]
1067
1068
1069=== modified file 'lib/lp/registry/interfaces/product.py'
1070--- lib/lp/registry/interfaces/product.py 2012-10-08 14:27:31 +0000
1071+++ lib/lp/registry/interfaces/product.py 2012-10-11 04:47:20 +0000
1072@@ -776,24 +776,6 @@
1073 description=_('Security contact (obsolete; always None)')),
1074 ('devel', dict(exported=False)), as_of='1.0')
1075
1076- def checkPrivateBugsTransitionAllowed(private_bugs, user):
1077- """Can the private_bugs attribute be changed to the value by the user?
1078-
1079- Generally, the permission is restricted to ~registry or ~admin or
1080- bug supervisors.
1081- In addition, a valid commercial subscription is required to turn on
1082- private bugs when being done by a bug supervisor. However, no
1083- commercial subscription is required to turn off private bugs.
1084- """
1085-
1086- @mutator_for(private_bugs)
1087- @call_with(user=REQUEST_USER)
1088- @operation_parameters(private_bugs=copy_field(private_bugs))
1089- @export_write_operation()
1090- @operation_for_version("devel")
1091- def setPrivateBugs(private_bugs, user):
1092- """Mutator for private_bugs that checks entitlement."""
1093-
1094 def getAllowedBugInformationTypes():
1095 """Get the information types that a bug in this project can have.
1096
1097
1098=== modified file 'lib/lp/registry/model/product.py'
1099--- lib/lp/registry/model/product.py 2012-10-11 04:14:37 +0000
1100+++ lib/lp/registry/model/product.py 2012-10-11 04:47:20 +0000
1101@@ -52,7 +52,6 @@
1102 implements,
1103 providedBy,
1104 )
1105-from zope.security.interfaces import Unauthorized
1106 from zope.security.proxy import removeSecurityProxy
1107
1108 from lp.answers.enums import QUESTION_STATUS_DEFAULT_SEARCH
1109@@ -156,7 +155,6 @@
1110 LicenseStatus,
1111 )
1112 from lp.registry.interfaces.productrelease import IProductReleaseSet
1113-from lp.registry.interfaces.role import IPersonRoles
1114 from lp.registry.model.announcement import MakesAnnouncements
1115 from lp.registry.model.commercialsubscription import CommercialSubscription
1116 from lp.registry.model.distribution import Distribution
1117@@ -546,8 +544,7 @@
1118 notNull=True, default=False)
1119 project_reviewed = BoolCol(dbName='reviewed', notNull=True, default=False)
1120 reviewer_whiteboard = StringCol(notNull=False, default=None)
1121- private_bugs = BoolCol(
1122- dbName='private_bugs', notNull=True, default=False)
1123+ private_bugs = False
1124 bug_sharing_policy = EnumCol(
1125 enum=BugSharingPolicy, notNull=False, default=None)
1126 branch_sharing_policy = EnumCol(
1127@@ -608,40 +605,6 @@
1128 notNull=True, default=False,
1129 storm_validator=_validate_license_approved)
1130
1131- def checkPrivateBugsTransitionAllowed(self, private_bugs, user):
1132- """See `IProductPublic`."""
1133- from lp.security import (
1134- BugTargetOwnerOrBugSupervisorOrAdmins,
1135- ModerateByRegistryExpertsOrAdmins,
1136- )
1137- if user is not None:
1138- person_roles = IPersonRoles(user)
1139- moderator_check = ModerateByRegistryExpertsOrAdmins(self)
1140- moderator = moderator_check.checkAuthenticated(person_roles)
1141- if moderator:
1142- return True
1143-
1144- bug_supervisor_check = BugTargetOwnerOrBugSupervisorOrAdmins(self)
1145- bug_supervisor = (
1146- bug_supervisor_check.checkAuthenticated(person_roles))
1147- if (bug_supervisor and
1148- (not private_bugs
1149- or self.has_current_commercial_subscription)):
1150- return
1151- if private_bugs:
1152- raise CommercialSubscribersOnly(
1153- 'A valid commercial subscription is required to turn on '
1154- 'default private bugs.')
1155- raise Unauthorized(
1156- 'Only bug supervisors can turn off default private bugs.')
1157-
1158- def setPrivateBugs(self, private_bugs, user):
1159- """ See `IProductEditRestricted`."""
1160- if self.private_bugs == private_bugs:
1161- return
1162- self.checkPrivateBugsTransitionAllowed(private_bugs, user)
1163- self.private_bugs = private_bugs
1164-
1165 def _prepare_to_set_sharing_policy(self, var, enum, kind, allowed_types):
1166 if (var not in [enum.PUBLIC, enum.FORBIDDEN] and
1167 not self.has_current_commercial_subscription):
1168@@ -683,11 +646,9 @@
1169 return FREE_INFORMATION_TYPES
1170
1171 def getDefaultBugInformationType(self):
1172- """See `IDistribution.`"""
1173+ """See `IProduct.`"""
1174 if self.bug_sharing_policy is not None:
1175 return BUG_POLICY_DEFAULT_TYPES[self.bug_sharing_policy]
1176- elif self.private_bugs:
1177- return InformationType.USERDATA
1178 else:
1179 return InformationType.PUBLIC
1180
1181
1182=== modified file 'lib/lp/registry/model/productjob.py'
1183--- lib/lp/registry/model/productjob.py 2012-09-19 06:39:47 +0000
1184+++ lib/lp/registry/model/productjob.py 2012-10-11 04:47:20 +0000
1185@@ -473,7 +473,6 @@
1186 self.product.active = False
1187 else:
1188 naked_product = removeSecurityProxy(self.product)
1189- naked_product.private_bugs = False
1190 naked_product.setBranchSharingPolicy(BranchSharingPolicy.FORBIDDEN)
1191 naked_product.setBugSharingPolicy(BugSharingPolicy.FORBIDDEN)
1192 for series in self.product.series:
1193
1194=== modified file 'lib/lp/registry/tests/test_product.py'
1195--- lib/lp/registry/tests/test_product.py 2012-10-11 04:14:37 +0000
1196+++ lib/lp/registry/tests/test_product.py 2012-10-11 04:47:20 +0000
1197@@ -275,86 +275,6 @@
1198 closed_team = self.factory.makeTeam(membership_policy=policy)
1199 self.factory.makeProduct(owner=closed_team)
1200
1201- def test_private_bugs_on_not_allowed_for_anonymous(self):
1202- # Anonymous cannot turn on private bugs.
1203- product = self.factory.makeProduct()
1204- self.assertRaises(
1205- CommercialSubscribersOnly,
1206- product.checkPrivateBugsTransitionAllowed, True, None)
1207-
1208- def test_private_bugs_off_not_allowed_for_anonymous(self):
1209- # Anonymous cannot turn private bugs off.
1210- product = self.factory.makeProduct()
1211- self.assertRaises(
1212- Unauthorized,
1213- product.checkPrivateBugsTransitionAllowed, False, None)
1214-
1215- def test_private_bugs_on_not_allowed_for_unauthorised(self):
1216- # Unauthorised users cannot turn on private bugs.
1217- product = self.factory.makeProduct()
1218- someone = self.factory.makePerson()
1219- self.assertRaises(
1220- CommercialSubscribersOnly,
1221- product.checkPrivateBugsTransitionAllowed, True, someone)
1222-
1223- def test_private_bugs_off_not_allowed_for_unauthorised(self):
1224- # Unauthorised users cannot turn private bugs off.
1225- product = self.factory.makeProduct()
1226- someone = self.factory.makePerson()
1227- self.assertRaises(
1228- Unauthorized,
1229- product.checkPrivateBugsTransitionAllowed, False, someone)
1230-
1231- def test_private_bugs_on_allowed_for_moderators(self):
1232- # Moderators can turn on private bugs.
1233- product = self.factory.makeProduct()
1234- registry_expert = self.factory.makeRegistryExpert()
1235- product.checkPrivateBugsTransitionAllowed(True, registry_expert)
1236-
1237- def test_private_bugs_off_allowed_for_moderators(self):
1238- # Moderators can turn private bugs off.
1239- product = self.factory.makeProduct()
1240- registry_expert = self.factory.makeRegistryExpert()
1241- product.checkPrivateBugsTransitionAllowed(False, registry_expert)
1242-
1243- def test_private_bugs_on_allowed_for_commercial_subscribers(self):
1244- # Commercial subscribers can turn on private bugs.
1245- bug_supervisor = self.factory.makePerson()
1246- product = self.factory.makeProduct(bug_supervisor=bug_supervisor)
1247- self.factory.makeCommercialSubscription(product)
1248- product.checkPrivateBugsTransitionAllowed(True, bug_supervisor)
1249-
1250- def test_private_bugs_on_not_allowed_for_expired_subscribers(self):
1251- # Expired Commercial subscribers cannot turn on private bugs.
1252- bug_supervisor = self.factory.makePerson()
1253- product = self.factory.makeProduct(bug_supervisor=bug_supervisor)
1254- self.factory.makeCommercialSubscription(product, expired=True)
1255- self.assertRaises(
1256- CommercialSubscribersOnly,
1257- product.setPrivateBugs, True, bug_supervisor)
1258-
1259- def test_private_bugs_off_allowed_for_bug_supervisors(self):
1260- # Bug supervisors can turn private bugs off.
1261- bug_supervisor = self.factory.makePerson()
1262- product = self.factory.makeProduct(bug_supervisor=bug_supervisor)
1263- product.checkPrivateBugsTransitionAllowed(False, bug_supervisor)
1264-
1265- def test_unauthorised_set_private_bugs_raises(self):
1266- # Test Product.setPrivateBugs raises an error if user unauthorised.
1267- product = self.factory.makeProduct()
1268- someone = self.factory.makePerson()
1269- self.assertRaises(
1270- CommercialSubscribersOnly,
1271- product.setPrivateBugs, True, someone)
1272-
1273- def test_set_private_bugs(self):
1274- # Test Product.setPrivateBugs()
1275- bug_supervisor = self.factory.makePerson()
1276- product = self.factory.makeProduct(bug_supervisor=bug_supervisor)
1277- self.factory.makeCommercialSubscription(product)
1278- product.setPrivateBugs(True, bug_supervisor)
1279- self.assertTrue(product.private_bugs)
1280-
1281 def test_product_creation_grants_maintainer_access(self):
1282 # Creating a new product creates an access grant for the maintainer
1283 # for all default policies.
1284@@ -598,8 +518,8 @@
1285
1286 layer = DatabaseFunctionalLayer
1287
1288- def makeProductWithPolicy(self, bug_sharing_policy, private_bugs=False):
1289- product = self.factory.makeProduct(private_bugs=private_bugs)
1290+ def makeProductWithPolicy(self, bug_sharing_policy):
1291+ product = self.factory.makeProduct()
1292 self.factory.makeCommercialSubscription(product=product)
1293 with person_logged_in(product.owner):
1294 product.setBugSharingPolicy(bug_sharing_policy)
1295@@ -614,24 +534,6 @@
1296 self.assertEqual(
1297 InformationType.PUBLIC, product.getDefaultBugInformationType())
1298
1299- def test_legacy_private_bugs(self):
1300- # The deprecated private_bugs attribute overrides the default
1301- # information type to USERDATA.
1302- product = self.factory.makeLegacyProduct(private_bugs=True)
1303- self.assertContentEqual(
1304- FREE_INFORMATION_TYPES, product.getAllowedBugInformationTypes())
1305- self.assertEqual(
1306- InformationType.USERDATA, product.getDefaultBugInformationType())
1307-
1308- def test_sharing_policy_overrides_private_bugs(self):
1309- # bug_sharing_policy overrides private_bugs.
1310- product = self.makeProductWithPolicy(
1311- BugSharingPolicy.PUBLIC, private_bugs=True)
1312- self.assertContentEqual(
1313- FREE_INFORMATION_TYPES, product.getAllowedBugInformationTypes())
1314- self.assertEqual(
1315- InformationType.PUBLIC, product.getDefaultBugInformationType())
1316-
1317 def test_sharing_policy_public_or_proprietary(self):
1318 # bug_sharing_policy can enable Proprietary.
1319 product = self.makeProductWithPolicy(
1320
1321=== modified file 'lib/lp/registry/tests/test_product_webservice.py'
1322--- lib/lp/registry/tests/test_product_webservice.py 2012-10-08 10:07:11 +0000
1323+++ lib/lp/registry/tests/test_product_webservice.py 2012-10-11 04:47:20 +0000
1324@@ -67,7 +67,7 @@
1325 def test_branch_sharing_policy_non_commercial(self):
1326 # An API attempt to set a commercial-only branch_sharing_policy
1327 # on a non-commercial project returns Forbidden.
1328- product = self.factory.makeLegacyProduct()
1329+ product = self.factory.makeProduct()
1330 webservice = webservice_for_person(
1331 product.owner, permission=OAuthPermission.WRITE_PRIVATE)
1332 response = self.patch(
1333@@ -76,7 +76,8 @@
1334 status=403,
1335 body=('A current commercial subscription is required to use '
1336 'proprietary branches.')))
1337- self.assertIs(None, product.branch_sharing_policy)
1338+ self.assertEqual(
1339+ BranchSharingPolicy.PUBLIC, product.branch_sharing_policy)
1340
1341 def test_bug_sharing_policy_can_be_set(self):
1342 # bug_sharing_policy can be set via the API.
1343@@ -93,7 +94,7 @@
1344 def test_bug_sharing_policy_non_commercial(self):
1345 # An API attempt to set a commercial-only bug_sharing_policy
1346 # on a non-commercial project returns Forbidden.
1347- product = self.factory.makeLegacyProduct()
1348+ product = self.factory.makeProduct()
1349 webservice = webservice_for_person(
1350 product.owner, permission=OAuthPermission.WRITE_PRIVATE)
1351 response = self.patch(
1352@@ -102,7 +103,8 @@
1353 status=403,
1354 body=('A current commercial subscription is required to use '
1355 'proprietary bugs.')))
1356- self.assertIs(None, product.bug_sharing_policy)
1357+ self.assertEqual(
1358+ BugSharingPolicy.PUBLIC, product.bug_sharing_policy)
1359
1360 def fetch_product(self, webservice, product, api_version):
1361 return webservice.get(
1362
1363=== modified file 'lib/lp/registry/tests/test_productjob.py'
1364--- lib/lp/registry/tests/test_productjob.py 2012-09-28 06:15:58 +0000
1365+++ lib/lp/registry/tests/test_productjob.py 2012-10-11 04:47:20 +0000
1366@@ -572,7 +572,6 @@
1367 owner=product.owner, product=product,
1368 information_type=InformationType.USERDATA)
1369 with person_logged_in(product.owner):
1370- product.setPrivateBugs(True, product.owner)
1371 product.development_focus.branch = private_branch
1372 self.expire_commercial_subscription(product)
1373 job = self.JOB_CLASS.create(product, reviewer)
1374@@ -712,7 +711,6 @@
1375 owner=product.owner, product=product,
1376 information_type=InformationType.USERDATA)
1377 with person_logged_in(product.owner):
1378- product.setPrivateBugs(True, product.owner)
1379 public_series = product.development_focus
1380 public_series.branch = public_branch
1381 private_series = product.newSeries(
1382@@ -723,8 +721,7 @@
1383 job = CommercialExpiredJob.create(product, reviewer)
1384 job._deactivateCommercialFeatures()
1385 clear_property_cache(product)
1386- self.assertIs(True, product.active)
1387- self.assertIs(False, product.private_bugs)
1388+ self.assertTrue(product.active)
1389 self.assertEqual(
1390 BranchSharingPolicy.FORBIDDEN, product.branch_sharing_policy)
1391 self.assertEqual(
1392
1393=== modified file 'lib/lp/security.py'
1394--- lib/lp/security.py 2012-10-08 10:07:11 +0000
1395+++ lib/lp/security.py 2012-10-11 04:47:20 +0000
1396@@ -14,13 +14,8 @@
1397 from operator import methodcaller
1398
1399 from storm.expr import (
1400- And,
1401- Exists,
1402- Or,
1403 Select,
1404- SQL,
1405 Union,
1406- With,
1407 )
1408 from zope.component import (
1409 getUtility,
1410@@ -176,7 +171,6 @@
1411 )
1412 from lp.registry.interfaces.wikiname import IWikiName
1413 from lp.registry.model.person import Person
1414-from lp.registry.model.teammembership import TeamParticipation
1415 from lp.services.config import config
1416 from lp.services.database.lpstorm import IStore
1417 from lp.services.identity.interfaces.account import IAccount
1418
1419=== modified file 'lib/lp/testing/factory.py'
1420--- lib/lp/testing/factory.py 2012-10-10 23:38:44 +0000
1421+++ lib/lp/testing/factory.py 2012-10-11 04:47:20 +0000
1422@@ -963,10 +963,9 @@
1423 self, name=None, project=None, displayname=None,
1424 licenses=None, owner=None, registrant=None,
1425 title=None, summary=None, official_malone=None,
1426- translations_usage=None, bug_supervisor=None, private_bugs=False,
1427- driver=None, icon=None, bug_sharing_policy=None,
1428- branch_sharing_policy=None, specification_sharing_policy=None,
1429- information_type=None):
1430+ translations_usage=None, bug_supervisor=None, driver=None, icon=None,
1431+ bug_sharing_policy=None, branch_sharing_policy=None,
1432+ specification_sharing_policy=None, information_type=None):
1433 """Create and return a new, arbitrary Product."""
1434 if owner is None:
1435 owner = self.makePerson()
1436@@ -1009,8 +1008,6 @@
1437 naked_product.bug_supervisor = bug_supervisor
1438 if driver is not None:
1439 naked_product.driver = driver
1440- if private_bugs:
1441- naked_product.private_bugs = private_bugs
1442 if ((branch_sharing_policy and
1443 branch_sharing_policy != BranchSharingPolicy.PUBLIC) or
1444 (bug_sharing_policy and
1445@@ -1031,20 +1028,6 @@
1446
1447 return product
1448
1449- def makeLegacyProduct(self, **kwargs):
1450- # Create a product which does not have any of the new bug and branch
1451- # sharing policies set. New products have these set to default values
1452- # but we need to test for existing products which have not yet been
1453- # migrated.
1454- # XXX This method can be removed when branch visibility policy dies.
1455- product = self.makeProduct(**kwargs)
1456- # Since createProduct() doesn't create PRIVATESECURITY/USERDATA.
1457- removeSecurityProxy(product)._ensurePolicies([
1458- InformationType.PRIVATESECURITY, InformationType.USERDATA])
1459- removeSecurityProxy(product).bug_sharing_policy = None
1460- removeSecurityProxy(product).branch_sharing_policy = None
1461- return product
1462-
1463 def makeProductSeries(self, product=None, name=None, owner=None,
1464 summary=None, date_created=None, branch=None):
1465 """Create a new, arbitrary ProductSeries.