[tor-commits] [depictor/master] Refactor the vote_data code so that it handles dirauths being added/removed

tom at torproject.org tom at torproject.org
Wed Nov 2 19:56:30 UTC 2016


commit 91ba412c5dc206a2b4a3b98265e5838118d7022c
Author: Tom <tom at ritter.vg>
Date:   Wed Oct 26 14:54:01 2016 -0500

    Refactor the vote_data code so that it handles dirauths being added/removed
---
 data/consensus.cfg | 14 --------------
 write_website.py   | 31 +++++++++++++++++++++----------
 2 files changed, 21 insertions(+), 24 deletions(-)

diff --git a/data/consensus.cfg b/data/consensus.cfg
index 8452beb..c4a2142 100644
--- a/data/consensus.cfg
+++ b/data/consensus.cfg
@@ -15,20 +15,6 @@ bandwidth_authorities maatuska
 historical_bridge_authorities tonga
 historical_bridge_authorities bifrost
 
-# for creating tables in historical.db
-
-historical_dirauths faravahar
-historical_dirauths gabelmoo
-historical_dirauths dizum
-historical_dirauths moria1
-historical_dirauths urras
-historical_dirauths maatuska
-historical_dirauths longclaw
-historical_dirauths tor26
-historical_dirauths dannenberg
-historical_dirauths turtles
-
-
 # recognized tor consensus parameters
 
 known_params bwweightscale
diff --git a/write_website.py b/write_website.py
index cd51b4f..7216d03 100755
--- a/write_website.py
+++ b/write_website.py
@@ -33,7 +33,6 @@ CONFIG = stem.util.conf.config_dict('consensus', {
 	'ignored_authorities': [],
 	'bandwidth_authorities': [],
 	'known_params': [],
-	'historical_dirauths' : [],
 	'historical_bridge_authorities' : []
 })
 
@@ -122,25 +121,37 @@ def main():
 				runningRelays += 1
 		data[dirauth_nickname] = {'known' : len(vote.routers.values()), 'running' : runningRelays, 'bwlines' : bandwidthWeights}
 
+	vote_data_columns = set()
+	vote_data_schema = dbc.execute("PRAGMA table_info(vote_data)")
+	for c in vote_data_schema:
+		vote_data_columns.add(c[1].replace("_known", "").replace("_running", "").replace("_bwauth", "").lower())
+
 	insertValues = [unix_time(consensuses.values()[0].valid_after)]
 	createColumns = ""
+	insertColumns = "date"
 	insertQuestions = ""
-	for dirauth_nickname in CONFIG['historical_dirauths']:
+	import pdb
+	pdb.set_trace()
+	for dirauth_nickname in directory_authorities():
+		dirauth_nickname = dirauth_nickname.lower()
+		if vote_data_columns and dirauth_nickname not in vote_data_columns:
+			dbc.execute("ALTER TABLE vote_data ADD COLUMN " + dirauth_nickname + "_known integer")
+			dbc.execute("ALTER TABLE vote_data ADD COLUMN " + dirauth_nickname + "_running integer")
+			dbc.execute("ALTER TABLE vote_data ADD COLUMN " + dirauth_nickname + "_bwauth integer")
+			dbc.commit()
 		createColumns += dirauth_nickname + "_known integer, " + dirauth_nickname + "_running integer, " + dirauth_nickname + "_bwauth integer, "
-		insertQuestions += ",?,?,?"
 		if dirauth_nickname in votes:
+			insertColumns += ", " + dirauth_nickname + "_known" + ", " + dirauth_nickname + "_running" + ", " + dirauth_nickname + "_bwauth"
+			insertQuestions += ",?,?,?"
 			insertValues.append(data[dirauth_nickname]['known'])
 			insertValues.append(data[dirauth_nickname]['running'])
 			insertValues.append(data[dirauth_nickname]['bwlines'])
-		else:
-			insertValues.append(None)
-			insertValues.append(None)
-			insertValues.append(None)
 
-	dbc.execute("CREATE TABLE IF NOT EXISTS vote_data(date integer, " + createColumns + " PRIMARY KEY(date ASC));")
-	dbc.commit()
+	if not vote_data_columns:
+		dbc.execute("CREATE TABLE IF NOT EXISTS vote_data(date integer, " + createColumns + " PRIMARY KEY(date ASC));")
+		dbc.commit()
 
-	dbc.execute("INSERT OR REPLACE INTO vote_data VALUES (?" + insertQuestions + ")", insertValues)
+	dbc.execute("INSERT OR REPLACE INTO vote_data(" + insertColumns + ") VALUES (?" + insertQuestions + ")", insertValues)
 	dbc.commit()
 
 	# Write out the updated csv file for the graphs





More information about the tor-commits mailing list