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
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))
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))
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 ])
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)
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)
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))
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))