[2] | 1 | from galaxy.web.base.controller import * |
---|
| 2 | |
---|
| 3 | class Mobile( BaseController ): |
---|
| 4 | @web.expose |
---|
| 5 | def index( self, trans, **kwargs ): |
---|
| 6 | return trans.fill_template( "mobile/index.mako" ) |
---|
| 7 | |
---|
| 8 | @web.expose |
---|
| 9 | def history_list( self, trans ): |
---|
| 10 | return trans.fill_template( "mobile/history/list.mako" ) |
---|
| 11 | |
---|
| 12 | @web.expose |
---|
| 13 | def history_detail( self, trans, id ): |
---|
| 14 | history = trans.sa_session.query( trans.app.model.History ).get( id ) |
---|
| 15 | assert history.user == trans.user |
---|
| 16 | return trans.fill_template( "mobile/history/detail.mako", history=history ) |
---|
| 17 | |
---|
| 18 | @web.expose |
---|
| 19 | def dataset_detail( self, trans, id ): |
---|
| 20 | dataset = trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( id ) |
---|
| 21 | assert dataset.history.user == trans.user |
---|
| 22 | return trans.fill_template( "mobile/dataset/detail.mako", dataset=dataset ) |
---|
| 23 | |
---|
| 24 | @web.expose |
---|
| 25 | def dataset_peek( self, trans, id ): |
---|
| 26 | dataset = trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( id ) |
---|
| 27 | assert dataset.history.user == trans.user |
---|
| 28 | return trans.fill_template( "mobile/dataset/peek.mako", dataset=dataset ) |
---|
| 29 | |
---|
| 30 | @web.expose |
---|
| 31 | def settings( self, trans, email=None, password=None ): |
---|
| 32 | message = None |
---|
| 33 | if email is not None and password is not None: |
---|
| 34 | if email == "": |
---|
| 35 | self.__logout( trans ) |
---|
| 36 | message = "Logged out" |
---|
| 37 | else: |
---|
| 38 | error = self.__login( trans, email, password ) |
---|
| 39 | message = error or "Login changed" |
---|
| 40 | return trans.fill_template( "mobile/settings.mako", message=message ) |
---|
| 41 | |
---|
| 42 | def __logout( self, trans ): |
---|
| 43 | trans.log_event( "User logged out" ) |
---|
| 44 | trans.handle_user_logout() |
---|
| 45 | |
---|
| 46 | def __login( self, trans, email="", password="" ): |
---|
| 47 | error = password_error = None |
---|
| 48 | user = trans.sa_session.query( model.User ).filter_by( email = email ).first() |
---|
| 49 | if not user: |
---|
| 50 | error = "No such user" |
---|
| 51 | elif user.deleted: |
---|
| 52 | error = "This account has been marked deleted, contact your Galaxy administrator to restore the account." |
---|
| 53 | elif user.external: |
---|
| 54 | error = "This account was created for use with an external authentication method, contact your local Galaxy administrator to activate it." |
---|
| 55 | elif not user.check_password( password ): |
---|
| 56 | error = "Invalid password" |
---|
| 57 | else: |
---|
| 58 | trans.handle_user_login( user, 'galaxy' ) |
---|
| 59 | trans.log_event( "User logged in" ) |
---|
| 60 | return error |
---|