Fix: les issues fermées suivies par le board s'affichent dans la colonne Terminé (le merge ne recevait que les issues ouvertes) + test de régression
CI / test (push) Successful in 2m20s
CI / test (push) Successful in 2m20s
This commit is contained in:
+25
-5
@@ -832,13 +832,25 @@ async def board(request: Request, owner: str, repo: str, milestone: str = ""):
|
|||||||
# A kanban:* label changed outside Kanbante wins over local state.
|
# A kanban:* label changed outside Kanbante wins over local state.
|
||||||
_adopt_label_columns(full_name, open_issues, get_board_state(full_name))
|
_adopt_label_columns(full_name, open_issues, get_board_state(full_name))
|
||||||
|
|
||||||
|
# Closed issues stay visible while the board tracks them as done
|
||||||
|
# (reconcile_board_state moved their row). Merging open issues only
|
||||||
|
# made the "Terminé" column permanently empty.
|
||||||
|
done_numbers = {
|
||||||
|
c["issue_number"] for c in get_board_state(full_name).get("done", [])
|
||||||
|
}
|
||||||
|
closed_display = [
|
||||||
|
i
|
||||||
|
for i in issues
|
||||||
|
if i.get("state") != "open" and i["number"] in done_numbers
|
||||||
|
]
|
||||||
|
|
||||||
# Milestone view: filter the board to one milestone (sprint-style),
|
# Milestone view: filter the board to one milestone (sprint-style),
|
||||||
# with its deadline and completion progress.
|
# with its deadline and completion progress.
|
||||||
milestones: list[dict] = []
|
milestones: list[dict] = []
|
||||||
selected_milestone = None
|
selected_milestone = None
|
||||||
milestone_progress = None
|
milestone_progress = None
|
||||||
milestone_forecast = None
|
milestone_forecast = None
|
||||||
display_issues = open_issues
|
display_issues = open_issues + closed_display
|
||||||
try:
|
try:
|
||||||
milestones = await gitea.get_milestones(owner, repo)
|
milestones = await gitea.get_milestones(owner, repo)
|
||||||
except Exception as exc: # milestones are decoration, never fatal
|
except Exception as exc: # milestones are decoration, never fatal
|
||||||
@@ -851,7 +863,7 @@ async def board(request: Request, owner: str, repo: str, milestone: str = ""):
|
|||||||
str(ms.get("id")) == milestone or ms.get("title") == milestone
|
str(ms.get("id")) == milestone or ms.get("title") == milestone
|
||||||
)
|
)
|
||||||
|
|
||||||
display_issues = [i for i in open_issues if _in_milestone(i)]
|
display_issues = [i for i in display_issues if _in_milestone(i)]
|
||||||
selected_milestone = next(
|
selected_milestone = next(
|
||||||
(
|
(
|
||||||
m for m in milestones
|
m for m in milestones
|
||||||
@@ -941,7 +953,16 @@ def _board_columns_for(
|
|||||||
for number in changes["closed_numbers"]:
|
for number in changes["closed_numbers"]:
|
||||||
log_event(full_name, number, "closed", to_column="done", source="gitea")
|
log_event(full_name, number, "closed", to_column="done", source="gitea")
|
||||||
_adopt_label_columns(full_name, open_issues, get_board_state(full_name))
|
_adopt_label_columns(full_name, open_issues, get_board_state(full_name))
|
||||||
display_issues = open_issues
|
board_state = get_board_state(full_name)
|
||||||
|
# Closed issues stay visible while the board tracks them as done
|
||||||
|
# (reconcile_board_state moved their row). Merging open issues only
|
||||||
|
# made the "Terminé" column permanently empty.
|
||||||
|
done_numbers = {c["issue_number"] for c in board_state.get("done", [])}
|
||||||
|
display_issues = open_issues + [
|
||||||
|
i
|
||||||
|
for i in issues
|
||||||
|
if i.get("state") != "open" and i["number"] in done_numbers
|
||||||
|
]
|
||||||
if milestone:
|
if milestone:
|
||||||
def _in_ms(issue: dict) -> bool:
|
def _in_ms(issue: dict) -> bool:
|
||||||
ms = issue.get("milestone") or {}
|
ms = issue.get("milestone") or {}
|
||||||
@@ -949,8 +970,7 @@ def _board_columns_for(
|
|||||||
str(ms.get("id")) == milestone or ms.get("title") == milestone
|
str(ms.get("id")) == milestone or ms.get("title") == milestone
|
||||||
)
|
)
|
||||||
|
|
||||||
display_issues = [i for i in open_issues if _in_ms(i)]
|
display_issues = [i for i in display_issues if _in_ms(i)]
|
||||||
board_state = get_board_state(full_name)
|
|
||||||
columns = _merge_issues_with_board(display_issues, board_state)
|
columns = _merge_issues_with_board(display_issues, board_state)
|
||||||
return columns, display_issues, board_state
|
return columns, display_issues, board_state
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user