From 695976f8c38a1af87b5231e21224f8b77473451a Mon Sep 17 00:00:00 2001 From: Lowik BOURGEOISAT Date: Fri, 19 Jul 2019 11:01:16 +0200 Subject: [PATCH] filters: Add dates to FormValue --- weboob/browser/filters/html.py | 12 +++++++++++- weboob/browser/tests/filters.py | 9 +++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/weboob/browser/filters/html.py b/weboob/browser/filters/html.py index f7fb2cfd2a..71e08adacc 100644 --- a/weboob/browser/filters/html.py +++ b/weboob/browser/filters/html.py @@ -16,7 +16,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with weboob. If not, see . - +import datetime from decimal import Decimal import lxml.html as html @@ -196,6 +196,16 @@ def filter(self, el): return int(el.attrib['value']) except KeyError: return self.default_or_raise(AttributeNotFound('Element %s does not have attribute value' % el)) + # datetime input + try: + if el.attrib.get('type', '') == 'date': + return datetime.datetime.strptime(el.attrib['value'], '%Y-%m-%d').date() + elif el.attrib.get('type', '') == 'time': + return datetime.datetime.strptime(el.attrib['value'], '%H:%M').time() + elif el.attrib.get('type', '') == 'datetime-local': + return datetime.datetime.strptime(el.attrib['value'], '%Y-%m-%dT%H:%M') + except KeyError: + return self.default_or_raise(AttributeNotFound('Element %s does not have attribute value' % el)) else: raise UnrecognizedElement('Element %s is not recognized' % el) elif el.tag == 'textarea': diff --git a/weboob/browser/tests/filters.py b/weboob/browser/tests/filters.py index 6836d7c506..b0f890dbe7 100644 --- a/weboob/browser/tests/filters.py +++ b/weboob/browser/tests/filters.py @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with weboob. If not, see . - +import datetime from decimal import Decimal from unittest import TestCase from lxml.html import fromstring @@ -62,9 +62,11 @@ def setUp(self): - + + + ''') @@ -76,6 +78,9 @@ def test_value(self): self.assertEqual(False, FormValue('//form//input[@name="test_checkbox2"]')(self.e)) self.assertEqual(20, FormValue('//form//input[@name="test_range"]')(self.e)) self.assertEqual('#fff666', FormValue('//form//input[@name="test_color"]')(self.e)) + self.assertEqual(datetime.date(2010, 11, 12), FormValue('//form//input[@name="test_date"]')(self.e)) + self.assertEqual(datetime.time(12, 13), FormValue('//form//input[@name="test_time"]')(self.e)) + self.assertEqual(datetime.datetime(2010, 11, 12, 13, 14), FormValue('//form//input[@name="test_datetime_local"]')(self.e)) class LinkTest(TestCase): -- GitLab