88from  xml .etree  import  ElementTree 
99import  requests 
1010import  paramiko 
11- import  ftplib  as  ftp 
1211
1312import  psycopg2  as  pg 
1413from  psycopg2 .extras  import  DictCursor 
@@ -85,26 +84,21 @@ def __init__(self, host, database, user, password):
8584    self .connection  =  pg .connect (host = host , database = database ,
8685      user = user , password = password , cursor_factory = DictCursor )
8786
88-     techs  =  self .query ("SELECT *  FROM lab_techs ORDER BY name" )
87+     techs  =  self .query ("SELECT name  FROM lab_techs ORDER BY name" )
8988    labs  =  self .query ("SELECT id FROM labs ORDER BY id" )
9089    plots  =  self .query ("SELECT DISTINCT plot FROM plots ORDER BY plot" )
9190    self .fields ['Technician' ]['values' ] =  [x ['name' ] for  x  in  techs ]
9291    self .fields ['Lab' ]['values' ] =  [x ['id' ] for  x  in  labs ]
9392    self .fields ['Plot' ]['values' ] =  [str (x ['plot' ]) for  x  in  plots ]
9493
9594  def  query (self , query , parameters = None ):
96-     cursor  =  self .connection .cursor ()
97-     try :
98-       cursor .execute (query , parameters )
99-     except  (pg .Error ) as  e :
100-       self .connection .rollback ()
101-       raise  e 
102-     else :
103-       self .connection .commit ()
95+     with  self .connection :
96+       with  self .connection .cursor () as  cursor :
97+         cursor .execute (query , parameters )
10498      # cursor.description is None when 
10599      # no rows are returned 
106-       if  cursor .description  is  not   None :
107-         return  cursor .fetchall ()
100+          if  cursor .description  is  not   None :
101+            return  cursor .fetchall ()
108102
109103  def  get_all_records (self , all_dates = False ):
110104    """Return all records. 
@@ -131,7 +125,7 @@ def get_record(self, rowkey):
131125      query ,
132126      {"date" : date , "time" : time , "lab" : lab , "plot" : plot }
133127    )
134-     return  result [0 ] if  result  else  {} 
128+     return  result [0 ] if  result  else  dict () 
135129
136130  def  save_record (self , record , rowkey ):
137131    """Save a record to the database 
@@ -172,7 +166,7 @@ def get_lab_check(self, date, time, lab):
172166      'lab_id = %(lab)s AND date = %(date)s AND time = %(time)s' )
173167    results  =  self .query (
174168      query , {'date' : date , 'time' : time , 'lab' : lab })
175-     return  results [0 ] if  results  else  {} 
169+     return  results [0 ] if  results  else  dict () 
176170
177171  def  get_current_seed_sample (self , lab , plot ):
178172    """Get the seed sample currently planted in the given lab and plot""" 
@@ -274,7 +268,7 @@ def get_all_records(self):
274268
275269    with  open (self .file , 'r' , encoding = 'utf-8' ) as  fh :
276270      # Casting to list is necessary for unit tests to work 
277-       csvreader  =  csv .DictReader (list ( fh . readlines ()) )
271+       csvreader  =  csv .DictReader (fh )
278272      missing_fields  =  set (self .fields .keys ()) -  set (csvreader .fieldnames )
279273      if  len (missing_fields ) >  0 :
280274        fields_string  =  ', ' .join (missing_fields )
0 commit comments