Skip to content

Commit 8453396

Browse files
committed
Merge branch 'release/2.12.0'
2 parents 69c61ee + 6ddbbe3 commit 8453396

File tree

12 files changed

+300
-37
lines changed

12 files changed

+300
-37
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ Since data is pulled from YWH platform to your server, only regular outbound web
4949

5050
## Changelog
5151

52+
- v2.12:
53+
- added support for new triage workflow
5254
- v2.11:
5355
- added support for new impact and cve fields
5456
- v2.10:

poetry.lock

Lines changed: 179 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "ywh2bt"
3-
version = "2.11.0"
3+
version = "2.12.0"
44
description = "ywh2bt - YesWeHack to Bug Tracker"
55
readme = "README.md"
66
authors = ["m.honel <[email protected]>"]
@@ -68,7 +68,7 @@ frozenlist = [
6868
{ version="^1.3.0", python = "<3.8" },
6969
{ version="^1.4.0", python = ">=3.8" },
7070
]
71-
yeswehack = ">=0.8.8"
71+
yeswehack = ">=0.8.9"
7272

7373
[tool.poetry.extras]
7474
gui = ["pyside6"]

stubs/yeswehack/api.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ class Log:
131131
program: Optional[Dict[str, Any]]
132132
old_ask_for_fix_verification_status: Optional[str]
133133
new_ask_for_fix_verification_status: Optional[str]
134+
old_triage_status: Optional[str]
135+
new_triage_status: Optional[str]
134136

135137

136138
class Report:

ywh2bt/core/api/formatter/formatter.py

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
REPORT_ASK_FOR_FIX_VERIFICATION_STATUS_TRANSLATIONS,
1515
REPORT_PROPERTY_LABELS,
1616
REPORT_STATUS_TRANSLATIONS,
17+
REPORT_TRIAGE_STATUS_TRANSLATIONS,
1718
AskForFixverificationStatusLog,
1819
CloseLog,
1920
CommentLog,
@@ -26,6 +27,7 @@
2627
RewardLog,
2728
StatusUpdateLog,
2829
TransferLog,
30+
TriageStatusLog,
2931
)
3032

3133

@@ -57,9 +59,10 @@ class ReportMessageFormatter(ABC):
5759
_details_update_log_template: Template
5860
_details_update_log_line_template: Template
5961
_priority_update_log_template: Template
62+
_reward_log_template: Template
6063
_transfer_log_template: Template
6164
_ask_for_fix_verification_status_log_template: Template
62-
_reward_log_template: Template
65+
_triage_status_log_template: Template
6366
_value_transformer: _ValueTransformer
6467

6568
def __init__(
@@ -78,6 +81,7 @@ def __init__(
7881
reward_log_template: Template,
7982
transfer_log_template: Template,
8083
ask_for_fix_verification_status_log_template: Template,
84+
triage_status_log_template: Template,
8185
value_transformer: Optional[_ValueTransformer] = None,
8286
):
8387
"""
@@ -115,6 +119,7 @@ def __init__(
115119
self._value_transformer = value_transformer or _identity_transformer
116120
self._transfer_log_template = transfer_log_template
117121
self._ask_for_fix_verification_status_log_template = ask_for_fix_verification_status_log_template
122+
self._triage_status_log_template = triage_status_log_template
118123

119124
def _transform_value(
120125
self,
@@ -362,18 +367,6 @@ def _transform_close_log(
362367
),
363368
)
364369

365-
def _translate_status(
366-
self,
367-
status: str,
368-
) -> str:
369-
return REPORT_STATUS_TRANSLATIONS.get(status, "")
370-
371-
def _translate_ask_for_fix_verification_status(
372-
self,
373-
status: str,
374-
) -> str:
375-
return REPORT_ASK_FOR_FIX_VERIFICATION_STATUS_TRANSLATIONS.get(status.lower(), "")
376-
377370
@_transform_log.register
378371
def _transform_details_update_log(
379372
self,
@@ -418,3 +411,38 @@ def _format_reward_log(
418411
html=log.message_html,
419412
),
420413
)
414+
415+
@_transform_log.register
416+
def _transform_triage_status_log(
417+
self,
418+
log: TriageStatusLog,
419+
) -> str:
420+
return self._triage_status_log_template.substitute(
421+
new_triage_status=self._translate_triage_status(
422+
status=log.new_triage_status or "",
423+
),
424+
old_triage_status=self._translate_triage_status(
425+
status=log.old_triage_status or "",
426+
),
427+
comment=self.transform_html(
428+
html=log.message_html,
429+
),
430+
)
431+
432+
def _translate_status(
433+
self,
434+
status: str,
435+
) -> str:
436+
return REPORT_STATUS_TRANSLATIONS.get(status, "")
437+
438+
def _translate_ask_for_fix_verification_status(
439+
self,
440+
status: str,
441+
) -> str:
442+
return REPORT_ASK_FOR_FIX_VERIFICATION_STATUS_TRANSLATIONS.get(status.lower(), "")
443+
444+
def _translate_triage_status(
445+
self,
446+
status: str,
447+
) -> str:
448+
return REPORT_TRIAGE_STATUS_TRANSLATIONS.get(status.lower(), "")

ywh2bt/core/api/formatter/markdown.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@
4242
COMMENT_LOG_TEMPLATE = """
4343
**Comment**:
4444
45+
${comment}
46+
"""
47+
TRIAGE_STATUS_LOG_TEMPLATE = """
48+
**Triage status updated**:
49+
50+
${old_triage_status} -> ${new_triage_status}
51+
52+
**Comment**:
53+
4554
${comment}
4655
"""
4756
CVSS_UPDATE_LOG_TEMPLATE = """
@@ -131,6 +140,7 @@ def __init__(self) -> None:
131140
reward_log_template=Template(REWARD_LOG_TEMPLATE),
132141
transfer_log_template=Template(TRANSFER_LOG_TEMPLATE),
133142
ask_for_fix_verification_status_log_template=Template(ASK_FOR_FIX_VERIFICATION_STATUS_LOG_TEMPLATE),
143+
triage_status_log_template=Template(TRIAGE_STATUS_LOG_TEMPLATE),
134144
value_transformer=_html_transformer,
135145
)
136146

ywh2bt/core/api/mapping.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
TrackerUpdateLog,
3939
TrackingStatusLog,
4040
TransferLog,
41+
TriageStatusLog,
4142
)
4243
from ywh2bt.core.html import (
4344
cleanup_attachments_and_urls_from_html,
@@ -332,6 +333,22 @@ def map_raw_log(
332333
old_status=raw_log.old_status,
333334
new_status=raw_log.status,
334335
)
336+
if (
337+
(raw_log.type == "comment" or raw_log.type == "assign")
338+
and raw_log.old_triage_status
339+
and raw_log.new_triage_status
340+
):
341+
return TriageStatusLog(
342+
created_at=created_at,
343+
log_id=log_id,
344+
log_type=log_type,
345+
private=private,
346+
author=author,
347+
message_html=message_html,
348+
attachments=attachments,
349+
old_triage_status=raw_log.old_triage_status,
350+
new_triage_status=raw_log.new_triage_status,
351+
)
335352
if raw_log.type == "comment" or (raw_log.type == "assign" and message_html):
336353
return CommentLog(
337354
created_at=created_at,

ywh2bt/core/api/models/report.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@
5858
"cancelled": "Fix verification cancelled",
5959
}
6060
)
61+
REPORT_TRIAGE_STATUS_TRANSLATIONS = MappingProxyType(
62+
{
63+
"not_available": "Not available",
64+
"in_progress": "In progress",
65+
"awaiting_info": "Awaiting info",
66+
"assessed": "Assessed",
67+
"done": "Done",
68+
}
69+
)
6170

6271

6372
@dataclass
@@ -359,6 +368,14 @@ class AskForFixverificationStatusLog(Log):
359368
old_ask_for_fix_verification_status: Optional[str]
360369

361370

371+
@dataclass
372+
class TriageStatusLog(Log):
373+
"""A triage status log."""
374+
375+
old_triage_status: str
376+
new_triage_status: str
377+
378+
362379
class _LogFilterProtocol(Protocol):
363380
def __call__(
364381
self,

ywh2bt/core/api/trackers/jira/formatter.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@
4949
COMMENT_LOG_TEMPLATE = """
5050
*Comment*:
5151
52+
${comment}
53+
"""
54+
TRIAGE_STATUS_LOG_TEMPLATE = """
55+
**Triage status updated**:
56+
57+
${old_triage_status} -> ${new_triage_status}
58+
59+
**Comment**:
60+
5261
${comment}
5362
"""
5463
CVSS_UPDATE_LOG_TEMPLATE = """
@@ -170,6 +179,7 @@ def __init__(self) -> None:
170179
reward_log_template=Template(REWARD_LOG_TEMPLATE),
171180
transfer_log_template=Template(TRANSFER_LOG_TEMPLATE),
172181
ask_for_fix_verification_status_log_template=Template(ASK_FOR_FIX_VERIFICATION_STATUS_LOG_TEMPLATE),
182+
triage_status_log_template=Template(TRIAGE_STATUS_LOG_TEMPLATE),
173183
)
174184

175185
def transform_report_description_html(

ywh2bt/core/api/trackers/servicenow/formatter.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@
4141
"""
4242
COMMENT_LOG_TEMPLATE = """
4343
Comment:
44+
${comment}
45+
"""
46+
TRIAGE_STATUS_LOG_TEMPLATE = """
47+
**Triage status updated**:
48+
49+
${old_triage_status} -> ${new_triage_status}
50+
51+
**Comment**:
52+
4453
${comment}
4554
"""
4655
CVSS_UPDATE_LOG_TEMPLATE = """
@@ -116,6 +125,7 @@ def __init__(self) -> None:
116125
reward_log_template=Template(REWARD_LOG_TEMPLATE),
117126
transfer_log_template=Template(TRANSFER_LOG_TEMPLATE),
118127
ask_for_fix_verification_status_log_template=Template(ASK_FOR_FIX_VERIFICATION_STATUS_LOG_TEMPLATE),
128+
triage_status_log_template=Template(TRIAGE_STATUS_LOG_TEMPLATE),
119129
)
120130

121131
def transform_report_description_html(

0 commit comments

Comments
 (0)