Beispiel #1
0
    def list_permissionItem_by_setId(self, set_id, repo_id):
        if set_id == 0:
            return []
        permissionItems = query(PermissionItem, set_id, 'permissionitem_l_setId', [set_id])
        if len(permissionItems) == 0:
            return []
        from gitshell.repo.models import Repo, RepoManager
        userprofile_dict = dict((x.id, x)for x in RepoManager.list_repo_team_memberUser(repo_id))

        teamGroup_dict = {}
        for x in permissionItems:
            if x.group_id in teamGroup_dict:
                continue
            teamGroup = self.get_teamGroup_by_id(x.group_id)
            if not teamGroup:
                continue
            teamGroup_dict[teamGroup.id] = teamGroup

        filtered_permissionItems = []
        for permissionItem in permissionItems:
            if permissionItem.user_id not in userprofile_dict and permissionItem.group_id not in teamGroup_dict:
                permissionItem.visibly = 1
                permissionItem.save()
                continue
            if permissionItem.user_id in userprofile_dict:
                permissionItem.userprofile = userprofile_dict[permissionItem.user_id]
            if permissionItem.group_id in teamGroup_dict:
                permissionItem.group = teamGroup_dict[permissionItem.group_id]
            if permissionItem.permission in PERMISSION.VIEW:
                permissionItem.permission_view = PERMISSION.VIEW[permissionItem.permission]
            filtered_permissionItems.append(permissionItem)

        return filtered_permissionItems
Beispiel #2
0
def show(request, user_name, repo_name, issue_id, page):
    refs = 'master'; path = '.'; current = 'issues'
    repo = RepoManager.get_repo_by_name(user_name, repo_name)
    if repo is None:
        raise Http404
    issue = IssueManager.get_issue(repo.id, issue_id)
    if issue is None:
        raise Http404
    issueCommentForm = IssueCommentForm()
    if request.method == 'POST' and request.user.is_authenticated():
        issueComment = IssueComment() 
        issueComment.issue_id = issue_id
        issueComment.user_id = request.user.id
        issueCommentForm = IssueCommentForm(request.POST, instance = issueComment)
        if issueCommentForm.is_valid():
            cid = issueCommentForm.save().id
            FeedManager.notif_issue_comment_at(request.user.id, cid, issueCommentForm.cleaned_data['content'])
            issue.comment_count = issue.comment_count + 1
            issue.save()
            return HttpResponseRedirect('/%s/%s/issues/%s/' % (user_name, repo_name, issue_id))
    
    page_size = 50; total_count = issue.comment_count; total_page = total_count / page_size
    if total_count != 0 and total_count % page_size == 0:
        total_page = total_page - 1
    if page is None or int(page) > total_page:
        page = total_page
    page = int(page)
    issue_comments = []
    if total_count > 0:
        offset = page*page_size; row_count = page_size
        issue_comments = IssueManager.list_issue_comments(issue_id, offset, row_count)

    memberUsers = RepoManager.list_repo_team_memberUser(repo.id)
    memberUsers = _let_request_user_first(memberUsers, request.user.id)
    assigneds = [x.username for x in memberUsers]

    has_issue_modify_right = _has_issue_modify_right(request, issue, repo)
    title = u'%s / %s / 问题:%s' % (user_name, repo_name, issue.subject)
    response_dictionary = {'mainnav': 'repo', 'current': current, 'title': title, 'path': path, 'issue': issue, 'issue_comments': issue_comments, 'issueCommentForm': issueCommentForm, 'page': page, 'total_page': range(0, total_page+1), 'assigneds': assigneds, 'assigned': issue.assigned, 'tracker': issue.tracker, 'status': issue.status, 'priority': issue.priority, 'has_issue_modify_right': has_issue_modify_right}
    response_dictionary.update(ISSUE_ATTRS)
    response_dictionary.update(get_common_repo_dict(request, repo, user_name, repo_name, refs))
    return render_to_response('repo/issue_show.html',
                          response_dictionary,
                          context_instance=RequestContext(request))
Beispiel #3
0
def issues_list(request, user_name, repo_name, assigned, tracker, status, priority, orderby, page):
    refs = 'master'; path = '.'; current = 'issues'; title = u'%s / %s / 问题列表' % (user_name, repo_name)
    repo = RepoManager.get_repo_by_name(user_name, repo_name)
    if repo is None:
        raise Http404
    user_id = request.user.id
    memberUsers = RepoManager.list_repo_team_memberUser(repo.id)
    memberUsers = _let_request_user_first(memberUsers, user_id)
    member_ids = [x.id for x in memberUsers]
    assigneds = [x.username for x in memberUsers]
    assigneds.insert(0, '0')
    if assigned is None:
        assigned = assigneds[0]
    assigned_id = 0
    assigned_user = GsuserManager.get_user_by_name(assigned)
    if assigned_user is not None and assigned in assigneds:
        assigned_id = assigned_user.id
    tracker = int(tracker); status = int(status); priority = int(priority); page = int(page)
    current_attrs = { 'assigned': str(assigned), 'tracker': tracker, 'status': status, 'priority': priority, 'orderby': str(orderby), 'page': page }

    issues = []
    page_size = 50; offset = page*page_size; row_count = page_size + 1
    if assigned_id == 0 and tracker == 0 and status == 0 and priority == 0:
        issues = IssueManager.list_issues(repo.id, orderby, offset, row_count)
    else:
        assigned_ids = member_ids if assigned_id == 0 else [assigned_id]
        trackeres = TRACKERS_VAL if tracker == 0 else [tracker]
        statuses = STATUSES_VAL if status == 0 else [status]
        priorities = PRIORITIES_VAL if priority == 0 else [priority] 
        issues = IssueManager.list_issues_cons(repo.id, assigned_ids, trackeres, statuses, priorities, orderby, offset, row_count)

    hasPre = False ; hasNext = False
    if page > 0:
        hasPre = True 
    if len(issues) > page_size:
        hasNext = True
        issues.pop()
    
    response_dictionary = {'mainnav': 'repo', 'current': current, 'title': title, 'path': path, 'assigneds': assigneds, 'assigned': assigned, 'tracker': tracker, 'status': status, 'priority': priority, 'orderby': orderby, 'page': page, 'current_attrs': current_attrs, 'issues': issues, 'hasPre': hasPre, 'hasNext': hasNext}
    response_dictionary.update(ISSUE_ATTRS)
    response_dictionary.update(get_common_repo_dict(request, repo, user_name, repo_name, refs))
    return render_to_response('repo/issues.html',
                          response_dictionary,
                          context_instance=RequestContext(request))
Beispiel #4
0
 def fill_assigned(self, repo):
     if repo is None:
         return
     memberUsers = RepoManager.list_repo_team_memberUser(repo.id)
     self.fields['assigned'] = forms.ChoiceField(choices=[ (o.id, o.username) for o in memberUsers ])
Beispiel #5
0
def __get_member_username_email_dict(repo):
    member_userprofiles = RepoManager.list_repo_team_memberUser(repo.id)
    member_username_dict = dict([(x.username, x.id)
                                 for x in member_userprofiles])
    member_email_dict = dict([(x.email, x.id) for x in member_userprofiles])
    return (member_username_dict, member_email_dict)
Beispiel #6
0
def __get_member_username_email_dict(repo):
    member_userprofiles = RepoManager.list_repo_team_memberUser(repo.id)
    member_username_dict = dict([(x.username, x.id) for x in member_userprofiles])
    member_email_dict = dict([(x.email, x.id) for x in member_userprofiles])
    return (member_username_dict, member_email_dict)
Beispiel #7
0
def issues_list(request, user_name, repo_name, assigned, tracker, status,
                priority, orderby, page):
    refs = 'master'
    path = '.'
    current = 'issues'
    title = u'%s / %s / 问题列表' % (user_name, repo_name)
    repo = RepoManager.get_repo_by_name(user_name, repo_name)
    if repo is None:
        raise Http404
    user_id = request.user.id
    memberUsers = RepoManager.list_repo_team_memberUser(repo.id)
    memberUsers = _let_request_user_first(memberUsers, user_id)
    member_ids = [x.id for x in memberUsers]
    assigneds = [x.username for x in memberUsers]
    assigneds.insert(0, '0')
    if assigned is None:
        assigned = assigneds[0]
    assigned_id = 0
    assigned_user = GsuserManager.get_user_by_name(assigned)
    if assigned_user is not None and assigned in assigneds:
        assigned_id = assigned_user.id
    tracker = int(tracker)
    status = int(status)
    priority = int(priority)
    page = int(page)
    current_attrs = {
        'assigned': str(assigned),
        'tracker': tracker,
        'status': status,
        'priority': priority,
        'orderby': str(orderby),
        'page': page
    }

    issues = []
    page_size = 50
    offset = page * page_size
    row_count = page_size + 1
    if assigned_id == 0 and tracker == 0 and status == 0 and priority == 0:
        issues = IssueManager.list_issues(repo.id, orderby, offset, row_count)
    else:
        assigned_ids = member_ids if assigned_id == 0 else [assigned_id]
        trackeres = TRACKERS_VAL if tracker == 0 else [tracker]
        statuses = STATUSES_VAL if status == 0 else [status]
        priorities = PRIORITIES_VAL if priority == 0 else [priority]
        issues = IssueManager.list_issues_cons(repo.id, assigned_ids,
                                               trackeres, statuses, priorities,
                                               orderby, offset, row_count)

    hasPre = False
    hasNext = False
    if page > 0:
        hasPre = True
    if len(issues) > page_size:
        hasNext = True
        issues.pop()

    response_dictionary = {
        'mainnav': 'repo',
        'current': current,
        'title': title,
        'path': path,
        'assigneds': assigneds,
        'assigned': assigned,
        'tracker': tracker,
        'status': status,
        'priority': priority,
        'orderby': orderby,
        'page': page,
        'current_attrs': current_attrs,
        'issues': issues,
        'hasPre': hasPre,
        'hasNext': hasNext
    }
    response_dictionary.update(ISSUE_ATTRS)
    response_dictionary.update(
        get_common_repo_dict(request, repo, user_name, repo_name, refs))
    return render_to_response('repo/issues.html',
                              response_dictionary,
                              context_instance=RequestContext(request))
Beispiel #8
0
def show(request, user_name, repo_name, issue_id, page):
    refs = 'master'
    path = '.'
    current = 'issues'
    repo = RepoManager.get_repo_by_name(user_name, repo_name)
    if repo is None:
        raise Http404
    issue = IssueManager.get_issue(repo.id, issue_id)
    if issue is None:
        raise Http404
    issueCommentForm = IssueCommentForm()
    if request.method == 'POST' and request.user.is_authenticated():
        issueComment = IssueComment()
        issueComment.issue_id = issue_id
        issueComment.user_id = request.user.id
        issueCommentForm = IssueCommentForm(request.POST,
                                            instance=issueComment)
        if issueCommentForm.is_valid():
            cid = issueCommentForm.save().id
            FeedManager.notif_issue_comment_at(
                request.user.id, cid, issueCommentForm.cleaned_data['content'])
            issue.comment_count = issue.comment_count + 1
            issue.save()
            return HttpResponseRedirect('/%s/%s/issues/%s/' %
                                        (user_name, repo_name, issue_id))

    page_size = 50
    total_count = issue.comment_count
    total_page = total_count / page_size
    if total_count != 0 and total_count % page_size == 0:
        total_page = total_page - 1
    if page is None or int(page) > total_page:
        page = total_page
    page = int(page)
    issue_comments = []
    if total_count > 0:
        offset = page * page_size
        row_count = page_size
        issue_comments = IssueManager.list_issue_comments(
            issue_id, offset, row_count)

    memberUsers = RepoManager.list_repo_team_memberUser(repo.id)
    memberUsers = _let_request_user_first(memberUsers, request.user.id)
    assigneds = [x.username for x in memberUsers]

    has_issue_modify_right = _has_issue_modify_right(request, issue, repo)
    title = u'%s / %s / 问题:%s' % (user_name, repo_name, issue.subject)
    response_dictionary = {
        'mainnav': 'repo',
        'current': current,
        'title': title,
        'path': path,
        'issue': issue,
        'issue_comments': issue_comments,
        'issueCommentForm': issueCommentForm,
        'page': page,
        'total_page': range(0, total_page + 1),
        'assigneds': assigneds,
        'assigned': issue.assigned,
        'tracker': issue.tracker,
        'status': issue.status,
        'priority': issue.priority,
        'has_issue_modify_right': has_issue_modify_right
    }
    response_dictionary.update(ISSUE_ATTRS)
    response_dictionary.update(
        get_common_repo_dict(request, repo, user_name, repo_name, refs))
    return render_to_response('repo/issue_show.html',
                              response_dictionary,
                              context_instance=RequestContext(request))