Commit 4e159bc4 by Nicolas Joyard

Ajout formats de date supplémentaires

parent b036c3bc
......@@ -11,6 +11,22 @@ from sqlalchemy.sql import not_
from .schema import SchemaFactory
def parse_datetime(string):
formats = [
'%Y-%m-%d',
'%Y-%m-%dT%H:%M',
'%Y-%m-%dT%H:%M:%S'
]
for f in formats:
try:
return datetime.strptime(string, f)
except ValueError, exc:
pass
raise exc
class EndpointException(Exception):
pass
......@@ -21,7 +37,8 @@ class Endpoint(object):
'Integer': int,
'Unicode': lambda x: x,
'Boolean': lambda x: x.lower() in ('true', 'yes', '1'),
'Date': lambda x: datetime.strptime(x, '%Y-%m-%d').date()
'Date': lambda x: parse_datetime(x).date(),
'DateTime': lambda x: parse_datetime(x),
}
def __init__(self, api, ma, model, description=None, hidden=False):
......
......@@ -11,7 +11,7 @@ Suivant les champs utilisés, différents types de valeurs sont requis :
* Pour les champs de type texte, n'importe quelle chaine de caractère peut être utilisée
* Pour les champs numériques, seuls des chiffres peuvent être utilisés
* Pour les champs de type date, la date doit être au format `AAAA-MM-JJ`
* Pour les champs de type date, la date doit être dans l'un des formats `aaaa-mm-jj`, `aaaa-mm-jjThh:mm` ou `aaaa-mm-jjThh:mm:ss`
* Pour les champs de type booléen, les valeurs `true`, `yes`, `1` sont considérées comme vraies, toutes les autres comme fausses
Il est possible de spécifier un opérateur de comparaison sous la forme `champ__operateur=valeur`. Les opérateurs suivants sont disponibles :
......@@ -24,7 +24,7 @@ Il est possible de spécifier un opérateur de comparaison sous la forme `champ_
* `in`, `nin`: valeur parmi une liste ou absente d'une liste (les valeurs doivent alors être séparées par des virgules)
* `like`, `ilike`: comparaison de chaine avec jokers ; `ilike` est insensible à la casse (par exemple `prenom__ilike=jean%` cherche tous les prénoms commençant par "Jean")
La requête suivante permet par exemple de lister les acteurs décédés, dont le prénom contient "Jean", et nés après le 1er janvier 1945 : [`/rest/an/acteurs/?prenom__ilike=%jean%&date_deces__isnull=false&date_naissance__gt=1945-01-01`](/rest/an/acteurs/?prenom__ilike=%jean%&date_deces__isnull=false&date_naissance__gt=1945-01-01)
La requête suivante permet par exemple de lister les acteurs décédés, dont le prénom contient "Jean", et nés après le 1er janvier 1945 à midi : [`/rest/an/acteurs/?prenom__ilike=%jean%&date_deces__isnull=false&date_naissance__gt=1945-01-01T12:00`](/rest/an/acteurs/?prenom__ilike=%jean%&date_deces__isnull=false&date_naissance__gt=1945-01-01T12:00)
##### Recherche *full-text*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment