def validate_user_or_has_key(arg, proc=None): if not arg: key = 'alias-key' in proc and proc['alias-key'] if not key: # FIXME: FormValueError raise ValueError, "either `owner` or `access-key` is required. " else: # TODO: BL datastore v = util.nonzero_validator('an username or email. ')(arg) if not v: return False return util.validators['email'](arg) return True
validate_alias_path = util.regex_validator( '~?/?([-\w:,\+]+/)*?([-\w]*(\.+[-\w]+)?)?', "path contains only one dot ('.') and may be relative, absolute, or user-path.", False) validate_module_path_with_class = util.regex_validator( '(\w+\.)+?[A-Z]\w*', "library module path to builder, including classname. " "Use valid chararacters for variable names only. ", False) # FIXME: need to be usable as option validators? util.validators.update({ 'id': validate_id, 'key': validate_key, 'alias': (util.nonzero_validator('an alias'), validate_new_alias), 'user': validate_user_or_has_key, 'builder': validate_module_path_with_class, 'alias-path': validate_alias_path, }) class FormExtractor(extract.Extractor): default_priority = 950 fields_spec = [ #('handle','null-str',{'validators':('id','alias',)}), ('id','null-str',{'validators':('alias-path',)}), #('owner','href',{'validators':('user',)}),