konova/user/views/api_token.py
mpeltriaux cf6f188ef3 # Refactoring APITokenView
* refactors API Token view
* updates tests
2025-11-05 10:37:27 +01:00

54 lines
1.7 KiB
Python

"""
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()