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
|
||||
).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'])
|
||||
@login_required
|
||||
|
||||
@@ -94,6 +94,19 @@
|
||||
<div class="mb-3">
|
||||
<strong>Latest Message:</strong> {{ player_feedback[0].message }}
|
||||
</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 -->
|
||||
<details>
|
||||
@@ -118,6 +131,11 @@
|
||||
</div>
|
||||
</details>
|
||||
{% 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">
|
||||
<p>No status information available</p>
|
||||
<small>Player hasn't sent any feedback yet</small>
|
||||
|
||||
Reference in New Issue
Block a user