Solving the issues in the login and others
This commit is contained in:
@@ -2,31 +2,26 @@ from django import forms
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.contrib.auth.forms import AuthenticationForm
|
||||
from .models import User
|
||||
from django import forms
|
||||
|
||||
|
||||
class UserForm(UserCreationForm):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ('username', 'email', 'phone_number', 'role',
|
||||
'is_staff', 'is_customer', 'is_user')
|
||||
|
||||
widgets = {
|
||||
'username': forms.TextInput(attrs={'class': 'form-control form-control-sm'}),
|
||||
'email': forms.EmailInput(attrs={'class': 'form-control form-control-sm'}),
|
||||
'phone_number': forms.TextInput(attrs={'class': 'form-control form-control-sm'}),
|
||||
'role': forms.Select(attrs={'class': 'form-select form-select-sm'}),
|
||||
'is_staff': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
|
||||
'is_customer': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
|
||||
'is_user': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
|
||||
}
|
||||
|
||||
class UserForm(AuthenticationForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
# Apply bootstrap small styling to password fields
|
||||
self.fields['password1'].widget.attrs.update({'class': 'form-control form-control-sm'})
|
||||
self.fields['password2'].widget.attrs.update({'class': 'form-control form-control-sm'})
|
||||
for field in self.fields.values():
|
||||
field.widget.attrs.update({"class": "form-control"})
|
||||
|
||||
|
||||
class LoginForm(AuthenticationForm):
|
||||
pass
|
||||
username = forms.CharField(
|
||||
widget=forms.TextInput(attrs={
|
||||
"class": "form-control",
|
||||
"placeholder": "Enter username"
|
||||
})
|
||||
)
|
||||
password = forms.CharField(
|
||||
widget=forms.PasswordInput(attrs={
|
||||
"class": "form-control",
|
||||
"placeholder": "Enter password"
|
||||
})
|
||||
)
|
||||
|
||||
@@ -3,10 +3,16 @@ from django.views import generic
|
||||
from django.urls import reverse_lazy
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from .models import User
|
||||
from .forms import LoginForm
|
||||
from .forms import UserForm
|
||||
from events.models import Event
|
||||
from master_data.models import EventType
|
||||
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.shortcuts import redirect
|
||||
from django.contrib import messages
|
||||
|
||||
|
||||
def dashboard(request):
|
||||
total_events = Event.objects.count()
|
||||
total_categories = EventType.objects.count()
|
||||
@@ -17,25 +23,51 @@ def dashboard(request):
|
||||
'total_users': total_users,
|
||||
})
|
||||
|
||||
|
||||
class UserListView(LoginRequiredMixin, generic.ListView):
|
||||
model = User
|
||||
template_name = 'accounts/user_list.html'
|
||||
context_object_name = 'users'
|
||||
paginate_by = 20
|
||||
|
||||
|
||||
class UserCreateView(LoginRequiredMixin, generic.CreateView):
|
||||
model = User
|
||||
form_class = UserForm
|
||||
template_name = 'accounts/user_form.html'
|
||||
success_url = reverse_lazy('accounts:user_list')
|
||||
|
||||
|
||||
class UserUpdateView(LoginRequiredMixin, generic.UpdateView):
|
||||
model = User
|
||||
form_class = UserForm
|
||||
template_name = 'accounts/user_form.html'
|
||||
success_url = reverse_lazy('accounts:user_list')
|
||||
|
||||
|
||||
class UserDeleteView(LoginRequiredMixin, generic.DeleteView):
|
||||
model = User
|
||||
template_name = 'accounts/user_confirm_delete.html'
|
||||
success_url = reverse_lazy('accounts:user_list')
|
||||
|
||||
|
||||
def login_view(request):
|
||||
if request.user.is_authenticated:
|
||||
return redirect("home") # Redirect authenticated user
|
||||
|
||||
form = LoginForm(request, data=request.POST or None)
|
||||
|
||||
if request.method == "POST":
|
||||
if form.is_valid():
|
||||
user = form.get_user()
|
||||
login(request, user)
|
||||
return redirect("dashboard")
|
||||
else:
|
||||
messages.error(request, "Invalid username or password")
|
||||
|
||||
return render(request, "accounts/login.html", {"form": form})
|
||||
|
||||
|
||||
def logout_view(request):
|
||||
logout(request)
|
||||
return redirect("login")
|
||||
|
||||
Reference in New Issue
Block a user