-
Notifications
You must be signed in to change notification settings - Fork 2
/
api_membership.py
55 lines (49 loc) · 1.42 KB
/
api_membership.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
from flask import request, jsonify
from hackhub import app
import settings
#
@app.route("/api/membership", methods=['GET'])
def api_membership():
from payments import membership
return jsonify({'columns':('month','year','num_members'),
'membership':membership()})
@app.route("/api/membership/graph", methods=['GET'])
def api_membership_graph():
from payments import membership
import matplotlib
import numpy as np
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from cStringIO import StringIO
page='''
<html>
<body>
<img src="data:image/png;base64,{}"/>
</body>
</html>
'''
plt.xkcd()
fig = plt.figure()
members = membership()
members.reverse()
counts = [x[2] for x in members]
dates = [str(x[1])[-2:]+"/"+str(x[0]) for x in members]
ax = plt.subplot(111)
ax.bar(range(len(dates)),counts,width=1)
ax.set_xticks(np.arange(len(dates))+.5)
ax.set_xticklabels(dates, rotation=90)
plt.xlabel('Date')
plt.ylabel('Members')
plt.subplots_adjust(bottom=0.15)
io = StringIO()
fig.savefig(io, format='png')
data = io.getvalue().encode('base64')
return page.format(data)
@app.route(settings.EMAIL_LIST_PATH, methods=['GET'])
def members_list():
from payments import member_list
page = ''
for email, name in member_list().items():
line = name + " " + email + "\n"
page += line
return page