commits
tags
import re
from flask import Blueprint, jsonify, request, abort
import db
import extensions
import scheduler as sched
from auth import login_required
from . import is_sleep_active
bp = Blueprint('sleep', __name__, url_prefix='/api/sleep')
@bp.route('', methods=['GET'])
@login_required
def get_sleep():
state = db.get_state()
return jsonify({
'enabled': state.get('sleep_enabled', '0') == '1',
'start': state.get('sleep_start', '22:00'),
'end': state.get('sleep_end', '07:00'),
})
@bp.route('', methods=['POST'])
@login_required
def set_sleep():
data = request.get_json()
if not data:
abort(400)
enabled = bool(data.get('enabled', False))
start = str(data.get('start', '22:00'))
end = str(data.get('end', '07:00'))
if not re.match(r'^\d{2}:\d{2}$', start): start = '22:00'
if not re.match(r'^\d{2}:\d{2}$', end): end = '07:00'
db.set_state('sleep_enabled', '1' if enabled else '0')
db.set_state('sleep_start', start)
db.set_state('sleep_end', end)
sched.reload_sleep_jobs()
active = enabled and is_sleep_active(start, end)
extensions.socketio.emit('sleep_toggle', {'active': active})
return '', 204