workflow_fields.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from flask_restful import fields
  2. from core.app.segments import SecretVariable, Variable
  3. from core.helper import encrypter
  4. from fields.member_fields import simple_account_fields
  5. from libs.helper import TimestampField
  6. class EnvironmentVariableField(fields.Raw):
  7. def format(self, value):
  8. # Mask secret variables values in environment_variables
  9. if isinstance(value, SecretVariable):
  10. return {
  11. 'id': value.id,
  12. 'name': value.name,
  13. 'value': encrypter.obfuscated_token(value.value),
  14. 'value_type': value.value_type.value,
  15. }
  16. elif isinstance(value, Variable):
  17. return {
  18. 'id': value.id,
  19. 'name': value.name,
  20. 'value': value.value,
  21. 'value_type': value.value_type.value,
  22. }
  23. return value
  24. environment_variable_fields = {
  25. 'id': fields.String,
  26. 'name': fields.String,
  27. 'value': fields.Raw,
  28. 'value_type': fields.String(attribute='value_type.value'),
  29. }
  30. workflow_fields = {
  31. 'id': fields.String,
  32. 'graph': fields.Raw(attribute='graph_dict'),
  33. 'features': fields.Raw(attribute='features_dict'),
  34. 'hash': fields.String(attribute='unique_hash'),
  35. 'created_by': fields.Nested(simple_account_fields, attribute='created_by_account'),
  36. 'created_at': TimestampField,
  37. 'updated_by': fields.Nested(simple_account_fields, attribute='updated_by_account', allow_null=True),
  38. 'updated_at': TimestampField,
  39. 'tool_published': fields.Boolean,
  40. 'environment_variables': fields.List(EnvironmentVariableField()),
  41. }