Esempio n. 1
0
    def test_all_events_info(self):
        self.create_events()

        with self.assertNumQueries(4):
            info = EventsStatus.all_events_info()
            self.assertEqual(len(info), 3)
            # pre, blank, test, test1, blank, merge
            self.assertEqual(len(info[0]["jobs"]), 6)

        # make sure limit works
        with self.assertNumQueries(4):
            info = EventsStatus.all_events_info(limit=1)
            self.assertEqual(len(info), 1)
            self.assertEqual(len(info[0]["jobs"]), 6)

        last_modified = models.Event.objects.last().last_modified
        last_modified = last_modified + datetime.timedelta(0,10)

        # make sure last_modified works
        with self.assertNumQueries(4):
            info = EventsStatus.all_events_info(last_modified=last_modified)
            self.assertEqual(len(info), 0)
Esempio n. 2
0
def get_user_repos_info(request, limit=30, last_modified=None):
    """
    Get the information for the main view.
    This checks to see if the user has preferred repositories set, and if
    so then just shows those.
    You can also set the "default" parameter to show all the repositories.
    Input:
      request: django.http.HttpRequest
      limit: int: How many events to show
      last_modified: datetime: If not None, then only get information that has occured after this time.
    Return:
      (repo_info, evs_info, default):
        repo_info: list of dicts of repository status
        evs_info: list of dicts of event information
        default: Whether the default view was enforced
    """
    pks = []
    default = request.GET.get('default')
    if default is None:
        default = False
        for server in settings.INSTALLED_GITSERVERS:
            try:
                gitserver = models.GitServer.objects.get(
                    host_type=server["type"], name=server["hostname"])
            except models.GitServer.DoesNotExist:
                # Probably shouldn't happen in production but it does seem to
                # happen during selenium testing
                continue
            user = gitserver.signed_in_user(request.session)
            if user != None:
                for repo in user.preferred_repos.filter(
                        user__server=gitserver).all():
                    pks.append(repo.pk)
    else:
        default = True
    if pks:
        repos = RepositoryStatus.filter_repos_status(
            pks, last_modified=last_modified)
        evs_info = EventsStatus.events_filter_by_repo(
            pks, limit=limit, last_modified=last_modified)
    else:
        repos = RepositoryStatus.main_repos_status(last_modified=last_modified)
        evs_info = EventsStatus.all_events_info(limit=limit,
                                                last_modified=last_modified)
    return repos, evs_info, default