Пример #1
0
    def onSearch(self, evt=None):
        opts = self.getSearchOptions()

        searchStr = self.searchCtrl.GetValue()
        newSearch = (searchStr != self.lastSearchStr)
        self.lastSearchStr = newSearch

        session = pavlovia.getCurrentSession()
        # search own
        if newSearch:
            try:
                self.lastSearchOwn = session.gitlab.projects.list(
                    owned=True, search=searchStr)
            except requests.exceptions.ConnectionError:
                print("Failed to establish a new connection: No internet?")
                return None

        # search my groups
        if opts['inclGroup'] and (newSearch or self.lastSearchGp is None):
            # group projects: owned=False, membership=True
            self.lastSearchGp = session.gitlab.projects.list(owned=False,
                                                             membership=True,
                                                             search=searchStr)
        elif not opts[
                'inclGroup']:  # set to None (to indicate non-search not simply empty result)
            self.lastSearchGp = None
        elif opts['inclGroup'] and not newSearch:
            pass  # we have last search and we need it so do nothing
        else:
            print(
                "ERROR: During Pavlovia search we found opts['inclGroup']={}, newSearch={}"
                .format(opts['inclGroup'], newSearch))

        # search public
        if opts['inclPublic'] and (newSearch or self.lastSearchPub is None):
            self.lastSearchPub = session.gitlab.projects.list(owned=False,
                                                              membership=False,
                                                              search=searchStr)
        elif not opts[
                'inclPublic']:  # set to None (to indicate non-search not simply empty result)
            self.lastSearchPub = None
        elif opts['inclPublic'] and not newSearch:
            pass  # we have last search and we need it so do nothing
        else:
            print(
                "ERROR: During Pavlovia search we found opts['inclPublic']={}, newSearch={}"
                .format(opts['inclPublic'], newSearch))

        projs = copy.copy(self.lastSearchOwn)
        if opts['inclGroup']:
            projs.extend(self.lastSearchGp)
        if opts['inclPublic']:
            projs.extend(self.lastSearchPub)

        projs = getUniqueByID(projs)
        projs = [pavlovia.PavloviaProject(proj) for proj in projs if proj.id]

        self.searchResults.setContents(projs)
        self.searchResults.Update()
        self.Layout()
Пример #2
0
 def showProject(self, evt=None):
     """
     View current project in associated viewer
     """
     if self.projects is not None:
         proj = self.projects.iloc[self.projectList.GetFocusedItem()]
         # Set project to None while waiting
         self.viewer.project = None
         # Set project
         self.viewer.project = pavlovia.PavloviaProject(proj)