""" Session class for MURSAT1 Mission Dashboard """ from cgi import parse_qs, escape from MmdDb import Db from MmdUser import User import time # session timeout set to 10 minutes (600 seconds) timeout = 600 class Session: def __init__ (self, session_id): self.session_id = session_id self.status = 'anon' self.headers = [] self.db = Db () self.user = User () s = self.db.sessionFind (session_id) if not s: self.db.sessionInit (self.session_id, self.user.email, int (time.strftime ('%s')) + timeout, self.status) else: self.user.load (s['email']) self.status = s['status'] def addHeader (self, header): self.headers.append (header) def update (self): self.expires = int (time.strftime ('%s')) + timeout self.db.sessionUpdate (self.session_id, self.expires) def setStatus (self, status = 'anon'): self.status = status self.db.sessionSetStatus (self.session_id, self.status) self.db.sessionSetEmail (self.session_id, self.user.email) def valid (self): data = self.db.sessionFind (self.session_id) if not data: return False if data['expires'] < int (time.strftime ('%s')): return False return True def delete (self): self.db.sessionDelete (self.session_id) # session methods to extract strings from QueryString def getQsCmd (self): return self.getField ('cmd') def getQsFirstname (self): return self.getField ('firstname') def getQsLastname (self): return self.getField ('lastname') def getQsEmail (self): return self.getField ('email') def getQsCallsign (self): return self.getField ('callsign') def getQsLongitude (self): return self.getField ('longitude') def getQsLatitude (self): return self.getField ('latitude') def getQsPassword (self): return self.getField ('password') def getQsConfirm (self): return self.getField ('confirm') def getQsCode (self): return self.getField ('code') def getField (self, field): try: return escape (self.qs.get (field)[0]) except TypeError: return '' if __name__ == "__main__": pass # vim: tw=0 ts=2 expandtab # EOF