membershipViewer: Add basic front desk web page thingy
This commit is contained in:
parent
c0d7ef4f86
commit
6048990ea9
56
membershipViewer.py
Normal file
56
membershipViewer.py
Normal file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env python3
|
||||
import re
|
||||
|
||||
from flask import Flask, render_template
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
from common import *
|
||||
|
||||
def parse_list(member, regex):
|
||||
data_list = []
|
||||
for key, value in member.items():
|
||||
match = re.match(regex, key)
|
||||
if match is not None and value != '':
|
||||
data_list.append(match.group(1))
|
||||
|
||||
return ", ".join(data_list)
|
||||
|
||||
def parse_members(members):
|
||||
data = []
|
||||
for member in members:
|
||||
props = {
|
||||
'Name': member['Account Name'],
|
||||
'Renewal Date': member['Renewal Date'],
|
||||
'Card Number': member['Access Card Facility Code'] + '-' \
|
||||
+ member['Access Card Number'],
|
||||
'Account on Hold': "Yes" if member['Account on Hold'] != '' else "No" }
|
||||
|
||||
certifications = []
|
||||
access = []
|
||||
levels = []
|
||||
|
||||
props['Certifications'] = parse_list(member, 'Certified: (.*)')
|
||||
props['Door Access'] = parse_list(member, 'Access (.*)\?')
|
||||
props['Memebership Level'] = parse_list(member, 'CMS (.*)')
|
||||
|
||||
data.append(props)
|
||||
|
||||
return data
|
||||
|
||||
@app.route("/")
|
||||
def main():
|
||||
# maybe not now: membership agreement signed
|
||||
# TODO: renewal date
|
||||
|
||||
members = getMembershipworksData(
|
||||
"lvl,xws,xms,xsc,xas,xfd,xac,phn,eml,lbl,xcf,nam,end")
|
||||
|
||||
data = parse_members(members)
|
||||
headers = ['Name', 'Certifications', 'Door Access', 'Memebership Level',
|
||||
'Card Number', 'Renewal Date', 'Account on Hold']
|
||||
|
||||
return render_template("members.html", headers=headers, members=data)
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True, host='0.0.0.0')
|
44
templates/members.html
Normal file
44
templates/members.html
Normal file
@ -0,0 +1,44 @@
|
||||
<html>
|
||||
<head>
|
||||
<title> CMS Members </title>
|
||||
<style>
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
td, th{
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
tr[onHold=Yes] {
|
||||
background-color: #f66;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Members</h1>
|
||||
<table>
|
||||
<tr>
|
||||
{% for header in headers %}
|
||||
<th> {{ header }} </th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% for member in members %}
|
||||
<tr onHold ="{{ member['Account on Hold'] }}">
|
||||
{% for header in headers %}
|
||||
<td> {{ member[header] }} </td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user