From 9444c1185b742601a6e576313f607eedcc3ffa26 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Thu, 21 Nov 2013 14:21:00 -0500 Subject: [PATCH] Switch from using a interstitial serializer to defining a read property on the CommonTask model --- awx/api/serializers.py | 22 +++------------------- awx/main/models/base.py | 14 +++++++++++++- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index d8b86a3d26..52b1e07fb5 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -189,22 +189,6 @@ class BaseSerializer(serializers.ModelSerializer): else: return obj.active -class BaseTaskSerializer(BaseSerializer): - - result_stdout = serializers.SerializerMethodField('get_result_stdout') - - def get_result_stdout(self, obj): - if obj is None: - return '' - if obj.result_stdout_file != "": - if not os.path.exists(obj.result_stdout_file): - return "stdout capture is missing" - stdout_fd = open(obj.result_stdout_file, "r") - output = stdout_fd.read() - stdout_fd.close() - return output - return obj.result_stdout - class UserSerializer(BaseSerializer): password = serializers.WritableField(required=False, default='', @@ -377,7 +361,7 @@ class ProjectPlaybooksSerializer(ProjectSerializer): return ret.get('playbooks', []) -class ProjectUpdateSerializer(BaseTaskSerializer): +class ProjectUpdateSerializer(BaseSerializer): class Meta: model = ProjectUpdate @@ -701,7 +685,7 @@ class InventorySourceSerializer(BaseSerializer): return metadata -class InventoryUpdateSerializer(BaseTaskSerializer): +class InventoryUpdateSerializer(BaseSerializer): class Meta: model = InventoryUpdate @@ -855,7 +839,7 @@ class JobTemplateSerializer(BaseSerializer): return attrs -class JobSerializer(BaseTaskSerializer): +class JobSerializer(BaseSerializer): passwords_needed_to_start = serializers.Field(source='passwords_needed_to_start') diff --git a/awx/main/models/base.py b/awx/main/models/base.py index 5138536731..f4a716f585 100644 --- a/awx/main/models/base.py +++ b/awx/main/models/base.py @@ -268,10 +268,11 @@ class CommonTask(PrimordialModel): default={}, editable=False, ) - result_stdout = models.TextField( + _result_stdout = models.TextField( blank=True, default='', editable=False, + db_column="result_stdout", ) result_stdout_file = models.TextField( blank=True, @@ -325,6 +326,17 @@ class CommonTask(PrimordialModel): if self.status != status_before: self._update_parent_instance() + @property + def result_stdout(self): + if self.result_stdout_file != "": + if not os.path.exists(self.result_stdout_file): + return "stdout capture is missing" + stdout_fd = open(self.result_stdout_file, "r") + output = stdout_fd.read() + stdout_fd.close() + return output + return self._result_stdout + @property def celery_task(self): try: