web: fix cache invalidation for API
parent
74b72691e4
commit
f212be7223
|
@ -61,6 +61,8 @@ class MemberTransfer(db.Model):
|
|||
self.year = year
|
||||
self.month = month
|
||||
self.transfer = transfer
|
||||
mc.delete('kasownik-stats_for_month-{}-{}'.format(year, month))
|
||||
mc.delete('kasownik-cashflow-{}-{}'.format(year, month))
|
||||
|
||||
|
||||
class PaymentStatus(enum.Enum):
|
||||
|
@ -250,19 +252,16 @@ class Member(db.Model):
|
|||
else:
|
||||
return '{}@hackerspace.pl'.format(self.username)
|
||||
|
||||
def invalidate_cache(self):
|
||||
cache_key = 'kasownik-payment_status-{}'.format(self.username)
|
||||
mc.delete(cache_key)
|
||||
|
||||
def get_status(self):
|
||||
def get_status(self, force_refresh = False):
|
||||
"""It's better to call this after doing a full select of data."""
|
||||
cache_key = 'kasownik-payment_status-{}'.format(self.username)
|
||||
cache_data = mc.get(cache_key)
|
||||
if cache_data and cache_enabled:
|
||||
if cache_data and cache_enabled and not force_refresh:
|
||||
data = json.loads(cache_data)
|
||||
return data
|
||||
else:
|
||||
cache_data = self._get_status_uncached()
|
||||
mc.delete('kasownik-months_due-{}'.format(self.username))
|
||||
mc.set(cache_key, json.dumps(cache_data))
|
||||
return cache_data
|
||||
|
||||
|
|
|
@ -221,6 +221,7 @@ def admin_match_auto():
|
|||
matched = 0
|
||||
left = 0
|
||||
transfers_unmatched = logic.get_unmatched_transfers()
|
||||
affected_members = []
|
||||
for transfer in transfers_unmatched:
|
||||
matchability, member, months = transfer.get_matchability()
|
||||
if matchability == models.Transfer.MATCH_OK:
|
||||
|
@ -232,13 +233,15 @@ def admin_match_auto():
|
|||
mt = models.MemberTransfer(None, year, month, transfer)
|
||||
member.transfers.append(mt)
|
||||
db.session.add(mt)
|
||||
flash("Matched transfer {} to member {} for month {}-{}".format(transfer.id, member.username, year, month))
|
||||
flash("Matched transfer {} for {:.2f}PLN to member {} for month {}-{}".format(transfer.id, transfer.amount/100, member.username, year, month))
|
||||
year, month = member._yearmonth_increment((year,month))
|
||||
matched += 1
|
||||
member.invalidate_cache()
|
||||
affected_members.append(member)
|
||||
else:
|
||||
left += 1
|
||||
db.session.commit()
|
||||
for member in affected_members:
|
||||
member.get_status(force_refresh=True)
|
||||
flash("Matched %i, %i left" % (matched, left))
|
||||
return redirect(url_for("admin_fetch"))
|
||||
|
||||
|
@ -267,6 +270,7 @@ def match(username, uid, months):
|
|||
db.session.add(mt)
|
||||
|
||||
db.session.commit()
|
||||
member.get_status(force_refresh=True)
|
||||
return "ok, %i PLN get!" % transfer.amount
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue