opengui.Fields¶
- class opengui.Fields(values: dict = None, originals: dict = None, fields: 'list[dict]' = None, errors: 'list[str]' = None, valid: bool = None, validation: <built-in function callable> = None, ready: bool = None)¶
Class for creating and manipulating fields
- Parameters:
values (dict) – Field values to use, key by name
originals (dict) – Field orginal values to use, key by name
fields (list[dict]) – Field to use in dict form, not instances
errors (list[str]) – Overall errors
valid (bool) – Whether valid overall
validation (callable) – Function to use to validate across fields
ready (bool) – Whether ready overall
- errors: list[str]¶
Overall errors
- names: dict[str, opengui.Field]¶
Fields by name
- order: list[opengui.Field]¶
Fields in order
- originals: dict¶
Field orginal values to use, key by name
- ready: bool¶
Whether ready overall
- valid: bool¶
Whether valid overall
- validation: callable¶
Function to use to validate across fields
- values: dict¶
Field values to use, key by name
- __contains__(key: str) bool¶
Check to see if field exists
- Parameters:
key (str) – field name
- Return type:
bool
Usage
fields = Fields(fields=[{"name": "foo"}]) "foo" in fields # True "bar" in fields # False
- __getitem__(key: str) 'opengui.Field'¶
Retrieve a field by name or number
- Parameters:
key (str) – field name
- Return type:
Usage
fields = opengui.Fields(fields=[ {"name": "a"}, { "name": "b", "fields": [ { "name": "c" } ] } ]) fields[0].name # "a" fields[1][0].name # "c" fields["a"].name # "a" fields["b"]["c"].name # "c"
- __iter__()¶
Allows iteration over fields
Usage
fields = Fields(fields=[{"name": "foo"},{"name": "bar"}]) for field in fields: field.name # "foo" # "bar"
- __len__() int¶
Returns the number of fields
- Return type:
int
Usage
fields = Fields(fields=[{"name": "foo"},{"name": "bar"}]) len(fields) # 2
- append(*args, **kwargs)¶
Adds a field (as dict) to these Fields
- Parameters:
args – single arg dict to use as kwargs
kwargs – kwargs to use in
Fieldcreation
- Raises:
DuplicateName – if name is already used
MissingName – if no name is sent
Usage
fields = opengui.Fields(values={"a": 1}, originals={"a": 2}) fields.append({"name": "a", "label": "A"}) fields.order[0].name # a fields.order[0].content["label"] # "A" fields.order[0].value # 1 fields.order[0].original # 2
- extend(fields: 'list[dict]')¶
Adds a list of fields
- Parameters:
fields (list[dict]) – List of field dicts (not instances)
Usage
fields = opengui.Fields() fields.extend([ {"name": "a"}, {"name": "b"} ]) len(fields.order) # 2 fields.order[0].name # "a" fields.order[1].name # "b"
- to_dict() dict¶
Returns dict representation of fields
- Return type:
dict
Usage
fields = opengui.Fields( fields=[ {"name": "a", "label": "A"}, {"name": "b"} ], errors=['boo'], valid=True, ready=False )) fields.to_dict() # { # "fields": [ # {"name": "a", "label": "A"}, # {"name": "b"} # ], # "errors": [ # "boo" # ], # "valid": True, # "ready": False # }
- to_list() 'list[dict]'¶
Returns list of field dicts
- Return type:
list[dict]
Usage
fields = opengui.Fields(fields=[ {"name": "a", "label": "A"}, {"name": "b"} ]) fields.to_list() # [ # {"name": "a", "label": "A"}, # {"name": "b"} # ]
- update(*args, **kwargs)¶
If exists, updates field, adds field if not
- Parameters:
args – single arg dict to use as kwargs
kwargs – kwargs to use in
Fieldupdate
- Raises:
MissingName – if no name is sent
Usage
fields = opengui.Fields(values={"a": 1}, originals={"a": 2}) fields.update({"name": "a", "label": "A"}) fields.order[0].name # a fields.order[0].content["label"] # "A" fields.order[0].value # 1 fields.order[0].original # 2 fields.update({"name": "a", "more": "B"}) fields.order[0].content["more"] # "B"
- validate(store=True) bool¶
Validates the data in all fields, even if validation isn’t set. Returns errors.
If if a key is values doesn’t matcha a field, adds ‘unknown field’ to errors
Calls validate on all fields
If validation is set, calls the function with this and errors
- Parameters:
store – whether to store the errors (if any) and valid
- Returns:
Whether everything is valid
- Return type:
bool