from __future__ import absolute_import, division, print_function

import flask

from wqflask import app

from flask import render_template, request

from wqflask import search_results
from wqflask.show_trait import show_trait_page

from wqflask.dataSharing import SharingInfo, SharingInfoPage

from base import webqtlFormData

from pprint import pformat as pf

import yaml

print("latest blue")

@app.route("/")
def index_page():
    print("Sending index_page")
    return render_template("index_page.html")


@app.route("/data_sharing")
def data_sharing():
    print("In data_sharing")
    fd = webqtlFormData.webqtlFormData(request.args)
    print("1Have fd")
    sharingInfoObject = SharingInfo.SharingInfo(request.args['GN_AccessionId'], None)
    info, htmlfilelist = sharingInfoObject.getBody(infoupdate="")
    print("type(htmlfilelist):", type(htmlfilelist))
    htmlfilelist = htmlfilelist.encode("utf-8")
    #template_vars = SharingInfo.SharingInfo(request.args['GN_AccessionId'], None)
    print("1 Made it to rendering")
    return render_template("data_sharing.html",
                            info=info,
                            htmlfilelist=htmlfilelist)

@app.route("/search")
def search():
    if 'info_database' in request.args:
        print("Going to sharing_info_page")
        template_vars = sharing_info_page()
        if template_vars.redirect_url:
            print("Going to redirect")
            return flask.redirect(template_vars.redirect_url)
        else:
            return render_template("data_sharing.html", **template_vars.__dict__)
    else:
        the_search = search_results.SearchResultPage(request.args)
        return render_template("search_result_page.html", **the_search.__dict__)


@app.route("/whats_new")
def whats_new():
    #variables = whats_new.whats_new()
    with open("/home/sam/gene/wqflask/wqflask/yaml_data/whats_new.yaml") as fh:
        contents = fh.read()
        yamilized = yaml.safe_load(contents)
        news_items = yamilized['news']
    for news_item in news_items:
        print("\nnews_item is: %s\n" % (news_item))
    return render_template("whats_new.html", news_items=news_items)

@app.route("/showDatabaseBXD")
def showDatabaseBXD():
    # Here it's currently too complicated not to use an fd that is a webqtlFormData
    fd = webqtlFormData.webqtlFormData(request.args)
    template_vars = show_trait_page.ShowTraitPage(fd)
    print("showDatabaseBXD template_vars:", pf(template_vars.__dict__))
    return render_template("trait_data_and_analysis.html", **template_vars.__dict__)



# Todo: Can we simplify this? -Sam
def sharing_info_page():
    print("In sharing_info_page")
    fd = webqtlFormData.webqtlFormData(request.args)
    print("2Have fd")
    template_vars = SharingInfoPage.SharingInfoPage(fd)
    print("2 Made it to rendering")
    return template_vars