import pytz from django.shortcuts import render, reverse, redirect 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 def set_timezone(request): if request.method == 'POST': request.session['django_timezone'] = request.POST['timezone'] return redirect('attendance-overview') else: return render(request, 'accounts/timezone.html', {'timezones': pytz.common_timezones}) 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')