from yasi_applets.software import bp from flask import Flask, request, session, redirect, \ url_for, render_template, flash, Blueprint import gettext # we use this neat little trick to get config data from the main app from flask import current_app # Set up Gettext def set_language(LANG): """ Sets language for this applet """ translations = gettext.translation("users", './applets/users/locales', fallback=True, languages=[LANG]) translations.install() _ = translations.gettext set_language('') @bp.route('/users') def users_root(): """ Users screen for the webui. """ set_language(current_app.config['CONFIG']['settings']['language']) string_dict = build_stringlist() build_menu() menu = current_app.config['CONFIG']['settings']['menu_order'].split(" ") next_step_url = menu[menu.index("users")+1] if menu[menu.index("users")] == 1: previous_step_url = False else: previous_step_url = menu[menu.index("users")-1] root_button = ' ' ldap_button = ' ' ad_button = ' ' csv_button = ' ' bottom_menu = root_button + ldap_button + ad_button + csv_button bottom_menu = "" initial_user = current_app.config['CONFIG']['recipe']['users']['users'][0] build_summary() return render_template('users.html', string_dict=string_dict, menu=current_app.config['CONFIG']['settings']['menu'], menu_order=current_app.config['CONFIG']['settings']['menu_order'].split(), previous_step=previous_step_url, next_step=next_step_url, bottom_menu=bottom_menu, initial_user=initial_user) @bp.route('/users/user-check/', methods=['GET', 'POST', 'PUT']) def check_user(): if request.method == 'POST': username = request.form["username"] fullname = request.form["fullname"] current_app.config['CONFIG']['recipe']['users']['users'][0]['username'] = username current_app.config['CONFIG']['recipe']['users']['users'][0]['fullname'] = fullname if username in ["root", "games"]: return('
That username is not available
') else: return('That username is available
') build_summary() return("") @bp.route('/users/password-check/', methods=['GET', 'POST', 'PUT']) def check_password(): if request.method == 'POST': password = request.form["password"] password_confirm = request.form["password_confirm"] current_app.config['CONFIG']['recipe']['users']['users'][0]['password'] = password current_app.config['CONFIG']['recipe']['users']['users'][0]['password_confirm'] = password_confirm if password != password_confirm: return('Passwords do not match
') else: return('Passwords match
') build_summary() return("") def build_stringlist(): """ Return all the strings that is used in this applet. """ string_dict = {} string_dict['menu_item'] = _("Users") string_dict['initial_user_text'] = _("Let's set up an initial user.") string_dict['full_name'] = _("Full Name") string_dict['user_name'] = _("Username") string_dict['user_name_hint'] = _("One word, all lowercase") string_dict['user_name_available'] = _("This username is available") string_dict['user_name_not_available'] = _("This username is not available") string_dict['user_name_reserved'] = _("This username is reserved by the system") string_dict['user_name_characters'] = _("The username must be one word, lowercase, with no special characters") string_dict['password'] = _("Password") string_dict['password_confirm'] = _("Password (confirm)") string_dict['password_nomatch'] = _("These passwords do now match") string_dict['password_tooshort'] = _("This password is too short") return string_dict def build_menu(): """ Define menu items and paths. """ current_app.config['CONFIG']['settings']['menu']['users'] = (build_stringlist()['menu_item'], "/users", 20) print(current_app.config['CONFIG']['settings']['menu']) def build_summary(): """ Write up a summary of what this module will do. """ current_app.config['CONFIG']['Summary']['users'] = {} current_app.config['CONFIG']['Summary']['users']['heading'] = "Users and Identity" current_app.config['CONFIG']['Summary']['users']['bleh'] = current_app.config['CONFIG']['recipe']['popcon']['enable_popcon'] current_app.config['CONFIG']['Summary']['users']['settings'] = current_app.config['CONFIG']['recipe']['users']['users'] current_app.config['CONFIG']['Summary']['users']['text'] = "Add primary user with the username: " + str(current_app.config['CONFIG']['recipe']['users']['users'][0]['username']) return("ok?") build_menu()