Message d'info pour les users en trial dans /compte/roadmap
This commit is contained in:
@@ -22,10 +22,15 @@ def layout(**_):
|
||||
return guard
|
||||
balance = subs_db.credit_pending(current_user.id)
|
||||
next_recharge = subs_db.next_recharge_at(current_user.id)
|
||||
sub = subs_db.get_current(current_user.id)
|
||||
return account_shell(
|
||||
"roadmap",
|
||||
roadmap_ui.roadmap_content(
|
||||
editable=True, balance=balance, next_recharge=next_recharge
|
||||
editable=True,
|
||||
balance=balance,
|
||||
next_recharge=next_recharge,
|
||||
sub_status=sub["status"] if sub else None,
|
||||
trial_ends_at=sub["current_period_end"] if sub else None,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
+22
-1
@@ -106,8 +106,26 @@ def _en_cours_items(en_cours: list[dict]) -> list:
|
||||
]
|
||||
|
||||
|
||||
def _trial_hint(sub_status: str | None, trial_ends_at: str | None):
|
||||
if sub_status != "trial" or not trial_ends_at:
|
||||
return None
|
||||
try:
|
||||
end_date = datetime.fromisoformat(trial_ends_at).strftime("%d/%m/%Y")
|
||||
except (ValueError, TypeError):
|
||||
return None
|
||||
return dbc.Alert(
|
||||
f"Vous pourrez voter à la fin de votre période d'essai, le {end_date}.",
|
||||
color="info",
|
||||
className="mb-3",
|
||||
)
|
||||
|
||||
|
||||
def roadmap_content(
|
||||
editable: bool, balance: int | None = None, next_recharge: datetime | None = None
|
||||
editable: bool,
|
||||
balance: int | None = None,
|
||||
next_recharge: datetime | None = None,
|
||||
sub_status: str | None = None,
|
||||
trial_ends_at: str | None = None,
|
||||
) -> html.Div:
|
||||
try:
|
||||
issues = github.fetch_roadmap_issues()
|
||||
@@ -126,6 +144,9 @@ def roadmap_content(
|
||||
"Les abonné·es votent pour les fonctionnalités à développer en priorité."
|
||||
)
|
||||
)
|
||||
trial_hint = _trial_hint(sub_status, trial_ends_at) if editable else None
|
||||
if trial_hint is not None:
|
||||
body.append(trial_hint)
|
||||
body.append(
|
||||
html.Div(
|
||||
dbc.ListGroup(
|
||||
|
||||
@@ -44,3 +44,35 @@ def test_roadmap_content_renders(monkeypatch):
|
||||
assert "Au vote Y" in s
|
||||
assert "Votes restants" in s
|
||||
assert "value='2'" in s
|
||||
|
||||
|
||||
def test_roadmap_content_shows_trial_hint(monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
ui.github,
|
||||
"fetch_roadmap_issues",
|
||||
lambda: {"en_cours": [], "au_vote": []},
|
||||
)
|
||||
monkeypatch.setattr(ui.roadmap_db, "vote_counts", lambda: {})
|
||||
content = ui.roadmap_content(
|
||||
editable=True,
|
||||
balance=0,
|
||||
sub_status="trial",
|
||||
trial_ends_at="2026-07-20T10:00:00+00:00",
|
||||
)
|
||||
assert "20/07/2026" in str(content)
|
||||
|
||||
|
||||
def test_roadmap_content_no_trial_hint_when_active(monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
ui.github,
|
||||
"fetch_roadmap_issues",
|
||||
lambda: {"en_cours": [], "au_vote": []},
|
||||
)
|
||||
monkeypatch.setattr(ui.roadmap_db, "vote_counts", lambda: {})
|
||||
content = ui.roadmap_content(
|
||||
editable=True,
|
||||
balance=3,
|
||||
sub_status="active",
|
||||
trial_ends_at=None,
|
||||
)
|
||||
assert "période d'essai" not in str(content)
|
||||
|
||||
Reference in New Issue
Block a user