def onLogin(self, event): """ Check credentials and login """ if not havePyosf: dialogs.MessageDialog( parent=self.parent, type='Warning', title=_translate("pyosf not found"), message=_translate("You need pyosf to " "log in to Open Science Framework"), ) return None username = self.username.GetValue() pword = self.password.GetValue() rememberMe = bool(self.rememberMe.GetValue()) try: session = pyosf.Session(username=username, password=pword, remember_me=rememberMe) self.app.osf_session = session self.updateStatus(_translate("Successful authentication"), color=(0, 170, 0)) time.sleep(0.5) self.Destroy() except pyosf.AuthError: self.updateStatus(_translate("Failed to Authenticate. " "Check username/password"), color=(255, 0, 0))
def setUser(self, user): if user == self._user: return # nothing to do here. Move along please. self._user = user self.app.osf_session = pyosf.Session(user) ProjectsMenu.appData['user'] = user if self.searchDlg is not None: self.searchDlg.updateUserProjs()
def setUser(self, user): if user == self._user: return # nothing to do here. Move along please. self._user = user try: self.app.osf_session = pyosf.Session(user) except pyosf.AuthError: print("failed to authenticate - probably need 2FA") except requests.exceptions.ConnectionError: logging.warn("Connection error trying to connect to pyosf") ProjectsMenu.appData['user'] = user if self.searchDlg: self.searchDlg.updateUserProjs()
def get_auth_token(self, password=None): """Gets the auth token see also pyosf documentation""" self.set_username() if password is None: password = getpass.getpass() try: session = pyosf.Session(username=self.osf_username, password=password) except pyosf.AuthError: print("Could not login to OSF.") return False
def connect(self): """connect with OSF project""" self.set_connection_details() try: session = pyosf.Session(username=self.osf_username) except pyosf.AuthError: print("Could not login to OSF. Auth token might be required.") self._project = None return False try: osf_proj = session.open_project(self.osf_project_id) self._project = pyosf.Project(project_file=self.osf_project_file, root_path=self.sync_folder, osf=osf_proj) except: print("Could not connect to OSF project '{0}'.".format( self.osf_project_id)) self._project = None return False print("Connected to OSF project '{0}'.".format(self.osf_project_id))
def __init__(self, parent): wx.Menu.__init__(self) self.parent = parent ProjectsMenu.app = parent.app keys = self.app.keys # from prefs fetch info about prev usernames and projects ProjectsMenu.appData = self.app.prefs.appData['projects'] global projHistory self.projHistory = projHistory # so we can treat as local from here global usersList self.userList = usersList item = self.Append(wx.ID_ANY, _translate("Tell me more...")) parent.Bind(wx.EVT_MENU, self.onAbout, id=item.GetId()) if not havePyosf: self.Append(wx.ID_ANY, _translate("Requires pyosf (not installed)")) ProjectsMenu.knownUsers = {} else: if self.app.osf_session is None: # create a default (anonymous) session with osf self.app.osf_session = pyosf.Session() ProjectsMenu.knownUsers = pyosf.TokenStorage() # a dict name:token # sub-menu to open previous or new projects self.projsSubMenu = wx.Menu() item = self.projsSubMenu.Append( wx.ID_ANY, _translate("From file...\t{}").format(keys['projectsOpen'])) parent.Bind(wx.EVT_MENU, self.onOpenFile, id=item.GetId()) self.projsSubMenu.AppendSeparator() self.projHistory.UseMenu(self.projsSubMenu) try: self.projHistory.AddFilesToMenu(self.projsSubMenu) except: self.projHistory.AddFilesToThisMenu(self.projsSubMenu) parent.Bind(wx.EVT_MENU_RANGE, self.onProjFromHistory, id=self.projHistory.idBase, id2=self.projHistory.idBase + 9) self.AppendSubMenu(self.projsSubMenu, _translate("Open")) # sub-menu for usernames and login self.userMenu = wx.Menu() # if a user was previously logged in then set them as current if ProjectsMenu.appData['user'] and \ ProjectsMenu.appData['user'] in self.knownUsers: self.setUser(ProjectsMenu.appData['user']) for name in self.knownUsers: self.addToSubMenu(name, self.userMenu, self.onSetUser) self.userMenu.AppendSeparator() item = self.userMenu.Append( wx.ID_ANY, _translate("Log in...\t{}").format(keys['projectsLogIn'])) parent.Bind(wx.EVT_MENU, self.onLogIn, id=item.GetId()) self.AppendSubMenu(self.userMenu, _translate("User")) # search item = self.Append( wx.ID_ANY, _translate("Search OSF\t{}").format(keys['projectsFind'])) parent.Bind(wx.EVT_MENU, self.onSearch, id=item.GetId()) # new item = self.Append( wx.ID_ANY, _translate("New...\t{}").format(keys['projectsNew'])) parent.Bind(wx.EVT_MENU, self.onNew, id=item.GetId())
def __init__(self, parent): wx.Menu.__init__(self) self.parent = parent ProjectsMenu.app = parent.app keys = self.app.keys ProjectsMenu.appData = self.app.prefs.appData['projects'] global projHistory self.projHistory = projHistory # so we can treat as local from here global usersList self.userList = usersList if self.app.osf_session is None: # create a default (anonymous) session with osf self.app.osf_session = pyosf.Session() self.Append(wxIDs.projsAbout, "Tell me more...") wx.EVT_MENU(parent, wxIDs.projsAbout, self.onAbout) if not havePyosf: self.Append(wx.NewId(), "Requires pyosf (not installed)") ProjectsMenu.knownUsers = {} else: ProjectsMenu.knownUsers = pyosf.TokenStorage() # a dict name:token # sub-menu to open previous or new projects self.projsSubMenu = wx.Menu() self.projsSubMenu.Append(wxIDs.projsOpen, "From file...\t{}" .format(keys['projectsOpen'])) wx.EVT_MENU(parent, wxIDs.projsOpen, self.onOpenFile) self.projsSubMenu.AppendSeparator() self.projHistory.UseMenu(self.projsSubMenu) try: self.projHistory.AddFilesToMenu(self.projsSubMenu) except: self.projHistory.AddFilesToThisMenu(self.projsSubMenu) parent.Bind(wx.EVT_MENU_RANGE, self.onProjFromHistory, id=self.projHistory.idBase, id2=self.projHistory.idBase+9) self.AppendSubMenu(self.projsSubMenu, "Open") # sub-menu for usernames and login self.userMenu = wx.Menu() # if a user was previously logged in then set them as current if ProjectsMenu.appData['user'] and \ ProjectsMenu.appData['user'] in self.knownUsers: self.setUser(ProjectsMenu.appData['user']) for name in self.knownUsers: self.addToSubMenu(name, self.userMenu, self.onSetUser) self.userMenu.AppendSeparator() self.userMenu.Append(wxIDs.projsNewUser, "Log in...\t{}".format(keys['projectsLogIn'])) wx.EVT_MENU(parent, wxIDs.projsNewUser, self.onLogIn) self.AppendSubMenu(self.userMenu, "User") # search self.Append(wxIDs.projsSearch, "Search OSF\t{}".format(keys['projectFind'])) wx.EVT_MENU(parent, wxIDs.projsSearch, self.onSearch) self.Append(wxIDs.projsSync, "Sync\t{}".format(keys['projectsSync'])) wx.EVT_MENU(parent, wxIDs.projsSync, self.onSync)