| 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) |