cache dynamic input fields

Query dynamic input fields once on attribute access and then cache it for future use.
This commit is contained in:
Jake McDermott 2019-02-27 15:12:07 -05:00
parent b911f8bf77
commit e9532dea8e
No known key found for this signature in database
GPG Key ID: 9A6F084352C3A0B7

View File

@ -284,10 +284,6 @@ class Credential(PasswordFieldsModel, CommonModelNameNotUnique, ResourceMixin):
'admin_role',
])
def __init__(self, *args, **kwargs):
super(Credential, self).__init__(*args, **kwargs)
self.dynamic_input_fields = self._get_dynamic_input_field_names()
def __getattr__(self, item):
if item != 'inputs':
if item in V1Credential.FIELDS:
@ -377,6 +373,14 @@ class Credential(PasswordFieldsModel, CommonModelNameNotUnique, ResourceMixin):
needed.append('vault_password')
return needed
@property
def dynamic_input_fields(self):
dynamic_input_fields = getattr(self, '_dynamic_input_fields', None)
if dynamic_input_fields is None:
self._dynamic_input_fields = self._get_dynamic_input_field_names()
return self._dynamic_input_fields
return dynamic_input_fields
def _password_field_allows_ask(self, field):
return field in self.credential_type.askable_fields