Files
mayan-edms/mayan/apps/smart_settings/views.py
Roberto Rosario 95a1df8072 Backport common mixin and generics improvements
* Rename get_object_list to get_source_queryset.
* Add uniqueness validation to SingleObjectCreateView.
* Remove MultipleInstanceActionMixin.
* Backport MultipleObjectMixin improvements.
* Remove ObjectListPermissionFilterMixin.
* Add and improve tests.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-06 02:07:35 -04:00

84 lines
2.5 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 mayan.apps.common.generics import FormView, SingleObjectListView
from .classes import Namespace, Setting
from .forms import SettingForm
from .permissions import permission_settings_edit, permission_settings_view
class NamespaceDetailView(SingleObjectListView):
view_permission = permission_settings_view
def get_extra_context(self):
return {
'hide_object': True,
'object': self.get_namespace(),
'subtitle': _(
'Settings inherited from an environment variable take '
'precedence and cannot be changed in this view. '
),
'title': _('Settings in namespace: %s') % self.get_namespace(),
}
def get_namespace(self):
try:
return Namespace.get(name=self.kwargs['namespace_name'])
except KeyError:
raise Http404(
_('Namespace: %s, not found') % self.kwargs['namespace_name']
)
def get_source_queryset(self):
return self.get_namespace().settings
class NamespaceListView(SingleObjectListView):
extra_context = {
'hide_link': True,
'title': _('Setting namespaces'),
}
view_permission = permission_settings_view
def get_source_queryset(self):
return Namespace.get_all()
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(
message=_('Setting updated successfully.'),
request=self.request
)
return super(SettingEditView, self).form_valid(form=form)
def get_extra_context(self):
return {
'hide_link': True,
'object': self.get_object(),
'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(
viewname='settings:namespace_detail', kwargs={
'namespace_name': self.get_object().namespace.name
}
)