Commit Graph

100 Commits

Author SHA1 Message Date
Matthieu B
59e2cb8199 chore: merge main into ldap branch, resolve conflicts 2026-03-29 16:28:20 +02:00
Matthieu B
000085731f Merge pull request #1198 from wizarrrr/fix/1163-expiry-display
fix: preserve per-server expiry dates in user grouping
2026-03-29 16:25:23 +02:00
Matthieu B
73c29458fe fix: resolve all test failures, linting errors, and type errors
- Fix 55 test failures caused by missing request contexts and incorrect
  session_transaction() usage across 8 test files
- Fix ruff import sorting errors and unused imports
- Fix 122 type errors: rename method override parameters to match base
  classes, add None guards for fetchone()/datetime, widen dict type
  annotations, add type: ignore for SQLAlchemy stub limitations
- Add [tool.ty.rules] config to suppress unsupported-base warnings
- Fix _ variable shadowing gettext in wizard routes
- Add noqa: ARG002 for unused method arguments required by base class
2026-03-29 16:20:23 +02:00
Matthieu B
9f3d66e4fe fix: preserve per-server expiry dates in user grouping (#1163)
Stop mutating primary.expires in _group_users_for_display(); store the
computed earliest date in primary.earliest_expires instead so each
account's individual expires value remains intact for the mixed-expiry
detection logic in user_card.html.
2026-03-29 16:10:19 +02:00
Matthieu B
e992873e4d Merge origin/main into ldap branch
Resolve conflicts in auth/routes.py (incorporate media_server_url),
login.html (combine admin page text + LDAP error guard), and uv.lock.
2026-03-29 15:49:50 +02:00
Matthieu B
0902f4ba93 feat(invites): streamline invite expiry handling and update UI for expiration display 2026-02-25 02:02:08 +01:00
Matthieu B
ad7f07319d feat(invites): implement per-server expiry handling and update invite modal closes #1138 2026-02-23 12:33:29 +01:00
lostpolaris
260165bc2a Change library deletes to upserts
This fixes a long-standing issue where scanning a library would cause an
unintended cascade delete of the invite_library table and would reset
the associated invite's permissions.
2026-02-09 17:08:30 -06:00
Erwan Leboucher
5bb51e0cf1 feat(ldap): add LDAP authentication and invitation integration 2025-12-27 17:14:17 +01:00
Matthieu B
ac36e793e1 refactor: improve code formatting and readability across multiple files 2025-12-09 14:12:17 +01:00
Matthieu B
2b2e289133 Update app/blueprints/admin/routes.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-04 13:00:17 +01:00
Matthieu B
a2259f7baf Update app/blueprints/admin/routes.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-04 12:58:35 +01:00
Matthieu B
df6181a8c6 Update app/blueprints/admin/routes.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-02 20:04:20 +01:00
Simon
1f748c37b2 feat: improve the password reset functionality for jellyfin 2025-11-21 00:49:05 +01:00
Matthieu B
f9ae61e1b4 fix: Refactor invitation handling to use individual user's acceptance timestamp and update package-lock.json for peer dependency closes #1015 2025-11-19 15:25:19 +01:00
Matthieu B
64d0c69457 refactor: update user detail handling to only modify fields present in the form closes #980 2025-11-04 18:07:49 +01:00
Matthieu B
0050f4b646 feat: allow user edit 2025-11-03 14:36:04 +01:00
Matthieu B
faa8a40305 fix: ensure timezone-aware datetime handling for invitations and user expiry 2025-10-23 22:16:55 +02:00
Matthieu B
6a3632ec66 refactor: update type hints for better clarity and consistency across multiple files 2025-10-23 19:49:58 +02:00
Matthieu B
e70263deab refactor: streamline conditional checks and improve logging clarity 2025-10-23 18:44:30 +02:00
Matthieu B
9b5aa0972a refactor: remove slop from media and new linting rules 2025-10-23 18:33:50 +02:00
Matthieu B
47f57e0ca7 refactor: update library grouping by server ID and adjust template rendering for invitations closes #938 2025-10-22 12:19:53 +02:00
Matthieu B
07166a1a80 refactor: update Emby collector to use Sessions API polling instead of WebSocket
fix: correct key for transcoding info in admin routes
feat: enhance Jellyfin client to extract additional session and media details
fix: update template to reflect changes in transcoding info structure
chore: update submodule reference for plus
2025-10-21 11:48:07 +02:00
Matthieu B
3e84e68f8b fix: remove deprecated Plus audit route and update Plus settings tab link 2025-10-20 15:49:17 +02:00
Matthieu B
6395ce6263 fix: Handle both ImportError and AttributeError when checking Plus features availability 2025-10-18 17:11:01 +02:00
Matthieu B
42d4b56df1 Merge branch 'main' into plus 2025-10-18 16:07:43 +02:00
Matthieu B
e8d8e7d7dc refactor: complete get_or_404() migration across all PR-modified files
Finish migrating all db.session.get() + abort(404) patterns to the modern
Flask-SQLAlchemy 3.x db.get_or_404() helper across all files modified by
this PR.

Changes:
- admin/routes.py: 3 instances converted
- admin_accounts/routes.py: 3 instances converted
- connections/routes.py: 2 instances converted
- notifications/routes.py: 1 instance converted
- user_details.py: 1 instance converted (also removed unnecessary abort import)

This completes the migration started in the previous commit, ensuring
consistent use of the Flask-SQLAlchemy 3.x pattern throughout the PR.

Total conversions in PR: 17 instances (7 wizard + 10 other files)
2025-10-18 14:05:53 +02:00
Matthieu B
8361144972 feat(activity): Enhance activity monitoring with historical data import and management features 2025-10-17 11:00:33 +02:00
engels74
d0df4c6d5d feat: wizard step refactor into pre/post wizard steps
Changes:
  - Pre/post invitation wizard phases
  - Phase-aware routing (/pre-wizard/*, /post-wizard/*)
  - Phase indicator badges (visual categorization)
  - Dynamic completion button behavior
  - Two-column admin layout with category drag-and-drop
  - Invite code management service
  - Enhanced wizard export/import
  - Comprehensive test coverage (17 new test files)
2025-10-16 15:28:48 +02:00
Matthieu B
0ac98355dd feat(activity): Implement activity ingestion, identity resolution, and maintenance services
- Added `identity_resolution.py` for resolving Wizarr users and identities.
- Created `ingestion.py` to handle recording and updating activity events.
- Introduced `maintenance.py` for cleanup and session management tasks.
- Developed `queries.py` for read-oriented operations on activity sessions.
- Implemented background tasks in `activity.py` for scheduled maintenance.
- Added tests for activity services and blueprint to ensure functionality.
2025-10-16 15:18:31 +02:00
Matthieu B
a072bdf097 feat: add main side plus features 2025-10-09 12:12:02 +02:00
Matthieu B
c0db3097bd feat: enhance server health metrics and image proxy token management 2025-10-08 17:16:42 +02:00
Matthieu B
1b1bf43298 fix: improve accepted invites card to display user join timestamps and enhance pagination logic 2025-10-07 14:19:17 +02:00
Matthieu B
049f983f81 fix: update accepted invites card to display recent users with pagination 2025-10-07 14:10:28 +02:00
Matthieu B
290b5f34d1 fix: implement image proxy token generation for now playing cards closes and fixes #891 2025-10-06 10:44:06 +02:00
Matthieu B
3d84428a40 feat: implement pagination for accepted invites card and enhance display 2025-09-21 14:43:48 +02:00
Matthieu B
d34ee91553 feat: notified of new update 2025-09-16 16:03:51 +02:00
Matthieu B
01fb8d0fc1 fix: optimise server endpoints 2025-09-11 00:29:10 +02:00
Matthieu B
3d61903f93 fix: SQLite database lock errors in media server user sync
- Replace raw SQL UPDATE statements with metadata caching system
- Add smart User model properties for allow_downloads/allow_live_tv
- Properties check server-specific keys (allowSync, EnableContentDownloading, etc.)
- Fix all media server clients: Plex, Jellyfin, Emby, AudiobookShelf, Navidrome, RomM, Kavita, Komga
- Remove problematic raw SQL from admin routes
- Eliminates concurrent transaction conflicts causing "database is locked" errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 14:26:28 +02:00
Matthieu B
b6ffbecc7c fix: clarify handling of server-specific expiry during user edits 2025-09-07 17:13:36 +02:00
Matthieu B
f86964a29d fix: display latest invites 2025-09-05 14:12:28 +02:00
Matthieu B
8875cfb066 fix: fix allow download / live tv icons 2025-09-05 12:53:48 +02:00
Matthieu B
2dee2aa7af feat: add notes to users 2025-09-05 11:52:32 +02:00
Matthieu B
80b8cf3afe fix: user page blank after certain operations
feat: deleting user from specific server
fix: user linking misbehaving
2025-09-05 11:40:51 +02:00
Matthieu B
5114ed66a2 fix: increase display limit for accepted invites to enhance visibility 2025-08-20 13:17:23 +02:00
Matthieu B
c0af34bd22 Add user sync endpoint and trigger for background synchronization of users from media servers 2025-08-14 23:02:23 +02:00
Matthieu B
b6e54adbe0 Enhance invitation flow by marking invitations as used and syncing users in background threads 2025-08-14 18:13:11 +02:00
Matthieu B
368aeaddeb fix invite table bugs 2025-08-14 15:38:42 +02:00
Matthieu B
e9acc3fdba Enhance user management by improving modal interactions and user table refresh logic 2025-08-13 19:20:38 +02:00
Matthieu B
b83a25c49a Enhance user management by adding invitation date sorting and display in user tables 2025-08-13 14:14:17 +02:00