54 lines
1.7 KiB
Python
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()
|