From 9a0c017121334e6dbfceece1f17f11b269ba733f Mon Sep 17 00:00:00 2001
From: Auke Klazema <klazema@astron.nl>
Date: Tue, 5 Mar 2019 13:44:06 +0000
Subject: [PATCH] SW-598: Add username, password, port options to
 make_antenna_list.py

---
 .../data/Coordinates/make_antenna_list.py     | 98 ++++++++++++++-----
 1 file changed, 73 insertions(+), 25 deletions(-)

diff --git a/MAC/Deployment/data/Coordinates/make_antenna_list.py b/MAC/Deployment/data/Coordinates/make_antenna_list.py
index 2b01dcf4401..35f666aa124 100755
--- a/MAC/Deployment/data/Coordinates/make_antenna_list.py
+++ b/MAC/Deployment/data/Coordinates/make_antenna_list.py
@@ -1,54 +1,102 @@
 #!/usr/bin/env python
-#coding: iso-8859-15
-import re,sys,pgdb
-from copy import deepcopy
-from math import *
+# coding: iso-8859-15
+import re
+import sys
+import pgdb
+from optparse import OptionParser
+import getpass
 
 
-INTRO=""" 
+INTRO = """
 Created a file containing all antenna coordinates for the online software.
-""" 
+"""
 
-def print_help():
-    print "Usage: make_antenna_list [<stationname>]"
 
 #
 # findStationInfo(stationName)
 #
-def findStationInfo(stationName):
+def find_station_info(station_name):
     """
     Return all basic station info (eg. nr RSPboards) from a station.
     """
-    pattern=re.compile("^"+stationName+"[ \t].*", re.IGNORECASE | re.MULTILINE)
+    pattern = re.compile("^"+station_name+"[ \t].*", re.IGNORECASE | re.MULTILINE)
     match = pattern.search(open("../StaticMetaData/StationInfo.dat").read())
     if not match:
-        raise "\nFatal error: "+stationName+" is not defined in file 'StationInfo.dat'"
+        raise "\nFatal error: "+station_name+" is not defined in file 'StationInfo.dat'"
     return match.group().split()
 
+
 #
 # MAIN
 #
 if __name__ == '__main__':
-    if len(sys.argv) != 2:
-        print_help()
-        sys.exit(0)
+    parser = OptionParser("Usage: %prog [options] datafile")
+
+    parser.add_option("-D", "--database",
+                      dest="dbName",
+                      type="string",
+                      default="coordtest",
+                      help="Name of StationCoordinates database to use")
+
+    parser.add_option("-H", "--host",
+                      dest="dbHost",
+                      type="string",
+                      default="dop50",
+                      help="Hostname of StationCoordinates database")
+
+    parser.add_option("-P", "--port",
+                      dest="dbPort",
+                      type="int",
+                      default="5432",
+                      help="Port of StationCoordinates database")
+
+    parser.add_option("-U", "--user",
+                      dest="dbUser",
+                      type="string",
+                      default="postgres",
+                      help="Username of StationCoordinates database")
+
+    # parse arguments
+
+    (options, args) = parser.parse_args()
 
-    (name, stationID, stnType, long, lat, height, nrRSP, nrTBB, nrLBA, nrHBA, HBAsplit, LBAcal ) = findStationInfo(sys.argv[1])
-    db = pgdb.connect(user="postgres", host="dop50", database="coordtest")
+    dbName = options.dbName
+    dbHost = options.dbHost
+    dbPort = options.dbPort
+    dbUser = options.dbUser
+
+    if len(args) != 1:
+        parser.print_help()
+        sys.exit(1)
+
+    filename = str(args[0])
+
+    dbPassword = getpass.getpass()
+
+    host = "{}:{}".format(dbHost, dbPort)
+
+    db = pgdb.connect(user=dbUser, host=host, database=dbName, password=dbPassword)
+    cursor = db.cursor()
+
+    (name, stationID, stnType, long, lat, height, nrRSP,
+     nrTBB, nrLBA, nrHBA, HBAsplit, LBAcal) = find_station_info(filename)
     print "#Stn	ID	Type	RSP	RCU	Pol	Position					Orientation"
-    print "%s	%s	%s	%d	%d	-1	[%s,%s,%s]	[0,0,0]" % (name, stationID, "center", -1, -1, long, lat, height)
-    for infoType in [ 'marker', 'lba', 'hba' ]:
-        cursor = db.cursor()
-        cursor.execute("select * from get_ref_objects(%s, %s)", (sys.argv[1], infoType))
+    print "%s	%s	%s	%d	%d	-1	[%s,%s,%s]	[0,0,0]" % \
+        (name, stationID, "center", -1, -1, long, lat, height)
+    for infoType in ['marker', 'lba', 'hba']:
+        cursor.execute("select * from get_ref_objects(%s, %s)", (filename, infoType))
         counter = 0
         while (1):
             record = cursor.fetchone()
-            if record == None:
+            if record is None:
                 break
-            RSPnr = int(record[2]%100/4)
-            print "%s	%s	%s%d	%d	%d	x	[%s,%s,%s]	[0,0,0]" % (name, stationID, infoType, int(record[2])%100, RSPnr, counter, record[3], record[4], record[5])
-            print "%s	%s	%s%d	%d	%d	y	[%s,%s,%s]	[0,0,0]" % (name, stationID, infoType, int(record[2])%100, RSPnr, counter+1, record[3], record[4], record[5])
+            RSPnr = int(record[2] % 100/4)
+            print "%s	%s	%s%d	%d	%d	x	[%s,%s,%s]	[0,0,0]" % \
+                (name, stationID, infoType, int(record[2]) % 100, RSPnr, counter,
+                 record[3], record[4], record[5])
+            print "%s	%s	%s%d	%d	%d	y	[%s,%s,%s]	[0,0,0]" % \
+                (name, stationID, infoType, int(record[2]) % 100, RSPnr, counter+1,
+                 record[3], record[4], record[5])
             counter = counter + 2
     db.close()
     sys.exit(1)
-
-- 
GitLab