def get_project(project_name, tab):
    project = Project.load_project(project_name)
    if project is None:
        return abort(404)
    if tab == "settings":
        return render_template("project_settings.jinja", project=project)
    elif tab == "replays":
        return render_template("project_replays.jinja", project=project)
def delete_project(project_name):
    log = logging.getLogger("WICA")
    log.debug("deleting project {}".format(project_name))
    project = Project.load_project(project_name)
    if project is None:
        return abort(404)
    project.delete()
    return url_for("get_projects")
def get_project_replay_data(project_name, replay_name):
    log = logging.getLogger("PROJECT")
    log.debug("project_name = {} replay_name = {}".format(project_name, replay_name))

    project = Project.load_project(project_name)
    if project is None:
        return abort(404)
    json_data = convert_to_json(project.replay(replay_name))
    return json_data
def record_replay(project_name):
    project = Project.load_project(project_name)
    if project is None:
        return abort(404)

    if "replay" in request.form:
        project.record_replay()
        return "recording replay"

    return "wrong input data"
def evolve_weights(project_name):
    project = Project.load_project(project_name)
    if project is None:
        return abort(404)

    if "evolve" in request.form:
        thread_handle = project.evolve_weights()
        add_thread(thread_handle)
        return "evolve thread started"

    return "wrong input data"
def update_project_config(project_name):
    log = logging.getLogger("WICA")
    log.debug("trying update project {}".format(project_name))
    project = Project.load_project(project_name)
    if project is None:
        return abort(404)

    for option in request.form.keys():
        log.debug("form[{}] = {}".format(option, request.form[option]))
    project.update_config(request.form)
    project.save()
    return url_for("get_project", project_name=project_name, tab="settings")
def remove_project_field(project_name):
    log = logging.getLogger("WICA")
    log.debug("trying remove {} configuration field".format(project_name))
    project = Project.load_project(project_name)
    if project is None:
        return abort(404)

    if "option" not in request.form.keys():
        log.debug("removing section {}".format(request.form["section"]))
        project.remove_section(request.form["section"])
    else:
        log.debug("removing option {}.{}".format(request.form["section"], request.form["option"]))
        project.remove_option(request.form["section"], request.form["option"])
    project.save()
    return "successfully removed"