diff options
-rw-r--r-- | tools/mmd/MmdCommands.py | 44 | ||||
-rw-r--r-- | tools/mmd/MmdSession.py | 7 | ||||
-rw-r--r-- | tools/mmd/MmdWidgets.py | 39 | ||||
-rw-r--r-- | tools/mmd/mmd.css | 12 | ||||
-rw-r--r-- | tools/mmd/mmd.wsgi | 2 |
5 files changed, 70 insertions, 34 deletions
diff --git a/tools/mmd/MmdCommands.py b/tools/mmd/MmdCommands.py index 57401ad..7d69a43 100644 --- a/tools/mmd/MmdCommands.py +++ b/tools/mmd/MmdCommands.py @@ -10,7 +10,7 @@ def loginForm (session): """ display the login form """ - return indexWidget (dataWidget (), loginFormWidget (), statusWidget (session)) + return indexWidget (dataWidget (), loginFormWidget (), statusWidget (session), session) def login (session): """ @@ -18,18 +18,23 @@ def login (session): """ if not session.user.load (session.getQsEmail ()): error_message = {'error': 'Login', 'description': 'Login failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session)) + return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) if not session.user.checkPassword (session.getQsPassword ()): error_message = {'error': 'Login', 'description': 'Login failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session)) + return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) session.setStatus ('auth') - return indexWidget (dataWidget (), loginWidget (session.user), statusWidget (session)) + return indexWidget (dataWidget (), loginWidget (session.user), statusWidget (session), session) + +def logout (session): + session.user.email = 'Anonymous' + session.setStatus () + return indexWidget (dataWidget (), logoutWidget (), statusWidget (session), session) def registerForm (session): """ display the register form """ - return indexWidget (dataWidget (), registerFormWidget (), statusWidget (session)) + return indexWidget (dataWidget (), registerFormWidget (), statusWidget (session), session) def register (session): """ @@ -46,7 +51,7 @@ def register (session): if password != confirm: error_message = {'error': 'Password', 'description': 'Passwords do not match.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session)) + return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) user = User () code = user.create (session.session_id, firstname, lastname, email, callsign, longitude, latitude, password) @@ -69,61 +74,60 @@ MURSAT1 team if not user.sendEmail (message): error_message = {'error': 'Email', 'description': 'Email could not be sent.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session)) + return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) - return indexWidget (dataWidget (), registerWidget (), statusWidget (session)) + return indexWidget (dataWidget (), registerWidget (), statusWidget (session), session) def completeRegistration (session): user = User () code = session.getQsCode () if not user.findPending (code): error_message = {'error': 'Registration', 'description': 'Registration Failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session)) - return indexWidget (dataWidget (), completeRegistrationWidget (code), statusWidget (session)) + return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (), completeRegistrationWidget (code), statusWidget (session), session) -# TODO finish theses methods def confirmRegistration (session): user = User () code = session.getQsCode () if not user.findPending (code): error_message = {'error': 'Registration', 'description': 'Registration Failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session)) + return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) user.confirm (code) - session.authenticate (user) - return indexWidget (dataWidget (), confirmRegistrationWidget (user), statusWidget (session)) + session.setStatus ('auth') + return indexWidget (dataWidget (), confirmRegistrationWidget (user), statusWidget (session), session) def cancelRegistration (session): user = User () code = session.getQsCode () if not user.findPending (code): error_message = {'error': 'Registration', 'description': 'Canceling failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session)) + return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) user.cancel (code) - return indexWidget (dataWidget (), cancelRegistrationWidget (), statusWidget (session)) + return indexWidget (dataWidget (), cancelRegistrationWidget (), statusWidget (session), session) def submitForm (session): """ display the form for data submission """ - return indexWidget (dataWidget (), submitFormWidget (), statusWidget (session)) + return indexWidget (dataWidget (), submitFormWidget (), statusWidget (session), session) def submit (session): """ evaluate data from submitForm """ - return indexWidget (dataWidget (), submitWidget (), statusWidget (session)) + return indexWidget (dataWidget (), submitWidget (), statusWidget (session), session) def viewlog (session): """ show latest log entries/submissions """ - return indexWidget (dataWidget (), logWidget (), statusWidget (session)) + return indexWidget (dataWidget (), logWidget (), statusWidget (session), session) def index (session): """ display the index page """ - return indexWidget (dataWidget (), osmWidget (), statusWidget (session)) + return indexWidget (dataWidget (), osmWidget (), statusWidget (session), session) def mmdtest (env, cookie): body = '' diff --git a/tools/mmd/MmdSession.py b/tools/mmd/MmdSession.py index 387e41c..e1e171d 100644 --- a/tools/mmd/MmdSession.py +++ b/tools/mmd/MmdSession.py @@ -28,17 +28,14 @@ class Session: self.headers.append (header) def update (self): - self.db.sessionUpdate (self.session_id, int (time.strftime ('%s')) + timeout) + 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 authenticate (self): - self.setStatus ('auth') - self.db.sessionSetEmail (self.session_id, self.user.email) - def valid (self): data = self.db.sessionFind (self.session_id) if not data: diff --git a/tools/mmd/MmdWidgets.py b/tools/mmd/MmdWidgets.py index 6ff3f3d..cfd4a7d 100644 --- a/tools/mmd/MmdWidgets.py +++ b/tools/mmd/MmdWidgets.py @@ -31,6 +31,15 @@ def loginWidget (user): return html +def logoutWidget (): + html = ''' + <div> + You have been logged out. + </div> + ''' + + return html + def registerFormWidget (): html = ''' Please fill in the form below and click on register. You will receive a confirmation email. @@ -158,22 +167,37 @@ def osmWidget (longitude = 15.4426, latitude = 47.06576): def statusWidget (session): if session.status == 'auth': - inout = '''<span id="logout"><a href="?cmd=logout">logout</a></span>''' + inout = '''Status: logged in as {0}. <span id="logout"><a href="?cmd=logout">logout</a></span>'''.format (session.user.email) else: - inout = '''<span id="login"><a href="?cmd=loginForm">login</a></span>''' + inout = '''Status: logged out. <span id="login"><a href="?cmd=loginForm">login</a></span>''' html = ''' <a href="/mmd/"> <img src="http://sat.mur.at/pics/sat-logo-notext.png" alt="mur.sat logo" /> </a> MURSAT1 Mission Dashboard <div id="info"> - Hello {0} with session id '{1}'! Local time is {2}. {3} + {0}. Local time is {1}. </div> - '''.format (session.user.email, session.session_id, time.strftime ('%c'), inout) + '''.format (inout, time.strftime ('%c')) return html -def indexWidget (lcol, rcol, status): +def indexWidget (lcol, rcol, status, debug_info = False): + if debug_info: + debug = ''' + <pre class="debug"> + Debug Info + ========== + SessionId: {0} + IP: {1} + Email: {2} + Status: {3} + Expires: {4} + </pre> + '''.format (debug_info.session_id, debug_info.ip, debug_info.user.email, debug_info.status, debug_info.expires) + else: + debug = '' + html = ''' <!Doctype html> <html> @@ -195,16 +219,17 @@ def indexWidget (lcol, rcol, status): <div id="dev"> Development version! </div> + {3} </body> </html> - '''.format (status, lcol, rcol) + '''.format (status, lcol, rcol, debug) return html def dataWidget (longitude = 15.44226, latitude = 47.06576): html = ''' <div id="datahead"> - Current Data + Current Satellite Data </div> <div>Time: 00 D 00 H 00 M 00 S</div> <div>Longitude: {0}</div> diff --git a/tools/mmd/mmd.css b/tools/mmd/mmd.css index 8a58ec3..d6d714e 100644 --- a/tools/mmd/mmd.css +++ b/tools/mmd/mmd.css @@ -7,13 +7,11 @@ html, body #login a { color: green; - margin-left: 32px; } #logout a { color: red; - margin-left: 32px; } #status img @@ -99,3 +97,13 @@ html, body width: 100%; float: left; } + +pre.debug +{ + background-color: white; + color: black; + float: left; + font: 10pt courier, monospace; + padding: 1px; + margin: 1px; +} diff --git a/tools/mmd/mmd.wsgi b/tools/mmd/mmd.wsgi index 899de6c..231f1a0 100644 --- a/tools/mmd/mmd.wsgi +++ b/tools/mmd/mmd.wsgi @@ -51,6 +51,8 @@ def application (environ, response): body = loginForm (session) elif cmd == 'login': body = login (session) + elif cmd == 'logout': + body = logout (session) elif cmd == 'registerForm': body = registerForm (session) elif cmd == 'register': |