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