from django.contrib.auth.mixins import UserPassesTestMixin
from django.views import View


from django.views.generic import TemplateView
from sharix_admin.lib import *


class BaseLocalView(UserPassesTestMixin, TemplateView, View):
    """
    Базовый класс представления админ-панели ShariX.

    Предоставляет общие методы и функционал, который
    может быть использован в других представлениях админ-панели.
    """

    def dispatch(self, request, *args, **kwargs):
        self.user_groups = self.request.user.groups.values_list('name', flat=True)
        #self.avaliable_menu = self.request.user.groups.values_list('name', flat=True)
        return super().dispatch(request, *args, **kwargs)

    def test_func(self):
        return True

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        context.update({
            'title': self.page_title,
            'current_page': self.page_name,
            'user_groups': self.user_groups,
            'avaliable_pages': gen_avaliable_pages(self.user_groups),
        })

        return context



