=== modified file 'doc/changes.rst'
@@ -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'
@@ -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'
@@ -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'
@@ -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'
@@ -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",