Skip to content

Commit

Permalink
Merge branch 'iamarnavgarg-patch-1' of https://github.com/iamarnavgar…
Browse files Browse the repository at this point in the history
…g/ckan into iamarnavgarg-iamarnavgarg-patch-1
  • Loading branch information
amercader committed Nov 15, 2019
2 parents 746cd7e + 712647f commit cb8f336
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
7 changes: 4 additions & 3 deletions ckan/logic/__init__.py
@@ -1,18 +1,19 @@
# encoding: utf-8

#encoding: utf-8

import functools
import logging
import re
import sys
from collections import defaultdict

import formencode.validators
from six import string_types, text_type

import ckan.model as model
import ckan.authz as authz
import ckan.lib.navl.dictization_functions as df
import ckan.plugins as p
import ckan.logic.validators as valid_one_of

from ckan.common import _, c

Expand Down Expand Up @@ -674,7 +675,7 @@ def get_validator(validator):
_validators_cache.update(validators)
validators = _import_module_functions('ckan.logic.validators')
_validators_cache.update(validators)
_validators_cache.update({'OneOf': formencode.validators.OneOf})
_validators_cache.update({'OneOf': valid_one_of.one_of})
converters = _import_module_functions('ckan.logic.converters')
_validators_cache.update(converters)

Expand Down
12 changes: 12 additions & 0 deletions ckan/logic/validators.py
@@ -1,3 +1,4 @@

# encoding: utf-8

import collections
Expand Down Expand Up @@ -858,3 +859,14 @@ def email_validator(value, context):
if not email_pattern.match(value):
raise Invalid(_('Email {email} is not a valid format').format(email=value))
return value

def one_of(list_of_value):
''' Implementation of OneOf method
for Python Library Formencode
'''
def callable(value):
if value not in list_of_value:
raise Invalid(_('Value must be one of {}'.format(list_of_value)))
return value


14 changes: 14 additions & 0 deletions ckan/tests/logic/test_validators.py
@@ -1,3 +1,4 @@

# encoding: utf-8

'''Unit tests for ckan/logic/validators.py.
Expand Down Expand Up @@ -667,4 +668,17 @@ def call_validator(*args, **kwargs):
errors[key] = []
call_validator(key, {key: url}, errors, None)

class TestOneOfValidator(object):

def test_val_in_list(self):
cont = [1,2,3,4]
func = validators.one_of(cont)
assert_equals(func(1),1)

@raises_Invalid
def test_val_not_in_list(self):
cont = [1,2,3,4]
func = validators.one_of(cont)
raises_Invalid(func)(5)

# TODO: Need to test when you are not providing owner_org and the validator queries for the dataset with package_show

0 comments on commit cb8f336

Please sign in to comment.