-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget_inactive_members.py
64 lines (50 loc) · 2.1 KB
/
get_inactive_members.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import arrow
import members
from string import Template
import settings
def get_members_who_have_not_attended(cutoff_date, members):
result = list(m for m in members
if m['Joined Group on'] < cutoff_date and
m['Meetups attended'] == 0 and
m['Name'] not in settings.EXCEPTIONS)
result.sort(key=lambda x: x['Joined Group on'])
return result
def get_members_who_have_not_visited(cutoff_date, members):
result = list(m for m in members
if m['Last visited group on'] < cutoff_date and
m['Name'] not in settings.EXCEPTIONS)
result.sort(key=lambda x: x['Joined Group on'])
return result
def print_members(members, message):
count = 0
for i, m in enumerate(members, 1):
print i, m['Joined Group on'], m['Name'], '->', m['URL of Member Profile']
count += 1
message = Template(message).substitute(dict(count=count))
print '\n' + message
if __name__ == '__main__':
members = list(members.get_members(settings.SHORT_NAME, settings.ADMIN_EMAIL))
now = arrow.now()
# Get members who joined more than 6 months ago and have not yet attended a
# single event.
cutoff = now.replace(months=-6).replace(day=1)
cutoff_date = cutoff.date()
subset = get_members_who_have_not_attended(cutoff_date, members)
print_members(
subset,
'Members who joined before %s but have not attended any events: $count' % cutoff_date)
# Get members who haven't visited the site in a year.
cutoff = now.replace(months=-12).replace(day=1)
cutoff_date = cutoff.date()
subset = get_members_who_have_not_visited(cutoff_date, members)
print_members(
subset,
'Members who have not visited the meetup group site since %s: $count' % cutoff_date)
# print 'Press ENTER to delete inactive members'
# yes = raw_input()
#
# remover = meetuptools.MemberRemover(
# settings.SHORT_NAME, settings.REMOVAL_EXPLANATION)
# for i, member in enumerate(result, 1):
# print 'Removing member %s (%d of %d)' % (member['Name'], i, len(members))
# remover.remove(member)