Skip to content

Commit 676ef78

Browse files
committed
Changed ResultBundle and ResultBundleResource to use uris
- make the tests pass Change-Id: Ib846cfd469fec9f17c5e6822ed428192082fa39b
1 parent 5ff5c48 commit 676ef78

1 file changed

Lines changed: 21 additions & 26 deletions

File tree

codespeed/api.py

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -212,18 +212,19 @@ def _populate_obj_by_data(self):
212212
"""
213213
def populate(key):
214214
return {
215-
'project': lambda: Project.objects.get_or_create(
216-
name=self.data['project']),
217-
'executable': lambda: Executable.objects.get_or_create(
218-
name=self.data['executable'], project=self.obj.project
219-
),
220-
'benchmark': lambda: Benchmark.objects.get_or_create(
221-
name=self.data['benchmark']),
222-
'environment': lambda: (Environment.objects.get(
223-
name=self.data['environment']), False),
224-
'branch': lambda: Branch.objects.get_or_create(
225-
name=self.data['branch'], project=self.obj.project),
226-
}.get(key, (None, None))()
215+
'project': lambda: ProjectResource().get_via_uri(
216+
self.data['project']),
217+
'executable': lambda: ExecutableResource().get_via_uri(
218+
self.data['executable']),
219+
'benchmark': lambda: BenchmarkResource().get_via_uri(
220+
self.data['benchmark']),
221+
'environment': lambda: EnvironmentResource().get_via_uri(
222+
self.data['environment']),
223+
'branch': lambda: BranchResource().get_via_uri(
224+
self.data['branch']),
225+
'revision': lambda: RevisionResource().get_via_uri(
226+
self.data['commitid']),
227+
}.get(key, None)()
227228

228229
try:
229230
self.obj.value = float(self.data['result_value'])
@@ -235,10 +236,10 @@ def populate(key):
235236
raise ImmediateHttpResponse(
236237
response=HttpBadRequest(u"Value needs to be a number"))
237238
for key in [k for k in self.mandatory_keys \
238-
if k not in ('result_value', 'revision')]:
239+
if k not in ('result_value',)]:
239240
try:
240241
#populate
241-
(item, created) = populate(key)
242+
item = populate(key)
242243
setattr(self.obj, key, item)
243244
except Exception, error:
244245
logging.error("Data for field %s: %s not found. %s" % (
@@ -247,13 +248,6 @@ def populate(key):
247248
response=HttpBadRequest(u"Error finding: {0}={1}".format(
248249
key, self.data[key]
249250
)))
250-
251-
# find the revision
252-
self.obj.revision, created = Revision.objects.get_or_create(
253-
commitid=self.data['commitid'],
254-
project=self.obj.project,
255-
branch=self.obj.branch,
256-
)
257251
# populate optional data
258252
for key in [k for k in self.optional_keys \
259253
if k not in ('date')]:
@@ -293,8 +287,8 @@ def _check_data(self):
293287

294288
# Check that the Environment exists
295289
try:
296-
self.obj.environment = Environment.objects.get(
297-
name=self.data['environment'])
290+
self.obj.environment = EnvironmentResource().get_via_uri(
291+
self.data['environment'])
298292
except Environment.DoesNotExist:
299293
error_text = 'Environment: {0} not found in database.'.format(
300294
self.data['environment'])
@@ -336,7 +330,7 @@ def _check_data(self):
336330
raise ImmediateHttpResponse(
337331
response=HttpBadRequest(error_text))
338332

339-
def save(self):
333+
def hydrate_and_save(self):
340334
"""Save self.obj which is an instance of Result()
341335
342336
First populate the Result() instance with self.data
@@ -393,7 +387,6 @@ def get_resource_uri(self, bundle_or_obj):
393387
if self._meta.api_name is not None:
394388
kwargs['api_name'] = self._meta.api_name
395389

396-
#FIXME (a8): reverse url should point to ResultResource()
397390
return self._build_reverse_url("api_dispatch_detail", kwargs=kwargs)
398391

399392
def get_object_list(self, request):
@@ -416,8 +409,10 @@ def obj_get(self, request=None, **kwargs):
416409

417410
def obj_create(self, bundle, request=None, **kwargs):
418411
# not calling hydrate here since bundle.save() has that functionality
412+
# self.full_hydrate(bundle) will try to hydrate result which is not
413+
# there yet
419414
#bundle = self.full_hydrate(bundle)
420-
bundle.save()
415+
bundle.hydrate_and_save()
421416
return bundle
422417

423418
def obj_update(self, bundle, request=None, **kwargs):

0 commit comments

Comments
 (0)