updated player sync
This commit is contained in:
38
app/app.py
38
app/app.py
@@ -375,7 +375,43 @@ def player_page(player_id):
|
|||||||
player_name=player.username
|
player_name=player.username
|
||||||
).order_by(PlayerFeedback.timestamp.desc()).limit(5).all()
|
).order_by(PlayerFeedback.timestamp.desc()).limit(5).all()
|
||||||
|
|
||||||
return render_template('player_page.html', player=player, content=content, player_feedback=player_feedback)
|
# Get server playlist version for this player
|
||||||
|
server_playlist_version = get_server_playlist_version(player)
|
||||||
|
|
||||||
|
return render_template('player_page.html',
|
||||||
|
player=player,
|
||||||
|
content=content,
|
||||||
|
player_feedback=player_feedback,
|
||||||
|
server_playlist_version=server_playlist_version)
|
||||||
|
|
||||||
|
def get_server_playlist_version(player):
|
||||||
|
"""Get the current server playlist version for a specific player"""
|
||||||
|
# Check if player is locked to a group
|
||||||
|
if player.locked_to_group_id:
|
||||||
|
# Get content for all players in the group to ensure shared content
|
||||||
|
group_players = player.locked_to_group.players
|
||||||
|
player_ids = [p.id for p in group_players]
|
||||||
|
|
||||||
|
# Use the first occurrence of each file for the playlist
|
||||||
|
content_query = (
|
||||||
|
db.session.query(
|
||||||
|
Content.file_name,
|
||||||
|
db.func.min(Content.id).label('id'),
|
||||||
|
db.func.min(Content.duration).label('duration')
|
||||||
|
)
|
||||||
|
.filter(Content.player_id.in_(player_ids))
|
||||||
|
.group_by(Content.file_name)
|
||||||
|
)
|
||||||
|
|
||||||
|
content = db.session.query(Content).filter(
|
||||||
|
Content.id.in_([c.id for c in content_query])
|
||||||
|
).all()
|
||||||
|
else:
|
||||||
|
# Get player's individual content
|
||||||
|
content = Content.query.filter_by(player_id=player.id).all()
|
||||||
|
|
||||||
|
# Return the current playlist version for this player
|
||||||
|
return player.playlist_version
|
||||||
|
|
||||||
@app.route('/player/<int:player_id>/upload', methods=['POST'])
|
@app.route('/player/<int:player_id>/upload', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
@@ -94,6 +94,19 @@
|
|||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<strong>Latest Message:</strong> {{ player_feedback[0].message }}
|
<strong>Latest Message:</strong> {{ player_feedback[0].message }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<strong>Server Playlist Version:</strong>
|
||||||
|
<span class="badge bg-info">v{{ server_playlist_version }}</span>
|
||||||
|
{% if player_feedback[0].playlist_version %}
|
||||||
|
{% if player_feedback[0].playlist_version|int == server_playlist_version %}
|
||||||
|
<small class="text-success ms-2">✓ Player in sync</small>
|
||||||
|
{% else %}
|
||||||
|
<small class="text-warning ms-2">⚠ Player v{{ player_feedback[0].playlist_version }} (out of sync)</small>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<small class="text-muted ms-2">Player version unknown</small>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Recent Activity Log -->
|
<!-- Recent Activity Log -->
|
||||||
<details>
|
<details>
|
||||||
@@ -118,6 +131,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<div class="mb-3">
|
||||||
|
<strong>Server Playlist Version:</strong>
|
||||||
|
<span class="badge bg-info">v{{ server_playlist_version }}</span>
|
||||||
|
<small class="text-muted ms-2">Player version unknown</small>
|
||||||
|
</div>
|
||||||
<div class="text-center text-muted">
|
<div class="text-center text-muted">
|
||||||
<p>No status information available</p>
|
<p>No status information available</p>
|
||||||
<small>Player hasn't sent any feedback yet</small>
|
<small>Player hasn't sent any feedback yet</small>
|
||||||
|
|||||||
Reference in New Issue
Block a user