from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic.detail import DetailView from django.views.generic.edit import CreateView, DeleteView, UpdateView from . import forms, models class OwnerFilterMixin(LoginRequiredMixin): def get_queryset(self): return super().get_queryset().filter(owner=self.request.user) class GroupMixin: model = models.Group fields = ["name"] class GroupCreateView(LoginRequiredMixin, GroupMixin, CreateView): def form_valid(self, form): form.instance.owner = self.request.user return super().form_valid(form) class GroupUpdateView(OwnerFilterMixin, GroupMixin, UpdateView): pass class GroupDeleteView(OwnerFilterMixin, GroupMixin, DeleteView): success_url = "/" class GroupDetailView(OwnerFilterMixin, GroupMixin, DetailView): pass class GroupAddMembersView(OwnerFilterMixin, GroupMixin, UpdateView): fields = None form_class = forms.GroupAddMembersForm