feature: integrate bigb for a homepage overview dashboard #18

Merged
Gilles merged 2 commits from feat/17-bigb-dashboard into master 2026-10-26 08:52:59 +00:00
Owner

Wires bigb-django in as an optional dependency (same guarded-import pattern as vieuxhibou/poulpinou), scoped per-user to the projects they can actually read on Forgejo, and seeds a shared read-only overview dashboard (projects count, reports by status, reports by type) idempotently via post_migrate.

Frontend side (embedding the dashboard on the homepage): argus/frontend#8.

Closes #17.


🤖 Generated with Claude Code

https://claude.ai/code/session_014HiJrn6J6vhyFfC2qyY4uh

Wires `bigb-django` in as an optional dependency (same guarded-import pattern as vieuxhibou/poulpinou), scoped per-user to the projects they can actually read on Forgejo, and seeds a shared read-only overview dashboard (projects count, reports by status, reports by type) idempotently via `post_migrate`. Frontend side (embedding the dashboard on the homepage): argus/frontend#8. Closes #17. --- 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_014HiJrn6J6vhyFfC2qyY4uh
feature: integrate bigb for a homepage overview dashboard
Some checks failed
ci / test (pull_request) Failing after 3m0s
ci / e2e (pull_request) Has been skipped
ci / docker (pull_request) Has been skipped
ci / deploy (pull_request) Has been skipped
9430d726ba
Wire bigb-django in as an optional dependency (same guarded-import
pattern as vieuxhibou/poulpinou) and register Project/Report as
queryable, scoped per-user to the projects they can actually read on
Forgejo (apps.accounts.permissions, cached) -- bigb's own scope
callback has no per-project DB column to filter on directly, so the
visible project ids are resolved once per user and reused.

Every authenticated user is added to a "bigb-viewers" group on OIDC
login; a post_migrate hook seeds a shared "Vue d'ensemble" dashboard
(projects count, reports by status, reports by type) owned by an
admin and shared with that group, idempotently, mirroring the existing
periodic-task seeding pattern.

Closes #17.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014HiJrn6J6vhyFfC2qyY4uh
Author
Owner
<!-- argus-link-bot:argus/backend --> 📊 [Rapports Argus pour cette PR](https://reports.stationmyr.net/argus/backend/pr/18)
fix: don't let test_bigb.py's bigb import crash pytest collection
All checks were successful
ci / test (pull_request) Successful in 3m17s
ci / e2e (pull_request) Has been skipped
ci / docker (pull_request) Has been skipped
ci / deploy (pull_request) Has been skipped
f00cbae380
bigb stays genuinely optional (settings.HAS_BIGB, same as
vieuxhibou/poulpinou) -- local dev and the "test" CI job don't
install requirements-gilles.txt. test_bigb.py imported bigb directly
at module level with no guard, so pytest's collection step crashed
with ModuleNotFoundError, aborting the *entire* test run (not just
this file) -- "collected 178 items / 1 error", "Interrupted".

- pytest.importorskip("bigb") skips just this module when it's
  missing, instead of crashing collection outright.
- .pylintrc: ignored-modules=bigb -- unlike vieuxhibou/poulpinou
  (only ever imported inside try/except ImportError, which pylint
  already special-cases), bigb_seed.py/bigb_queries.py/test_bigb.py
  import it directly, guarded by settings.HAS_BIGB checks pylint
  can't statically follow, so it flagged import-error (E0401) on
  every one of them.
- # noqa: E402 on each import after the importorskip guard, so
  autopep8's format-check doesn't try to hoist them back above it
  (undoing the guard) while pylint's wrong-import-position stays
  disabled for the same block.

Found via this branch's own CI (argus/backend#18): pytest and lint
both failed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013EeueXTWCT4Y6EbeideZcm
Gilles merged commit eeb80d62d1 into master 2026-10-26 08:52:59 +00:00
Gilles deleted branch feat/17-bigb-dashboard 2026-10-26 08:53:00 +00:00
Sign in to join this conversation.
No description provided.