def add_settings_categories():
categories = current_settings.categories.items()
for category, info in categories:
class SettingsAdmin(AuthenticationViewMixin, BaseView):
settings_category = category
@expose('/', methods=['Get', 'POST'])
def index(self):
form = make_settings_form(category=self.settings_category)
if form.validate_on_submit():
update_settings_from_form(form.data)
flash("Settings were successfully saved")
return redirect(request.url)
return self.render('canella/admin/settings.html', form=form)
admin.add_view(SettingsAdmin(
name=info['label'],
menu_icon_type='fa',
menu_icon_value=info['icon'],
category=gettext("Settings"),
endpoint="admin-settings-{}".format(category),
url="settings/{}".format(category)
))
python类expose()的实例源码
def conf(self):
raw = request.args.get('raw') == "true"
title = "Airflow Configuration"
subtitle = conf.AIRFLOW_CONFIG
if conf.getboolean("webserver", "expose_config"):
with open(conf.AIRFLOW_CONFIG, 'r') as f:
config = f.read()
table = [(section, key, value, source)
for section, parameters in conf.as_dict(True, True).items()
for key, (value, source) in parameters.items()]
else:
config = (
"# Your Airflow administrator chose not to expose the "
"configuration, most likely for security reasons.")
table = None
if raw:
return Response(
response=config,
status=200,
mimetype="application/text")
else:
code_html = Markup(highlight(
config,
lexers.IniLexer(), # Lexer call
HtmlFormatter(noclasses=True))
)
return self.render(
'airflow/config.html',
pre_subtitle=settings.HEADER + " v" + airflow.__version__,
code_html=code_html, title=title, subtitle=subtitle,
table=table)
def index(self):
#expose ? self.render ?????? blueprint.route ? renter_template ?????????.
return self.render('admin/custom.html')
def conf(self):
raw = request.args.get('raw') == "true"
title = "Airflow Configuration"
subtitle = conf.AIRFLOW_CONFIG
if conf.getboolean("webserver", "expose_config"):
with open(conf.AIRFLOW_CONFIG, 'r') as f:
config = f.read()
else:
config = (
"# You Airflow administrator chose not to expose the "
"configuration, most likely for security reasons.")
if raw:
return Response(
response=config,
status=200,
mimetype="application/text")
else:
code_html = Markup(highlight(
config,
lexers.IniLexer(), # Lexer call
HtmlFormatter(noclasses=True))
)
return self.render(
'airflow/code.html',
pre_subtitle=settings.HEADER + " v" + airflow.__version__,
code_html=code_html, title=title, subtitle=subtitle)