Beispiel #1
0
 def update(self):
     """Get info and communicate any change."""
     local_suites = SuiteId.get_checked_out_suite_ids()
     if local_suites == self.local_suites:
         return
     self.local_suites = local_suites
     self.queue.put(local_suites)
Beispiel #2
0
 def update(self):
     """Get info and communicate any change."""
     local_suites = SuiteId.get_checked_out_suite_ids()
     if local_suites == self.local_suites:
         return
     self.local_suites = local_suites
     self.queue.put(local_suites)
Beispiel #3
0
    def query_local_copies(self, user=None):
        """Returns details of the local suites.

        As if they had been obtained using a search or query.

        """
        suite_ids = []
        for suite_id in SuiteId.get_checked_out_suite_ids(user=user):
            if suite_id.prefix in self.prefixes:
                suite_ids.append(suite_id)
        if not suite_ids:
            return []

        # Simple query
        results = []
        queued_suite_ids = list(suite_ids)
        while queued_suite_ids:  # Batch up queries
            q_list = []
            for _ in range(self.MAX_LOCAL_QUERIES):
                if not queued_suite_ids:
                    break
                suite_id = queued_suite_ids.pop()
                q_list.append("or ( idx eq %s" % suite_id.idx)
                q_list.append("and branch eq %s )" % suite_id.branch)
            for data, _ in self.query(q_list):
                results.extend(data)
        result_idx_branches = []
        for result in results:
            result_idx_branches.append((result[u"idx"], result[u"branch"]))

        # A branch may have been deleted - query with all_revs=1.
        # We only want to use all_revs on demand as it's slow.
        queued_suite_ids = []
        for suite_id in suite_ids:
            if (suite_id.idx, suite_id.branch) not in result_idx_branches:
                queued_suite_ids.append(suite_id)
        if not queued_suite_ids:
            return results
        while queued_suite_ids:  # Batch up queries
            q_list = []
            for _ in range(self.MAX_LOCAL_QUERIES):
                if not queued_suite_ids:
                    break
                suite_id = queued_suite_ids.pop()
                q_list.append("or ( idx eq %s" % suite_id.idx)
                q_list.append("and branch eq %s )" % suite_id.branch)
            more_results = []
            for data, _ in self.query(q_list, all_revs=1):
                more_results.extend(data)
            new_results = {}
            for result in more_results:
                idx_branch = (result[u"idx"], result[u"branch"])
                if (idx_branch not in new_results or
                        result[u"revision"] >
                        new_results[idx_branch][u"revision"]):
                    new_results.update({idx_branch: result})
            for _, result in sorted(new_results.items()):
                results.append(result)
        return results
Beispiel #4
0
    def query_local_copies(self, user=None):
        """Returns details of the local suites.

        As if they had been obtained using a search or query.

        """
        suite_ids = []
        for suite_id in SuiteId.get_checked_out_suite_ids(user=user):
            if suite_id.prefix in self.prefixes:
                suite_ids.append(suite_id)
        if not suite_ids:
            return []

        # Simple query
        results = []
        queued_suite_ids = list(suite_ids)
        while queued_suite_ids:  # Batch up queries
            q_list = []
            for _ in range(self.MAX_LOCAL_QUERIES):
                if not queued_suite_ids:
                    break
                suite_id = queued_suite_ids.pop()
                q_list.append("or ( idx eq %s" % suite_id.idx)
                q_list.append("and branch eq %s )" % suite_id.branch)
            for data, _ in self.query(q_list):
                results.extend(data)
        result_idx_branches = []
        for result in results:
            result_idx_branches.append((result[u"idx"], result[u"branch"]))

        # A branch may have been deleted - query with all_revs=1.
        # We only want to use all_revs on demand as it's slow.
        queued_suite_ids = []
        for suite_id in suite_ids:
            if (suite_id.idx, suite_id.branch) not in result_idx_branches:
                queued_suite_ids.append(suite_id)
        if not queued_suite_ids:
            return results
        while queued_suite_ids:  # Batch up queries
            q_list = []
            for _ in range(self.MAX_LOCAL_QUERIES):
                if not queued_suite_ids:
                    break
                suite_id = queued_suite_ids.pop()
                q_list.append("or ( idx eq %s" % suite_id.idx)
                q_list.append("and branch eq %s )" % suite_id.branch)
            more_results = []
            for data, _ in self.query(q_list, all_revs=1):
                more_results.extend(data)
            new_results = {}
            for result in more_results:
                idx_branch = (result[u"idx"], result[u"branch"])
                if (idx_branch not in new_results or result[u"revision"] >
                        new_results[idx_branch][u"revision"]):
                    new_results.update({idx_branch: result})
            for _, result in sorted(new_results.items()):
                results.append(result)
        return results
Beispiel #5
0
    def query_local_copies(self, user=None):
        """Returns details of the local suites.

        As if they had been obtained using a search or query.

        """
        suite_ids = []
        for suite_id in SuiteId.get_checked_out_suite_ids(user=user):
            if suite_id.prefix in self.prefixes:
                suite_ids.append(suite_id)
        if not suite_ids:
            return []

        q_list = []
        for suite_id in suite_ids:
            q_list.append("or ( idx eq %s" % suite_id.idx)
            q_list.append("and branch eq %s )" % suite_id.branch)
        results = []
        for data, _ in self.query(q_list):
            results.extend(data)
        result_idx_branches = []
        for result in results:
            result_idx_branches.append((result[u"idx"], result[u"branch"]))
        q_list = []
        for suite_id in suite_ids:
            if (suite_id.idx, suite_id.branch) in result_idx_branches:
                continue
                # A branch may have been deleted - we need all_revs=1.
                # We only want to use all_revs on demand as it's slow.
            q_list.append("or ( idx eq %s" % suite_id.idx)
            q_list.append("and branch eq %s )" % suite_id.branch)
        if q_list:
            more_results = []
            for data, _ in self.query(q_list, all_revs=1):
                more_results.extend(data)
            new_results = {}
            for result in more_results:
                idx_branch = (result[u"idx"], result[u"branch"])
                if (idx_branch not in new_results or
                        result[u"revision"] >
                        new_results[idx_branch][u"revision"]):
                    new_results.update({idx_branch: result})
            for _, result in sorted(new_results.items()):
                results.append(result)
        return results