fix user_id on bypass

This commit is contained in:
Mateusz Gruszczyński
2026-06-07 21:08:00 +02:00
parent d00eb6ee2b
commit 30f3f97f56
3 changed files with 48 additions and 24 deletions
+19 -12
View File
@@ -9,7 +9,8 @@ def automations_get():
if not profile:
return ok({'rules': [], 'history': [], 'error': 'No profile'})
try:
return ok({'rules': automation_rules.list_rules(profile['id']), 'history': automation_rules.list_history(profile['id'])})
user_id = default_user_id()
return ok({'rules': automation_rules.list_rules(profile['id'], user_id=user_id), 'history': automation_rules.list_history(profile['id'], user_id=user_id)})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc), 'rules': [], 'history': []}), 500
@@ -23,7 +24,7 @@ def automations_export():
return jsonify({'ok': False, 'error': 'No profile'}), 400
try:
# Note: JSON export is profile-scoped and excludes execution history/cooldown state.
data = automation_rules.export_rules(profile['id'])
data = automation_rules.export_rules(profile['id'], user_id=default_user_id())
return ok({'export': data, 'count': len(data.get('rules') or [])})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc)}), 400
@@ -40,8 +41,9 @@ def automations_import():
payload = request.get_json(silent=True) or {}
replace = str(request.args.get('replace') or '').lower() in {'1', 'true', 'yes'} or bool(payload.get('replace')) if isinstance(payload, dict) else False
# Note: Import appends rules by default, so existing automations remain untouched.
imported = automation_rules.import_rules(profile['id'], payload, replace=replace)
return ok({'imported': len(imported), 'rules': automation_rules.list_rules(profile['id'])})
user_id = default_user_id()
imported = automation_rules.import_rules(profile['id'], payload, user_id=user_id, replace=replace)
return ok({'imported': len(imported), 'rules': automation_rules.list_rules(profile['id'], user_id=user_id)})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc)}), 400
@@ -54,8 +56,9 @@ def automations_save():
if not profile:
return jsonify({'ok': False, 'error': 'No profile'}), 400
try:
rule = automation_rules.save_rule(profile['id'], request.get_json(silent=True) or {})
return ok({'rule': rule, 'rules': automation_rules.list_rules(profile['id'])})
user_id = default_user_id()
rule = automation_rules.save_rule(profile['id'], request.get_json(silent=True) or {}, user_id=user_id)
return ok({'rule': rule, 'rules': automation_rules.list_rules(profile['id'], user_id=user_id)})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc)}), 400
@@ -68,8 +71,9 @@ def automations_delete(rule_id: int):
if not profile:
return jsonify({'ok': False, 'error': 'No profile'}), 400
try:
automation_rules.delete_rule(rule_id, profile['id'])
return ok({'rules': automation_rules.list_rules(profile['id'])})
user_id = default_user_id()
automation_rules.delete_rule(rule_id, profile['id'], user_id=user_id)
return ok({'rules': automation_rules.list_rules(profile['id'], user_id=user_id)})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc)}), 400
@@ -83,7 +87,8 @@ def automations_run_rule(rule_id: int):
return jsonify({'ok': False, 'error': 'No profile'}), 400
try:
# Note: Single-rule run ignores disabled state and cooldown for manual troubleshooting.
return ok({'result': automation_rules.check(profile, force=True, rule_id=rule_id), 'rules': automation_rules.list_rules(profile['id']), 'history': automation_rules.list_history(profile['id'])})
user_id = default_user_id()
return ok({'result': automation_rules.check(profile, user_id=user_id, force=True, rule_id=rule_id), 'rules': automation_rules.list_rules(profile['id'], user_id=user_id), 'history': automation_rules.list_history(profile['id'], user_id=user_id)})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc)}), 500
@@ -96,7 +101,8 @@ def automations_check():
return jsonify({'ok': False, 'error': 'No profile'}), 400
try:
# Note: Force check ignores disabled state and cooldown, allowing a one-off manual automation pass.
return ok({'result': automation_rules.check(profile, force=True), 'rules': automation_rules.list_rules(profile['id']), 'history': automation_rules.list_history(profile['id'])})
user_id = default_user_id()
return ok({'result': automation_rules.check(profile, user_id=user_id, force=True), 'rules': automation_rules.list_rules(profile['id'], user_id=user_id), 'history': automation_rules.list_history(profile['id'], user_id=user_id)})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc)}), 500
@@ -110,7 +116,8 @@ def automations_history_clear():
return jsonify({'ok': False, 'error': 'No profile'}), 400
try:
# Note: Clear only automation execution logs; rules and cooldown state stay unchanged.
deleted = automation_rules.clear_history(profile['id'])
return ok({'deleted': deleted, 'history': automation_rules.list_history(profile['id']), 'cleanup': cleanup_summary()})
user_id = default_user_id()
deleted = automation_rules.clear_history(profile['id'], user_id=user_id)
return ok({'deleted': deleted, 'history': automation_rules.list_history(profile['id'], user_id=user_id), 'cleanup': cleanup_summary()})
except Exception as exc:
return jsonify({'ok': False, 'error': str(exc)}), 500