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)
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)
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
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
def test_int_from_string(self): self.assertRaises(ParsingError, int_from_string, None) self.assertRaises(ParsingError, int_from_string, 'sausage') self.assertEqual(102, int_from_string('102')) self.assertEqual(0, int_from_string('')) self.assertRaises(ParsingError, int_from_string, '105.4')