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)