import logging

from django.contrib import admin
from django.template.response import TemplateResponse
from django.urls import path
from django.utils.decorators import method_decorator
from django.views.decorators.clickjacking import xframe_options_sameorigin

from .models import Ui
from .views import show_ui


logger = logging.getLogger(__name__)


@admin.register(Ui)
class UiAdmin(admin.ModelAdmin):
    change_list_template = 'admin/verificator/ui/change_list.html'

    def get_urls(self):
        default_urls = super().get_urls()
        custom_urls = [
            path('verifier/', self.admin_site.admin_view(self.verifier_view), name='verificator_ui_verifier'),
            path('verifier/embed/', self.admin_site.admin_view(self.verifier_embed_view), name='verificator_ui_verifier_embed'),
        ]
        return custom_urls + default_urls

    def get_model_perms(self, request):
        return {}

    def verifier_view(self, request):
        logger.info('Открывается страница верификатора через админку')
        return TemplateResponse(
            request,
            'admin/verificator/ui/verifier_container.html',
            {
                'title': 'Верификатор IoC',
            },
        )

    @method_decorator(xframe_options_sameorigin)
    def verifier_embed_view(self, request):
        logger.debug('Рендерится интерфейс верификатора внутри админки')
        return show_ui(request)
