
import os
import sys

APP_ROOT = "/home/skeversu/skever-portal-v1"
sys.path.insert(0, APP_ROOT)
os.environ.setdefault(
    "DJANGO_SETTINGS_MODULE",
    "config.config.settings",
)

import django
django.setup()

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from django.db import connection

permission_names = [
    "skv_view_orders",
    "skv_accept_orders",
    "skv_decline_orders",
    "skv_hold_orders",
    "skv_edit_order_items",
    "skv_view_sales",
    "skv_place_orders",
    "skv_view_payments",
    "skv_verify_payments",
    "skv_reverse_payments",
    "skv_view_dispatches",
    "skv_assign_dispatches",
    "skv_update_dispatches",
    "skv_view_catalogue",
    "skv_edit_catalogue",
    "skv_change_prices",
    "skv_manage_staff",
    "skv_manage_roles",
    "skv_view_audit_logs",
]

print("=== SKEVER RBAC READ-ONLY DIAGNOSTIC ===")
print("Database engine:", connection.settings_dict.get("ENGINE"))
print("Database connection: checking...")

with connection.cursor() as cursor:
    cursor.execute("SELECT 1")
    cursor.fetchone()

print("Database connection: OK")
print()

for codename in permission_names:
    matches = Permission.objects.filter(
        codename=codename
    ).select_related("content_type").order_by(
        "content_type__app_label",
        "content_type__model",
    )

    if not matches.exists():
        print(f"MISSING: {codename}")
        continue

    for permission in matches:
        groups = list(
            Group.objects.filter(
                permissions=permission
            ).order_by("name").values_list("name", flat=True)
        )
        print(
            f"FOUND: {codename} | "
            f"app={permission.content_type.app_label} | "
            f"model={permission.content_type.model} | "
            f"groups={groups or 'None'}"
        )

print()
print("=== END DIAGNOSTIC ===")
print("No records were created, updated, or deleted.")
