101 lines
2.5 KiB
Python
101 lines
2.5 KiB
Python
import os
|
|
import sqlite3
|
|
from flask import Flask, send_from_directory, request, jsonify
|
|
|
|
app = Flask(__name__)
|
|
DB_PATH = os.environ.get('DB_PATH', '/app/db/pendientes.db')
|
|
|
|
|
|
def init_db():
|
|
os.makedirs(os.path.dirname(DB_PATH), exist_ok=True)
|
|
conn = sqlite3.connect(DB_PATH)
|
|
conn.execute('''
|
|
CREATE TABLE IF NOT EXISTS pendientes (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
descripcion TEXT NOT NULL,
|
|
fecha TEXT NOT NULL,
|
|
estado TEXT NOT NULL,
|
|
urgencia TEXT NOT NULL
|
|
)
|
|
''')
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
|
|
def get_db():
|
|
conn = sqlite3.connect(DB_PATH)
|
|
conn.row_factory = sqlite3.Row
|
|
return conn
|
|
|
|
|
|
@app.route('/')
|
|
def index():
|
|
return send_from_directory('/app/frontend', 'index.html')
|
|
|
|
|
|
@app.route('/<path:path>')
|
|
def static_files(path):
|
|
return send_from_directory('/app/frontend', path)
|
|
|
|
|
|
@app.route('/api/pendientes', methods=['GET'])
|
|
def listar_pendientes():
|
|
conn = get_db()
|
|
pendientes = conn.execute('SELECT * FROM pendientes ORDER BY fecha').fetchall()
|
|
conn.close()
|
|
return jsonify([dict(row) for row in pendientes])
|
|
|
|
|
|
@app.route('/api/pendientes', methods=['POST'])
|
|
def crear_pendiente():
|
|
data = request.get_json() or {}
|
|
descripcion = data.get('descripcion', '')
|
|
fecha = data.get('fecha', '')
|
|
estado = data.get('estado', 'pendiente')
|
|
urgencia = data.get('urgencia', 'media')
|
|
|
|
conn = get_db()
|
|
cursor = conn.execute(
|
|
'INSERT INTO pendientes (descripcion, fecha, estado, urgencia) VALUES (?, ?, ?, ?)',
|
|
(descripcion, fecha, estado, urgencia)
|
|
)
|
|
conn.commit()
|
|
nuevo_id = cursor.lastrowid
|
|
conn.close()
|
|
|
|
return jsonify({'id': nuevo_id}), 201
|
|
|
|
|
|
@app.route('/api/pendientes/<int:id>', methods=['PUT'])
|
|
def actualizar_pendiente(id):
|
|
data = request.get_json() or {}
|
|
descripcion = data.get('descripcion', '')
|
|
fecha = data.get('fecha', '')
|
|
estado = data.get('estado', '')
|
|
urgencia = data.get('urgencia', '')
|
|
|
|
conn = get_db()
|
|
conn.execute(
|
|
'UPDATE pendientes SET descripcion = ?, fecha = ?, estado = ?, urgencia = ? WHERE id = ?',
|
|
(descripcion, fecha, estado, urgencia, id)
|
|
)
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
return jsonify({'ok': True})
|
|
|
|
|
|
@app.route('/api/pendientes/<int:id>', methods=['DELETE'])
|
|
def eliminar_pendiente(id):
|
|
conn = get_db()
|
|
conn.execute('DELETE FROM pendientes WHERE id = ?', (id,))
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
return jsonify({'ok': True})
|
|
|
|
|
|
if __name__ == '__main__':
|
|
init_db()
|
|
app.run(host='0.0.0.0', port=5000)
|