Source code for shuup.admin.modules.contacts.views.mass_edit
import six
from django.contrib import messages
from django.db.models import Q
from django.http import HttpResponseRedirect
from django.utils.translation import gettext_lazy as _
from django.views.generic import FormView
from shuup.admin.modules.contacts.forms import GroupMassEditForm, MassEditForm
from shuup.admin.utils.views import MassEditMixin
from shuup.core.models import Contact
from shuup.utils.django_compat import reverse
[docs]
class ContactMassEditView(MassEditMixin, FormView):
title = _("Mass Edit: Contacts")
form_class = MassEditForm
[docs]
def form_valid(self, form):
query = Q(id__in=self.ids)
if isinstance(self.ids, six.string_types) and self.ids == "all":
query = Q()
for contact in Contact.objects.filter(query):
for k, v in six.iteritems(form.cleaned_data):
if not v:
continue
if hasattr(contact, k):
setattr(contact, k, v)
contact.save()
messages.success(self.request, _("Contacts were changed."))
self.request.session["mass_action_ids"] = []
return HttpResponseRedirect(reverse("shuup_admin:contact.list"))
[docs]
class ContactGroupMassEditView(MassEditMixin, FormView):
title = _("Mass Edit: Contact Groups")
form_class = GroupMassEditForm
[docs]
def form_valid(self, form):
ids = self.ids
if isinstance(self.ids, six.string_types) and self.ids == "all":
ids = set(Contact.objects.all().values_list("id", flat=True))
groups = form.cleaned_data.get("contact_group", [])
for group in groups:
group.members.add(*ids)
messages.success(self.request, _("Contacts Groups were changed."))
self.request.session["mass_action_ids"] = []
return HttpResponseRedirect(reverse("shuup_admin:contact.list"))