Files
mayan-edms/mayan/apps/smart_settings/views.py

77 lines
2.1 KiB
Python

from __future__ import unicode_literals
from django.contrib import messages
from django.http import Http404
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from common.views import FormView, SingleObjectListView
from .classes import Namespace, Setting
from .forms import SettingForm
from .permissions import permission_settings_edit, permission_settings_view
class NamespaceListView(SingleObjectListView):
extra_context = {
'hide_link': True,
'title': _('Setting namespaces'),
}
view_permission = permission_settings_view
def get_object_list(self):
return Namespace.get_all()
class NamespaceDetailView(SingleObjectListView):
view_permission = permission_settings_view
def get_extra_context(self):
return {
'hide_object': True,
'title': _('Settings in namespace: %s') % self.get_namespace(),
}
def get_namespace(self):
try:
return Namespace.get(self.kwargs['namespace_name'])
except KeyError:
raise Http404(
_('Namespace: %s, not found') % self.kwargs['namespace_name']
)
def get_object_list(self):
return self.get_namespace().settings
class SettingEditView(FormView):
form_class = SettingForm
view_permission = permission_settings_edit
def form_valid(self, form):
self.get_object().value = form.cleaned_data['value']
Setting.save_configuration()
messages.success(
self.request, _('Setting updated successfully.')
)
return super(SettingEditView, self).form_valid(form=form)
def get_extra_context(self):
return {
'hide_link': True,
'title': _('Edit setting: %s') % self.get_object(),
}
def get_initial(self):
return {'setting': self.get_object()}
def get_object(self):
return Setting.get(self.kwargs['setting_global_name'])
def get_post_action_redirect(self):
return reverse(
'settings:namespace_detail', args=(
self.get_object().namespace.name,
)
)