Beispiel #1
0
        def append_column(c, text, args):
            """add column c to the where clause using a clause that
            is relevant for that type of column"""
            arg = None
            if issubclass(c.type.__class__, camelot.types.Color):
                pass
            elif issubclass(c.type.__class__, camelot.types.File):
                pass
            elif issubclass(c.type.__class__, camelot.types.Code):
                codes = [u'%%%s%%' % s for s in text.split(c.type.separator)]
                codes = codes + ['%'] * (len(c.type.parts) - len(codes))
                arg = c.like(codes)
            elif issubclass(c.type.__class__, camelot.types.VirtualAddress):
                arg = c.like(('%', '%' + text + '%'))
            elif issubclass(c.type.__class__, camelot.types.Image):
                pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Integer):
                try:
                    arg = (c == utils.int_from_string(text))
                except (Exception, utils.ParsingError):
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Date):
                try:
                    arg = (c == utils.date_from_string(text))
                except (Exception, utils.ParsingError):
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Float):
                try:
                    float_value = utils.float_from_string(text)
                    precision = c.type.precision
                    if isinstance(precision, (tuple)):
                        precision = precision[1]
                    delta = 0.1**(precision or 0)
                    arg = sql.and_(c >= float_value - delta,
                                   c <= float_value + delta)
                except (Exception, utils.ParsingError):
                    pass
            elif issubclass(c.type.__class__, (sqlalchemy.types.String, )) or \
                            (hasattr(c.type, 'impl') and \
                             issubclass(c.type.impl.__class__, (sqlalchemy.types.String, ))):
                LOGGER.debug('look in column : %s' % c.name)
                arg = sql.operators.ilike_op(c, '%' + text + '%')

            if arg is not None:
                arg = sql.and_(c != None, arg)
                args.append(arg)
Beispiel #2
0
        def append_column( c ):
            """add column c to the where clause using a clause that
            is relevant for that type of column"""
            arg = None
            if issubclass(c.type.__class__, camelot.types.Color):
                pass
            elif issubclass(c.type.__class__, camelot.types.File):
                pass
            elif issubclass(c.type.__class__, camelot.types.Code):
                codes = [u'%%%s%%'%s for s in text.split(c.type.separator)]
                codes = codes + ['%']*(len(c.type.parts) - len(codes))
                arg = c.like( codes )
            elif issubclass(c.type.__class__, camelot.types.VirtualAddress):
                arg = c.like(('%', '%'+text+'%'))
            elif issubclass(c.type.__class__, camelot.types.Image):
                pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Integer):
                try:
                    arg = (c==utils.int_from_string(text))
                except ( Exception, utils.ParsingError ):
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Date):
                try:
                    arg = (c==utils.date_from_string(text))
                except ( Exception, utils.ParsingError ):
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Float):
                try:
                    float_value = utils.float_from_string(text)
                    precision = c.type.precision
                    if isinstance(precision, (tuple)):
                        precision = precision[1]
                    delta = 0.1**( precision or 0 )
                    arg = sql.and_(c>=float_value-delta, c<=float_value+delta)
                except ( Exception, utils.ParsingError ):
                    pass
            elif issubclass(c.type.__class__, (sqlalchemy.types.String, )) or \
                            (hasattr(c.type, 'impl') and \
                             issubclass(c.type.impl.__class__, (sqlalchemy.types.String, ))):
                LOGGER.debug('look in column : %s'%c.name)
                arg = sql.operators.ilike_op(c, '%'+text+'%')

            if arg is not None:
                arg = sql.and_(c != None, arg)
                args.append(arg)
Beispiel #3
0
                arg = c.like(('%', '%' + text + '%'))
            elif issubclass(c.type.__class__, camelot.types.Image):
                pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Integer):
                try:
                    arg = (c == utils.int_from_string(text))
                except Exception, utils.ParsingError:
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Date):
                try:
                    arg = (c == utils.date_from_string(text))
                except Exception, utils.ParsingError:
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Float):
                try:
                    float_value = utils.float_from_string(text)
                    precision = c.type.precision
                    if isinstance(precision, (tuple)):
                        precision = precision[1]
                    delta = 0.1**precision
                    arg = sql.and_(c >= float_value - delta,
                                   c <= float_value + delta)
                except Exception, utils.ParsingError:
                    pass
            elif issubclass(c.type.__class__, (Unicode, )) or \
                            (hasattr(c.type, 'impl') and \
                             issubclass(c.type.impl.__class__, (Unicode, ))):
                LOGGER.debug('look in column : %s' % c.name)
                arg = operators.ilike_op(c, '%' + text + '%')

            if arg is not None:
 def test_float_from_string(self):
     self.assertRaises(ParsingError, float_from_string, None)
     self.assertRaises(ParsingError, float_from_string, 'casserole')
     self.assertEqual(0.0, float_from_string(''))
     self.assertEqual(0.1, float_from_string('0.1'))
     self.assertEqual(5105.5, float_from_string('5105.5'))
Beispiel #5
0
                arg = c.like(('%', '%'+text+'%'))
            elif issubclass(c.type.__class__, camelot.types.Image):
                pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Integer):
                try:
                    arg = (c==utils.int_from_string(text))
                except Exception, utils.ParsingError:
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Date):
                try:
                    arg = (c==utils.date_from_string(text))
                except Exception, utils.ParsingError:
                    pass
            elif issubclass(c.type.__class__, sqlalchemy.types.Float):
                try:
                    float_value = utils.float_from_string(text)
                    precision = c.type.precision
                    if isinstance(precision, (tuple)):
                        precision = precision[1]
                    delta = 0.1**precision
                    arg = sql.and_(c>=float_value-delta, c<=float_value+delta)
                except Exception, utils.ParsingError:
                    pass
            elif issubclass(c.type.__class__, (Unicode, )) or \
                            (hasattr(c.type, 'impl') and \
                             issubclass(c.type.impl.__class__, (Unicode, ))):
                LOGGER.debug('look in column : %s'%c.name)
                arg = operators.ilike_op(c, '%'+text+'%')

            if arg is not None:
                arg = sql.and_(c != None, arg)
 def test_float_from_string(self):
     self.assertRaises(ParsingError, float_from_string, None)
     self.assertRaises(ParsingError, float_from_string, 'casserole')
     self.assertEqual(0.0, float_from_string(''))
     self.assertEqual(0.1, float_from_string('0.1'))
     self.assertEqual(5105.5, float_from_string('5105.5'))