Switch from using a interstitial serializer to defining a read property on the CommonTask model

This commit is contained in:
Matthew Jones
2013-11-21 14:21:00 -05:00
parent bf07c55273
commit 9444c1185b
2 changed files with 16 additions and 20 deletions

View File

@@ -189,22 +189,6 @@ class BaseSerializer(serializers.ModelSerializer):
else: else:
return obj.active 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): class UserSerializer(BaseSerializer):
password = serializers.WritableField(required=False, default='', password = serializers.WritableField(required=False, default='',
@@ -377,7 +361,7 @@ class ProjectPlaybooksSerializer(ProjectSerializer):
return ret.get('playbooks', []) return ret.get('playbooks', [])
class ProjectUpdateSerializer(BaseTaskSerializer): class ProjectUpdateSerializer(BaseSerializer):
class Meta: class Meta:
model = ProjectUpdate model = ProjectUpdate
@@ -701,7 +685,7 @@ class InventorySourceSerializer(BaseSerializer):
return metadata return metadata
class InventoryUpdateSerializer(BaseTaskSerializer): class InventoryUpdateSerializer(BaseSerializer):
class Meta: class Meta:
model = InventoryUpdate model = InventoryUpdate
@@ -855,7 +839,7 @@ class JobTemplateSerializer(BaseSerializer):
return attrs return attrs
class JobSerializer(BaseTaskSerializer): class JobSerializer(BaseSerializer):
passwords_needed_to_start = serializers.Field(source='passwords_needed_to_start') passwords_needed_to_start = serializers.Field(source='passwords_needed_to_start')

View File

@@ -268,10 +268,11 @@ class CommonTask(PrimordialModel):
default={}, default={},
editable=False, editable=False,
) )
result_stdout = models.TextField( _result_stdout = models.TextField(
blank=True, blank=True,
default='', default='',
editable=False, editable=False,
db_column="result_stdout",
) )
result_stdout_file = models.TextField( result_stdout_file = models.TextField(
blank=True, blank=True,
@@ -325,6 +326,17 @@ class CommonTask(PrimordialModel):
if self.status != status_before: if self.status != status_before:
self._update_parent_instance() 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 @property
def celery_task(self): def celery_task(self):
try: try: