checked for updates
This commit is contained in:
@@ -142,6 +142,71 @@ def health_check():
|
||||
'version': '2.0.0'
|
||||
})
|
||||
|
||||
@bp.route('/content/<int:content_id>/remove-from-player', methods=['POST'])
|
||||
def remove_content_from_player(content_id):
|
||||
"""Remove content from a specific player"""
|
||||
from flask_login import login_required, current_user
|
||||
|
||||
# Require authentication for this operation
|
||||
if not current_user.is_authenticated:
|
||||
return jsonify({'error': 'Authentication required'}), 401
|
||||
|
||||
data = request.get_json()
|
||||
if not data or 'player_id' not in data:
|
||||
return jsonify({'error': 'Player ID required'}), 400
|
||||
|
||||
player_id = data.get('player_id')
|
||||
|
||||
# Find the content item
|
||||
content = Content.query.filter_by(id=content_id, player_id=player_id).first()
|
||||
if not content:
|
||||
return jsonify({'error': 'Content not found for this player'}), 404
|
||||
|
||||
# Remove the content
|
||||
try:
|
||||
db.session.delete(content)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'message': f'Content {content.file_name} removed from player'
|
||||
})
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
return jsonify({'error': f'Failed to remove content: {str(e)}'}), 500
|
||||
|
||||
@bp.route('/player/<int:player_id>/heartbeat', methods=['POST'])
|
||||
def player_heartbeat(player_id):
|
||||
"""Update player heartbeat/last seen timestamp"""
|
||||
try:
|
||||
player = Player.query.get_or_404(player_id)
|
||||
player.last_seen = db.func.current_timestamp()
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'timestamp': player.last_seen.isoformat() if player.last_seen else None
|
||||
})
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
return jsonify({'error': f'Failed to update heartbeat: {str(e)}'}), 500
|
||||
|
||||
@bp.route('/player/<int:player_id>/content', methods=['GET'])
|
||||
def get_player_content_status(player_id):
|
||||
"""Get player content status for checking updates"""
|
||||
try:
|
||||
player = Player.query.get_or_404(player_id)
|
||||
content_count = Content.query.filter_by(player_id=player_id).count()
|
||||
|
||||
return jsonify({
|
||||
'player_id': player_id,
|
||||
'playlist_version': player.playlist_version,
|
||||
'content_count': content_count,
|
||||
'updated': False # Could implement version checking logic here
|
||||
})
|
||||
except Exception as e:
|
||||
return jsonify({'error': f'Failed to get content status: {str(e)}'}), 500
|
||||
|
||||
@bp.errorhandler(404)
|
||||
def api_not_found(error):
|
||||
"""API 404 handler"""
|
||||
|
||||
@@ -72,12 +72,16 @@ def upload():
|
||||
players = Player.query.order_by(Player.username).all()
|
||||
groups = Group.query.order_by(Group.name).all()
|
||||
|
||||
# Convert players and groups to dictionaries for JSON serialization
|
||||
players_data = [{'id': p.id, 'username': p.username, 'hostname': p.hostname} for p in players]
|
||||
groups_data = [{'id': g.id, 'name': g.name, 'description': g.description, 'player_count': len(g.players)} for g in groups]
|
||||
|
||||
return render_template(
|
||||
'content/upload.html',
|
||||
target_type=target_type,
|
||||
target_id=target_id,
|
||||
players=players,
|
||||
groups=groups,
|
||||
players=players_data,
|
||||
groups=groups_data,
|
||||
return_url=return_url
|
||||
)
|
||||
|
||||
|
||||
@@ -18,6 +18,10 @@ def index():
|
||||
players = Player.query.order_by(Player.username).all()
|
||||
groups = Group.query.order_by(Group.name).all()
|
||||
|
||||
# Calculate statistics
|
||||
total_content = sum(len(player.content) for player in players)
|
||||
active_players = sum(1 for player in players if player.is_active)
|
||||
|
||||
# Check if logo exists
|
||||
from flask import current_app
|
||||
logo_path = os.path.join(current_app.static_folder, 'assets', 'logo.png')
|
||||
@@ -31,5 +35,7 @@ def index():
|
||||
players=players,
|
||||
groups=groups,
|
||||
logo_exists=logo_exists,
|
||||
server_logs=server_logs
|
||||
server_logs=server_logs,
|
||||
total_content=total_content,
|
||||
active_players=active_players
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user