Ejemplo n.º 1
0
    def __init__(self, name, **kwargs):
        if 'values' not in kwargs and 'callback' not in kwargs:
            raise NoSelectionError("Selection check must have iterable values or a callback function")

        self.callback = kwargs.pop('callback', None)
        self.use_callback = True if self.callback is not None else False

        self.allow_none = kwargs.pop('allow_none', False)
        self.required = kwargs.get('required', True)
        if not self.required:
            self.allow_none = True

        try:
            self._values = list(kwargs.pop('values', []))
        except:
            raise BadSelectionsError("Selection must be iterable")

        self._values = [val for val in self._values if val]

        self.ignore_case = self._boolCheck(kwargs.pop('ignore_case', True),
            normalize=True)

        XCheck.__init__(self, name, **kwargs)
        self._object_atts.extend(['ignore_case', 'values',
            'use_callback', 'allow_none'])

        if not self.use_callback and not self.values:
            raise NoSelectionError("must have values for selection test")

        for v in self._values:
            if not isinstance(v, basestring):
                raise BadSelectionsError("value %s is not string type" % v)
Ejemplo n.º 2
0
 def __init__(self, name, **kwargs):
     self.min = NINF
     self.max = INF
     self.error = XCheckError
     XCheck.__init__(self, name, **kwargs)
     self._object_atts.extend(["min", "max"])
     self.as_string = False
Ejemplo n.º 3
0
    def __init__(self, name, **kwargs):

        self.delimiter = kwargs.pop('delimiter', ',')
        try:
            self._values = list(kwargs.pop('values', []))
        except:
            raise BadSelectionsError('List values must be iterable')

        self.callback = kwargs.pop('callback', None)

        self.allow_duplicates = kwargs.pop('allow_duplicates', False)
        self.min_items = int(kwargs.pop('min_items', 0) )
        self.max_items = int(kwargs.pop('max_items', -1) )
        self.ignore_case = self._boolCheck(
            kwargs.pop('ignore_case', False),
            normalize=True)

        if self.max_items in [ -1, INF]:
            self.max_items = INF

        self.as_string = self._boolCheck(
            kwargs.pop('as_string', False),
            normalize=True)

        XCheck.__init__(self, name, **kwargs)
        self._object_atts.extend(['delimiter', 'values', 'allow_duplicates',
            'min_items', 'max_items', 'ignore_case', 'as_string'])
Ejemplo n.º 4
0
    def __init__(self, name, **kwargs):
        self.allow_none = get_bool(kwargs.pop('ignore_case', False))
        self.format = kwargs.pop('format', "%a %b %d %H:%M:%S %Y")
        self.formats = kwargs.pop('formats', [])
        self.min_datetime = kwargs.pop('min_datetime',
            datetime.datetime.min.replace(year=1900))
        self.max_datetime = kwargs.pop('max_datetime', datetime.datetime.max)
        #print self.min_datetime
        XCheck.__init__(self, name, **kwargs)
        self._object_atts.extend(['allow_none', 'format', 'formats',
            'min_datetime', 'max_datetime'])


        if not isinstance(self.min_datetime, datetime.datetime):
            try:
                self.min_datetime = datetime.datetime.strptime(
                    self.min_datetime, self.format)
            except:
                raise self.error("cannot parse minimum date")

        if not isinstance(self.max_datetime, datetime.datetime):
            try:
                self.max_datetime = datetime.datetime.strptime(
                    self.max_datetime, self.format)
            except:
                raise self.error("cannot parse maximum date")

        self.as_datetime =  False
        self.as_struct = False
        self.as_string =  True
        self.as_date = False
Ejemplo n.º 5
0
    def test_get_optional_elem_value(self):
        ch = XCheck('thing')
        ch.add_child(TextCheck('item', min_occurs = 0))

        elem = ET.Element('thing')

        w = Wrap(ch, elem)

        self.assertEqual(w._get_elem_value('item'), '')
Ejemplo n.º 6
0
    def __call__(self, item, **kwargs):
        self.logger.debug('__call__ %s with %s (allow_none is %s)',
             self.name, item, self.allow_none)
        if item is None and self.allow_none:
            return True

        return XCheck.__call__(self, item, **kwargs)
Ejemplo n.º 7
0
def issue7():
    whenCheck = DatetimeCheck('when', format="%m/%d/%Y")
    when = ET.fromstring('<when>10/12/2013</when>')
    print whenCheck(when)
    when_dict =  whenCheck.to_dict(when)
    print when_dict
    new_when = whenCheck.from_dict(when_dict)
    ET.dump( new_when )
    print whenCheck(new_when)

    event = XCheck('event')
    event.addattribute(whenCheck)

    party = ET.fromstring('<event when="10/12/2013" />')
    print "Checking Party:", event(party)
    party_as_dict = event.to_dict(party)
    print party_as_dict
Ejemplo n.º 8
0
    def setUp(self):
        #~ dude = XCheck('dude')
        nick = BoolCheck('nick', required=False)
        fname = TextCheck('first', min_length = 1)
        fname.addattribute(nick)



        lname = TextCheck('last', min_length = 1)
        code = IntCheck('code', min_occurs = 1, max_occurs = 5)
        code.addattribute(TextCheck('word', required=False) )
        name = XCheck('name', children=[fname, lname, code])

        emailtype = SelectionCheck('type', values = ['home','work', 'personal'])
        email = EmailCheck('email', max_occurs=2)
        email.addattribute(emailtype)
        street = TextCheck('street')
        city = TextCheck('city')

        address = XCheck('address', children = [street, city, email], max_occurs = 4)
        self.address = address
        dude = XCheck('dude', children=[name, address])
        idch = IntCheck('id', required=True)
        dude.addattribute(idch)

        elem = ET.fromstring("""<dude id="1">
        <name>
            <first nick="true">Josh</first>
            <last>English</last>
            <code>12</code>
            <code word="answer">42</code>
        </name>
        <address>
            <street>100 Main St</street>
            <city>Podunk</city>
            <email type="home">[email protected]</email>
            <email type="work">[email protected]</email>
        </address>
        <address>
            <street>318 West Nowhere Ln</street>
            <city>East Podunk</city>
            <email type="personal">[email protected]</email>
        </address>
        </dude>""")
        self.w = Wrap(dude, elem)
Ejemplo n.º 9
0
    def setUp(self):
        nick = BoolCheck('nick', required=False)
        fname = TextCheck('first', min_length = 1)
        fname.addattribute(nick)

        lname = TextCheck('last', min_length = 1)
        code = IntCheck('code', min_occurs = 1, max_occurs = 5)
        code.addattribute(TextCheck('word', required=False) )
        ch = XCheck('name', children=[fname, lname, code])
        idch = IntCheck('id', required=True)
        ch.addattribute(idch)
        elem = ET.fromstring("""<name id="1">
        <first nick="true">Josh</first>
        <last>English</last>
        <code>12</code>
        <code word="answer">42</code>
        </name>""")
        self.w = Wrap(ch, elem)
Ejemplo n.º 10
0
    def __call__(self, item, **kwargs):
        self.as_datetime = kwargs.pop('as_datetime', False)
        self.as_struct = kwargs.pop('as_struct', False)
        self.as_string = kwargs.pop('as_string', False)
        self.as_date = kwargs.pop('as_date', False)



        kwargs['normalize'] = any(
            [self.as_datetime, self.as_struct, self.as_string, self.as_date])

        return XCheck.__call__(self, item, **kwargs)
Ejemplo n.º 11
0
class Issue10Test(unittest.TestCase):
    def setUp(self):
        self.ch = XCheck('test')
        self.ch.addattribute(SelectionCheck('value', values=['a', 'b'], required=False))

    def tearDown(self):
        del self.ch

    def testGoodValues(self):
        self.assertTrue(self.ch('<test value="a" />'))
        self.assertTrue(self.ch('<test value="b" />'))

    def testBadValues(self):
        self.assertRaises(self.ch.error, self.ch, "<test value='c' />")

    def testMissing(self):
        self.assertTrue(self.ch('<test />'))

    def testPassingNone(self):

        v = self.ch.get('value')
##        v.logger.setLevel(logging.DEBUG)
        self.assertTrue(v(None))
Ejemplo n.º 12
0
 def __call__(self, item, **kwargs):
     self.as_string = kwargs.pop('as_string', False)
     if self.as_string:
         kwargs['normalize'] = True
     return XCheck.__call__(self, item, **kwargs)
Ejemplo n.º 13
0
 def __init__(self, name, **kwargs):
     self.none_is_false = kwargs.pop('none_is_false', True)
     XCheck.__init__(self, name, **kwargs)
     self._object_atts.append('none_is_false')
     self.as_string = False
Ejemplo n.º 14
0
 def setUp(self):
     self.ch = XCheck('test')
     self.ch.addattribute(SelectionCheck('value', values=['a', 'b'], required=False))
Ejemplo n.º 15
0
 def __call__(self, item, **kwargs):
     self.as_string = kwargs.pop("as_string", False)
     if self.as_string:
         kwargs["normalize"] = True
     return XCheck.__call__(self, item, **kwargs)
Ejemplo n.º 16
0
 def test_month_and_day_only_as_attribute(self):
     x = XCheck('a')
     x.add_attribute(DatetimeCheck('d', format='%m-%d'))
     self.assertTrue(x('<a d="01-01"/>'))