Пример #1
0
def redmine_issues_assigned(request):
    params = request.POST
    if params is None:
        raise PermissionDenied

    cache_key = 'redmine-issues-assigned-%u' % request.user.id
    assigned_issue_ids = cache.get(cache_key)
    if assigned_issue_ids is None:
        redmine_url = Settings.objects.all()
        if redmine_url is None or len(redmine_url) <= 0:
            raise PermissionDenied
        redmine_url = redmine_url[0].redmine_url
        redmine_api_key = UserSettings.objects.filter(user=request.user)
        if redmine_api_key is None or len(redmine_api_key) <= 0:
            raise PermissionDenied
        redmine_api_key = redmine_api_key[0].redmine_api_key
        redmine = Redmine(redmine_url, key=redmine_api_key)
        assigned_issue_ids = [i.id for i in redmine.issues(assigned_to_id=redmine.user.id)]
        cache_expires = Settings.objects.all()
        if cache_expires is None or len(cache_expires) <= 0:
            raise PermissionDenied
        cache_expires = cache_expires[0].cache_expires
        cache.set(cache_key, assigned_issue_ids, cache_expires)

    issues_cache = RedmineIssuesCache(request.user)

    output = {}
    for id_ in assigned_issue_ids:
        issue = issues_cache.get_issue(id_)
        if issue['valid']:
            output[id_] = issue

    return HttpResponse(json.dumps(output), content_type='application/json')