Name: [IMP] viin_brain,viin_web_editor: UI hardening v1 (token + polish + Odoo-native + v2 seams)

State: Killed finished in 309m

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #27

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: e63d41263cd2083255ee3f7ada008eb065563625

Description:

                                            [IMP] viin_brain: extend TourCaseBase with _ensure_contracts_database (round 4 follow-up)

Address Gap 2 from CEO intent review: 7 tour JS files hardcode
:contains("Contracts Database") + :contains("Contract Alpha") selectors,
making those tours fail with --without-demo=all even after Phase B switch
to TourCaseBase.

Per CEO directive (Boil-the-Lake max): seed the demo_db_page_contracts
fixture inside cls._tour_vault so tours pass deterministically regardless
of demo data state.

_ensure_contracts_database() seeds (idempotent — prefer demo, fallback
search, finally create):
- Contracts Database page (page_type=database, icon 🗂️)
- Status property (select with Draft/Review/Signed options)
- Effective Date property (date)
- Contract Alpha + Contract Beta child pages (Gamma omitted — tours
  reference only Alpha; Beta provides second row for List/Kanban)
- Property values for Alpha (Status=Review, Date=2025-01-15)
- Default database view (kind=list, is_default=True)

Sets cls._contracts_db_page + cls._contract_alpha_page for subclasses.

Tours now pass with both --without-demo=all and demo loaded:
  brain_database_view, brain_database_calendar_tour,
  brain_database_gallery_tour, brain_database_board_tour,
  brain_properties, brain_wikilink (line 97 Contracts Database step)

WI14 cluster (graph_panel tour) already covered by
test_brain_graph_panel_tour.py's own setUpClass — no fixture extension
needed.

Refs PR #27.
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time: