71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
from django.contrib.auth import login
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
from django.contrib.auth.views import LoginView
|
|
from django.shortcuts import redirect
|
|
from django.urls import reverse_lazy
|
|
from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView
|
|
|
|
from apps.accounts.models import CustomUser
|
|
from apps.core.permissions import AdminRequiredMixin
|
|
|
|
|
|
class CustomLoginView(LoginView):
|
|
template_name = "pages/accounts/login.html"
|
|
redirect_authenticated_user = True
|
|
|
|
|
|
class RegisterView(CreateView):
|
|
model = CustomUser
|
|
template_name = "pages/accounts/register.html"
|
|
fields = ["username", "email", "password", "first_name", "last_name"]
|
|
success_url = reverse_lazy("home")
|
|
|
|
def form_valid(self, form):
|
|
form.instance.set_password(form.cleaned_data["password"])
|
|
form.instance.role = CustomUser.Role.CLIENT
|
|
response = super().form_valid(form)
|
|
login(self.request, self.object)
|
|
return response
|
|
|
|
|
|
class ProfileView(LoginRequiredMixin, DetailView):
|
|
model = CustomUser
|
|
template_name = "pages/accounts/profile.html"
|
|
context_object_name = "profile_user"
|
|
|
|
def get_object(self):
|
|
return self.request.user
|
|
|
|
|
|
class UserListView(AdminRequiredMixin, ListView):
|
|
model = CustomUser
|
|
template_name = "pages/accounts/user_list.html"
|
|
context_object_name = "users"
|
|
paginate_by = 20
|
|
|
|
|
|
class UserDetailView(AdminRequiredMixin, DetailView):
|
|
model = CustomUser
|
|
template_name = "pages/accounts/user_detail.html"
|
|
context_object_name = "profile_user"
|
|
|
|
|
|
class UserCreateView(AdminRequiredMixin, CreateView):
|
|
model = CustomUser
|
|
template_name = "pages/accounts/user_form.html"
|
|
fields = ["username", "email", "role", "first_name", "last_name", "is_active"]
|
|
success_url = reverse_lazy("user_list")
|
|
|
|
|
|
class UserUpdateView(AdminRequiredMixin, UpdateView):
|
|
model = CustomUser
|
|
template_name = "pages/accounts/user_form.html"
|
|
fields = ["username", "email", "role", "first_name", "last_name", "is_active"]
|
|
success_url = reverse_lazy("user_list")
|
|
|
|
|
|
class UserDeleteView(AdminRequiredMixin, DeleteView):
|
|
model = CustomUser
|
|
template_name = "pages/accounts/user_confirm_delete.html"
|
|
success_url = reverse_lazy("user_list")
|