diff --git a/pagure/templates/roadmap.html b/pagure/templates/roadmap.html index a7ed9b9..16b84eb 100644 --- a/pagure/templates/roadmap.html +++ b/pagure/templates/roadmap.html @@ -6,17 +6,19 @@ {% block repo %} -{% macro render_issue_list(issues, title, id, milestone) %} +{% macro render_issue_list(issues, title, id, milestone, total) %}
{{ title }} - {% if milestone and repo.milestones[milestone]['date'] %} -   (Due: {{ - repo.milestones[milestone]['date'] }}) - {% endif %} + + {% if milestone and milestone in repo.milestones and repo.milestones[milestone]['date'] %} + (Due: {{ + repo.milestones[milestone]['date'] }}) + {% endif %} ({{ issues | length }} {% + if total %}of {{ total }}{% endif %}) | Opened | {% if status and status|lower == 'closed' %} @@ -268,10 +270,11 @@ {% endif %} {% for milestone in milestones %} - {% if issues[milestone] %} + {% if not milestone.endswith('_total') %} {{ render_issue_list( issues[milestone], title=milestone, - id=loop.index, milestone=milestone) }} + id=loop.index, milestone=milestone, + total=issues[milestone + '_total']) }} {% endif %} {% endfor %} {% endblock %} diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index e1eb86e..2925f9c 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -767,17 +767,22 @@ def view_roadmap(repo, username=None, namespace=None): for tag in pagure.lib.get_tags_of_project(flask.g.session, repo) ] - all_milestones = sorted(list(repo.milestones.keys())) - active_milestones = pagure.lib.get_active_milestones(flask.g.session, repo) - - milestones_list = active_milestones if all_stones: - milestones_list = all_milestones + milestones_list = sorted([ + k + for k in repo.milestones + ]) + else: + milestones_list = sorted([ + k + for k in repo.milestones + if repo.milestones[k]['active'] + ]) - if 'unplanned' in all_milestones: - index = all_milestones.index('unplanned') - cnt = len(all_milestones) - all_milestones.insert(cnt, all_milestones.pop(index)) + if 'unplanned' in milestones_list: + index = milestones_list.index('unplanned') + cnt = len(milestones_list) + milestones_list.insert(cnt, milestones_list.pop(index)) if no_stones: # Return only issues that do not have a milestone set @@ -806,26 +811,33 @@ def view_roadmap(repo, username=None, namespace=None): issues = pagure.lib.search_issues( flask.g.session, repo, - milestones=milestones or all_milestones, + milestones=milestones or milestones_list, tags=tags, private=private, - status=status if status.lower() != 'all' else None, + status=None, ) # Change from a list of issues to a dict of milestone/issues milestone_issues = defaultdict(list) for issue in issues: saved = False - for mlstone in sorted(milestones or all_milestones): + for mlstone in sorted(milestones or milestones_list): if mlstone == issue.milestone: - milestone_issues[mlstone].append(issue) - saved = True - break + milestone_issues['%s_total' % mlstone] = \ + milestone_issues.get('%s_total' % mlstone, 0) + 1 + if status.lower() == 'all' or ( + status.lower() != 'all' + and status.lower() == issue.status.lower()): + milestone_issues[mlstone].append(issue) + saved = True + break if saved: continue if status and status.lower() != 'all': - for key in milestone_issues.keys(): + for key in milestone_issues: + if key.endswith('_total'): + continue active = False for issue in milestone_issues[key]: if issue.status == status: @@ -833,6 +845,12 @@ def view_roadmap(repo, username=None, namespace=None): break if not active: del milestone_issues[key] + k2 = '%s_total' % key + if k2 in milestone_issues: + del milestone_issues[k2] + + print milestones_list + print all_stones return flask.render_template( 'roadmap.html', diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 8db2a44..f2bc84d 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -1332,8 +1332,8 @@ def update_milestones(repo, username=None, namespace=None): if not error: miles = {} for cnt in range(len(milestones)): - active = flask.request.form.get( - 'active_milestone_%s' % (cnt + 1), False) + active = True if flask.request.form.get( + 'active_milestone_%s' % (cnt + 1)) else False date = flask.request.form.get( 'milestone_date_%s' % (cnt + 1), None) diff --git a/tests/test_pagure_flask_ui_roadmap.py b/tests/test_pagure_flask_ui_roadmap.py index 4cf796a..47c3586 100644 --- a/tests/test_pagure_flask_ui_roadmap.py +++ b/tests/test_pagure_flask_ui_roadmap.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ - (c) 2016 - Copyright Red Hat Inc + (c) 2016-2018 - Copyright Red Hat Inc Authors: Pierre-Yves Chibon
---|