コード例 #1
0
    def test_get_single_event_for_open_prs(self):
        self.create_events()

        pr = models.PullRequest.objects.latest()
        latest_event = pr.events.latest()
        # 1. main PullRequest query
        # 2. latest() for each PullRequest
        # 3. jobs query below
        with self.assertNumQueries(3):
            info = EventsStatus.get_single_event_for_open_prs([pr.pk])
            self.assertEqual(len(info), 1) # should only have the latest event
            self.assertEqual(info[0].pk, latest_event.pk)
            # pre, test, test1, merge
            self.assertEqual(info[0].jobs.count(), 4)

        last_modified = latest_event.last_modified + datetime.timedelta(0,10)

        with self.assertNumQueries(2):
            info = EventsStatus.get_single_event_for_open_prs([pr.pk], last_modified)
            self.assertEqual(len(info), 0)

        last_modified = latest_event.last_modified - datetime.timedelta(0,10)
        with self.assertNumQueries(2):
            info = EventsStatus.get_single_event_for_open_prs([pr.pk], last_modified)
            self.assertEqual(len(info), 1)
            self.assertEqual(info[0].pk, latest_event.pk)
コード例 #2
0
def view_user(request, username):
    """
    Render the user page based on username
    Input:
        request[django.http.HttpRequest]
        username[str]: Name of the user
    """
    users = models.GitUser.objects.filter(name=username)
    if users.count() == 0:
        raise Http404('Bad username')

    repos = RepositoryStatus.get_user_repos_with_open_prs_status(username)
    pr_ids = []
    for r in repos:
        for pr in r["prs"]:
            pr_ids.append(pr["id"])
    event_list = EventsStatus.get_single_event_for_open_prs(pr_ids)
    evs_info = EventsStatus.multiline_events_info(event_list)
    data = {
        'username': username,
        'repos': repos,
        'events': evs_info,
        "update_interval": settings.EVENT_PAGE_UPDATE_INTERVAL,
    }
    return render(request, 'ci/user.html', data)
コード例 #3
0
def user_open_prs(request, username):
    """
    Get the updates for the main page.
    """
    users = models.GitUser.objects.filter(name=username)
    if users.count() == 0:
        return HttpResponseBadRequest('Bad username')

    if 'last_request' not in request.GET:
        return HttpResponseBadRequest('Missing parameters')

    this_request = TimeUtils.get_local_timestamp()
    last_request = int(float(request.GET['last_request'])) # in case it has decimals
    dt = timezone.localtime(timezone.make_aware(datetime.datetime.utcfromtimestamp(last_request)))
    repos = RepositoryStatus.get_user_repos_with_open_prs_status(username)
    repo_ids = []
    pr_ids = []
    for r in repos:
        repo_ids.append(r["id"])
        for pr in r["prs"]:
            pr_ids.append(pr["id"])
    event_list = EventsStatus.get_single_event_for_open_prs(pr_ids)
    evs_info = EventsStatus.multiline_events_info(event_list)
    ev_ids = []
    for e in evs_info:
        ev_ids.append(e["id"])
    # Now get the changed ones
    repos = RepositoryStatus.get_user_repos_with_open_prs_status(username, dt)
    evs_info = EventsStatus.multiline_events_info(event_list, dt)

    data = {'repos': repo_ids,
        'prs': pr_ids,
        'events': ev_ids,
        'repo_status': repos,
        'closed': [],
        'last_request': this_request,
        'changed_events': evs_info,
        }
    return JsonResponse(data)