from concurrent.futures import process
from flask import render_template, Blueprint, request, redirect, url_for, jsonify
import requests
from wtforms.compat import iteritems
from backstage.collections.forms import CollectionCreateForm
from backstage.utils import get_now_time
from backstage.utils.routes import create_collection_content, remove_content, get_trans_title_url_name
from backstage.config import PORTAL_SERVER
import os
import uuid

collections_app = Blueprint('collections', __name__)

def processImgFile(filename):
    return os.path.splitext(filename)[0].replace(".","") + os.path.splitext(filename)[1]


@collections_app.route('/backstage/collections')
def collection_list():
    response = requests.get('{}contents?url=/collection'.format(PORTAL_SERVER))
    if response.status_code == 200:
        #sortedData = sorted(response.json(), key='date', reverse=True)        
        #print(response.json())
        #aa = json.loads(response.text)
        #sortedData = sorted(response.json(), key=lambda x:x['date'], reverse=True)
        """ i=1
        for d in sortedData:
            if i == 1:
                print(d)
                for key, value in d.items():
                    print(key+' '+value)
            i+=1 """

        #print(response.text)
        return render_template('collections.html',
                               title='家具規劃作品',
                               legend='家具規劃作品列表',
                               collections=response.json(),
                               length=len(response.json()),
                               form=CollectionCreateForm())

@collections_app.route('/backstage/collection/create', methods=['POST'])
def create():
    form = CollectionCreateForm()
    csliderimg = []
    csliderimgfilename = []
    ownerimgfile = ""
    commentimgfile = ""
    form.image.data.filename = processImgFile(form.image.data.filename)
    # for file in form.collectionslider.data:
    #     file.filename = processImgFile(file.filename)
    #     csliderimg.append(file)
    #     csliderimgfilename.append(file.filename)

    eng_name = get_trans_title_url_name(form.title.data)

    form.image.data.filename = str(uuid.uuid4()).replace('-','') + ".webp"
    form.coverimg.data.filename = str(uuid.uuid4()).replace('-','') + ".webp"
    print(form.ownerimg.data)
    if form.ownerimg.data:
        form.ownerimg.data.filename = str(uuid.uuid4()).replace('-','') + ".webp"
        ownerimgfile = "img/" + form.ownerimg.data.filename
    if form.comment.data:
        form.comment.data.filename = str(uuid.uuid4()).replace('-','') + ".webp"
        commentimgfile = "img/" + form.comment.data.filename

    front_matter = '''---
meta_title: "{}"\nmeta_description: "{}"\ntitle: "{}"\ndate: {}\n\
draft: {}\n\
type: "{}"\n\
url: "{}"\n\
image: "/img/title/{}"\n\
collection_name: "{}"\n\
cover_img: "/img/title/{}"\n\
description: "{}"\n\
tags: ["{}"]\n\
banner_img_text: "{}"\n\
homeowner: "{}"\n\
owner_img: "{}"\n\
size: "{}"\n\
house_size: "{}"\n\
bed_num: "{}"\n\
room_count: "{}"\n\
house_cat: "{}"\n\
designer: "{}"\n\
space: "{}"\n\
loc: "{}"\n\
budget_range: "{}"\n\
budget: "{}"\n\
construction: "{}"\n\
collection_description: "{}"\n\
collection_slider: [] \n\
comment: "{}"\n\
---'''.format(form.title.data, form.description.data.replace('\r\n','<br>'), form.title.data,
              get_now_time(), 'true', 'collection', '/collection/{}'.format(eng_name),
              form.image.data.filename, form.collectiontitle.data, form.coverimg.data.filename, form.description.data.replace('\r\n','<br>'), form.tags.data,
              form.bannerimgtext.data, form.homeowner.data, ownerimgfile, form.size.data, form.housesize.data, form.bednum.data,
              form.roomcount.data, form.housetype.data, form.designer.data, form.space.data, form.loc.data, form.budgetr.data,
              form.budget.data, form.construction.data, form.collectiondesc.data.replace('\r\n','<br>'), commentimgfile)
    print(front_matter)
    data = {'frontMatter': front_matter,
            'name': eng_name,
            'type': 'collection',
            'dest': '/collection/{}'.format(eng_name)}

    
    return create_collection_content(data, form.image.data, form.coverimg.data, csliderimg, form.comment.data, form.ownerimg.data)


@collections_app.route('/backstage/collection/remove', methods=['POST'])
def remove():
    remove_content()
    return redirect(url_for('collections.collection_list'))
