Beispiel #1
0
 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))
Beispiel #2
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()
Beispiel #4
0
    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
Beispiel #5
0
    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))
Beispiel #6
0
    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())
Beispiel #7
0
    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)