""" User class for MURSAT1 Mission Dashboard """ import hashlib import smtplib import time from cgi import parse_qs, escape from MmdDb import Db class User: def __init__ (self, email = 'Anonymous'): self.db = Db () self.email = email def create (self, user_id, firstname, lastname, email, callsign, longitude, latitude, password): password_hash = hashlib.sha1 (password).hexdigest () code = hashlib.sha1 ('{0}{1}{2}{3}'.format (user_id, firstname, lastname, email)).hexdigest () regtimeout = int (time.strftime ('%s')) + (3600 * 24) self.db.userCreate (user_id, firstname, lastname, email, callsign, password_hash, code, regtimeout) self.email = email self.firstname = firstname self.lastname = lastname return code def findPending (self, code): u = self.db.userFindPending (code) if not u: return False if int (u['regtimeout']) < int (time.strftime ('%s')): return False return True def confirm (self, code): u = self.db.userFindPending (code) if not u: return False if int (u['regtimeout']) < int (time.strftime ('%s')): return False self.db.userConfirm (code) self.email = u['email'] self.firstname = u['firstname'] self.lastname = u['lastname'] return True def load (self, email): u = self.db.userFindEmail (email) if not u: return False self.email = email self.firstname = u['firstname'] self.lastname = u['lastname'] self.password = u['password'] # include loading of location data here return True def checkPassword (self, password): if hashlib.sha1 (password).hexdigest () == self.password: return True return False def cancel (self, code): self.db.userCancel (code) def sendEmail (self, message): server = smtplib.SMTP ('localhost') try: server.sendmail ('noreply@mur.at', self.email, message) server.quit () return True except (smtplib.SMTPRecipientsRefused, smtplib.SMTPHeloError, smtplib.SMTPSenderRefused, smtplib.SMTPDataError): server.quit () return False if __name__ == "__main__": pass # vim: tw=0 ts=2 expandtab # EOF