def handler(sender, **kwargs): from dbsettings.loading import get_app_settings app_label = sender.__name__.split('.')[-2] are_global_settings = any(not s.class_name for s in get_app_settings(app_label)) if are_global_settings: permission = ( 'can_edit__settings', 'Can edit %s non-model settings' % app_label, ) mk_permissions([permission], app_label, 0)
def handler(sender, **kwargs): from dbsettings.loading import get_app_settings app_label = sender.label are_global_settings = any(not s.class_name for s in get_app_settings(app_label)) if are_global_settings: permission = ( 'can_edit_%s_settings' % app_label, 'Can edit %s non-model settings' % app_label, ) mk_permissions([permission], app_label, verbosity=kwargs.get('verbosity', 0))
def handler(sender, **kwargs): from dbsettings.loading import get_app_settings app_label = sender.label are_global_settings = any(not s.class_name for s in get_app_settings(app_label)) if are_global_settings: permission = ( 'can_edit__settings', 'Can edit %s non-model settings' % app_label, ) mk_permissions([permission], app_label, 0)
def app_settings(request, app_label, template='dbsettings/app_settings.html'): # Determine what set of settings this editor is used for if app_label is None: settings = loading.get_all_settings() title = _('Site settings') else: settings = loading.get_app_settings(app_label) title = _('%(app)s settings') % {'app': capfirst(app_label)} # Create an editor customized for the current user editor = forms.customized_editor(request.user, settings) if request.method == 'POST': # Populate the form with user-submitted data form = editor(request.POST.copy(), request.FILES) if form.is_valid(): form.full_clean() for name, value in form.cleaned_data.items(): key = forms.RE_FIELD_NAME.match(name).groups() setting = loading.get_setting(*key) try: storage = loading.get_setting_storage(*key) current_value = setting.to_python(storage.value) except: current_value = None if current_value != setting.to_python(value): args = key + (value, ) loading.set_setting_value(*args) # Give user feedback as to which settings were changed if setting.class_name: location = setting.class_name else: location = setting.module_name update_msg = (_('Updated %(desc)s on %(location)s') % { 'desc': str(setting.description), 'location': location }) messages.add_message(request, messages.INFO, update_msg) return HttpResponseRedirect(request.path) else: # Leave the form populated with current setting values form = editor() return render(request, template, { 'title': title, 'no_settings': len(settings) == 0, 'form': form, })
def app_settings(request, app_label, template='dbsettings/app_settings.html'): # Determine what set of settings this editor is used for if app_label is None: settings = loading.get_all_settings() title = _('Site settings') else: settings = loading.get_app_settings(app_label) title = _('%(app)s settings') % {'app': capfirst(app_label)} # Create an editor customized for the current user editor = forms.customized_editor(request.user, settings) if request.method == 'POST': # Populate the form with user-submitted data form = editor(request.POST.copy(), request.FILES) if form.is_valid(): form.full_clean() for name, value in form.cleaned_data.items(): key = forms.RE_FIELD_NAME.match(name).groups() setting = loading.get_setting(*key) try: storage = loading.get_setting_storage(*key) current_value = setting.to_python(storage.value) except: current_value = None if current_value != setting.to_python(value): args = key + (value,) loading.set_setting_value(*args) # Give user feedback as to which settings were changed if setting.class_name: location = setting.class_name else: location = setting.module_name update_msg = (_('Updated %(desc)s on %(location)s') % {'desc': six.text_type(setting.description), 'location': location}) messages.add_message(request, messages.INFO, update_msg) # Problem with settings not updated in form fields on save causing user errors. Sending to admin dash instead return HttpResponseRedirect(reverse_lazy('admin:index')) else: # Leave the form populated with current setting values form = editor() return render_to_response(template, { 'title': title, 'form': form, }, context_instance=RequestContext(request))
def app_settings(request, app_label, template='dbsettings/app_settings.html'): # Determine what set of settings this editor is used for if app_label is None: settings = loading.get_all_settings() title = 'Site settings' else: settings = loading.get_app_settings(app_label) title = '%s settings' % capfirst(app_label) # Create an editor customized for the current user editor = forms.customized_editor(request.user, settings) if request.method == 'POST': # Populate the form with user-submitted data form = editor(request.POST.copy(), request.FILES) if form.is_valid(): form.full_clean() for name, value in form.cleaned_data.items(): key = forms.re_field_name.match(name).groups() setting = loading.get_setting(*key) try: storage = loading.get_setting_storage(*key) current_value = setting.to_python(storage.value) except: current_value = None if current_value != setting.to_python(value): args = key + (value, ) loading.set_setting_value(*args) # Give user feedback as to which settings were changed if setting.class_name: location = setting.class_name else: location = setting.module_name update_msg = u'Updated %s on %s' % (unicode( setting.description), location) messages.add_message(request, messages.INFO, update_msg) return HttpResponseRedirect(request.path) else: # Leave the form populated with current setting values form = editor() return render_to_response(template, { 'title': title, 'form': form, }, context_instance=RequestContext(request))
def app_settings(request, app_label, template='dbsettings/app_settings.html'): # Determine what set of settings this editor is used for if app_label is None: settings = loading.get_all_settings() title = _('Site settings') else: settings = loading.get_app_settings(app_label) title = _('%(app)s settings') % {'app': capfirst(app_label)} # Create an editor customized for the current user editor = forms.customized_editor(request.user, settings) if request.method == 'POST': # Populate the form with user-submitted data form = editor(request.POST.copy(), request.FILES) if form.is_valid(): form.full_clean() n_changed = 0 for name, value in form.cleaned_data.items(): key = forms.RE_FIELD_NAME.match(name).groups() setting = loading.get_setting(*key) try: storage = loading.get_setting_storage(*key) current_value = setting.to_python(storage.value) except Exception, e: log.info("An exception occurred trying to convert %s, " "with value %s, to python.", name, value, exc_info=True) current_value = None if current_value != setting.to_python(value): args = key + (value,) loading.set_setting_value(*args) # Give user feedback as to which settings were changed if setting.class_name: location = setting.class_name else: location = setting.module_name update_msg = (_(u'Updated %(desc)s on %(location)s') % {'desc': unicode(setting.description), 'location': location}) messages.add_message(request, messages.INFO, update_msg) n_changed += 1 if not n_changed: no_update_msg = (_(u'Nothing was changed')) messages.add_message(request, messages.INFO, no_update_msg) return HttpResponseRedirect(request.path)
def app_settings(request, app_label, template='dbsettings/app_settings.html'): # Determine what set of settings this editor is used for if app_label is None: settings = loading.get_all_settings() title = 'Site settings' else: settings = loading.get_app_settings(app_label) title = '%s settings' % capfirst(app_label) # Create an editor customized for the current user editor = forms.customized_editor(request.user, settings) if request.method == 'POST': # Populate the form with user-submitted data form = editor(request.POST.copy(), request.FILES) if form.is_valid(): form.full_clean() for name, value in form.cleaned_data.items(): key = forms.re_field_name.match(name).groups() setting = loading.get_setting(*key) try: storage = loading.get_setting_storage(*key) current_value = setting.to_python(storage.value) except: current_value = None if current_value != setting.to_python(value): args = key + (value,) loading.set_setting_value(*args) # Give user feedback as to which settings were changed if setting.class_name: location = setting.class_name else: location = setting.module_name update_msg = u'Updated %s on %s' % (unicode(setting.description), location) messages.add_message(request, messages.INFO, update_msg ) return HttpResponseRedirect(request.path) else: # Leave the form populated with current setting values form = editor() return render_to_response(template, { 'title': title, 'form': form, }, context_instance=RequestContext(request))