"""
Default permissions data for the application.

This file contains the list of all default permissions that should be available
in the system. When adding new modules or features, simply add new permission entries
to the DEFAULT_PERMISSIONS list.

Each permission should have:
- module: The main module/section of the application
- submodule: Optional submodule (can be empty string)
- operation: A unique operation identifier (should be snake_case)
- operation_label: Human-readable label for the operation
- display_order: Order in which to display the permission in lists
"""

DEFAULT_PERMISSIONS = [
    # User management permissions
    {
        "module": "user",
        "submodule": "",
        "operation": "user_view",
        "operation_label": "View Users",
        "display_order": 1,
    },
    {
        "module": "user",
        "submodule": "",
        "operation": "user_create",
        "operation_label": "Create Users",
        "display_order": 2,
    },
    {
        "module": "user",
        "submodule": "",
        "operation": "user_edit",
        "operation_label": "Edit Users",
        "display_order": 3,
    },
    {
        "module": "user",
        "submodule": "",
        "operation": "user_delete",
        "operation_label": "Delete Users",
        "display_order": 4,
    },
    {
        "module": "user",
        "submodule": "",
        "operation": "user_sessions",
        "operation_label": "Manage User Sessions",
        "display_order": 5,
    },
    # Role management permissions
    {
        "module": "role",
        "submodule": "",
        "operation": "role_view",
        "operation_label": "View Roles",
        "display_order": 6,
    },
    {
        "module": "role",
        "submodule": "",
        "operation": "role_create",
        "operation_label": "Create Roles",
        "display_order": 7,
    },
    {
        "module": "role",
        "submodule": "",
        "operation": "role_edit",
        "operation_label": "Edit Roles",
        "display_order": 8,
    },
    {
        "module": "role",
        "submodule": "",
        "operation": "role_delete",
        "operation_label": "Delete Roles",
        "display_order": 9,
    },
    
    # File management permissions
    {
        "module": "file",
        "submodule": "",
        "operation": "file_view",
        "operation_label": "View Files",
        "display_order": 46,
    },
    {
        "module": "file",
        "submodule": "",
        "operation": "file_upload",
        "operation_label": "Upload Files",
        "display_order": 47,
    },
    {
        "module": "file",
        "submodule": "",
        "operation": "file_delete",
        "operation_label": "Delete Files",
        "display_order": 48,
    },
    # Location management permissions
    {
        "module": "location",
        "submodule": "region",
        "operation": "region_view",
        "operation_label": "View Regions",
        "display_order": 49,
    },
    {
        "module": "location",
        "submodule": "region",
        "operation": "region_create",
        "operation_label": "Create Regions",
        "display_order": 50,
    },
    {
        "module": "location",
        "submodule": "region",
        "operation": "region_edit",
        "operation_label": "Edit Regions",
        "display_order": 51,
    },
    {
        "module": "location",
        "submodule": "region",
        "operation": "region_delete",
        "operation_label": "Delete Regions",
        "display_order": 52,
    },
    {
        "module": "location",
        "submodule": "city",
        "operation": "city_view",
        "operation_label": "View Cities",
        "display_order": 53,
    },
    {
        "module": "location",
        "submodule": "city",
        "operation": "city_create",
        "operation_label": "Create Cities",
        "display_order": 54,
    },
    {
        "module": "location",
        "submodule": "city",
        "operation": "city_edit",
        "operation_label": "Edit Cities",
        "display_order": 55,
    },
    {
        "module": "location",
        "submodule": "city",
        "operation": "city_delete",
        "operation_label": "Delete Cities",
        "display_order": 56,
    },
]

# You can define permission groups for easy assignment
PERMISSION_GROUPS = {
    "admin": [
        "user_view",
        "user_create",
        "user_edit",
        "user_delete",
        "role_view",
        "role_create",
        "role_edit",
        "role_delete",
        "admin_dashboard",
        "setting_view",
        "setting_edit",
        "admin_system_settings",
    ],
}

# Define standard roles to be created
DEFAULT_ROLES = [
    {
        "label": "Super Administrator",
        "slug": "super_admin",
        "is_default": True,
        "permissions": ["*"],  # All permissions
    },
    {
        "label": "Administrator",
        "slug": "admin",
        "is_default": True,
        "permissions": ["*"],  # All permissions
    },
    {"label": "User", "slug": "user", "is_default": True, "permissions": []},
]
