From 42be0c63dc70973e618ffb2d9286b0686e5e676d Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Mon, 27 Apr 2026 22:33:42 -0400 Subject: [PATCH] SIG SELECT: read qualifiers from model fields; drop hardcoded Leavened/Graven MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - _sig_select_overlay.html: add data-levity-qualifier + data-gravity-qualifier to sig card elements so JS can read per-card values - sig-select.js: derive qualifier from cardEl.dataset instead of hardcoded string - _sea_overlay.html: use my_tray_sig.levity_qualifier / gravity_qualifier; collapse MIDDLE/MAJOR/else branches → MAJOR vs rest (all non-major show qualifier above name; empty qualifier renders empty

) - views.py: SIG READY event display uses card qualifier fields directly; removes separate MIDDLE / MAJOR / else branches Earthman courts now show Elevated/Graven; pips show Relieving/Grieving; Nomad and Popes show Enlightened/Engraven. Code architected by Disco DeDisco Git commit message Co-Authored-By: Claude Sonnet 4.6 --- src/apps/epic/static/apps/epic/sig-select.js | 4 +++- src/apps/epic/views.py | 12 ++++-------- .../apps/gameboard/_partials/_sea_overlay.html | 8 +++----- .../gameboard/_partials/_sig_select_overlay.html | 4 +++- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/apps/epic/static/apps/epic/sig-select.js b/src/apps/epic/static/apps/epic/sig-select.js index 1f765f1..f9c88bb 100644 --- a/src/apps/epic/static/apps/epic/sig-select.js +++ b/src/apps/epic/static/apps/epic/sig-select.js @@ -118,7 +118,9 @@ var SigSelect = (function () { stageCard.querySelector('.fan-card-arcana').textContent = arcana; stageCard.querySelector('.fan-card-correspondence').textContent = ''; // shown in game-kit only - var qualifier = userPolarity === 'levity' ? 'Leavened' : 'Graven'; + var qualifier = userPolarity === 'levity' + ? (cardEl.dataset.levityQualifier || '') + : (cardEl.dataset.gravityQualifier || ''); var isMajor = arcana.toLowerCase().indexOf('major') !== -1; // Major arcana: qualifier sits below the title — append comma so it reads as a subtitle. stageCard.querySelector('.fan-card-name').textContent = isMajor ? title + ',' : title; diff --git a/src/apps/epic/views.py b/src/apps/epic/views.py index 9fd2e92..8371d37 100644 --- a/src/apps/epic/views.py +++ b/src/apps/epic/views.py @@ -756,15 +756,11 @@ def sig_ready(request, room_id): reservation.ready = True reservation.save(update_fields=["ready"]) card = reservation.card - if card and card.arcana == TarotCard.MIDDLE: - _pol_prefix = "Leavened" if reservation.polarity == SigReservation.LEVITY else "Graven" - _card_display = f"{_pol_prefix} {card.name_title}" - elif card and card.arcana == TarotCard.MAJOR: - _base = card.name_title.removeprefix("The ") - _pol_suffix = "of Light" if reservation.polarity == SigReservation.LEVITY else "from the Grave" - _card_display = f"{_base} {_pol_suffix}" + if card: + _qual = card.levity_qualifier if reservation.polarity == SigReservation.LEVITY else card.gravity_qualifier + _card_display = f"{_qual} {card.name_title}" if _qual else card.name_title else: - _card_display = card.name_title if card else "a card" + _card_display = "a card" record(room, GameEvent.SIG_READY, actor=request.user, card_name=_card_display, corner_rank=card.corner_rank if card else "", diff --git a/src/templates/apps/gameboard/_partials/_sea_overlay.html b/src/templates/apps/gameboard/_partials/_sea_overlay.html index 9d3dee0..4c91085 100644 --- a/src/templates/apps/gameboard/_partials/_sea_overlay.html +++ b/src/templates/apps/gameboard/_partials/_sea_overlay.html @@ -32,13 +32,11 @@

{% if my_tray_sig %}
- {% if my_tray_sig.arcana == "MIDDLE" %} -

{% if user_polarity == "levity" %}Leavened{% else %}Graven{% endif %}

+ {% if my_tray_sig.arcana == "MAJOR" %}

{{ my_tray_sig.name_title }}

- {% elif my_tray_sig.arcana == "MAJOR" %} -

{{ my_tray_sig.name_title }}

-

{% if user_polarity == "levity" %}Leavened{% else %}Graven{% endif %}

+

{% if user_polarity == "levity" %}{{ my_tray_sig.levity_qualifier }}{% else %}{{ my_tray_sig.gravity_qualifier }}{% endif %}

{% else %} +

{% if user_polarity == "levity" %}{{ my_tray_sig.levity_qualifier }}{% else %}{{ my_tray_sig.gravity_qualifier }}{% endif %}

{{ my_tray_sig.name_title }}

{% endif %}
diff --git a/src/templates/apps/gameboard/_partials/_sig_select_overlay.html b/src/templates/apps/gameboard/_partials/_sig_select_overlay.html index 069e2fc..b51c501 100644 --- a/src/templates/apps/gameboard/_partials/_sig_select_overlay.html +++ b/src/templates/apps/gameboard/_partials/_sig_select_overlay.html @@ -72,7 +72,9 @@ Context: sig_cards, user_polarity, user_seat, sig_reserve_url, sig_reservations_ data-correspondence="{{ card.correspondence|default:'' }}" data-keywords-upright="{{ card.keywords_upright|join:',' }}" data-keywords-reversed="{{ card.keywords_reversed|join:',' }}" - data-cautions="{{ card.cautions_json }}"> + data-cautions="{{ card.cautions_json }}" + data-levity-qualifier="{{ card.levity_qualifier }}" + data-gravity-qualifier="{{ card.gravity_qualifier }}">
{{ card.corner_rank }} {% if card.suit_icon %}{% endif %}