From 690010a8d23be97502199fc89977bde8de84aa6e Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Mon, 7 Apr 2014 07:43:22 +0200 Subject: [PATCH] add DateGuesser filter --- weboob/tools/browser2/filters.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/weboob/tools/browser2/filters.py b/weboob/tools/browser2/filters.py index af848a46..aae73b81 100644 --- a/weboob/tools/browser2/filters.py +++ b/weboob/tools/browser2/filters.py @@ -332,6 +332,28 @@ class Date(DateTime): if datetime is not None: return datetime.date() + +class DateGuesser(Filter): + def __init__(self, selector, date_guesser, **kwargs): + super(DateGuesser, self).__init__(selector) + self.date_guesser = date_guesser + self.kwargs = kwargs + + def filter(self, values): + date_guesser = self.date_guesser + # In case Env() is used to kive date_guesser. + if isinstance(date_guesser, _Filter): + date_guesser = self.select(date_guesser) + + if isinstance(values, basestring): + values = re.split('[/-]', values) + if len(values) == 2: + day, month = map(int, values) + else: + raise ParseError('Unable to take (day,month) tuple from %r' % values) + return date_guesser.guess_date(day, month, **self.kwargs) + + class Time(Filter): klass = datetime.time regexp = re.compile(ur'(?P\d+):?(?P\d+)(:(?P\d+))?')