Files
ske087 46602f1933 Sanitize codebase, reorganize docs, and add missing deploy files
Remove dead code identified in docs/SANITIZATION-REVIEW.md:
- app/blueprints/content_old.py and app/blueprints/playlist.py
- app/models/group.py, app/utils/nginx_config_reader.py
- orphaned templates (content_list, edit_content, upload_content,
  player_page) and the related group/Template references

Result: 6 blueprints, 82 routes, no dead modules or orphan templates.

Add files that deploy.sh and docker-entrypoint.sh already require but
which were never tracked:
- https_manager.py       (referenced by deploy.sh, migrate_network.sh,
                          docker-entrypoint.sh)
- Caddyfile.example      (seeded by deploy.sh; its absence aborts deploy)

Relocate generated Graphify artifacts from graphify-out/ to
docs/graphify-out/ (110 files, no content change) and archive the
superseded docs under docs/.

Ignore hygiene:
- ignore ad-hoc .env backups (.env.bak*) — they contain live secrets
- keep the pre-sanitization snapshots (docs/legacy code/,
  docs/old_code_documentation/) on disk but out of the repo

Fix .env.example: drop a duplicated config block, genericize the
hardcoded host IP, and document HOSTNAME_INTERNAL.
2026-09-11 12:18:34 +03:00

16 KiB

PlayerUser

God node · 74 connections · /home/scheianu/digiserver-v2/app/models/player_user.py

Call Trace Diagram

sequenceDiagram
    participant P0 as PlayerUser
    participant P1 as Models package for digiserver-v2.
    participant P2 as PlayerEdit
    participant P3 as receive_edited_media()
    participant P4 as Admin blueprint for user management and system settings.
    participant P5 as Decorator to require admin role for route access.
    participant P6 as Display admin panel with system overview.
    participant P7 as Create a new user account.
    participant P8 as Change user role between user and admin.
    participant P9 as Delete a user account.
    participant P10 as Change application theme.
    participant P11 as Upload custom logo for application.
    participant P12 as Clear all server logs.
    participant P13 as Display user management page.
    participant P14 as Get system information as JSON.
    participant P15 as Display leftover media files not assigned to any playlist.
    participant P16 as Delete all leftover images that are not part of any playlist
    participant P17 as Delete all leftover videos that are not part of any playlist
    participant P18 as Delete a single leftover content file
    participant P19 as Show system dependencies status.
    participant P20 as Install LibreOffice for PPTX conversion.
    participant P21 as Install Emoji Fonts for better UI display.
    participant P22 as Logo customization page.
    participant P23 as Upload login page logo.
    participant P24 as Display and manage users that edit images on players.
    participant P25 as Update editing user name.
    participant P26 as Display HTTPS configuration management page.
    participant P27 as Update HTTPS configuration.
    participant P28 as Get current HTTPS configuration status as JSON.
    participant P29 as Path to the persisted player-build settings (in the instance folder).
    participant P30 as Display the 'Build player files for deployment' admin page.
    participant P31 as Build/refresh the staged player code and/or write its base config.
    participant P32 as API blueprint for REST endpoints and player communication.
    participant P33 as Rate limiting decorator.          Args:         max_requests: Maximum number of
    participant P34 as Decorator to verify player authentication via auth code.
    participant P35 as API health check endpoint.
    participant P36 as Get server SSL certificate.
    participant P37 as Authenticate a player and return auth code and configuration.          Request J
    participant P38 as Verify an auth code and return player information.          Request JSON:
    participant P39 as Get playlist using hostname and quickconnect code (Kivy player compatible).
    participant P40 as Get playlist for a specific player.          Requires player authentication via
    participant P41 as Get current playlist version for a player.          Lightweight endpoint for pla
    participant P42 as Get cached playlist for a player based on assigned playlist.
    participant P43 as Receive feedback/status updates from players (Kivy player compatible).
    participant P44 as Get current status of a player (public endpoint for monitoring).
    participant P45 as Get progress of a file upload.
    participant P46 as Get system information and statistics.
    participant P47 as List all content with basic information.
    participant P48 as Get recent server logs.          Query parameters:         limit: Number of logs
    participant P49 as Receive edited media from player.          Expected multipart/form-data:     - i
    participant P50 as Test SSH connection to a remote host.          Request JSON:         hostname: T
    participant P51 as Deploy player code to a remote host via SSH.          Request JSON:         host
    participant P52 as Handle 404 errors in API.
    participant P53 as Handle 405 errors in API.
    participant P54 as Handle 500 errors in API.
    participant P55 as Players blueprint for player management and display.
    participant P56 as Display list of all players.
    participant P57 as Add a new player with optional SSH deployment.
    participant P58 as Regenerate authentication code for a player.
    participant P59 as Redirect to manage player page (combined view).
    participant P60 as Manage player - edit credentials, assign playlist, view logs.
    participant P61 as Display all edited media files from this player.
    participant P62 as Display a tabular report of all edited media from this player.
    participant P63 as Display player fullscreen view (no authentication required for players).
    participant P64 as Get playlist for a player based on their assigned playlist.          Args:
    participant P65 as Legacy endpoint - Content reordering now handled in playlist management.
    participant P66 as Delete multiple players at once.
    participant P67 as Assign multiple players to a playlist.
    participant P68 as Return deployment status for all players (used by polling JS).
    participant P69 as Reorder items in player's playlist.
    participant P70 as Remove content from player's playlist.
    participant P71 as Content model for media files.
    participant P72 as Main playlist management page.
    participant P73 as View all media files in the library.
    participant P74 as Delete a media file and remove it from all playlists.
    participant P75 as Create a new playlist.
    participant P76 as Manage content in a specific playlist.
    participant P77 as Add content to playlist.
    participant P78 as Create a web link content item from the Upload Media page.      Optionally adds
    participant P79 as Create a web link content item and add it to the playlist.
    participant P80 as Remove content from playlist.
    participant P81 as Remove multiple content items from playlist.
    participant P82 as Reorder content in playlist.
    participant P83 as Update content muted setting in playlist.
    participant P84 as Update content edit_on_player_enabled setting in playlist.
    participant P85 as Update content duration in playlist.
    participant P86 as Display upload media page.
    participant P87 as Process and optimize image files.
    participant P88 as Process and optimize video files for Raspberry Pi playback.
    participant P89 as Process PDF files by converting each page to PNG images.
    participant P90 as Process large files (PDF, PPTX, Video) in background thread.
    participant P91 as Process PowerPoint presentation files by converting slides to images.
    participant P92 as Create a Full HD (1920x1080) image from PIL Image object, centered on white back
    participant P93 as Resize image to exactly Full HD (1920x1080) maintaining aspect ratio with center
    participant P94 as Optimize and resize image file to Full HD (1920x1080) maintaining aspect ratio.
    participant P95 as Upload media files to library with type-specific processing.
    participant P96 as Assign a player to a playlist.
    participant P97 as Playlist
    participant P98 as HTTPSConfig
    participant P99 as Content
    participant P100 as User
    participant P101 as Player
    participant P102 as ServerLog
    participant P103 as Group
    participant P104 as PlayerFeedback
    participant P105 as Add player_user table for user code mappings.
    P0->>+ P1: uses
    P1-->>- P0: return
    P1->>+ P2: uses
    P2-->>- P1: return
    P2->>+ P1: uses
    P1-->>- P2: return
    P2->>+ P3: calls
    P3-->>- P2: return
    P2->>+ P4: uses
    P4-->>- P2: return
    P2->>+ P5: uses
    P5-->>- P2: return
    P2->>+ P6: uses
    P6-->>- P2: return
    P2->>+ P7: uses
    P7-->>- P2: return
    P2->>+ P8: uses
    P8-->>- P2: return
    P2->>+ P9: uses
    P9-->>- P2: return
    P2->>+ P10: uses
    P10-->>- P2: return
    P2->>+ P11: uses
    P11-->>- P2: return
    P2->>+ P12: uses
    P12-->>- P2: return
    P2->>+ P13: uses
    P13-->>- P2: return
    P2->>+ P14: uses
    P14-->>- P2: return
    P2->>+ P15: uses
    P15-->>- P2: return
    P2->>+ P16: uses
    P16-->>- P2: return
    P2->>+ P17: uses
    P17-->>- P2: return
    P2->>+ P18: uses
    P18-->>- P2: return
    P2->>+ P19: uses
    P19-->>- P2: return
    P2->>+ P20: uses
    P20-->>- P2: return
    P2->>+ P21: uses
    P21-->>- P2: return
    P2->>+ P22: uses
    P22-->>- P2: return
    P2->>+ P23: uses
    P23-->>- P2: return
    P2->>+ P24: uses
    P24-->>- P2: return
    P2->>+ P25: uses
    P25-->>- P2: return
    P2->>+ P26: uses
    P26-->>- P2: return
    P2->>+ P27: uses
    P27-->>- P2: return
    P2->>+ P28: uses
    P28-->>- P2: return
    P2->>+ P29: uses
    P29-->>- P2: return
    P2->>+ P30: uses
    P30-->>- P2: return
    P2->>+ P31: uses
    P31-->>- P2: return
    P2->>+ P32: uses
    P32-->>- P2: return
    P2->>+ P33: uses
    P33-->>- P2: return
    P2->>+ P34: uses
    P34-->>- P2: return
    P2->>+ P35: uses
    P35-->>- P2: return
    P2->>+ P36: uses
    P36-->>- P2: return
    P2->>+ P37: uses
    P37-->>- P2: return
    P2->>+ P38: uses
    P38-->>- P2: return
    P2->>+ P39: uses
    P39-->>- P2: return
    P2->>+ P40: uses
    P40-->>- P2: return
    P2->>+ P41: uses
    P41-->>- P2: return
    P2->>+ P42: uses
    P42-->>- P2: return
    P2->>+ P43: uses
    P43-->>- P2: return
    P2->>+ P44: uses
    P44-->>- P2: return
    P2->>+ P45: uses
    P45-->>- P2: return
    P2->>+ P46: uses
    P46-->>- P2: return
    P2->>+ P47: uses
    P47-->>- P2: return
    P2->>+ P48: uses
    P48-->>- P2: return
    P2->>+ P49: uses
    P49-->>- P2: return
    P2->>+ P50: uses
    P50-->>- P2: return
    P2->>+ P51: uses
    P51-->>- P2: return
    P2->>+ P52: uses
    P52-->>- P2: return
    P2->>+ P53: uses
    P53-->>- P2: return
    P2->>+ P54: uses
    P54-->>- P2: return
    P2->>+ P55: uses
    P55-->>- P2: return
    P2->>+ P56: uses
    P56-->>- P2: return
    P2->>+ P57: uses
    P57-->>- P2: return
    P2->>+ P58: uses
    P58-->>- P2: return
    P2->>+ P59: uses
    P59-->>- P2: return
    P2->>+ P60: uses
    P60-->>- P2: return
    P2->>+ P61: uses
    P61-->>- P2: return
    P2->>+ P62: uses
    P62-->>- P2: return
    P2->>+ P63: uses
    P63-->>- P2: return
    P2->>+ P64: uses
    P64-->>- P2: return
    P2->>+ P65: uses
    P65-->>- P2: return
    P2->>+ P66: uses
    P66-->>- P2: return
    P2->>+ P67: uses
    P67-->>- P2: return
    P2->>+ P68: uses
    P68-->>- P2: return
    P2->>+ P69: uses
    P69-->>- P2: return
    P2->>+ P70: uses
    P70-->>- P2: return
    P2->>+ P71: uses
    P71-->>- P2: return
    P2->>+ P72: uses
    P72-->>- P2: return
    P2->>+ P73: uses
    P73-->>- P2: return
    P2->>+ P74: uses
    P74-->>- P2: return
    P2->>+ P75: uses
    P75-->>- P2: return
    P2->>+ P76: uses
    P76-->>- P2: return
    P2->>+ P77: uses
    P77-->>- P2: return
    P2->>+ P78: uses
    P78-->>- P2: return
    P2->>+ P79: uses
    P79-->>- P2: return
    P2->>+ P80: uses
    P80-->>- P2: return
    P2->>+ P81: uses
    P81-->>- P2: return
    P2->>+ P82: uses
    P82-->>- P2: return
    P2->>+ P83: uses
    P83-->>- P2: return
    P2->>+ P84: uses
    P84-->>- P2: return
    P2->>+ P85: uses
    P85-->>- P2: return
    P2->>+ P86: uses
    P86-->>- P2: return
    P2->>+ P87: uses
    P87-->>- P2: return
    P2->>+ P88: uses
    P88-->>- P2: return
    P2->>+ P89: uses
    P89-->>- P2: return
    P2->>+ P90: uses
    P90-->>- P2: return
    P2->>+ P91: uses
    P91-->>- P2: return
    P2->>+ P92: uses
    P92-->>- P2: return
    P2->>+ P93: uses
    P93-->>- P2: return
    P2->>+ P94: uses
    P94-->>- P2: return
    P2->>+ P95: uses
    P95-->>- P2: return
    P2->>+ P96: uses
    P96-->>- P2: return
    P1->>+ P0: uses
    P0-->>- P1: return
    P1->>+ P97: uses
    P97-->>- P1: return
    P1->>+ P98: uses
    P98-->>- P1: return
    P1->>+ P99: uses
    P99-->>- P1: return
    P1->>+ P100: uses
    P100-->>- P1: return
    P1->>+ P101: uses
    P101-->>- P1: return
    P1->>+ P102: uses
    P102-->>- P1: return
    P1->>+ P103: uses
    P103-->>- P1: return
    P1->>+ P104: uses
    P104-->>- P1: return
    P0->>+ P3: calls
    P3-->>- P0: return
    P0->>+ P4: uses
    P4-->>- P0: return
    P0->>+ P5: uses
    P5-->>- P0: return
    P0->>+ P6: uses
    P6-->>- P0: return
    P0->>+ P7: uses
    P7-->>- P0: return
    P0->>+ P8: uses
    P8-->>- P0: return
    P0->>+ P9: uses
    P9-->>- P0: return
    P0->>+ P10: uses
    P10-->>- P0: return
    P0->>+ P11: uses
    P11-->>- P0: return
    P0->>+ P12: uses
    P12-->>- P0: return
    P0->>+ P13: uses
    P13-->>- P0: return
    P0->>+ P14: uses
    P14-->>- P0: return
    P0->>+ P15: uses
    P15-->>- P0: return
    P0->>+ P16: uses
    P16-->>- P0: return
    P0->>+ P17: uses
    P17-->>- P0: return
    P0->>+ P18: uses
    P18-->>- P0: return
    P0->>+ P19: uses
    P19-->>- P0: return
    P0->>+ P20: uses
    P20-->>- P0: return
    P0->>+ P21: uses
    P21-->>- P0: return
    P0->>+ P22: uses
    P22-->>- P0: return
    P0->>+ P23: uses
    P23-->>- P0: return
    P0->>+ P24: uses
    P24-->>- P0: return
    P0->>+ P25: uses
    P25-->>- P0: return
    P0->>+ P26: uses
    P26-->>- P0: return
    P0->>+ P27: uses
    P27-->>- P0: return
    P0->>+ P28: uses
    P28-->>- P0: return
    P0->>+ P29: uses
    P29-->>- P0: return
    P0->>+ P30: uses
    P30-->>- P0: return
    P0->>+ P31: uses
    P31-->>- P0: return
    P0->>+ P32: uses
    P32-->>- P0: return
    P0->>+ P33: uses
    P33-->>- P0: return
    P0->>+ P34: uses
    P34-->>- P0: return
    P0->>+ P35: uses
    P35-->>- P0: return
    P0->>+ P36: uses
    P36-->>- P0: return
    P0->>+ P37: uses
    P37-->>- P0: return
    P0->>+ P38: uses
    P38-->>- P0: return
    P0->>+ P39: uses
    P39-->>- P0: return
    P0->>+ P40: uses
    P40-->>- P0: return
    P0->>+ P41: uses
    P41-->>- P0: return
    P0->>+ P42: uses
    P42-->>- P0: return
    P0->>+ P43: uses
    P43-->>- P0: return
    P0->>+ P44: uses
    P44-->>- P0: return
    P0->>+ P45: uses
    P45-->>- P0: return
    P0->>+ P46: uses
    P46-->>- P0: return
    P0->>+ P47: uses
    P47-->>- P0: return
    P0->>+ P48: uses
    P48-->>- P0: return
    P0->>+ P49: uses
    P49-->>- P0: return
    P0->>+ P50: uses
    P50-->>- P0: return
    P0->>+ P51: uses
    P51-->>- P0: return
    P0->>+ P52: uses
    P52-->>- P0: return
    P0->>+ P53: uses
    P53-->>- P0: return
    P0->>+ P54: uses
    P54-->>- P0: return
    P0->>+ P55: uses
    P55-->>- P0: return
    P0->>+ P56: uses
    P56-->>- P0: return
    P0->>+ P57: uses
    P57-->>- P0: return
    P0->>+ P58: uses
    P58-->>- P0: return
    P0->>+ P59: uses
    P59-->>- P0: return
    P0->>+ P60: uses
    P60-->>- P0: return
    P0->>+ P61: uses
    P61-->>- P0: return
    P0->>+ P62: uses
    P62-->>- P0: return
    P0->>+ P63: uses
    P63-->>- P0: return
    P0->>+ P64: uses
    P64-->>- P0: return
    P0->>+ P65: uses
    P65-->>- P0: return
    P0->>+ P66: uses
    P66-->>- P0: return
    P0->>+ P67: uses
    P67-->>- P0: return
    P0->>+ P68: uses
    P68-->>- P0: return
    P0->>+ P69: uses
    P69-->>- P0: return
    P0->>+ P70: uses
    P70-->>- P0: return
    P0->>+ P105: uses
    P105-->>- P0: return

Connections by Relation

calls

contains

method

rationale_for

uses


Part of the graphify knowledge wiki. See index to navigate.