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.
This commit is contained in:
2026-09-11 12:18:34 +03:00
parent 1c5186463a
commit 46602f1933
226 changed files with 3999 additions and 15737 deletions
+215
View File
@@ -0,0 +1,215 @@
# Content
> God node · 24 connections · [/home/scheianu/digiserver-v2/app/models/content.py](file:///home/scheianu/digiserver-v2/app/models/content.py#L8)
## Call Trace Diagram
```mermaid
sequenceDiagram
participant P0 as Content
participant P1 as Playlist
participant P2 as Models package for digiserver-v2.
participant P3 as PlayerEdit
participant P4 as PlayerUser
participant P5 as HTTPSConfig
participant P6 as User
participant P7 as Player
participant P8 as ServerLog
participant P9 as Group
participant P10 as PlayerFeedback
participant P11 as API blueprint for REST endpoints and player communication.
participant P12 as Rate limiting decorator. Args: max_requests: Maximum number of
participant P13 as Decorator to verify player authentication via auth code.
participant P14 as API health check endpoint.
participant P15 as Get server SSL certificate.
participant P16 as Authenticate a player and return auth code and configuration. Request J
participant P17 as Verify an auth code and return player information. Request JSON:
participant P18 as Get playlist using hostname and quickconnect code (Kivy player compatible).
participant P19 as Get playlist for a specific player. Requires player authentication via
participant P20 as Get current playlist version for a player. Lightweight endpoint for pla
participant P21 as Get cached playlist for a player based on assigned playlist.
participant P22 as Receive feedback/status updates from players (Kivy player compatible).
participant P23 as Get current status of a player (public endpoint for monitoring).
participant P24 as Get progress of a file upload.
participant P25 as Get system information and statistics.
participant P26 as List all content with basic information.
participant P27 as Get recent server logs. Query parameters: limit: Number of logs
participant P28 as Receive edited media from player. Expected multipart/form-data: - i
participant P29 as Test SSH connection to a remote host. Request JSON: hostname: T
participant P30 as Deploy player code to a remote host via SSH. Request JSON: host
participant P31 as Handle 404 errors in API.
participant P32 as Handle 405 errors in API.
participant P33 as Handle 500 errors in API.
participant P34 as Main Blueprint - Dashboard and Home Routes
participant P35 as Health check endpoint
participant P36 as create_playlist()
participant P37 as upload_media()
participant P38 as process_file_in_background()
participant P39 as upload_content()
participant P40 as add_weblink()
participant P41 as add_weblink_to_playlist()
participant P42 as Playlist model for managing content collections.
participant P43 as Playlist model representing a collection of content. Attributes:
participant P44 as String representation of Playlist.
participant P45 as Increment playlist version for sync detection.
participant P46 as Get content items ordered by position.
participant P47 as Get number of players assigned to this playlist.
participant P48 as Get number of content items in this playlist.
participant P49 as Calculate total duration of all content in seconds.
P0->>+ P1: uses
P1-->>- P0: return
P1->>+ P0: uses
P0-->>- P1: return
P1->>+ P2: uses
P2-->>- P1: return
P2->>+ P3: uses
P3-->>- P2: return
P2->>+ P4: uses
P4-->>- P2: return
P2->>+ P1: uses
P1-->>- P2: return
P2->>+ P5: uses
P5-->>- P2: return
P2->>+ P0: uses
P0-->>- 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
P1->>+ P11: uses
P11-->>- P1: return
P11->>+ P3: uses
P3-->>- P11: return
P11->>+ P4: uses
P4-->>- P11: return
P11->>+ P1: uses
P1-->>- P11: 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: calls
P36-->>- P1: return
P0->>+ P2: uses
P2-->>- P0: return
P0->>+ P37: calls
P37-->>- P0: return
P0->>+ P38: calls
P38-->>- P0: return
P0->>+ P39: calls
P39-->>- P0: return
P0->>+ P40: calls
P40-->>- P0: return
P0->>+ P41: calls
P41-->>- P0: return
P0->>+ P34: uses
P34-->>- P0: return
P0->>+ P35: uses
P35-->>- 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
```
## Connections by Relation
### calls
- [[upload_media()]] `INFERRED`
- [[process_file_in_background()]] `INFERRED`
- [[upload_content()]] `INFERRED`
- [[add_weblink()]] `INFERRED`
- [[add_weblink_to_playlist()]] `INFERRED`
### contains
- [[content.py]] `EXTRACTED`
### method
- [[.__repr__()]] `EXTRACTED`
- [[.is_image()]] `EXTRACTED`
- [[.is_video()]] `EXTRACTED`
- [[.is_pdf()]] `EXTRACTED`
- [[.is_weblink()]] `EXTRACTED`
### rationale_for
- [[Content model representing media files for display. Attributes:]] `EXTRACTED`
### uses
- [[Playlist]] `INFERRED`
- [[Models package for digiserver-v2.]] `INFERRED`
- [[Main Blueprint - Dashboard and Home Routes]] `INFERRED`
- [[Health check endpoint]] `INFERRED`
- [[Playlist model for managing content collections.]] `INFERRED`
- [[Playlist model representing a collection of content. Attributes:]] `INFERRED`
- [[String representation of Playlist.]] `INFERRED`
- [[Increment playlist version for sync detection.]] `INFERRED`
- [[Get content items ordered by position.]] `INFERRED`
- [[Get number of players assigned to this playlist.]] `INFERRED`
- [[Get number of content items in this playlist.]] `INFERRED`
- [[Calculate total duration of all content in seconds.]] `INFERRED`
---
*Part of the graphify knowledge wiki. See [[index]] to navigate.*