57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
"""Post-install: tickets + resend activation emails for approved registrations."""
|
|
import json
|
|
import sys
|
|
|
|
sys.path.insert(0, "/app")
|
|
|
|
from app import auth, desk_tickets, mail_notify, registration_store
|
|
|
|
DESK_URL = mail_notify.DESK_PUBLIC_URL
|
|
|
|
|
|
def main() -> None:
|
|
with auth.db() as conn:
|
|
rows = conn.execute(
|
|
"SELECT * FROM desk_registration_requests WHERE status = 'approved' ORDER BY id"
|
|
).fetchall()
|
|
pending = []
|
|
for row in rows:
|
|
r = dict(row)
|
|
token = r.get("activation_token")
|
|
url = f"{DESK_URL}/activate.html?token={token}" if token else None
|
|
pending.append({"id": r["id"], "email": r["email"], "role": r.get("role"), "url": url})
|
|
|
|
existing = conn.execute(
|
|
"SELECT id FROM tickets WHERE payload LIKE ? LIMIT 1",
|
|
(f'%"request_id": {r["id"]},%',),
|
|
).fetchone()
|
|
if not existing and url:
|
|
desk_tickets.ticket_registration_approved(
|
|
conn,
|
|
r["id"],
|
|
r["email"],
|
|
r["role"] or "technician",
|
|
url,
|
|
r.get("display_name"),
|
|
)
|
|
print(f"ticket activar: {r['email']}")
|
|
|
|
if url:
|
|
ok = mail_notify.notify_candidate_approved(r["email"], url, r["role"] or "technician")
|
|
print(f"email {r['email']}: {'OK' if ok else 'FAIL'}")
|
|
|
|
desk_tickets.ticket_postfix_ready(conn, pending)
|
|
print("ticket root: Postfix VM122 activo")
|
|
|
|
# Test SMTP
|
|
ok = mail_notify.send_email(
|
|
mail_notify.ROOT_NOTIFY_EMAIL,
|
|
"[Ligbox Ops] Postfix VM122 activo",
|
|
"Postfix na VM122 configurado. Relay interno VM112. Emails Desk operacionais.",
|
|
)
|
|
print(f"test email root: {'OK' if ok else 'FAIL'}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|