accrual: Be case-insensitive when gathering payment-method.
This is a little nicer for the user, and lets us simplify surrounding case-handling code.
This commit is contained in:
parent
5085d4d8ef
commit
fd548f35f4
2 changed files with 18 additions and 15 deletions
|
@ -482,10 +482,7 @@ class OutgoingReport(BaseReport):
|
|||
'uswire': 'Domestic Wire',
|
||||
'vendorportal': 'Vendor Portal',
|
||||
}
|
||||
PAYMENT_METHOD_RE = re.compile(
|
||||
rf'^([A-Z]{{3}})\s+({"|".join(PAYMENT_METHODS)})$',
|
||||
re.IGNORECASE,
|
||||
)
|
||||
PAYMENT_METHOD_RE = re.compile(rf'^([a-z]{{3}})\s+({"|".join(PAYMENT_METHODS)})$')
|
||||
|
||||
def __init__(self, rt_wrapper: rtutil.RT, out_file: TextIO) -> None:
|
||||
super().__init__(out_file)
|
||||
|
@ -579,20 +576,26 @@ class OutgoingReport(BaseReport):
|
|||
'payment-amount': payment_amount,
|
||||
'payment-to': payment_to,
|
||||
}
|
||||
payment_methods = posts.meta_values('payment-method')
|
||||
payment_methods.discard(None)
|
||||
payment_method_count = len(payment_methods)
|
||||
if payment_method_count != 1:
|
||||
payment_methods = filters.iter_unique(
|
||||
post.meta['payment-method'].lower()
|
||||
for post in posts
|
||||
if isinstance(post.meta.get('payment-method'), str)
|
||||
)
|
||||
payment_method: Optional[str] = next(payment_methods, None)
|
||||
if payment_method is None:
|
||||
payment_method_count = "no"
|
||||
elif next(payment_methods, None) is None:
|
||||
pass
|
||||
else:
|
||||
payment_method_count = "multiple"
|
||||
payment_method = None
|
||||
if payment_method is None:
|
||||
self.logger.warning(
|
||||
"cannot set payment-method for rt:%s: %s metadata values found",
|
||||
ticket_id, payment_method_count,
|
||||
)
|
||||
else:
|
||||
payment_method = payment_methods.pop()
|
||||
if isinstance(payment_method, str):
|
||||
match = self.PAYMENT_METHOD_RE.fullmatch(payment_method)
|
||||
else:
|
||||
match = None
|
||||
match = self.PAYMENT_METHOD_RE.fullmatch(payment_method)
|
||||
if match is None:
|
||||
self.logger.warning(
|
||||
"cannot set payment-method for rt:%s: invalid value %r",
|
||||
|
@ -601,7 +604,7 @@ class OutgoingReport(BaseReport):
|
|||
else:
|
||||
cf_targets['payment-method'] = '{} {}'.format(
|
||||
match.group(1).upper(),
|
||||
self.PAYMENT_METHODS[match.group(2).lower()],
|
||||
self.PAYMENT_METHODS[match.group(2)],
|
||||
)
|
||||
|
||||
cf_updates = {
|
||||
|
|
2
setup.py
2
setup.py
|
@ -5,7 +5,7 @@ from setuptools import setup
|
|||
setup(
|
||||
name='conservancy_beancount',
|
||||
description="Plugin, library, and reports for reading Conservancy's books",
|
||||
version='1.4.0',
|
||||
version='1.4.1',
|
||||
author='Software Freedom Conservancy',
|
||||
author_email='info@sfconservancy.org',
|
||||
license='GNU AGPLv3+',
|
||||
|
|
Loading…
Reference in a new issue