field custom metadata

Change-Id: I8ad5fdfee9ff8ec138b1089541c9ab1558e80050
Implements-blueprint: field-custom-attribute
This commit is contained in:
Kushal Agrawal 2018-07-04 17:30:43 +05:30
parent 0736698c92
commit 9883099cc4
4 changed files with 20 additions and 4 deletions

View File

@ -744,6 +744,8 @@ Possible values:
schema['required_on_activate'] = False
if field._default is not None:
schema['default'] = field._default
if field.metadata is not None:
schema['metadata'] = field.metadata
schema['filter_ops'] = field.filter_ops

View File

@ -32,7 +32,8 @@ DEFAULT_MAX_FOLDER_SIZE = 2673868800 # 2550 Megabytes
class Field(object):
def __init__(self, field_class, mutable=False, required_on_activate=True,
system=False, validators=None, nullable=True, default=None,
sortable=False, filter_ops=None, description=""):
sortable=False, filter_ops=None, description="",
metadata=None):
"""Init and validate field.
Each artifact field has several common properties:
@ -82,6 +83,7 @@ class Field(object):
self.required_on_activate = required_on_activate
self.system = system
self.sortable = sortable
self.metadata = metadata
try:
default_ops = self.get_default_filter_ops(self.element_type)
@ -101,7 +103,8 @@ class Field(object):
self.filter_ops = filter_ops
self.field_props = ['mutable', 'required_on_activate', 'system',
'sortable', 'filter_ops', 'description']
'sortable', 'filter_ops', 'description',
'metadata']
self.description = description
@staticmethod

View File

@ -483,7 +483,15 @@ fixtures = {
u'readOnly': True,
u'sortable': True,
u'type': [u'string',
u'null']}
u'null']},
u'metadata_attribute': {u'default': u'default',
u'filter_ops': [u'eq', u'neq', u'in'],
u'glareType': u'String',
u'maxLength': 255,
u'metadata': {
u'metadata1': u'value1',
u'metadata2': u'blahblahblah'},
u'type': [u'string', u'null']},
}),
u'required': [u'name'],
u'title': u'Artifact type sample_artifact of version 1.0',

View File

@ -135,7 +135,10 @@ class SampleArtifact(base_artifact.BaseArtifact):
max_size=3),
'system_attribute': Field(fields.StringField,
system=True, sortable=True,
default="default")
default="default"),
'metadata_attribute': Field(fields.StringField, default="default",
metadata={"metadata1": "value1",
"metadata2": "blahblahblah"})
}
@classmethod