File size: 3,913 Bytes
ece3e8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
with open('templates/dashboard.html', 'r', encoding='utf-8') as f:
    text = f.read()

# Make EVERYTHING single brackets first!
text = text.replace('{{', '{').replace('}}', '}')

# Make python variables back into double brackets for Jinja
python_vars = [
    'stroke_offset', 'success_pct', 'total_applied', 'BOT_PAUSED', 'gemini_key_count', 
    'active_key_num', 'qa_size', 'active_chat_id', 'len(TARGET_CHANNELS)', 
    'channels_html', 'recent_jobs_html', 'HANDOFF_URL', 'total_skipped',
    "stats.get('applied', 0)", "stats.get('current_streak', 0)", "len(applied)",
    "stats.get('skipped', 0)", 'gemini_status', 'groq_status', 'os.path.exists(RESUME_FILE)',
    'imap_status', 'ghost_mode_active', 'TARGET_CHANNEL'
]

for var in python_vars:
    # Handle {var}
    text = text.replace('{' + var + '}', '{{' + var + '}}')
    # Handle {var|safe}
    text = text.replace('{' + var + '|safe}', '{{' + var + '|safe}}')

# Replace the specific lines that use inline python logic.
fixes = [
    ("{ 'bg-green-500/15 text-green-400 border border-green-500/30' if not BOT_PAUSED else 'bg-yellow-500/15 text-yellow-400 border border-yellow-500/30' }",
     "{{ 'bg-green-500/15 text-green-400 border border-green-500/30' if not BOT_PAUSED else 'bg-yellow-500/15 text-yellow-400 border border-yellow-500/30' }}"),
    
    ("{ 'bg-green-400 animate-pulse' if not BOT_PAUSED else 'bg-yellow-400' }",
     "{{ 'bg-green-400 animate-pulse' if not BOT_PAUSED else 'bg-yellow-400' }}"),
    
    ("{ '▶️ RUNNING' if not BOT_PAUSED else '⏸️ PAUSED' }",
     "{{ '▶️ RUNNING' if not BOT_PAUSED else '⏸️ PAUSED' }}"),
     
    ("{'rgba(34,197,94,0.15)' if not BOT_PAUSED else 'rgba(245,158,11,0.15)'}",
     "{{'rgba(34,197,94,0.15)' if not BOT_PAUSED else 'rgba(245,158,11,0.15)'}}"),
     
    ("{'rgba(34,197,94,0.4)' if not BOT_PAUSED else 'rgba(245,158,11,0.4)'}",
     "{{'rgba(34,197,94,0.4)' if not BOT_PAUSED else 'rgba(245,158,11,0.4)'}}"),
     
    ("{'#4ade80' if not BOT_PAUSED else '#fbbf24'}",
     "{{'#4ade80' if not BOT_PAUSED else '#fbbf24'}}"),
     
    ("{'ai-online' if gemini_status == 'ONLINE' else 'ai-offline'}",
     "{{'ai-online' if gemini_status == 'ONLINE' else 'ai-offline'}}"),
     
    ("{'text-green-400' if gemini_status == 'ONLINE' else 'text-red-400'}",
     "{{'text-green-400' if gemini_status == 'ONLINE' else 'text-red-400'}}"),
     
    ("{'ai-online' if groq_status == 'ONLINE' else 'ai-offline'}",
     "{{'ai-online' if groq_status == 'ONLINE' else 'ai-offline'}}"),
     
    ("{'text-green-400' if groq_status == 'ONLINE' else 'text-red-400'}",
     "{{'text-green-400' if groq_status == 'ONLINE' else 'text-red-400'}}"),
     
    ("{'text-green-400' if os.path.exists(RESUME_FILE) else 'text-red-400'}",
     "{{'text-green-400' if os.path.exists(RESUME_FILE) else 'text-red-400'}}"),
     
    ("{'LOADED' if os.path.exists(RESUME_FILE) else 'MISSING'}",
     "{{'LOADED' if os.path.exists(RESUME_FILE) else 'MISSING'}}"),
     
    ("{'text-green-400 drop-shadow-[0_0_8px_rgba(74,222,128,0.5)]' if imap_status == 'CONNECTED' else 'text-gray-500'}",
     "{{'text-green-400 drop-shadow-[0_0_8px_rgba(74,222,128,0.5)]' if imap_status == 'CONNECTED' else 'text-gray-500'}}"),
     
    ("{'text-fuchsia-400 drop-shadow-[0_0_8px_rgba(232,121,249,0.5)]' if ghost_mode_active else 'text-gray-500'}",
     "{{'text-fuchsia-400 drop-shadow-[0_0_8px_rgba(232,121,249,0.5)]' if ghost_mode_active else 'text-gray-500'}}"),
     
    ("{'STREAMING' if ghost_mode_active else 'STANDBY'}",
     "{{'STREAMING' if ghost_mode_active else 'STANDBY'}}"),
     
    ("{'⏸ PAUSED' if BOT_PAUSED else '▶ RUNNING'}",
     "{{'⏸ PAUSED' if BOT_PAUSED else '▶ RUNNING'}}")
]

for old, new in fixes:
    text = text.replace(old, new)

with open('templates/dashboard.html', 'w', encoding='utf-8') as f:
    f.write(text)

print('Dashboard template correctly fixed')