diff --git a/src/squarepay/cokelog.py b/src/squarepay/cokelog.py index 96e26eff83632dfa28ae3ae349368ee346ac48b7..0921dae57df52ef57bb019cf58a4d5869e558e06 100644 --- a/src/squarepay/cokelog.py +++ b/src/squarepay/cokelog.py @@ -10,7 +10,7 @@ if COKELOG is None: log.warning("COKELOG_PATH is not defined, cannot sync payment status from dispense to DB") ALL_REGEX = r"^(?P<date>[A-Za-z]{3}\s+\d+\s[\d:]{8})\s(\w+)\sodispense2:\sdispense '([^']+)' \((?P<item>(coke|pseudo|snack|door):(\d{1,3}))\) for (?P<for>\w+) by (?P<by>\w+) \[cost\s+(\d+), balance\s+(\d+)\]$" -MEMBERSHIP_REGEX = r"^(?P<date>[A-Za-z]{3}\s+\d+\s[\d:]{8})\s(\w+)\sodispense2:\sdispense '([^']+)' \((?P<item>(pseudo):(\d{1,3}))\) for (?P<for>\w+) by (?P<by>\w+) \[cost\s+(\d+), balance\s+(\d+)\]$" +MEMBERSHIP_REGEX = r"^(?P<date>[A-Za-z]{3}\s+\d+\s[\d:]{8})\s(\w+)\sodispense2:\sdispense '(membership [^']+)' \((?P<item>(pseudo):(\d{1,3}))\) for (?P<for>\w+) by (?P<by>\w+) \[cost\s+(\d+), balance\s+(\d+)\]$" class CokeLog: regex = ALL_REGEX @@ -83,7 +83,7 @@ class CokeLog: continue if dispense_by is not None and r["by"] != dispense_by: continue - return r["date"] + return r return None # create a "static" instance of cokelog @@ -105,15 +105,21 @@ def try_update_from_dispense(membership): else: member_cokelog.open() - # look for entries like "dispense 'membership ...' (pseudo:) for <user> by <user> ..." - ms_disp = member_cokelog.get_last_dispense( - membership.member.username, - membership.get_dispense_item(), - ) + # look for entries like "dispense 'membership ...' (pseudo:..) for <user> by <user> ..." + ms_disp = member_cokelog.get_last_dispense(membership.member.username) if ms_disp is not None: - membership.date_paid = ms_disp - membership.payment_method = 'dispense' - return True + if ms_disp['item'] != membership.get_dispense_item(): + log.warn("user '%s': paid incorrect item '%s', not '%s' in dispense." % ( + membership.member.username, ms_disp['item'], membership.get_dispense_item() + )) + else: + membership.date_paid = ms_disp['date'] + membership.payment_method = 'dispense' + log.debug("user '%s': paid in cokelog" % membership.member.username) + return True + else: + log.info("user '%s': no paid membership in cokelog" % membership.member.username) + return False - \ No newline at end of file +