def single_setting(request, scope, scope_category, name, template_name="site_settings/list.html"): if not has_perm(request.user,'site_settings.change_setting'): raise Http403 settings = Setting.objects.filter(scope=scope, scope_category=scope_category, name=name).order_by('label') if not settings: raise Http404 if request.method == 'POST': form = build_settings_form(request.user, settings)(request.POST, request.FILES) if form.is_valid(): # this save method is overriden in the forms.py form.save() try: if form.cleaned_data['theme']: from django.core.management import call_command call_command('hide_settings', 'theme') call_command('update_settings', 'themes.%s' % form.cleaned_data['theme'].lstrip()) except: pass EventLog.objects.log() msg_string = 'Successfully saved %s settings' % name.replace('_',' ').title() messages.add_message(request, messages.SUCCESS, _(msg_string)) redirect_to = request.POST.get('next', '') if redirect_to: return HttpResponseRedirect(redirect_to) else: form = build_settings_form(request.user, settings)() return render_to_resp(request=request, template_name=template_name, context={'form': form })
def list(request, scope, scope_category, template_name="site_settings/list.html"): if not has_perm(request.user, 'site_settings.change_setting'): raise Http403 settings = Setting.objects.filter( scope=scope, scope_category=scope_category).order_by('label') if not settings: raise Http404 # check if module setting is for theme editor if scope_category == 'theme_editor': theme_setting = Setting.objects.get(name='theme') # no need to update input values if there is no change if theme_setting.input_value != theme_options(): theme_setting.input_value = theme_options() theme_setting.save() # update queryset to include the changes done settings = Setting.objects.filter( scope=scope, scope_category=scope_category).order_by('label') if request.method == 'POST': form = build_settings_form(request.user, settings)(request.POST, request.FILES) if form.is_valid(): # this save method is overriden in the forms.py form.save() delete_settings_cache(scope, scope_category) try: if form.cleaned_data['theme']: from django.core.management import call_command call_command('hide_settings', 'theme') call_command( 'update_settings', 'themes.%s' % form.cleaned_data['theme'].lstrip()) except: pass EventLog.objects.log() msg_string = 'Successfully saved %s settings' % scope_category.replace( '_', ' ').title() messages.add_message(request, messages.SUCCESS, _(msg_string)) redirect_to = request.POST.get('next', '') if redirect_to: return HttpResponseRedirect(redirect_to) else: form = build_settings_form(request.user, settings)() # Log the get so we see if someone views setting values EventLog.objects.log() return render_to_resp(request=request, template_name=template_name, context={ 'form': form, 'scope_category': scope_category })
def single_setting(request, scope, scope_category, name, template_name="site_settings/list.html"): if not has_perm(request.user,'site_settings.change_setting'): raise Http403 settings = Setting.objects.filter(scope=scope, scope_category=scope_category, name=name).order_by('label') if not settings: raise Http404 if request.method == 'POST': form = build_settings_form(request.user, settings)(request.POST, request.FILES) if form.is_valid(): # this save method is overriden in the forms.py form.save() try: if form.cleaned_data['theme']: from django.core.management import call_command call_command('hide_settings', 'theme') call_command('update_settings', 'themes.%s' % form.cleaned_data['theme'].lstrip()) except: pass EventLog.objects.log() msg_string = 'Successfully saved %s settings' % name.replace('_',' ').title() messages.add_message(request, messages.SUCCESS, _(msg_string)) redirect_to = request.REQUEST.get('next', '') if redirect_to: return HttpResponseRedirect(redirect_to) else: form = build_settings_form(request.user, settings)() return render_to_response(template_name, {'form': form }, context_instance=RequestContext(request))
def render(self, context): # If not a user or not an admin, don't return the form. if not isinstance(context['user'], User): return '' if not context['user'].profile.is_superuser: return '' try: setting_name = Variable(self.setting_name) setting_name = setting_name.resolve(context) except: setting_name = self.setting_name full_setting_name = ''.join(['module_theme_', setting_name]).upper() try: setting_value = Variable(full_setting_name) setting_value = setting_value.resolve(context) setting_value = setting_value.replace('.html', '') except: setting_value = None settings_list = Setting.objects.filter(scope='module', scope_category='theme', name=setting_name) settings_value_list = Setting.objects.filter( scope='template', scope_category=setting_value) context['setting_name'] = setting_name context['setting_value'] = setting_value context['settings_value_list'] = settings_value_list context['scope_category'] = 'theme' context['setting_form'] = build_settings_form(context['user'], settings_list)() context['setting_value_form'] = build_settings_form( context['user'], settings_value_list)() template_name = 'theme_includes/setting_edit_form.html' try: theme = context['THEME'] try: t = get_template("%s/templates/%s" % (theme, template_name)) except TemplateDoesNotExist: #load the true default template directly to be sure #that we are not loading the active theme's template t = get_default_template(template_name) return t.render(context) except: if settings.TEMPLATE_DEBUG: raise return ''
def list(request, scope, scope_category, template_name="site_settings/list.html"): if not has_perm(request.user, 'site_settings.change_setting'): raise Http403 settings = Setting.objects.filter(scope=scope, scope_category=scope_category).order_by('label') if not settings: raise Http404 # check if module setting is for theme editor if scope_category == 'theme_editor': theme_setting = Setting.objects.get(name='theme') # no need to update input values if there is no change if theme_setting.input_value != theme_options(): theme_setting.input_value = theme_options() theme_setting.save() # update queryset to include the changes done settings = Setting.objects.filter(scope=scope, scope_category=scope_category).order_by('label') if request.method == 'POST': form = build_settings_form(request.user, settings)(request.POST, request.FILES) if form.is_valid(): # this save method is overriden in the forms.py form.save() delete_settings_cache(scope, scope_category) try: if form.cleaned_data['theme']: from django.core.management import call_command call_command('hide_settings', 'theme') call_command('update_settings', 'themes.%s' % form.cleaned_data['theme'].lstrip()) except: pass EventLog.objects.log() msg_string = 'Successfully saved %s settings' % scope_category.replace('_',' ').title() messages.add_message(request, messages.SUCCESS, _(msg_string)) redirect_to = request.REQUEST.get('next', '') if redirect_to: return HttpResponseRedirect(redirect_to) else: form = build_settings_form(request.user, settings)() # Log the get so we see if someone views setting values EventLog.objects.log() return render_to_response(template_name, {'form': form, 'scope_category': scope_category }, context_instance=RequestContext(request))
def render(self, context): # If not a user or not an admin, don't return the form. if not isinstance(context['user'], User): return '' if not context['user'].profile.is_superuser: return '' try: setting_name = Variable(self.setting_name) setting_name = setting_name.resolve(context) except: setting_name = self.setting_name full_setting_name = ''.join(['module_theme_', setting_name]).upper() try: setting_value = Variable(full_setting_name) setting_value = setting_value.resolve(context) setting_value = setting_value.replace('.html', '') except: setting_value = None settings_list = Setting.objects.filter(scope='module', scope_category='theme', name=setting_name) settings_value_list = Setting.objects.filter(scope='template', scope_category=setting_value) context['setting_name'] = setting_name context['setting_value'] = setting_value context['settings_value_list'] = settings_value_list context['scope_category'] = 'theme' context['setting_form'] = build_settings_form(context['user'], settings_list)() context['setting_value_form'] = build_settings_form(context['user'], settings_value_list)() template_name = 'theme_includes/setting_edit_form.html' try: theme = context['THEME'] try: t = get_template("%s/templates/%s" % (theme, template_name)) except TemplateDoesNotExist: #load the true default template directly to be sure #that we are not loading the active theme's template t = get_default_template(template_name) return t.render(context) except: if settings.TEMPLATE_DEBUG: raise return ''
def render(self, context): # If not a user or not an admin, don't return the form. if not isinstance(context['user'], User): return '' if not context['user'].profile.is_superuser: return '' try: setting_name = Variable(self.setting_name) setting_name = setting_name.resolve(context) except: setting_name = self.setting_name full_setting_name = ''.join(['module_theme_', setting_name]).upper() try: setting_value = Variable(full_setting_name) setting_value = setting_value.resolve(context) setting_value = setting_value.replace('.html', '') except: setting_value = None settings_list = Setting.objects.filter(scope='module', scope_category='theme', name=setting_name) settings_value_list = Setting.objects.filter(scope='template', scope_category=setting_value) context['setting_name'] = setting_name context['setting_value'] = setting_value context['settings_value_list'] = settings_value_list context['scope_category'] = 'theme' context['setting_form'] = build_settings_form(context['user'], settings_list)() context['setting_value_form'] = build_settings_form(context['user'], settings_value_list)() template_name = 'theme_includes/setting_edit_form.html' try: theme = context['THEME'] t = context.template.engine.get_template("%s/templates/%s" % (theme, template_name)) return t.render(context=context) except: return ''