from flask import Blueprint, render_template, request, redirect, url_for, current_app, send_from_directory
|
|
from werkzeug.utils import secure_filename
|
|
from flask_login import login_user, logout_user, login_required
|
|
from sqlalchemy import desc
|
|
import datetime
|
|
import os
|
|
|
|
from .models import db, Repostajes, Vehiculos
|
|
|
|
bp = Blueprint("paginas", __name__)
|
|
|
|
@bp.route('/')
|
|
def index():
|
|
vehiculos = Vehiculos.query.all()
|
|
repostajes = Repostajes.query.all()
|
|
|
|
|
|
return render_template('index.html', vehiculos=vehiculos, repostajes=repostajes)
|
|
|
|
@bp.route('/repostajes')
|
|
def repostajes():
|
|
repostajes = Repostajes.query.all()
|
|
return render_template('repostajes.html', repostajes=repostajes)
|
|
|
|
@bp.route('/vehiculos')
|
|
def vehiculos():
|
|
vehiculos = Vehiculos.query.all()
|
|
#return render_template('vehiculos.html', vehiculos=vehiculos)
|
|
return render_template('vehiculoscard.html', vehiculos=vehiculos)
|
|
|
|
@bp.route('/404')
|
|
def cuatrocerocuatro():
|
|
return render_template('404.html')
|
|
|
|
@bp.route('/help')
|
|
def help():
|
|
return render_template('help.html')
|
|
|
|
@bp.route('/account')
|
|
@login_required
|
|
def account():
|
|
return render_template('account.html')
|
|
|
|
"""
|
|
@bp.route('/repostaje/<int:repostaje_id>')
|
|
def repostaje(repostaje_id):
|
|
repostaje = Repostajes.query.get_or_404(repostaje_id)
|
|
vehiculo = Vehiculos.query.get_or_404(repostaje.vehiculo_id)
|
|
|
|
return render_template('repostaje.html', repostaje=repostaje, vehiculo=vehiculo)
|
|
"""
|
|
|
|
@bp.route('/add_repostaje', methods=['GET', 'POST'])
|
|
@login_required
|
|
def add_repostaje():
|
|
if request.method == 'POST':
|
|
fecha = datetime.date.fromisoformat(request.form['fecha'])
|
|
vehiculo_id = request.form['vehiculo_id']
|
|
kms = request.form['kms']
|
|
litros = request.form['litros']
|
|
importe = request.form['importe']
|
|
dtoing = request.form.get('dtoing')
|
|
|
|
if dtoing:
|
|
descuento = int(importe) * 0.03 # Aplico el descuento de ING
|
|
else :
|
|
descuento = 0 # no se marcó la casilla de descuento ING
|
|
|
|
totalcondto = float(importe) - descuento
|
|
precioxlitro = totalcondto / float(litros)
|
|
|
|
# lee todos los repostajes del vehículo
|
|
#repostajes = Repostajes.query.filter_by(vehiculo_id=vehiculo_id).all()
|
|
repostajes = Repostajes.query.filter_by(vehiculo_id=vehiculo_id).order_by(Repostajes.fecha.desc()).first()
|
|
|
|
#for i in repostajes:
|
|
# print("add_repostaje: ", i.fecha, i.kms)
|
|
kmsrecorridos = int(kms)-int(repostajes.kms)
|
|
|
|
if kmsrecorridos > 0:
|
|
consumo = float(litros)*100/kmsrecorridos
|
|
|
|
print("add_repostaje kms recorridos: ", kmsrecorridos, " consumo: ", consumo)
|
|
|
|
|
|
new_repostaje = Repostajes(fecha=fecha, vehiculo_id=vehiculo_id, kms=kms, litros=litros, importe=totalcondto, descuento=descuento, precioxlitro=precioxlitro, kmsrecorridos=kmsrecorridos, consumo=consumo)
|
|
db.session.add(new_repostaje)
|
|
db.session.commit()
|
|
|
|
return redirect(url_for('paginas.vehiculo', vehiculo_id=vehiculo_id))
|
|
|
|
vehiculos = Vehiculos.query.all()
|
|
|
|
|
|
return render_template('add_repostaje.html', vehiculos=vehiculos)
|
|
|
|
@bp.route('/edit_repostaje/<int:repostaje_id>', methods=['GET', 'POST'])
|
|
@login_required
|
|
def edit_repostaje(repostaje_id):
|
|
repostaje = Repostajes.query.get_or_404(repostaje_id)
|
|
vehiculos = Vehiculos.query.all()
|
|
if request.method == 'POST':
|
|
repostaje.fecha = request.form['fecha']
|
|
repostaje.vehiculo_id = request.form['vehiculo_id']
|
|
|
|
repostaje.kms = request.form['kms']
|
|
repostaje.litros = request.form['litros']
|
|
repostaje.importe = request.form['importe']
|
|
|
|
db.session.commit()
|
|
return redirect(url_for('paginas.repostaje', repostaje_id=repostaje.id))
|
|
|
|
vehiculos = Vehiculos.query.all()
|
|
|
|
return render_template('edit_repostaje.html', repostaje=repostaje, vehiculos=vehiculos)
|
|
|
|
@bp.route('/add_vehiculo', methods=['GET', 'POST'])
|
|
@login_required
|
|
def add_vehiculo():
|
|
if request.method == 'POST':
|
|
|
|
marca = request.form['marca']
|
|
modelo = request.form['modelo']
|
|
matricula = request.form['matricula']
|
|
|
|
# Verificar que el campo 'cover_image' está en request.files
|
|
if 'foto' not in request.files:
|
|
return "No file part in the request", 400
|
|
|
|
foto = request.files['foto']
|
|
|
|
# Verificar que se ha seleccionado un archivo
|
|
|
|
if foto.filename == '':
|
|
return "No selected file", 400
|
|
|
|
if foto:
|
|
image_filename = secure_filename(foto.filename)
|
|
foto.save(os.path.join(current_app.config['UPLOAD_FOLDER'], image_filename))
|
|
else:
|
|
image_filename = None
|
|
|
|
new_vehiculo = Vehiculos(marca=marca, modelo=modelo, matricula=matricula, foto=image_filename)
|
|
db.session.add(new_vehiculo)
|
|
db.session.commit()
|
|
|
|
return redirect(url_for('paginas.index'))
|
|
|
|
return render_template('add_vehiculo.html')
|
|
|
|
@bp.route('/edit_vehiculo/<int:vehiculo_id>', methods=['GET', 'POST'])
|
|
@login_required
|
|
def edit_vehiculo(vehiculo_id):
|
|
vehiculo = Vehiculos.query.get_or_404(vehiculo_id)
|
|
if request.method == 'POST':
|
|
vehiculo.marca = request.form['marca']
|
|
vehiculo.modelo = request.form['modelo']
|
|
vehiculo.matricula = request.form['matricula']
|
|
|
|
if 'foto' in request.files:
|
|
foto = request.files['foto']
|
|
if foto.filename != '':
|
|
image_filename = secure_filename(foto.filename)
|
|
foto.save(os.path.join(current_app.config['UPLOAD_FOLDER'], image_filename))
|
|
vehiculo.foto = image_filename
|
|
|
|
db.session.commit()
|
|
return redirect(url_for('paginas.vehiculo', vehiculo_id=vehiculo.id))
|
|
|
|
return render_template('edit_vehiculo.html', vehiculo=vehiculo)
|
|
|
|
@bp.route('/vehiculo/<int:vehiculo_id>')
|
|
def vehiculo(vehiculo_id):
|
|
vehiculo = Vehiculos.query.get_or_404(vehiculo_id)
|
|
repostajes = Repostajes.query.filter_by(vehiculo_id=vehiculo_id).all()
|
|
return render_template('vehiculo.html', vehiculo=vehiculo, repostajes=repostajes)
|
|
|
|
@bp.route('/uploads/<filename>')
|
|
def uploaded_file(filename):
|
|
return send_from_directory(current_app.config['UPLOAD_FOLDER'], filename)
|
|
|
|
@bp.route('/searchvehiculo')
|
|
def searchvehiculo():
|
|
query = request.args.get('query', '')
|
|
if query:
|
|
vehiculos = Vehiculos.query.filter(vehiculo.name.contains(query)).all()
|
|
else:
|
|
vehiculos = []
|
|
return render_template('searchvehiculo.html', query=query, vehiculos=vehiculos)
|