def __setitem__(self, key: str, value: Union[str, int, float, datetime.datetime]): # Check for key type if not isinstance(key, str): raise ValueError( "{} is not of type str, but is {} instead.".format( key, type(key))) if not is_valid_property_name(key): raise ValueError("This property name is not valid: {}".format(key)) # None does not make sense in this context. The caller should use __delitem__ instead. if value is None: raise ValueError("Value can not be None. Delete it instead!") # Property types are determined by their name. As a result, we expect that type. expected_type = get_property_primitive_type(key) # Implicitly convert ints to floats (but not the other way around) if expected_type is float and isinstance(value, int): value = float(value) if not isinstance(value, expected_type): raise ValueError( "Expected type {} for key {}. Got {} with type {} instead.". format(expected_type, key, value, type(value))) super().__setitem__(key, value)
def validate_field_map(value): required = set(REQUIRED) name_errors = [] for k in value.keys(): required.discard(k) if not amcates.is_valid_property_name(k): name_errors.append(k) if name_errors: raise forms.ValidationError("Invalid property name(s): {}".format(", ".join(name_errors))) if required: raise forms.ValidationError("Missing required article field(s): {}".format(", ".join(required)))
def validate_field_map(value): required = set(REQUIRED) name_errors = [] for k in value.keys(): required.discard(k) if not amcates.is_valid_property_name(k): name_errors.append(k) if name_errors: raise forms.ValidationError("Invalid property name(s): {}".format( ", ".join(name_errors))) if required: raise forms.ValidationError( "Missing required article field(s): {}".format( ", ".join(required)))
def format_field_name(self, name, type): name = "{}_{}".format(name, type) if type and type != "default" else name if not is_valid_property_name(name): raise Exception("Invalid property name: {}".format(name)) return name
def validate_property_name(value, type): if type != "default": value = "{}_{}".format(value, type) if not is_valid_property_name(value): raise forms.ValidationError("Invalid property name: {}".format(value))