FrenchTransaction.parse takes a new optional argument 'vdate'
This commit is contained in:
parent
c452b2b0aa
commit
6a1ac6d6b6
1 changed files with 21 additions and 14 deletions
|
|
@ -66,7 +66,24 @@ class FrenchTransaction(Transaction):
|
||||||
else:
|
else:
|
||||||
self.amount = Decimal('0')
|
self.amount = Decimal('0')
|
||||||
|
|
||||||
def parse(self, date, raw):
|
def parse_date(self, date):
|
||||||
|
if date is None:
|
||||||
|
return NotAvailable
|
||||||
|
|
||||||
|
if not isinstance(date, (datetime.date, datetime.datetime)):
|
||||||
|
if date.isdigit() and len(date) == 8:
|
||||||
|
date = datetime.date(int(date[4:8]), int(date[2:4]), int(date[0:2]))
|
||||||
|
elif '/' in date:
|
||||||
|
date = datetime.date(*reversed([int(x) for x in date.split('/')]))
|
||||||
|
if not isinstance(date, (datetime.date, datetime.datetime)):
|
||||||
|
self._logger.warning('Unable to parse date %r' % date)
|
||||||
|
date = NotAvailable
|
||||||
|
elif date.year < 100:
|
||||||
|
date = date.replace(year=2000 + date.year)
|
||||||
|
|
||||||
|
return date
|
||||||
|
|
||||||
|
def parse(self, date, raw, vdate=None):
|
||||||
"""
|
"""
|
||||||
Parse date and raw strings to create datetime.date objects,
|
Parse date and raw strings to create datetime.date objects,
|
||||||
determine the type of transaction, and create a simplified label
|
determine the type of transaction, and create a simplified label
|
||||||
|
|
@ -87,19 +104,9 @@ class FrenchTransaction(Transaction):
|
||||||
* category: part of label representing the category
|
* category: part of label representing the category
|
||||||
* yy, mm, dd, HH, MM: date and time parts
|
* yy, mm, dd, HH, MM: date and time parts
|
||||||
"""
|
"""
|
||||||
if not isinstance(date, (datetime.date, datetime.datetime)):
|
self.date = self.parse_date(date)
|
||||||
if date.isdigit() and len(date) == 8:
|
self.vdate = self.parse_date(vdate)
|
||||||
date = datetime.date(int(date[4:8]), int(date[2:4]), int(date[0:2]))
|
self.rdate = self.date
|
||||||
elif '/' in date:
|
|
||||||
date = datetime.date(*reversed([int(x) for x in date.split('/')]))
|
|
||||||
if not isinstance(date, (datetime.date, datetime.datetime)):
|
|
||||||
self._logger.warning('Unable to parse date %r' % date)
|
|
||||||
date = NotAvailable
|
|
||||||
elif date.year < 100:
|
|
||||||
date = date.replace(year=2000 + date.year)
|
|
||||||
|
|
||||||
self.date = date
|
|
||||||
self.rdate = date
|
|
||||||
self.raw = to_unicode(raw.replace(u'\n', u' ').strip())
|
self.raw = to_unicode(raw.replace(u'\n', u' ').strip())
|
||||||
self.category = NotAvailable
|
self.category = NotAvailable
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue