# -*- coding: utf-8 -*-
from flask import Flask, render_template, request, flash, redirect, url_for
from werkzeug.utils import secure_filename
import os, secrets
from models import db, PrintedDetal
import logging

logging.basicConfig(filename='app.log', encoding='utf-8', level=logging.DEBUG)


UPLOAD_IMG_FOLDER = os.path.join('static', 'img', 'uploads')
UPLOAD_STL_FOLDER = os.path.join('static', 'stl')
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'stl'}

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.config['UPLOAD_FOLDER'] = UPLOAD_IMG_FOLDER
app.config['UPLOAD_FOLDER2'] = UPLOAD_STL_FOLDER

db.init_app(app)


@app.route("/")
def index():

    allDetals = {}

    detalsQuery = PrintedDetal.query.all()

    

    for detal in detalsQuery:
        detals = {}
        detals['img'] = detal.img
        detals['stl']  = detal.stl
        detals['src']= detal.src
        detals['isprinted'] = detal.isprinted
    
        allDetals[detal.id] = detals

    
    print(allDetals)
    

    return render_template("index.html")  # , detals=detals)


@app.route("/admin",  methods=['GET', 'POST'])
def admipage():
    logging.debug("adminpage loaded")
    
    return render_template("adminpage.html")


@app.route('/uploader', methods=['GET', 'POST'])
def upload_file():
    hex = secrets.token_hex(15)


    if request.method == 'POST':
        image_file = request.files['imgfile']
        stl_file = request.files['stlfile']
        src_file = request.files['stlfile']

        if len(image_file.filename) > 0:
            image_file.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(image_file.filename)))
        
        if len(stl_file.filename) >0:
            stl_file.save(os.path.join(app.config['UPLOAD_FOLDER2'], secure_filename(stl_file.filename)))
            
        if len(src_file.filename) >0:
            src_file.save(os.path.join(app.config['UPLOAD_FOLDER2'], secure_filename(src_file.filename)))


        
        if request.form.get('isprinted') == 'on':
            isprinered = True
        else:
            isprinered = False


        logging.debug(image_file)
        logging.debug(stl_file)
        logging.debug(isprinered)

        detal = PrintedDetal(img=image_file.filename,
                            stl=stl_file.filename,
                            src=src_file.filename,
                            isprinted=isprinered)
        db.session.add(detal)
        db.session.commit()


        return redirect(url_for('admipage'))
        


if __name__ == "__main__":
    app.run(host="0.0.0.0", debug="True", port="3800")

