57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
from autotest_lib.frontend.shared import query_lib, resource_lib
|
|
from autotest_lib.frontend.tko import models
|
|
|
|
class TestResult(resource_lib.InstanceEntry):
|
|
model = models.Test
|
|
|
|
|
|
@classmethod
|
|
def add_query_selectors(cls, query_processor):
|
|
query_processor.add_field_selector('afe_job_id',
|
|
field='job__afe_job_id')
|
|
query_processor.add_keyval_selector('has_keyval', models.TestAttribute,
|
|
'attribute', 'value')
|
|
|
|
|
|
@classmethod
|
|
def from_uri_args(cls, request, test_id, **kwargs):
|
|
return cls(request, models.Test.objects.get(pk=test_id))
|
|
|
|
|
|
def _uri_args(self):
|
|
return {'test_id': self.instance.pk}
|
|
|
|
|
|
def short_representation(self):
|
|
rep = super(TestResult, self).short_representation()
|
|
rep.update(id=self.instance.test_idx,
|
|
test_name=self.instance.test,
|
|
status=self.instance.status.word,
|
|
reason=self.instance.reason,
|
|
afe_job_id=self.instance.job.afe_job_id,
|
|
)
|
|
return rep
|
|
|
|
|
|
def full_representation(self):
|
|
rep = super(TestResult, self).full_representation()
|
|
rep['keyvals'] = dict((keyval.attribute, keyval.value)
|
|
for keyval
|
|
in self.instance.testattribute_set.all())
|
|
return rep
|
|
|
|
|
|
class TestResultCollection(resource_lib.Collection):
|
|
queryset = models.Test.objects.order_by('-test_idx')
|
|
entry_class = TestResult
|
|
|
|
|
|
class ResourceDirectory(resource_lib.Resource):
|
|
_permitted_methods = ('GET',)
|
|
|
|
def handle_request(self):
|
|
result = self.link()
|
|
result.update({
|
|
'test_results': TestResultCollection(self._request).link(),
|
|
})
|
|
return self._basic_response(result)
|