diff mbox

[Branch,~linaro-validation/lava-scheduler/trunk] Rev 154: * Display ValueErrors raised by from_json_and_user nicely to API

Message ID 20120315212410.6208.36515.launchpad@ackee.canonical.com
State Accepted
Headers show

Commit Message

Michael-Doyle Hudson March 15, 2012, 9:24 p.m. UTC
Merge authors:
  Michael Hudson-Doyle (mwhudson)
Related merge proposals:
  https://code.launchpad.net/~mwhudson/lava-scheduler/private-job-tweaks/+merge/97556
  proposed by: Michael Hudson-Doyle (mwhudson)
  review: Needs Fixing - Zygmunt Krynicki (zkrynicki)
------------------------------------------------------------
revno: 154 [merge]
committer: Michael Hudson-Doyle <michael.hudson@linaro.org>
branch nick: trunk
timestamp: Fri 2012-03-16 10:22:30 +1300
message:
   * Display ValueErrors raised by from_json_and_user nicely to API
     users.
   * Allow submission to anonymous streams again.
modified:
  doc/changes.rst
  lava_scheduler_app/api.py
  lava_scheduler_app/models.py
  lava_scheduler_app/tests.py
  setup.py


--
lp:lava-scheduler
https://code.launchpad.net/~linaro-validation/lava-scheduler/trunk

You are subscribed to branch lp:lava-scheduler.
To unsubscribe from this branch go to https://code.launchpad.net/~linaro-validation/lava-scheduler/trunk/+edit-subscription
diff mbox

Patch

=== modified file 'doc/changes.rst'
--- doc/changes.rst	2012-03-13 21:26:49 +0000
+++ doc/changes.rst	2012-03-15 01:44:09 +0000
@@ -5,6 +5,10 @@ 
 
 Version 0.12 (UNRELEASED)
 =========================
+* Two fixes around job privacy:
+  * Display ValueErrors raised by from_json_and_user nicely to API
+    users.
+  * Allow submission to anonymous streams again.
 
 .. _version_0_11:
 

=== modified file 'lava_scheduler_app/api.py'
--- lava_scheduler_app/api.py	2012-01-25 02:42:58 +0000
+++ lava_scheduler_app/api.py	2012-03-15 01:34:13 +0000
@@ -28,7 +28,7 @@ 
             job = TestJob.from_json_and_user(job_data, self.user)
         except JSONDecodeError as e:
             raise xmlrpclib.Fault(400, "Decoding JSON failed: %s." % e)
-        except JSONDataError as e:
+        except (JSONDataError, ValueError) as e:
             raise xmlrpclib.Fault(400, str(e))
         except Device.DoesNotExist:
             raise xmlrpclib.Fault(404, "Specified device not found.")

=== modified file 'lava_scheduler_app/models.py'
--- lava_scheduler_app/models.py	2012-03-09 01:46:30 +0000
+++ lava_scheduler_app/models.py	2012-03-15 20:44:39 +0000
@@ -290,12 +290,13 @@ 
                 bundle_stream = BundleStream.objects.get(pathname=stream)
             except BundleStream.DoesNotExist:
                 raise ValueError("stream %s not found" % stream)
-            if not bundle_stream.is_owned_by(submitter):
+            if not bundle_stream.can_upload(submitter):
                 raise ValueError(
                     "you cannot submit to the stream %s" % stream)
-            user, group, is_public = (bundle_stream.user,
-                                      bundle_stream.group,
-                                      bundle_stream.is_public)
+            if not bundle_stream.is_anonymous:
+                user, group, is_public = (bundle_stream.user,
+                                          bundle_stream.group,
+                                          bundle_stream.is_public)
 
         tags = []
         for tag_name in job_data.get('device_tags', []):

=== modified file 'lava_scheduler_app/tests.py'
--- lava_scheduler_app/tests.py	2012-03-09 04:07:06 +0000
+++ lava_scheduler_app/tests.py	2012-03-15 01:41:32 +0000
@@ -246,6 +246,17 @@ 
         job = TestJob.from_json_and_user(j, user)
         self.assertEqual(group, job.group)
 
+    def test_from_json_and_user_can_submit_to_anonymous(self):
+        user = self.factory.make_user()
+        anon_user = User.objects.get_or_create(username="anonymous-owner")[0]
+        b = BundleStream.objects.create(
+            slug='anonymous', is_anonymous=True, user=anon_user,
+            is_public=True)
+        b.save()
+        j = self.make_job_json_for_stream_name('/anonymous/anonymous/')
+        job = TestJob.from_json_and_user(j, user)
+        self.assertEqual(user, job.submitter)
+
     def test_from_json_and_user_sets_is_public_from_bundlestream(self):
         group = Group.objects.create(name='group')
         user = self.factory.make_user()

=== modified file 'setup.py'
--- setup.py	2012-03-13 20:50:18 +0000
+++ setup.py	2012-03-15 02:56:22 +0000
@@ -33,7 +33,7 @@ 
     scheduler = lava_scheduler_app.extension:SchedulerExtension
     """,
     install_requires=[
-        "django-restricted-resource",
+        "django-restricted-resource >= 0.2.7",
         "django-tables2 >= 0.9.4",
         "lava-dashboard",
         "lava-dispatcher >= 0.5.9",