Solving the issues in the login and others

This commit is contained in:
Vivek P Prakash
2025-11-28 16:03:23 +05:30
parent fabd36cf3f
commit c4d7d4f6bf
7 changed files with 461 additions and 211 deletions

View File

@@ -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"
})
)

View File

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