mirror of
https://github.com/chibicitiberiu/ytsm.git
synced 2024-02-24 05:43:31 +00:00
Merge branches 'master' and 'status-on-ui' of https://github.com/chibicitiberiu/ytsm into status-on-ui
This commit is contained in:
commit
ae7d4cd080
@ -20,7 +20,7 @@ class RegisterView(FormView):
|
|||||||
success_url = reverse_lazy('register_done')
|
success_url = reverse_lazy('register_done')
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
form.apply_session_expiry(self.request)
|
||||||
form.save()
|
form.save()
|
||||||
|
|
||||||
username = form.cleaned_data.get('username')
|
username = form.cleaned_data.get('username')
|
||||||
|
@ -11,8 +11,8 @@ from django.views.generic import FormView
|
|||||||
from YtManagerApp.management.appconfig import appconfig
|
from YtManagerApp.management.appconfig import appconfig
|
||||||
from YtManagerApp.management.jobs.synchronize import schedule_synchronize_global
|
from YtManagerApp.management.jobs.synchronize import schedule_synchronize_global
|
||||||
from YtManagerApp.scheduler import initialize_scheduler
|
from YtManagerApp.scheduler import initialize_scheduler
|
||||||
from YtManagerApp.views.forms.auth import ExtendedAuthenticationForm
|
from YtManagerApp.views.forms.first_time import WelcomeForm, ApiKeyForm, PickAdminUserForm, ServerConfigForm, DoneForm, \
|
||||||
from YtManagerApp.views.forms.first_time import WelcomeForm, ApiKeyForm, PickAdminUserForm, ServerConfigForm, DoneForm, UserCreationForm
|
UserCreationForm, LoginForm
|
||||||
|
|
||||||
logger = logging.getLogger("FirstTimeWizard")
|
logger = logging.getLogger("FirstTimeWizard")
|
||||||
|
|
||||||
@ -85,38 +85,35 @@ class Step2SetupAdminUserView(WizardStepMixin, FormView):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.__form_class = UserCreationForm
|
|
||||||
|
|
||||||
def get_form_class(self):
|
def get_form_class(self):
|
||||||
return self.__form_class
|
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
|
||||||
|
|
||||||
have_users = User.objects.count() > 0
|
have_users = User.objects.count() > 0
|
||||||
have_admin = User.objects.filter(is_superuser=True).count() > 0
|
have_admin = User.objects.filter(is_superuser=True).count() > 0
|
||||||
|
|
||||||
|
# Check if an admin user already exists
|
||||||
|
if have_admin:
|
||||||
|
logger.debug("Admin user already exists and is not logged in!")
|
||||||
|
return LoginForm
|
||||||
|
|
||||||
|
elif have_users and 'register' not in self.kwargs:
|
||||||
|
logger.debug("There are users but no admin!")
|
||||||
|
return PickAdminUserForm
|
||||||
|
|
||||||
|
logger.debug("No admin user exists, will register a new account!")
|
||||||
|
return UserCreationForm
|
||||||
|
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
|
||||||
# Skip if admin is already logged in
|
# Skip if admin is already logged in
|
||||||
if request.user.is_authenticated and request.user.is_superuser:
|
if request.user.is_authenticated and request.user.is_superuser:
|
||||||
logger.debug("Admin user already exists and is logged in!")
|
logger.debug("Admin user already exists and is logged in!")
|
||||||
return redirect(self.success_url)
|
return redirect(self.success_url)
|
||||||
|
|
||||||
# Check if an admin user already exists
|
|
||||||
elif have_admin:
|
|
||||||
logger.debug("Admin user already exists and is not logged in!")
|
|
||||||
self.__form_class = ExtendedAuthenticationForm
|
|
||||||
|
|
||||||
elif have_users and 'register' not in kwargs:
|
|
||||||
logger.debug("There are users but no admin!")
|
|
||||||
self.__form_class = PickAdminUserForm
|
|
||||||
|
|
||||||
else:
|
|
||||||
logger.debug("No admin user exists, will register a new account!")
|
|
||||||
self.__form_class = UserCreationForm
|
|
||||||
|
|
||||||
return super().get(request, *args, **kwargs)
|
return super().get(request, *args, **kwargs)
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
if isinstance(form, ExtendedAuthenticationForm):
|
if isinstance(form, LoginForm):
|
||||||
|
form.apply_session_expiry(self.request)
|
||||||
login(self.request, form.get_user())
|
login(self.request, form.get_user())
|
||||||
|
|
||||||
elif isinstance(form, UserCreationForm):
|
elif isinstance(form, UserCreationForm):
|
||||||
|
@ -8,15 +8,14 @@ from django.urls import reverse_lazy
|
|||||||
class ExtendedAuthenticationForm(AuthenticationForm):
|
class ExtendedAuthenticationForm(AuthenticationForm):
|
||||||
remember_me = forms.BooleanField(label='Remember me', required=False, initial=False)
|
remember_me = forms.BooleanField(label='Remember me', required=False, initial=False)
|
||||||
|
|
||||||
def clean(self):
|
def apply_session_expiry(self, request):
|
||||||
remember_me = self.cleaned_data.get('remember_me')
|
remember_me = self.cleaned_data.get('remember_me')
|
||||||
if remember_me:
|
if remember_me:
|
||||||
expiry = 3600 * 24 * 30
|
expiry = 3600 * 24 * 30
|
||||||
else:
|
else:
|
||||||
expiry = 0
|
expiry = 0
|
||||||
self.request.session.set_expiry(expiry)
|
|
||||||
|
|
||||||
return super().clean()
|
request.session.set_expiry(expiry)
|
||||||
|
|
||||||
|
|
||||||
class ExtendedUserCreationForm(UserCreationForm):
|
class ExtendedUserCreationForm(UserCreationForm):
|
||||||
|
@ -6,7 +6,7 @@ from django import forms
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
|
|
||||||
from YtManagerApp.views.forms.auth import ExtendedUserCreationForm
|
from YtManagerApp.views.forms.auth import ExtendedUserCreationForm, ExtendedAuthenticationForm
|
||||||
|
|
||||||
logger = logging.getLogger("FirstTimeWizard")
|
logger = logging.getLogger("FirstTimeWizard")
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ class ApiKeyForm(forms.Form):
|
|||||||
'api_key',
|
'api_key',
|
||||||
Column(
|
Column(
|
||||||
Submit('submit', value='Continue'),
|
Submit('submit', value='Continue'),
|
||||||
HTML('<a href="{% url \'first_time_2\' %}" class="btn">Skip</a>')
|
HTML('<a href="{% url \'first_time_2\' %}" class="btn btn-secondary">Skip</a>')
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -39,6 +39,22 @@ class UserCreationForm(ExtendedUserCreationForm):
|
|||||||
form_action = reverse_lazy('first_time_2')
|
form_action = reverse_lazy('first_time_2')
|
||||||
|
|
||||||
|
|
||||||
|
class LoginForm(ExtendedAuthenticationForm):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.helper = FormHelper()
|
||||||
|
self.helper.layout = Layout(
|
||||||
|
'username',
|
||||||
|
'password',
|
||||||
|
'remember_me',
|
||||||
|
Column(
|
||||||
|
Submit('submit', value='Continue'),
|
||||||
|
HTML('<a href="{% url \'first_time_2\' %}?register=1" class="btn">Register new admin account</a>')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PickAdminUserForm(forms.Form):
|
class PickAdminUserForm(forms.Form):
|
||||||
admin_user = forms.ModelChoiceField(
|
admin_user = forms.ModelChoiceField(
|
||||||
User.objects.order_by('username'),
|
User.objects.order_by('username'),
|
||||||
|
Loading…
Reference in New Issue
Block a user