Source code for shuup.admin.modules.contacts.views.mass_edit
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
import six
from django.contrib import messages
from django.db.models import Q
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext_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"))