71 lines
2.4 KiB
Python
Executable File
71 lines
2.4 KiB
Python
Executable File
import pytz
|
|
from django.utils import timezone
|
|
from datetime import date, timedelta
|
|
from django.shortcuts import render, reverse, redirect
|
|
from django.urls import reverse_lazy
|
|
from django.views.generic.base import TemplateView
|
|
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.mixins import LoginRequiredMixin
|
|
from django.contrib.auth.models import User
|
|
|
|
from .models import Profile
|
|
from .forms import AccountUpdateForm, ProfileUpdateForm
|
|
|
|
from board.models import LogEntry, Event
|
|
|
|
|
|
class ProfileView(LoginRequiredMixin, TemplateView):
|
|
template_name = 'accounts/profile.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
today = date.today()
|
|
tomorrow = today + timedelta(days=1)
|
|
enddate = today + timedelta(days=6)
|
|
context['profile'] = self.request.user.profile
|
|
context['latest_activity'] = LogEntry.objects.all()[:10]
|
|
context['today'] = Event.objects.filter(
|
|
date=today
|
|
)
|
|
context['upcoming_events'] = Event.objects.filter(
|
|
date__range=[tomorrow, enddate]
|
|
)
|
|
return context
|
|
|
|
class ProfileUpdateView(LoginRequiredMixin, UpdateView):
|
|
model = Profile
|
|
form_class = ProfileUpdateForm
|
|
|
|
def get_success_url(self):
|
|
return reverse('account-update', kwargs={'pk': self.request.user.pk})
|
|
|
|
|
|
class AccountDetailView(LoginRequiredMixin, DetailView):
|
|
model = User
|
|
template_name = 'accounts/account_detail.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
return context
|
|
|
|
class AccountUpdateView(LoginRequiredMixin, UpdateView):
|
|
model = User
|
|
form_class = AccountUpdateForm
|
|
template_name = 'accounts/account_form.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['profile_form'] = ProfileUpdateForm(instance=self.object.profile)
|
|
context['timezones'] = pytz.common_timezones
|
|
return context
|
|
|
|
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')
|