Commit Graph

50 Commits

Author SHA1 Message Date
giles
fca0950cd1 Add attach/detach glue calls to calendar and market CRUD
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 48s
Wire up ContainerRelation tracking via attach_child/detach_child in:
- calendars: create (including revive), soft_delete
- markets: create (including revive), soft_delete

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 09:52:13 +00:00
giles
ee93832db0 Update shared submodule to include glue layer + MenuItem fix
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 40s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 08:03:32 +00:00
giles
0a8d1391f6 Add glue layer: replace /internal/menu-items API with direct DB query
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 43s
- Context processor: get_navigation_tree() replaces api_get("coop", "/internal/menu-items")
- Add glue submodule

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 23:37:54 +00:00
giles
4a0041efd5 ci: clean all sibling dirs before copying to fix stale table defs
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m20s
Previous runs left self-copies (e.g. events/events/) that caused
'Table already defined' errors. Split into two loops: first rm -rf
all sibling dirs, then copy only non-self siblings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:31:59 +00:00
giles
b2aa657d70 CI: skip copying own models to avoid duplicate SQLAlchemy table defs
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m12s
Each app has its own models/ at the root (imported as bare `models.X`).
The CI copy was also creating {app}/models/ (imported as `{app}.models.X`),
causing SQLAlchemy to see the same table defined twice.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:15:08 +00:00
giles
dd827541ee Update shared submodule: import all model packages at startup
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m12s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:01:46 +00:00
giles
b26b47169a CI: use git archive for sibling models (atomic, race-safe)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 40s
The cp approach failed when sibling repos were mid-update from
their own CI runs. git archive reads directly from git objects,
and git fetch ensures origin/decoupling is available even if the
sibling working tree is on a different branch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:11:02 +00:00
giles
05867ff7f5 CI: copy sibling app models into build context for cross-domain imports
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m18s
Phases 1-3 split models by domain ownership, but cross-app imports
still exist (e.g. cart imports market.models.CartItem). In Docker
each app only has its own code. The CI step now copies sibling app
model packages into the build context before docker build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:02:07 +00:00
giles
b188bb8f20 Update shared submodule: merge diverged alembic heads
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m26s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 14:27:40 +00:00
giles
387af7faa7 Update shared submodule (adds missing alembic.ini)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m49s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 14:20:25 +00:00
giles
541dd2ccd7 Add PYTHONPATH=/app so Hypercorn spawn workers find app module
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m58s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 14:01:50 +00:00
giles
cac3c12241 Update shared submodule: rename logging → log_config
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Fixes stdlib logging shadow that caused circular import in Docker.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 13:56:09 +00:00
giles
b35abdeda8 Replace shared_lib submodule with shared for decoupling deploy
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m22s
- Swap shared_lib submodule → shared (tracking decoupling branch)
- Dockerfile: shared_lib/ → shared/, remove bp symlink hack
- CI: trigger on decoupling branch, use dynamic ref_name

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 13:29:32 +00:00
giles
154f968296 feat: decouple events from shared_lib, add app-owned models
Phase 1-3 of decoupling:
- path_setup.py adds project root to sys.path
- Events-owned models in events/models/ (calendars with all related models)
- All imports updated: shared.infrastructure, shared.db, shared.browser, etc.
- Calendar uses container_type/container_id instead of post_id FK
- CalendarEntryPost uses content_type/content_id (generic content refs)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 12:46:36 +00:00
giles
95d954fdb6 fix: remove existing bp dir before symlinking in Dockerfile
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 42s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 01:08:12 +00:00
giles
ac9d97d78d fix: preserve post admin nav bar across events app pages
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 41s
- Add post-admin-header-child row to calendars, calendar, markets,
  and payments index templates so the admin nav bar persists
- Create events-app-specific post/admin nav and header templates
  using coop_url() for blog endpoints instead of url_for()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 23:51:40 +00:00
giles
e0679f8100 feat: add markets and payments management pages
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 45s
- New markets blueprint at /<slug>/markets/ with create/delete
- New payments blueprint at /<slug>/payments/ with SumUp config
- Register both in events app with context processor for markets
- Remove PageConfig feature flag check from calendar creation
  (feature toggles replaced by direct management pages)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 23:45:07 +00:00
giles
0255c937dd chore: move repo to ~/rose-ash/ and add configurable CI paths
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 37s
REPO_DIR points to /root/rose-ash/events, COOP_DIR to /root/coop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 22:05:44 +00:00
giles
a4ea5e3bd1 chore: update shared_lib submodule to Phase 4
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m1s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 21:47:48 +00:00
giles
c09c433f82 chore: update shared_lib submodule to Phase 3
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 35s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 20:54:23 +00:00
giles
249b7d3ff2 chore: update shared_lib submodule
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 37s
Market URLs now include post slug prefix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 20:16:01 +00:00
giles
ab2fa6a393 chore: update shared_lib submodule
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 35s
Market top menu link now goes to coop blog page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 20:08:08 +00:00
giles
27e6c85e2c chore: update shared_lib submodule
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 36s
Picks up MarketPlace model, nav entries template, and related changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 20:01:02 +00:00
giles
8c1a0240a3 feat: enforce calendar creation only on pages with calendar feature
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 48s
Calendar creation now requires the parent post to be a page (is_page=True)
with the calendar feature enabled in its PageConfig. Update shared_lib
submodule with PageConfig model.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 14:27:39 +00:00
giles
4a707577d3 chore: update shared_lib (fix settings cog visibility)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 39s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:22:15 +00:00
giles
aa63af28fe chore: update shared_lib (fix stale blog.post.calendars refs)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 40s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:02:31 +00:00
giles
438b2edb0d fix: replace stale blog.post.* endpoint refs with coop_url()
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Replace url_for('blog.post.post_detail', ...) and
url_for('blog.post.admin.entries', ...) with coop_url() for
cross-service links back to the blog app.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:02:16 +00:00
giles
65f14ef0f5 chore: update shared_lib (cross-service calendar templates)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 40s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:55:21 +00:00
giles
dcf716c685 fix: make calendar name a link back to calendar view
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 42s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:52:25 +00:00
giles
99822607a4 chore: update shared_lib (remove console.log)
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:51:38 +00:00
giles
2f4f8b3e36 fix: use **kwargs in calendar admin handlers (slug popped by preprocessor)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 37s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:14:08 +00:00
giles
838f1ae1bc fix: calendar nav settings cog, header padding, post nav admin link
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 37s
- Calendar nav: fix Slots link URL, add admin cog for admins
- Calendar header: add left padding to calendar name
- Post nav: add settings cog linking to blog admin

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:09:37 +00:00
giles
75cdb489c4 chore: update shared_lib submodule
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 44s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 10:55:12 +00:00
giles
9df5b45696 refactor: remove events post header override (shared covers it)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 10:54:55 +00:00
giles
fb0fc5999e feat: add post header (village hall menu bar) to calendar pages
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 37s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 10:47:16 +00:00
giles
43dd4d6db4 chore: update shared_lib submodule (post slug in events_url paths)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 45s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 10:36:57 +00:00
giles
0fb9b1f880 feat: nest calendars under /<slug>/calendars with auto slug injection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 10:36:41 +00:00
giles
139cf5fa2f fix: remove extra endcall in calendar header template
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 36s
The premature endcall closed menu_row before desktop_nav,
causing a Jinja nesting error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 09:58:05 +00:00
giles
585ebc00b6 chore: update shared_lib submodule
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 33s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 09:40:57 +00:00
giles
3624d141dc fix: remove post.slug references from events calendar templates
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 45s
Routes in standalone events mode don't need slug parameter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 02:12:09 +00:00
giles
033d9d617c fix: calendar templates extend root instead of post
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 42s
Prevents 500 errors in standalone events app where post
variable is unavailable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 02:04:35 +00:00
giles
a868b0a8a3 fix: add app-specific templates dir to Jinja loader
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 41s
App templates must override shared templates so calendar pages
can skip the post-specific meta block.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 01:36:54 +00:00
giles
dd9007d572 fix: override meta block in calendar templates
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Calendar templates extend post/index.html which includes _meta.html
expecting a `post` variable. In standalone events mode there's no
post — override with empty meta block.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 01:35:02 +00:00
giles
8dc540606e fix: use absolute imports in app.py (not relative)
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
app.py is a top-level module, not inside a package, so relative
imports (from .bp...) fail at runtime.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 01:16:03 +00:00
giles
6c706703e6 fix: add bp/__init__.py with register_calendars export
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 00:29:02 +00:00
giles
b5be5285cb fix: add bp symlink in Dockerfile for suma_browser.app.bp import path
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 00:24:29 +00:00
giles
e191b32888 fix: Dockerfile and CI for multi-repo deployment
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
- Fix requirements.txt path to shared_lib/requirements.txt
- CI: add git submodule update, deploy shared coop stack from /root/coop

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 00:14:05 +00:00
giles
1bab546dfc feat: ticket purchase flow, QR display, and admin check-in
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Ticket purchase:
- tickets blueprint with routes for my tickets list, ticket detail with QR
- Buy tickets form on entry detail page (HTMX-powered)
- Ticket services: create, query, availability checking

Admin check-in:
- ticket_admin blueprint with dashboard, lookup, and check-in routes
- QR scanner/lookup interface with real-time search
- Per-entry ticket list view
- Check-in transitions ticket state to checked_in

Internal API:
- GET /internal/events/tickets endpoint for cross-app queries
- POST /internal/events/tickets/<code>/checkin for programmatic check-in

Template fixes:
- All templates updated: blog.post.calendars.* → calendars.*
- Removed slug=post.slug parameters (standalone events service)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 00:00:35 +00:00
giles
59a69ed320 feat: add shared library as git submodule
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 23:44:15 +00:00
giles
3c0fa45f8c feat: initialize events app with calendars, slots, tickets, and internal API
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Extract events/calendar functionality into standalone microservice:
- app.py and events_api.py from apps/events/
- Calendar blueprints (calendars, calendar, calendar_entries, calendar_entry, day, slots, slot, ticket_types, ticket_type)
- Templates for all calendar/event views including admin
- Dockerfile (APP_MODULE=app:app, IMAGE=events)
- entrypoint.sh (no Alembic - migrations managed by blog app)
- Gitea CI workflow for build and deploy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 23:16:32 +00:00