""" Author: Michel Peltriaux Created on: 08.01.25 """ from django.contrib.auth.decorators import login_required from django.contrib.auth.mixins import LoginRequiredMixin from django.http import HttpRequest from django.shortcuts import render from django.utils.decorators import method_decorator from django.views import View from django.utils.translation import gettext_lazy as _ from konova.contexts import BaseContext from konova.decorators import default_group_required from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER from konova.utils.message_templates import NEW_API_TOKEN_GENERATED from konova.views.base import BaseModalFormView from user.forms.modals.api_token import NewAPITokenModalForm from user.models import User class APITokenView(View): @method_decorator(login_required) @method_decorator(default_group_required) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) def get(self, request: HttpRequest): template = "user/token.html" user = request.user context = { "user": user, TAB_TITLE_IDENTIFIER: _("User API token"), } context = BaseContext(request, context).context return render(request, template, context) class NewAPITokenView(LoginRequiredMixin, BaseModalFormView): _MODEL_CLS = User _FORM_CLS = NewAPITokenModalForm _MSG_SUCCESS = NEW_API_TOKEN_GENERATED _REDIRECT_URL = "user:api-token" def _user_has_shared_access(self, user, **kwargs): # No special checks to be done in here return True def _user_has_permission(self, user, **kwargs): # User should at least be a default user to be able to use the api return user.is_default_user()