"""Permission codenames for the platform-core generic models."""

from __future__ import annotations

from simorgh.apps.iam.registry import register_permission


def register_all() -> None:
    # Attachments
    register_permission(
        "platform_core.attachment.view",
        label="View attachments",
        description="See files attached to entities.",
    )
    register_permission(
        "platform_core.attachment.manage",
        label="Manage attachments",
        description="Upload and delete attachments on entities.",
    )
    # Comments
    register_permission(
        "platform_core.comment.view",
        label="View comments",
        description="See comments on entities.",
    )
    register_permission(
        "platform_core.comment.create",
        label="Create comments",
        description="Post comments on entities.",
    )
    register_permission(
        "platform_core.comment.moderate",
        label="Moderate comments",
        description="Edit or remove any user's comments.",
    )
    # Activity
    register_permission(
        "platform_core.activity.view",
        label="View activity feed",
        description="Read the activity timeline of an entity or user.",
    )
    # Custom fields
    register_permission(
        "platform_core.custom_field.view",
        label="View custom fields",
        description="See custom field definitions and values.",
    )
    register_permission(
        "platform_core.custom_field.manage",
        label="Manage custom fields",
        description="Define custom fields and edit their values.",
    )
    # Print templates
    register_permission(
        "platform_core.print_template.view",
        label="View print templates",
        description="See available print templates for entities.",
    )
    register_permission(
        "platform_core.print_template.manage",
        label="Manage print templates",
        description="Create, edit, and delete print templates.",
    )
    register_permission(
        "platform_core.print_template.execute",
        label="Execute print jobs",
        description="Generate PDF documents from print templates.",
    )
    # Document templates
    register_permission(
        "platform_core.document_template.view",
        label="View document templates",
        description="See available document templates.",
    )
    register_permission(
        "platform_core.document_template.manage",
        label="Manage document templates",
        description="Create, edit, and delete document templates.",
    )
    # Export layouts
    register_permission(
        "platform_core.export_layout.view",
        label="View export layouts",
        description="See available export layout configurations.",
    )
    register_permission(
        "platform_core.export_layout.manage",
        label="Manage export layouts",
        description="Create, edit, and delete export layout configurations.",
    )
