# 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.http import HttpResponseRedirect
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView
from shuup.admin.modules.settings.forms import ColumnSettingsForm
from shuup.admin.modules.settings.view_settings import ViewSettings
from shuup.admin.toolbar import JavaScriptActionButton, PostActionButton, Toolbar
from shuup.utils.django_compat import resolve, reverse
from shuup.utils.importing import load
[docs]class ListSettingsView(FormView):
form_class = ColumnSettingsForm
template_name = "shuup/admin/edit_settings.jinja"
[docs] def dispatch(self, request, *args, **kwargs):
module_str = "%s:%s" % (request.GET.get("module"), request.GET.get("model"))
self.return_url = reverse("shuup_admin:%s.list" % request.GET.get("return_url"))
match = resolve(self.return_url)
view_context = load("%s:%s" % (match.func.__module__, match.func.__name__))
default_columns = view_context.default_columns
self.model = load(module_str)
self.settings = ViewSettings(self.model, default_columns, view_context)
return super(ListSettingsView, self).dispatch(request, *args, **kwargs)
[docs] def get_initial(self):
initial = super(ListSettingsView, self).get_initial()
for col in self.settings.columns:
key = self.settings.get_settings_key(col.id)
initial.update({key: self.settings.get_config(col.id)})
return initial
[docs] def get_context_data(self, **kwargs):
context = super(ListSettingsView, self).get_context_data(**kwargs)
context["toolbar"] = Toolbar(
[
PostActionButton(
icon="fa fa-save",
form_id="settings_form",
text=_("Save"),
extra_css_class="btn-success",
),
JavaScriptActionButton(
icon="fa fa-cog",
text=_("Reset Defaults"),
onclick="resetDefaultValues()",
),
],
view=self,
)
context["defaults"] = "|".join([self.settings.get_settings_key(c.id) for c in self.settings.default_columns])
return context