from .. import settings from django.views import View as DjangoView from django.views.generic import FormView as DjangoFormView from typing import Any class Base: base_template_name = settings.TINYWIKI_BASE_TEMPLATE @classmethod def get_base_template_name(cls)->str: return cls.base_template_name @classmethod def get_template_name(cls)->str: return cls.template_name def get_tinywiki_context_data(self): create_pages = False if self.request.user.is_authenticated: if self.request.user.is_staff or self.request.user.has_perm('tinywiki.tinywiki-create'): create_pages = True return { 'brand_logo': settings.TINYWIKI_BRAND_LOGO, 'brand_name': settings.TINYWIKI_BRAND_NAME, 'base_template': self.get_base_template_name(), 'use_bootstrap': settings.USE_BOOTSTRAP, 'user_can_create_wiki_pages':create_pages } class View(Base,DjangoView): template_name = "tinywiki" def get_context_data(self,**kwargs): context = self.get_tinywiki_context_data() context.update(kwargs) return context class FormView(Base,DjangoFormView): def get_context_data(self, **kwargs) -> dict[str, Any]: context = self.get_tinywiki_context_data() context.update(kwargs) return super().get_context_data(**context)