File diff 7156529ceb23 → 8516134687e8
import2ledger/hooks/ledger_entry.py
Show inline comments
...
 
@@ -224,7 +224,7 @@ class AccountSplitter:
 
class Template:
 
    ACCOUNT_SPLIT_RE = re.compile(r'(?:\t|  )\s*')
 
    DATE_FMT = '%Y/%m/%d'
 
    PAYEE_LINE_RE = re.compile(r'\{(\w*_)*date\}')
 
    PAYEE_LINE_RE = re.compile(r'^\{(\w*_)*date\}\s')
 
    SIGNED_CURRENCY_FMT = '¤#,##0.###;¤-#,##0.###'
 
    UNSIGNED_CURRENCY_FMT = '#,##0.### ¤¤'
 

	
...
 
@@ -234,6 +234,7 @@ class Template:
 
                 unsigned_currency_fmt=UNSIGNED_CURRENCY_FMT,
 
                 template_name='<template>'):
 
        self.date_fmt = date_fmt
 
        self.date_field = 'date'
 
        self.splitter = AccountSplitter(
 
            signed_currencies, signed_currency_fmt, unsigned_currency_fmt, template_name)
 

	
...
 
@@ -273,7 +274,9 @@ class Template:
 
            line1 = next(lines)
 
        except StopIteration:
 
            return
 
        if self.PAYEE_LINE_RE.match(line1):
 
        match = self.PAYEE_LINE_RE.match(line1)
 
        if match:
 
            self.date_field = match.group(0)[1:-2]
 
            yield '\n' + line1
 
        else:
 
            yield '\n{date} {payee}'
...
 
@@ -293,16 +296,16 @@ class Template:
 
        # template_vars must have these keys.  Raise a KeyError if not.
 
        template_vars['currency']
 
        template_vars['payee']
 
        try:
 
            date = template_vars['date']
 
        except KeyError:
 
            date = datetime.date.today()
 
        if template_vars.get(self.date_field) is None:
 
            raise errors.UserInputConfigurationError(
 
                "entry needs {} field but that's not set by the importer".format(
 
                    self.date_field,
 
                ), self.splitter.template_name)
 
        render_vars = {
 
            'amount': strparse.currency_decimal(template_vars['amount']),
 
            'date': date.strftime(self.date_fmt),
 
        }
 
        for key, value in template_vars.items():
 
            if key.endswith('_date'):
 
            if value is not None and (key == 'date' or key.endswith('_date')):
 
                render_vars[key] = value.strftime(self.date_fmt)
 
        all_vars = collections.ChainMap(render_vars, template_vars)
 
        return ''.join(f(all_vars) for f in self.format_funcs)