Distinguish between Paused and Expired members
This commit is contained in:
parent
1de7706216
commit
db9bd91f97
|
@ -70,7 +70,7 @@ def calc_member_status(expire_date, fake_date=None):
|
||||||
if today + timedelta(days=29) < expire_date:
|
if today + timedelta(days=29) < expire_date:
|
||||||
return 'Prepaid'
|
return 'Prepaid'
|
||||||
elif difference <= -3:
|
elif difference <= -3:
|
||||||
return 'Former Member'
|
return 'Expired Member'
|
||||||
elif today - timedelta(days=29) >= expire_date:
|
elif today - timedelta(days=29) >= expire_date:
|
||||||
return 'Overdue'
|
return 'Overdue'
|
||||||
elif today < expire_date:
|
elif today < expire_date:
|
||||||
|
@ -107,8 +107,11 @@ def tally_membership_months(member, fake_date=None):
|
||||||
member.expire_date = expire_date
|
member.expire_date = expire_date
|
||||||
member.status = status
|
member.status = status
|
||||||
|
|
||||||
if status == 'Former Member':
|
if status == 'Expired Member':
|
||||||
member.paused_date = expire_date
|
member.paused_date = today_alberta_tz()
|
||||||
|
msg = 'Member has expired: {} {}'.format(member.preferred_name, member.last_name)
|
||||||
|
alert_tanner(msg)
|
||||||
|
logger.info(msg)
|
||||||
|
|
||||||
member.save()
|
member.save()
|
||||||
logging.debug('Tallied %s membership months: updated.', member)
|
logging.debug('Tallied %s membership months: updated.', member)
|
||||||
|
|
|
@ -183,9 +183,13 @@ class MemberViewSet(Base, Retrieve, Update):
|
||||||
if not is_admin_director(self.request.user):
|
if not is_admin_director(self.request.user):
|
||||||
raise exceptions.PermissionDenied()
|
raise exceptions.PermissionDenied()
|
||||||
member = self.get_object()
|
member = self.get_object()
|
||||||
member.status = 'Former Member'
|
member.status = 'Paused Member'
|
||||||
member.paused_date = utils.today_alberta_tz()
|
member.paused_date = utils.today_alberta_tz()
|
||||||
member.save()
|
member.save()
|
||||||
|
|
||||||
|
msg = 'Member has been paused: {} {}'.format(member.preferred_name, member.last_name)
|
||||||
|
utils.alert_tanner(msg)
|
||||||
|
logger.info(msg)
|
||||||
return Response(200)
|
return Response(200)
|
||||||
|
|
||||||
@action(detail=True, methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
|
|
32
apiserver/distinguish_paused_expired.py
Executable file
32
apiserver/distinguish_paused_expired.py
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
# will not work after expired date change
|
||||||
|
# =======================================
|
||||||
|
|
||||||
|
import django, sys, os
|
||||||
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings'
|
||||||
|
django.setup()
|
||||||
|
|
||||||
|
from dateutil import relativedelta
|
||||||
|
|
||||||
|
from apiserver.api import models
|
||||||
|
|
||||||
|
members = models.Member.objects.all()
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
for m in members:
|
||||||
|
if m.paused_date and m.status == 'Former Member':
|
||||||
|
print('Former member', m.preferred_name, m.last_name)
|
||||||
|
|
||||||
|
if m.paused_date == m.expire_date:
|
||||||
|
new_status = 'Expired Member'
|
||||||
|
new_paused_date = m.paused_date + relativedelta.relativedelta(months=3)
|
||||||
|
print(' Moving paused date', m.paused_date, '-->', new_paused_date)
|
||||||
|
m.paused_date = new_paused_date
|
||||||
|
else:
|
||||||
|
new_status = 'Paused Member'
|
||||||
|
|
||||||
|
print(' Setting status to', new_status)
|
||||||
|
m.status = new_status
|
||||||
|
count += 1
|
||||||
|
m.save()
|
||||||
|
|
||||||
|
print('Processed', count)
|
|
@ -30,6 +30,8 @@ export const statusColor = {
|
||||||
'Due': 'yellow',
|
'Due': 'yellow',
|
||||||
'Overdue': 'red',
|
'Overdue': 'red',
|
||||||
'Former Member': 'black',
|
'Former Member': 'black',
|
||||||
|
'Paused Member': 'black',
|
||||||
|
'Expired Member': 'black',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const BasicTable = (props) => (
|
export const BasicTable = (props) => (
|
||||||
|
|
Loading…
Reference in New Issue
Block a user