50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
|
"""
|
||
|
Author: Michel Peltriaux
|
||
|
Created on: 08.01.25
|
||
|
|
||
|
"""
|
||
|
from django import forms
|
||
|
from django.utils.translation import gettext_lazy as _
|
||
|
|
||
|
from api.models import APIUserToken
|
||
|
from konova.forms.modals import BaseModalForm
|
||
|
from konova.utils.mailer import Mailer
|
||
|
|
||
|
|
||
|
class NewAPITokenModalForm(BaseModalForm):
|
||
|
confirm = forms.BooleanField(
|
||
|
label=_("Confirm"),
|
||
|
label_suffix=_(""),
|
||
|
widget=forms.CheckboxInput(),
|
||
|
required=True,
|
||
|
)
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
self.template = "modal/modal_form.html"
|
||
|
super().__init__(*args, **kwargs)
|
||
|
self.form_title = _("Generate API Token")
|
||
|
|
||
|
self.form_caption = ""
|
||
|
if self.__user_has_api_token():
|
||
|
self.form_caption = _("You are about to create a new API token. The existing one will not be usable afterwards.")
|
||
|
self.form_caption += "\n"
|
||
|
self.form_caption += _("A new token needs to be validated by an administrator!")
|
||
|
# Disable automatic w-100 setting for this type of modal form. Looks kinda strange
|
||
|
self.fields["confirm"].widget.attrs["class"] = ""
|
||
|
|
||
|
def __user_has_api_token(self):
|
||
|
return self.instance.api_token is not None
|
||
|
|
||
|
def save(self):
|
||
|
user = self.instance
|
||
|
if user.api_token is not None:
|
||
|
user.api_token.delete()
|
||
|
user.api_token = APIUserToken.objects.create()
|
||
|
user.save()
|
||
|
|
||
|
mailer = Mailer()
|
||
|
mailer.send_mail_verify_api_token(user)
|
||
|
|
||
|
return user.api_token
|
||
|
|