Projet

Général

Profil

Development #77911

Mis à jour par Frédéric Péters il y a 11 mois

On gère le cas des entiers,

<pre>
...
value_is_int = isinstance(self.value, int) or value_is_list_of_int
...
if self.field.key in ['item', 'string'] and value_is_int:
# integer cast of db values
attribute = "(CASE WHEN %s~E'^\\\\d{1,9}$' THEN (%s)::int ELSE NULL END)" % (
</pre>

+ dans wcs/variables.py,

<pre>
def format_value(self, op, value, field):
def check_int(val):
try:
# cast to integer so it can be used with numerical operators
# (limit to 32bits to match postgresql integer range)
int_value = int(val)
if -(2**31) <= int_value < 2**31 and (int_value == 0 or str(value)[0] != '0'):
return int_value
except (ValueError, TypeError):
return str(val)
return val
</pre>

mais si on reçoit decimal ou float en entrée, 1/ on ne détectera pas qu'il s'agit de nombres, 2/ on ne fera pas le cast approprié dans la db.

Retour