Each election should only have one set of results; use UNIQUE to enforce.
[conservancy:voting.git] / bin / memberlist.py
1 #!/usr/bin/env python
2 '''Prints the current member list as JSON'''
3
4 #    This program is free software: you can redistribute it and/or modify
5 #    it under the terms of the GNU General Public License as published by
6 #    the Free Software Foundation, either version 3 of the License, or
7 #    (at your option) any later version.
8 #
9 #    This program is distributed in the hope that it will be useful,
10 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 #    GNU General Public License for more details.
13 #
14 #    You should have received a copy of the GNU General Public License
15 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17
18 try:
19     import json
20 except ImportError:
21     import simplejson as json
22
23 from get_renewees import execute_query, Member
24
25 __author__ = "Tobias Mueller"
26 __license__ = "GPLv3+"
27 __email__ = "tobiasmue@gnome.org"
28
29 query = ("SET NAMES 'utf8'; "
30          "SELECT CONCAT(firstname, ';', lastname, ';', email, ';', "
31          "              last_renewed_on) "
32          " FROM foundationmembers"
33          " WHERE DATE_SUB(CURDATE(), INTERVAL 2 YEAR) <= last_renewed_on"
34          " ORDER BY lastname, firstname")
35       
36
37 def get_current_electorate():
38     infile = execute_query(query)
39     memberlist = [Member.from_csv(line.strip()) for line in infile]
40
41     return memberlist
42             
43
44 def get_json_memberlist():
45     members = get_current_electorate()
46     objects = [
47         {'firstname': o.firstname,
48          'lastname': o.lastname,
49          'email': o.email,
50          'last_renewed_on': o.token_or_last_renewed_on,
51         }
52         for o in members]
53     
54     j = json.dumps(objects, indent=4)
55     return j
56
57 if __name__ == '__main__':
58     print get_json_memberlist()