[Launchpad-reviewers] [Merge] lp:~cjwatson/launchpad/das-filter-webservice into lp:launchpad

2019-09-30 Thread noreply
The proposal to merge lp:~cjwatson/launchpad/das-filter-webservice into 
lp:launchpad has been updated.

Status: Needs review => Merged

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/das-filter-webservice/+merge/372265
-- 
Your team Launchpad code reviewers is subscribed to branch lp:launchpad.

___
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp


[Launchpad-reviewers] [Merge] lp:~cjwatson/launchpad/das-filter-webservice into lp:launchpad

2019-09-30 Thread Colin Watson
The proposal to merge lp:~cjwatson/launchpad/das-filter-webservice into 
lp:launchpad has been updated.

Commit message changed to:

Export IDistroArchSeries.setSourceFilter and 
IDistroArchSeries.removeSourceFilter on the webservice.

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/das-filter-webservice/+merge/372265
-- 
Your team Launchpad code reviewers is subscribed to branch lp:launchpad.

___
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-reviewers] [Merge] lp:~cjwatson/launchpad/das-filter-webservice into lp:launchpad

2019-09-09 Thread William Grant
Review: Approve code


-- 
https://code.launchpad.net/~cjwatson/launchpad/das-filter-webservice/+merge/372265
Your team Launchpad code reviewers is subscribed to branch lp:launchpad.

___
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp


[Launchpad-reviewers] [Merge] lp:~cjwatson/launchpad/das-filter-webservice into lp:launchpad

2019-09-04 Thread Colin Watson
Colin Watson has proposed merging lp:~cjwatson/launchpad/das-filter-webservice 
into lp:launchpad with lp:~cjwatson/launchpad/das-filter-initialize-ds as a 
prerequisite.

Commit message:
Export IDistroArchSeries.setFilter and IDistroArchSeries.removeFilter on the 
webservice.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #1842658 in Launchpad itself: "Support central filtering of which 
packages build for some architectures"
  https://bugs.launchpad.net/launchpad/+bug/1842658

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/das-filter-webservice/+merge/372265
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of 
lp:~cjwatson/launchpad/das-filter-webservice into lp:launchpad.
=== modified file 'lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py'
--- lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py	2019-07-30 11:38:18 +
+++ lib/lp/soyuz/browser/tests/test_distroarchseries_webservice.py	2019-09-04 14:19:10 +
@@ -11,12 +11,14 @@
 BadRequest,
 Unauthorized,
 )
+from testtools.matchers import MatchesStructure
 from zope.security.management import endInteraction
 
 from lp.buildmaster.enums import BuildBaseImageType
 from lp.registry.enums import PersonVisibility
 from lp.registry.interfaces.pocket import PackagePublishingPocket
 from lp.services.features.testing import FeatureFixture
+from lp.soyuz.enums import DistroArchSeriesFilterSense
 from lp.soyuz.interfaces.livefs import LIVEFS_FEATURE_FLAG
 from lp.testing import (
 api_url,
@@ -291,3 +293,56 @@
 image_type="LXD image")
 self.assertIsNone(das.getChroot(image_type=BuildBaseImageType.CHROOT))
 self.assertEqual(lfa, das.getChroot(image_type=BuildBaseImageType.LXD))
+
+def test_setFilter_removeFilter_random_user(self):
+# Random users are not allowed to set or remove filters.
+das = self.factory.makeDistroArchSeries()
+packageset = self.factory.makePackageset(distroseries=das.distroseries)
+user = self.factory.makePerson()
+packageset_url = api_url(packageset)
+webservice = launchpadlib_for("testing", user, version="devel")
+ws_das = ws_object(webservice, das)
+self.assertRaises(
+Unauthorized, ws_das.setFilter,
+packageset=packageset_url, sense="Include")
+self.assertRaises(Unauthorized, ws_das.removeFilter)
+
+def test_setFilter_wrong_distroseries(self):
+# Trying to set a filter using a packageset for the wrong
+# distroseries returns an error.
+das = self.factory.makeDistroArchSeries()
+packageset = self.factory.makePackageset()
+user = das.distroseries.distribution.main_archive.owner
+packageset_url = api_url(packageset)
+webservice = launchpadlib_for("testing", user, version="devel")
+ws_das = ws_object(webservice, das)
+e = self.assertRaises(
+BadRequest, ws_das.setFilter,
+packageset=packageset_url, sense="Include")
+self.assertEqual(
+"The requested package set is for %s and cannot be set as a "
+"filter for %s %s." % (
+packageset.distroseries.fullseriesname,
+das.distroseries.fullseriesname, das.architecturetag),
+e.content)
+
+def test_setFilter_removeFilter(self):
+das = self.factory.makeDistroArchSeries()
+packageset = self.factory.makePackageset(distroseries=das.distroseries)
+user = das.distroseries.distribution.main_archive.owner
+packageset_url = api_url(packageset)
+webservice = launchpadlib_for("testing", user, version="devel")
+ws_das = ws_object(webservice, das)
+ws_das.setFilter(packageset=packageset_url, sense="Include")
+with person_logged_in(user):
+dasf = das.getFilter()
+self.assertThat(dasf, MatchesStructure.byEquality(
+packageset=packageset, sense=DistroArchSeriesFilterSense.INCLUDE))
+ws_das.setFilter(packageset=packageset_url, sense="Exclude")
+with person_logged_in(user):
+dasf = das.getFilter()
+self.assertThat(dasf, MatchesStructure.byEquality(
+packageset=packageset, sense=DistroArchSeriesFilterSense.EXCLUDE))
+ws_das.removeFilter()
+with person_logged_in(user):
+self.assertIsNone(das.getFilter())

=== modified file 'lib/lp/soyuz/interfaces/distroarchseries.py'
--- lib/lp/soyuz/interfaces/distroarchseries.py	2019-09-04 14:19:10 +
+++ lib/lp/soyuz/interfaces/distroarchseries.py	2019-09-04 14:19:10 +
@@ -16,6 +16,7 @@
 import httplib
 
 from lazr.restful.declarations import (
+call_with,
 error_status,
 export_as_webservice_entry,
 export_read_operation,
@@ -23,6 +24,7 @@
 exported,
 operation_for_version,
 operation_parameters,
+REQUEST_USER,
 )
 from