from django.shortcuts import render, reverse from django.urls import reverse_lazy from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView from django.views.generic.detail import DetailView from django.views.generic.list import ListView from django.contrib.auth.decorators import login_required from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.models import User from django.contrib.auth.forms import PasswordChangeForm class AccountListView(LoginRequiredMixin, ListView): model = User template_name = 'accounts/account_list.html' class AccountCreateView(LoginRequiredMixin, CreateView): model = User fields = ['email', 'password'] template_name = 'accounts/account_form.html' class AccountDetailView(LoginRequiredMixin, DetailView): model = User template_name = 'accounts/account_detail.html' class AccountUpdateView(LoginRequiredMixin, UpdateView): model = User # form_class = PasswordChangeForm fields = ['username', 'email'] template_name = 'accounts/account_form.html' def get_success_url(self): pk = self.kwargs["pk"] return reverse('account-detail', kwargs={'pk': pk}) class AccountDeleteView(LoginRequiredMixin, DeleteView): model = User success_url = reverse_lazy('account-list')