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