character: significator field populated from seat on natus_save; my_tray_sig from Character when confirmed — TDD
Character.significator was already in the model but never set. natus_save now copies seat.significator onto the Character on every save (draft + confirm). _role_select_context overrides my_tray_sig from Character.significator when sky_confirmed, making Character the authoritative source for the sig card displayed in the sea overlay. Code architected by Disco DeDisco <discodedisco@outlook.com> Git commit message Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -352,14 +352,18 @@ def _role_select_context(room, user):
|
||||
elif user_role in _GRAVITY_ROLES:
|
||||
user_polarity = 'gravity'
|
||||
ctx["user_polarity"] = user_polarity
|
||||
sky_confirmed = bool(
|
||||
_canonical_seat and Character.objects.filter(
|
||||
confirmed_char = (
|
||||
Character.objects.filter(
|
||||
seat=_canonical_seat,
|
||||
confirmed_at__isnull=False,
|
||||
retired_at__isnull=True,
|
||||
).exists()
|
||||
).first()
|
||||
if _canonical_seat else None
|
||||
)
|
||||
sky_confirmed = confirmed_char is not None
|
||||
ctx["sky_confirmed"] = sky_confirmed
|
||||
if sky_confirmed:
|
||||
ctx["my_tray_sig"] = confirmed_char.significator
|
||||
|
||||
return ctx
|
||||
|
||||
@@ -1083,6 +1087,8 @@ def natus_save(request, room_id):
|
||||
char.house_system = body.get('house_system', Character.PORPHYRY)
|
||||
char.chart_data = body.get('chart_data')
|
||||
|
||||
char.significator = seat.significator
|
||||
|
||||
if body.get('action') == 'confirm':
|
||||
char.confirmed_at = timezone.now()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user