Files
LifeStats/web/views.py
2018-12-27 04:30:12 +04:00

71 lines
1.8 KiB
Python

from django.urls import reverse, reverse_lazy
from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView
from web.models import ActivityLog, User, Activity
class UserListView(ListView):
model = User
class UserCreateView(CreateView):
model = User
fields = ['name', 'email']
success_url = reverse_lazy('users')
class UserDetailView(DetailView):
model = User
context_object_name = 'user'
pk_url_kwarg = 'user_id'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['activity_logs'] = ActivityLog.objects.filter(user=self.object).order_by('start_time')
context['activities'] = set(i.activity for i in ActivityLog.objects.filter(user=self.object))
return context
class ActivityLogCreateView(CreateView):
model = ActivityLog
fields = ['activity', 'user', 'start_time', 'end_time']
def get_success_url(self):
return reverse('user', kwargs={
'user_id': self.object.user.id,
})
class ActivityLogUpdateView(UpdateView):
model = ActivityLog
fields = ['activity', 'user', 'start_time', 'end_time']
pk_url_kwarg = 'activity_log_id'
def get_success_url(self):
return reverse('user', kwargs={
'user_id': self.object.user.id,
})
class ActivityLogDeleteView(DeleteView):
model = ActivityLog
pk_url_kwarg = 'activity_log_id'
def get_success_url(self):
return reverse('user', kwargs={
'user_id': self.object.user.id,
})
class UserChartsActivity(DetailView):
model = User
pk_url_kwarg = 'user_id'
template_name_suffix = '_activity_charts'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['activity'] = Activity.objects.filter(id=self.kwargs['activity_id']).first()
return context