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

View File

@ -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: