diff --git a/.DS_Store b/.DS_Store index 0f066ad..fb98025 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/adminer/.DS_Store b/adminer/.DS_Store new file mode 100644 index 0000000..fac9b91 Binary files /dev/null and b/adminer/.DS_Store differ diff --git a/app.py b/app.py index 1a948c5..1218f77 100755 --- a/app.py +++ b/app.py @@ -16,7 +16,8 @@ app.secret_key = 'clave-secreta-navbar-app' # Límite máximo de subida: 5 MiB # app.config['MAX_CONTENT_LENGTH'] = 5 * 1024 * 1024 -DATABASE = 'database/pyfleet.db' +# DATABASE = 'database/pyfleet.db' +DATABASE = 'database/auto.db' PASSWORD_HASH = generate_password_hash('123') @@ -236,7 +237,7 @@ def vehiculos_list(): NORM(modelo) LIKE ? OR NORM(poblacion) LIKE ? OR NORM(unidad) LIKE ? OR - NORM(denominacion) LIKE ? OR + NORM(tipo) LIKE ? OR NORM(situacion) LIKE ? )''') params.extend([like] * 9) @@ -245,7 +246,7 @@ def vehiculos_list(): rows = db.execute( f'''SELECT id, m_oficial, m_reservada, marca, modelo, poblacion, unidad, - denominacion, tipo, situacion, lanzadestellos + tipo, situacion, lanzadestellos FROM vehiculos WHERE {where} {filtro_bajas} ORDER BY id''', @@ -329,7 +330,7 @@ def vehiculos_editar(id): desde = request.args.get('desde', '') hasta = request.args.get('hasta', '') q_itv = request.args.get('q_itv', '') - origen = request.args.get('origen', '') + origen = request.args.get('origen', '') q_viat = request.args.get('q_viat', '') if not vehiculo: @@ -409,12 +410,20 @@ def vehiculos_eliminar(id): return redirect(url_for('vehiculos_list', q=q) if q else url_for('vehiculos_list')) - @app.route('/vehiculos//historial/nuevo', methods=['POST']) @login_required def historial_nuevo(vid): - q = request.form.get('_q', '') db = get_db() + + # Recoger TODOS los parámetros de navegación del POST + q = request.form.get('_q', '') + desde = request.form.get('_desde', '') + hasta = request.form.get('_hasta', '') + q_itv = request.form.get('_q_itv', '') + origen = request.form.get('_origen', '') + q_viat = request.form.get('_q_viat', '') # ← POST no GET + + # Datos del historial h_fecha = request.form.get('h_fecha') or None h_vehiculo_id = request.form.get('h_vehiculo_id', '').strip() h_matricula = request.form.get('h_matricula', '').strip() @@ -424,11 +433,7 @@ def historial_nuevo(vid): h_grupo = request.form.get('h_grupo', '').strip() h_observaciones = request.form.get('h_observaciones', '').strip() - desde = request.form.get('_desde', '') - hasta = request.form.get('_hasta', '') - q_itv = request.form.get('_q_itv', '') - - # Obtener el NOMBRE de la población a partir del id + # Obtener nombre de población poblacion_nombre = '' if h_poblacion_id: row = db.execute('SELECT poblacion FROM poblaciones WHERE id=?', (h_poblacion_id,)).fetchone() @@ -440,32 +445,47 @@ def historial_nuevo(vid): VALUES (?, ?, ?, ?, ?, ?, ?, ?) ''', (h_fecha, h_vehiculo_id, h_matricula, h_situacion, poblacion_nombre, h_unidad, h_grupo, h_observaciones)) - # Si la unidad es BAJA, actualizar situacion del vehiculo + # Actualizar situacion del vehiculo if h_situacion.upper() == 'BAJA': - db.execute("UPDATE vehiculos SET situacion='BAJA' WHERE id=?", (vid,)) + db.execute("UPDATE vehiculos SET situacion='BAJA', poblacion='', unidad='' WHERE id=?", (vid,)) else: - db.execute("UPDATE vehiculos SET situacion=?, poblacion=?, unidad=?, grupo=? WHERE id=?", (h_situacion, poblacion_nombre, h_unidad, h_grupo, vid,)) + db.execute( + "UPDATE vehiculos SET situacion=?, poblacion=?, unidad=?, grupo=? WHERE id=?", + (h_situacion, poblacion_nombre, h_unidad, h_grupo, vid) + ) db.commit() flash('Entrada añadida al historial.', 'ok') - # Volver a ITV si venía de ahí, si no al formulario del vehículo + # Redirect según origen + if origen == 'viat': + return redirect(f'/vehiculos/{vid}/editar?origen=viat&q_viat={q_viat}') if desde or hasta or q_itv: - return redirect(f'/vehiculos/{vid}/editar?desde={desde}&hasta={hasta}&q_itv={q_itv}') - # return redirect(f'/vehiculos/{vid}/editar?q={q}') + return redirect(f'/vehiculos/{vid}/editar?desde={desde}&hasta={hasta}&q_itv={q_itv}') return redirect(url_for('vehiculos_editar', id=vid, q=q)) + + + @app.route('/vehiculos//historial//eliminar', methods=['POST']) @login_required def historial_eliminar(vid, hid): q = request.form.get('_q', '') desde = request.form.get('_desde', '') hasta = request.form.get('_hasta', '') - unidad_itv = request.form.get('_unidad_itv', '') db = get_db() + # Recoger parámetros de navegación + q = request.form.get('_q', '') + desde = request.form.get('_desde', '') + hasta = request.form.get('_hasta', '') + q_itv = request.form.get('_q_itv', '') + origen = request.form.get('_origen', '') + q_viat = request.form.get('_q_viat', '') # ← POST no GET + + # 1. Comprobar que el vehículo existe vehiculo = db.execute(''' SELECT id, m_oficial @@ -541,16 +561,16 @@ def historial_eliminar(vid, hid): WHERE id = ? ''', (vid,)) - # 7. Confirmar cambios db.commit() flash('Entrada eliminada del historial.', 'ok') - # Volver a ITV si venía de ahí - if desde or hasta or unidad_itv: - return redirect(f'/vehiculos/{vid}/editar?desde={desde}&hasta={hasta}&unidad_itv={unidad_itv}') - # return redirect(f'/vehiculos/{vid}/editar?q={q}') - + # Redirect según origen + if origen == 'viat': + return redirect(f'/vehiculos/{vid}/editar?origen=viat&q_viat={q_viat}') + if desde or hasta or q_itv: + return redirect(f'/vehiculos/{vid}/editar?desde={desde}&hasta={hasta}&q_itv={q_itv}') + url = f'/vehiculos/{vid}/editar' if q: url += f'?q={q}' @@ -625,7 +645,7 @@ def vehiculos_exportar(): ws = wb.active ws.title = 'Vehículos' - headers = ['M. Oficial', 'M. Civil', 'Marca', 'Modelo', + headers = ['M. Oficial', 'M. Reservada', 'Marca', 'Modelo', 'Poblacion', 'Unidad', 'Grupo', 'Denominación', 'Situación' ] header_fill = PatternFill('solid', fgColor='5C6EF8') header_font = Font(bold=True, color='FFFFFF', size=11) @@ -684,7 +704,8 @@ def documentos_upload(id): q_itv = request.form.get('_q_itv', '') origen = request.form.get('_origen', '') q_viat = request.form.get('_q_viat', '') - nombre = request.form.get('nombre_doc', '').strip() + nombre = request.form.get('nombre_doc', '').strip() + '.pdf' + if 'pdf' not in request.files: flash('No se seleccionó ningún archivo.', 'error') @@ -757,7 +778,7 @@ def documentos_descargar(doc_id): return send_from_directory(UPLOAD_FOLDER, doc['filename'], as_attachment=True, download_name=doc['nombre']) - # download_name=doc['nombre'] + '.pdf') + # download_name=doc['nombre'] + '.pdf' @app.route('/vehiculos/documentos//eliminar', methods=['POST']) @login_required @@ -781,85 +802,6 @@ def documentos_eliminar(doc_id): - - - - - - - -# @app.route('/vehiculos//upload', methods=['POST']) -# @login_required -# def vehiculos_upload(id): -# q = request.form.get('_q', '') -# incl_bajas = request.form.get('_incl_bajas', '0') -# desde = request.form.get('_desde', '') -# hasta = request.form.get('_hasta', '') -# q_itv = request.form.get('_q_itv', '') -# origen = request.form.get('_origen', '') -# q_viat = request.form.get('_q_viat', '') - -# if 'pdf' not in request.files: -# flash('No se seleccionó ningún archivo.', 'error') -# return redirect(f'/vehiculos/{id}/editar?q={q}&incl_bajas={incl_bajas}') - -# file = request.files['pdf'] -# if file.filename == '': -# flash('No se seleccionó ningún archivo.', 'error') -# return redirect(f'/vehiculos/{id}/editar?q={q}&incl_bajas={incl_bajas}') - -# if file and allowed_file(file.filename): -# # Guardar con nombre único basado en id del vehículo -# os.makedirs(UPLOAD_FOLDER, exist_ok=True) -# filename = f'ficha_tecnica_id_{id}.pdf' -# filepath = os.path.join(UPLOAD_FOLDER, filename) -# file.save(filepath) - -# # Guardar referencia en BD -# db = get_db() -# db.execute('UPDATE vehiculos SET pdf=? WHERE id=?', (filename, id)) -# db.commit() -# flash('Documento PDF subido correctamente.', 'ok') -# else: -# flash('Solo se permiten archivos PDF.', 'error') - -# url = f'/vehiculos/{id}/editar?q={q}&incl_bajas={incl_bajas}' -# if origen == 'viat': -# url = f'/vehiculos/{id}/editar?origen=viat&q_viat={q_viat}' -# elif desde or hasta or q_itv: -# url = f'/vehiculos/{id}/editar?desde={desde}&hasta={hasta}&q_itv={q_itv}' -# return redirect(url) - - -# @app.route('/vehiculos//pdf') -# @login_required -# def vehiculos_pdf(id): -# from flask import send_from_directory -# db = get_db() -# vehiculo = db.execute('SELECT pdf FROM vehiculos WHERE id=?', (id,)).fetchone() -# if not vehiculo or not vehiculo['pdf']: -# flash('No hay documento PDF para este vehículo.', 'error') -# return redirect(f'/vehiculos/{id}/editar') -# return send_from_directory(UPLOAD_FOLDER, vehiculo['pdf'], as_attachment=False) - - -# @app.route('/vehiculos//pdf/eliminar', methods=['POST']) -# @login_required -# def vehiculos_pdf_eliminar(id): -# q = request.form.get('_q', '') -# incl_bajas = request.form.get('_incl_bajas', '0') -# db = get_db() -# vehiculo = db.execute('SELECT pdf FROM vehiculos WHERE id=?', (id,)).fetchone() -# if vehiculo and vehiculo['pdf']: -# filepath = os.path.join(UPLOAD_FOLDER, vehiculo['pdf']) -# if os.path.exists(filepath): -# os.remove(filepath) -# db.execute('UPDATE vehiculos SET pdf=NULL WHERE id=?', (id,)) -# db.commit() -# flash('Documento PDF eliminado.', 'ok') -# return redirect(f'/vehiculos/{id}/editar?q={q}&incl_bajas={incl_bajas}') - - # Ruta API que devuelve unidades según población @app.route('/api/unidades/') @login_required @@ -978,7 +920,7 @@ def itv_exportar(): ws = wb.active ws.title = 'ITV' - headers = ['M. Oficial', 'M. Civil', 'Marca', 'Modelo', + headers = ['M. Oficial', 'M. Reservada', 'Marca', 'Modelo', 'Denominación', 'Tipo', 'Unidad', 'Población', 'Fecha ITV'] header_fill = PatternFill('solid', fgColor='5C6EF8') header_font = Font(bold=True, color='FFFFFF', size=11) @@ -1432,7 +1374,7 @@ def viat_exportar(): ws = wb.active ws.title = 'Via-T' - headers = ['Via-T', 'M. Oficial', 'M. Civil', 'Marca', + headers = ['Via-T', 'M. Oficial', 'M. Reservada', 'Marca', 'Modelo', 'Población', 'Unidad', 'Tipo'] header_fill = PatternFill('solid', fgColor='5C6EF8') header_font = Font(bold=True, color='FFFFFF', size=11) @@ -1635,4 +1577,4 @@ if __name__ == '__main__': # f'SELECT id, m_oficial, m_reservada, marca, modelo, poblacion, unidad, grupo, tipo, situacion FROM vehiculos WHERE {where} {filtro_bajas} ORDER BY id', # params # ).fetchall() - + \ No newline at end of file diff --git a/database/auto_test_update_datos.db b/database/auto_test_update_datos.db new file mode 100755 index 0000000..6c3d981 Binary files /dev/null and b/database/auto_test_update_datos.db differ diff --git a/database/pyfleet.db b/database/pyfleet.db index 05ac894..cd82ded 100755 Binary files a/database/pyfleet.db and b/database/pyfleet.db differ diff --git a/info.txt b/info.txt index 3163bf2..9bb8bc6 100755 --- a/info.txt +++ b/info.txt @@ -238,8 +238,14 @@ CREATE TABLE "unidades" ( ) - - +Actualización vial +UPDATE vehiculos +SET viat = substr( + notas, + instr(lower(notas), 'viat '), + 24 +) +WHERE instr(lower(notas), 'viat ') > 0; ---------------------------------------- CONSULTAR TIPOS DE VEHICULO diff --git a/sentencias_sqlite_pyfleet.txt b/sentencias_sqlite_pyfleet.txt new file mode 100755 index 0000000..8d8262f --- /dev/null +++ b/sentencias_sqlite_pyfleet.txt @@ -0,0 +1,247 @@ +DROP TABLE IF EXISTS ACCIDENTES; +DROP TABLE IF EXISTS "CAMBIOS DE ACEITE"; +DROP TABLE IF EXISTS CONTRATO; +DROP TABLE IF EXISTS "DEFINICIÓN DE TIPOS"; +DROP TABLE IF EXISTS Denominación; +DROP TABLE IF EXISTS "Errores de pegado"; +DROP TABLE IF EXISTS "Estado Seguro"; +DROP TABLE IF EXISTS FACTURAS; +DROP TABLE IF EXISTS FUNCIONARIOS; +DROP TABLE IF EXISTS "Grupo Asignado"; +DROP TABLE IF EXISTS HERRAMIENTAS; +DROP TABLE IF EXISTS "Historico destino"; +DROP TABLE IF EXISTS Hoja1; +DROP TABLE IF EXISTS ITV; +DROP TABLE IF EXISTS Incidencias; +DROP TABLE IF EXISTS KILOMETROS; +DROP TABLE IF EXISTS LIQUIDACION; +DROP TABLE IF EXISTS MAQUINARIA; +DROP TABLE IF EXISTS Marcas; +DROP TABLE IF EXISTS Matriculas; +DROP TABLE IF EXISTS Modelo; +DROP TABLE IF EXISTS Multas; +DROP TABLE IF EXISTS Neumaticos; +DROP TABLE IF EXISTS Piezas; +DROP TABLE IF EXISTS POBLACIONES; +DROP TABLE IF EXISTS PROVEEDORES; +DROP TABLE IF EXISTS Peticiones; +DROP TABLE IF EXISTS Plantilla; +DROP TABLE IF EXISTS RECIBO; +DROP TABLE IF EXISTS REPARACIONES; +DROP TABLE IF EXISTS REPUESTOS; +DROP TABLE IF EXISTS "Situación Vehículo"; +DROP TABLE IF EXISTS "T_RESUMEN VEHICULOS COMISARIA PROVINCIAL"; +DROP TABLE IF EXISTS "T_RESUMEN VEHICULOS COMISARIAS LOCALES"; +DROP TABLE IF EXISTS Tipo; +DROP TABLE IF EXISTS Unidades; +DROP TABLE IF EXISTS VACACIONES; +DROP TABLE IF EXISTS "VEHICULOS 10-01-10"; +DROP TABLE IF EXISTS "VEHICULOS 28-04-10"; +DROP TABLE IF EXISTS VEHICULOS_PTE; + +ALTER TABLE VEHICULOS RENAME TO "vehiculos_tmp"; +ALTER TABLE "vehiculos_tmp" RENAME TO vehiculos; + +ALTER TABLE vehiculos DROP COLUMN "Número de Identificación"; +ALTER TABLE vehiculos DROP COLUMN "Nº Cilindros/Cilindrada"; +ALTER TABLE vehiculos DROP COLUMN Potencia; +ALTER TABLE vehiculos DROP COLUMN "Medidas neumaticos"; +ALTER TABLE vehiculos DROP COLUMN "Fecha Destino/Situación"; +ALTER TABLE vehiculos DROP COLUMN Seguro; +ALTER TABLE vehiculos DROP COLUMN Denominación; +ALTER TABLE vehiculos DROP COLUMN Grupo; +ALTER TABLE vehiculos DROP COLUMN Foto_asignada; + +ALTER TABLE vehiculos RENAME COLUMN "Matrícula Oficial (DGP)" TO m_oficial; +ALTER TABLE vehiculos RENAME COLUMN "Nº ficha" TO legajo; +ALTER TABLE vehiculos RENAME COLUMN "Matrícula Civil" TO m_reservada; +ALTER TABLE vehiculos RENAME COLUMN PMM TO m_propia; +ALTER TABLE vehiculos RENAME COLUMN Población TO poblacion; +ALTER TABLE vehiculos RENAME COLUMN Marca TO marca; +ALTER TABLE vehiculos RENAME COLUMN Modelo TO modelo; +ALTER TABLE vehiculos RENAME COLUMN Tipo TO tipo; +ALTER TABLE vehiculos RENAME COLUMN Color TO color; +ALTER TABLE vehiculos RENAME COLUMN "Número de bastidor" TO VIN; +ALTER TABLE vehiculos RENAME COLUMN "Fecha de Alta" TO f_alta; +ALTER TABLE vehiculos RENAME COLUMN "Fecha de Baja" TO f_baja; +ALTER TABLE vehiculos RENAME COLUMN "Situación veh" TO situacion; +ALTER TABLE vehiculos RENAME COLUMN Kilometros TO km; +ALTER TABLE vehiculos RENAME COLUMN "Kilometros a dia 1" TO km_1; +ALTER TABLE vehiculos RENAME COLUMN "Tipo de Combustible" TO combustible; +ALTER TABLE vehiculos RENAME COLUMN "Número de plazas" TO plazas; +ALTER TABLE vehiculos RENAME COLUMN "Ultima ITV" TO itv_ultima; +ALTER TABLE vehiculos RENAME COLUMN "Tipo ITV" TO itv; +ALTER TABLE vehiculos RENAME COLUMN Departamento TO unidad; +ALTER TABLE vehiculos RENAME COLUMN "Número de Poliza" TO poliza; + +ALTER TABLE vehiculos ADD COLUMN id INTEGER; +ALTER TABLE vehiculos ADD COLUMN lanzadestellos INTEGER; +ALTER TABLE vehiculos ADD COLUMN grupo TEXT; +ALTER TABLE vehiculos ADD COLUMN viat TEXT; +ALTER TABLE vehiculos ADD COLUMN int_operacion TEXT; +ALTER TABLE vehiculos ADD COLUMN int_grupo TEXT; +ALTER TABLE vehiculos ADD COLUMN int_juzgado TEXT; +ALTER TABLE vehiculos ADD COLUMN int_procedimiento TEXT; +ALTER TABLE vehiculos ADD COLUMN notas TEXT; + +UPDATE vehiculos SET notas = TRIM(COALESCE(observaciones, '') || ' ' || COALESCE(historial, '')); + +ALTER TABLE vehiculos DROP COLUMN observaciones; +ALTER TABLE vehiculos DROP COLUMN historial; + +UPDATE vehiculos +SET lanzadestellos = 1 +WHERE notas LIKE '%SAMCO%'; + +UPDATE vehiculos SET f_alta = substr(f_alta, 1, 10); +UPDATE vehiculos SET f_baja = substr(f_baja, 1, 10); + +UPDATE vehiculos +SET situacion = CASE + WHEN f_baja IS NULL OR f_baja = '' THEN 'ACTIVO' + ELSE 'BAJA' +END; + +UPDATE vehiculos +SET viat = substr( + notas, + instr(lower(notas), 'viat '), + 24 +) +WHERE instr(lower(notas), 'viat ') > 0; + + +UPDATE vehiculos SET unidad = 'BPEF' WHERE unidad = 'B.P.E. y F.'; +UPDATE vehiculos SET unidad = 'BPI' WHERE unidad = 'B.P.I.'; +UPDATE vehiculos SET unidad = 'BPPC' WHERE unidad = 'B.P.P.C.'; +UPDATE vehiculos SET unidad = 'BPSC' WHERE unidad = 'B.P.S.C.'; +UPDATE vehiculos SET unidad = 'BPSC' WHERE unidad = 'Seg. Ciudadana' AND poblacion = 'MALAGA'; +UPDATE vehiculos SET unidad = 'BLSC' WHERE unidad = 'Seg. Ciudadana' AND poblacion != 'MALAGA'; +UPDATE vehiculos SET unidad = 'BPSC' WHERE unidad = 'SEG. CIUDADANA'; +UPDATE vehiculos SET unidad = 'BPSC' WHERE unidad = 'B.P.S.C. K'; +UPDATE vehiculos SET unidad = 'DISTRITO CENTRO' WHERE unidad = 'DTO. CENTRO'; +UPDATE vehiculos SET unidad = 'DISTRITO ESTE' WHERE unidad = 'DTO. ESTE'; +UPDATE vehiculos SET unidad = 'DISTRITO NORTE' WHERE unidad = 'DTO. NORTE'; +UPDATE vehiculos SET unidad = 'DISTRITO OESTE' WHERE unidad = 'DTO. OESTE'; +UPDATE vehiculos SET unidad = 'UCOP - GOES' WHERE unidad = 'G.O.E.S.'; +UPDATE vehiculos SET unidad = 'UDEF - IPLA' WHERE unidad = 'I.P.L.A.'; +UPDATE vehiculos SET unidad = 'SECRETARIA GENERAL - NUCLEO RESERVA' WHERE unidad = 'NUCLEO DE RESERVA'; +UPDATE vehiculos SET unidad = 'SECRETARIA GENERAL' WHERE unidad = 'SECRETARIA G.'; +UPDATE vehiculos SET unidad = '' WHERE unidad = 'SUSTITUCION'; +UPDATE vehiculos SET unidad = 'AUTOMOCION' WHERE unidad = 'TALLER AUTOMOCION'; +UPDATE vehiculos SET unidad = 'UCOP - GABINETE TECNICO' WHERE unidad = 'U.C.O.P. - GABINETE TÉCNICO'; +UPDATE vehiculos SET unidad = 'UCOP - GOTHAM' WHERE unidad = 'U.C.O.P. - GOTHAM'; +UPDATE vehiculos SET unidad = 'UCOP - HELICOPTEROS' WHERE unidad = 'U.C.O.P. - HELICOPTEROS'; +UPDATE vehiculos SET unidad = 'UCOP' WHERE unidad = 'U.C.O.P. - JEFES'; +UPDATE vehiculos SET unidad = 'UCOP - OMEGA' WHERE unidad = 'U.C.O.P. - OMEGA'; +UPDATE vehiculos SET unidad = 'UCOP - SISTEMAS ESPECIALES' WHERE unidad = 'U.C.O.P. - SISTEMAS'; +UPDATE vehiculos SET unidad = 'UCOP - UVAO' WHERE unidad = 'U.C.O.P. - UVAO'; +UPDATE vehiculos SET unidad = 'UDEF' WHERE unidad = 'U.D.E.F.'; +UPDATE vehiculos SET unidad = 'BPPJ - UDEV ' WHERE unidad = 'U.D.E.V.' AND poblacion = 'MALAGA'; +UPDATE vehiculos SET unidad = 'BLPJ - UDEV' WHERE unidad = 'U.D.E.V.' AND poblacion != 'MALAGA'; +UPDATE vehiculos SET unidad = 'UIP' WHERE unidad = 'U.I.P.'; +UPDATE vehiculos SET unidad = 'BPSC - UPR' WHERE unidad = 'U.P.R.' AND poblacion = 'MALAGA'; +UPDATE vehiculos SET unidad = 'BLSC - UPR' WHERE unidad = 'U.P.R.' AND poblacion != 'MALAGA'; +UPDATE vehiculos SET unidad = 'BPSC - UPR 1' WHERE unidad = 'U.P.R.-1'; +UPDATE vehiculos SET unidad = 'BPSC - UPR 2' WHERE unidad = 'U.P.R.-2'; +UPDATE vehiculos SET unidad = 'UDYCO' WHERE unidad = 'udyco - Costa del Sol'; +UPDATE vehiculos SET unidad = 'BLSC' WHERE unidad = 'B.L.S.C.'; +UPDATE vehiculos SET unidad = 'BLPJ' WHERE unidad = 'B.L.P.J.'; +UPDATE vehiculos SET unidad = 'BLI' WHERE unidad = 'B.L.I.'; +UPDATE vehiculos SET unidad = 'BLPC' WHERE unidad = 'B.L.P.C.'; +UPDATE vehiculos SET unidad = 'BLEF' WHERE unidad = 'B.L.E. y F.'; +UPDATE vehiculos SET unidad = 'UCOL' WHERE unidad = 'U.C.O.L.'; +UPDATE vehiculos SET unidad = 'JEFATURA COMISARIA' WHERE unidad = 'JEFE COMISARÍA'; +UPDATE vehiculos SET unidad = 'UDYCO' WHERE unidad = 'udyco - Costa del Sol' AND poblacion != 'MALAGA'; +UPDATE vehiculos SET unidad = '' WHERE unidad = 'BAJA'; +UPDATE vehiculos SET unidad = '' WHERE unidad = 'ENAJ. DIRECTA MARZO 2025 BAJA ASIA'; +UPDATE vehiculos SET unidad = '' WHERE unidad = 'ENAJ. COCHES'; +UPDATE vehiculos SET unidad = '' WHERE unidad = 'DESTRUIDO' OR unidad = 'DESTRUCCION'; +UPDATE vehiculos SET unidad = '' WHERE unidad = 'BAJA EN ASIA' OR unidad = 'BAJA TEMPORAL' OR unidad = 'BANCO DE VEHCULOS' OR unidad = 'BAJA DEFINITIVA' OR unidad = 'BAJA ASIA Enaj. MOTOS' OR unidad = 'BAJA ASIA Enaj. COCHES'; +UPDATE vehiculos SET unidad = '' WHERE unidad LIKE '%CURSO%'; + + +CREATE TABLE documentos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + vehiculo_id INTEGER NOT NULL REFERENCES vehiculos(id) ON DELETE CASCADE, + nombre TEXT, + filename TEXT NOT NULL, + fecha DATETIME DEFAULT (datetime('now','localtime')) + ); + + +CREATE TABLE mensajes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + texto TEXT NOT NULL, + autor TEXT, + fecha DATETIME DEFAULT (datetime('now','localtime')) + ); + + +ALTER TABLE "Historial" RENAME TO "historial_tmp"; +ALTER TABLE "historial_tmp" RENAME TO "historial"; + +ALTER TABLE historial RENAME COLUMN Matricula TO matricula; +ALTER TABLE historial RENAME COLUMN Unidad TO unidad; +ALTER TABLE historial RENAME COLUMN Cuando TO fecha; +ALTER TABLE historial RENAME COLUMN Observaciones TO observaciones; +ALTER TABLE historial ADD COLUMN id INTEGER; +ALTER TABLE historial ADD COLUMN vehiculo_id INTEGER; +ALTER TABLE historial ADD COLUMN situacion TEXT; +ALTER TABLE historial ADD COLUMN poblacion TEXT; +ALTER TABLE historial ADD COLUMN grupo TEXT; + +UPDATE historial SET fecha = substr(fecha, 1, 10); + +UPDATE vehiculos +SET + m_oficial = NULLIF(m_oficial, 'none'), + m_reservada = NULLIF(m_reservada, 'none'), + m_propia = NULLIF(m_propia, 'none'), + VIN = NULLIF(VIN, 'none'), + poliza = NULLIF(poliza, 'none'), + viat = NULLIF(viat, 'none'), + legajo = NULLIF(legajo, 'none'), + marca = NULLIF(marca, 'none'), + modelo = NULLIF(modelo, 'none'), + tipo = NULLIF(tipo, 'none'), + color = NULLIF(color, 'none'), + combustible = NULLIF(combustible, 'none'), + plazas = NULLIF(plazas, 'none'), + situacion = NULLIF(situacion, 'none'), + poblacion = NULLIF(poblacion, 'none'), + unidad = NULLIF(unidad, 'none'), + grupo = NULLIF(grupo, 'none'), + int_operacion = NULLIF(int_operacion, 'none'), + int_grupo = NULLIF(int_grupo, 'none'), + int_juzgado = NULLIF(int_juzgado, 'none'), + int_procedimiento = NULLIF(int_procedimiento, 'none'), + f_alta = NULLIF(f_alta, 'none'), + f_baja = NULLIF(f_baja, 'none'), + km = NULLIF(km, 'none'), + km_1 = NULLIF(km_1, 'none'), + itv_ultima = NULLIF(itv_ultima, 'none'), + itv = NULLIF(itv, 'none'), + notas = NULLIF(notas, 'none'); + + + +———————————————————————— +Después: +1- Poner id autoincremental en tabla vehículos +2. Poner id autoincremental en tabla historial + +3- Hacer el update: +UPDATE historial +SET vehiculo_id = ( + SELECT id + FROM vehiculos + WHERE vehiculos.m_oficial = historial.matricula +); + +4- Ordenar los campos de las tablas, con este orden: + + + + + diff --git a/static/car-front.svg b/static/car-front.svg new file mode 100755 index 0000000..e69d86f --- /dev/null +++ b/static/car-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/tablas csv para importar/tipo.csv b/tablas csv para importar/tipo.csv new file mode 100755 index 0000000..08b42fd --- /dev/null +++ b/tablas csv para importar/tipo.csv @@ -0,0 +1,55 @@ +id,tipo,denominacion +1,AUTOCAR 21 A 40 PAX, +2,AUTOCAR > 40 PAX, +3,FURGON, +4,"CAMION < 3,5 TM", +5,"CAMION > 3,5 TM", +6,CANIOB DE CABALLOS, +7,CELULAR, +8,CICLOMOTOR, +9,CTRL. MOVIL FRONTERA, +10,EMBARCACION, +11,ESTACIONES ITV, +12,FURGON APOLO, +13,FURGON EDEX, +14,FURGON G.CANINOS, +15,FURGON GOES, +16,FURGON MINI APOLO, +17,FURGON U.P.R., +18,FURGON UNIPOL F-8, +19,FURGONETA COMBI, +20,FURGONETA DE CARGA, +21,FURGONETA DNI, +22,FURGONETA DNI RURAL, +23,FURGONETA IZ, +24,FURGONETA LABORATORIO DE DOCUMENTOS FALSOS, +25,FURGONETA MIXTA, +26,FURGONETA P.CIENTIFICA, +27,FURGONETA SUBSUELO, +28,GRUA, +29,GRUPO ELECTROGENO, +30,LANZA-AGUA, +31,MAXI-Z, +32,MICROBUS 10 A 20 PAX, +33,MOTOCICLETA TIPO K, +34,MOTOCICLETA TIPO Q, +35,MOTOCICLETA UNIFORMADA, +36,POLICIA TECN.ESPECIALIDAD, +37,PUESTO DE MANDO AVANZADO, +38,REMOLQUE <750 KG, +39,REMOLQUE >750 KG, +40,TANQUETA, +41,TODO CAMINO, +42,TODO TERRENO, +43,TRACTOR TIPO EINSA, +44,TRANSPORTE SANITARIO, +45,TRASLADO EXTRANJEROS, +46,TURISMO K, +47,TURISMO Q, +48,TURISMO Z, +49,TURISMO Z COORDINACION, +50,UNIDAD MOVIL DE DOCUMENTACION (VIDOC), +51,UNIDAD MOVIL FRONTERAS, +52,VARIOS SIN CLASIFICAR, +53,VEHICULO ELECTRICO NO HOMOLOGADO, +54,VEHICULO ELECTRICO UNIF. HOMOLOGADO, diff --git a/tablas csv para importar/tipo_vehiculos.csv b/tablas csv para importar/tipo_vehiculos.csv deleted file mode 100755 index 6809c60..0000000 --- a/tablas csv para importar/tipo_vehiculos.csv +++ /dev/null @@ -1,55 +0,0 @@ -tipo,denominacion -AUTOCAR 21 A 40 PAX, -AUTOCAR > 40 PAX, -FURGON, -"CAMION < 3,5 TM", -"CAMION > 3,5 TM", -CANIOB DE CABALLOS, -CELULAR, -CICLOMOTOR, -CTRL. MOVIL FRONTERA, -EMBARCACION, -ESTACIONES ITV, -FURGON APOLO, -FURGON EDEX, -FURGON G.CANINOS, -FURGON GOES, -FURGON MINI APOLO, -FURGON U.P.R., -FURGON UNIPOL F-8, -FURGONETA COMBI, -FURGONETA DE CARGA, -FURGONETA DNI, -FURGONETA DNI RURAL, -FURGONETA IZ, -FURGONETA LABORATORIO DE DOCUMENTOS FALSOS, -FURGONETA MIXTA, -FURGONETA P.CIENTIFICA, -FURGONETA SUBSUELO, -GRUA, -GRUPO ELECTROGENO, -LANZA-AGUA, -MAXI-Z, -MICROBUS 10 A 20 PAX, -MOTOCICLETA TIPO K, -MOTOCICLETA TIPO Q, -MOTOCICLETA UNIFORMADA, -POLICIA TECN.ESPECIALIDAD, -PUESTO DE MANDO AVANZADO, -REMOLQUE <750 KG, -REMOLQUE >750 KG, -TANQUETA, -TODO CAMINO, -TODO TERRENO, -TRACTOR TIPO EINSA, -TRANSPORTE SANITARIO, -TRASLADO EXTRANJEROS, -TURISMO K, -TURISMO Q, -TURISMO Z, -TURISMO Z COORDINACION, -UNIDAD MOVIL DE DOCUMENTACION (VIDOC), -UNIDAD MOVIL FRONTERAS, -VARIOS SIN CLASIFICAR , -VEHICULO ELECTRICO NO HOMOLOGADO , -VEHICULO ELECTRICO UNIF. HOMOLOGADO diff --git a/tablas csv para importar/unidades.csv b/tablas csv para importar/unidades.csv index 0ba9d4a..b208889 100755 --- a/tablas csv para importar/unidades.csv +++ b/tablas csv para importar/unidades.csv @@ -1,248 +1,242 @@ -id,unidad,poblacion_id -1,AEROPUERTO,1 -2,AUTOMOCION,1 -32,BPEF,1 -33,BPEF - PUERTO,1 -34,BPEF - UCRIF 1,1 -35,BPEF - UCRIF 2,1 -36,BPEF - UCRIF 3,1 -37,BPEF - UCRIF 4,1 -38,BPEF - UCRIF 5 EXPULSIONES,1 -39,BPEF - UCRIF 6,1 -40,BPEF - UDEX,1 -41,BPI,1 -42,BPI - INFORMACION 1,1 -43,BPI - INFORMACION 2,1 -44,BPI - INFORMACION 3,1 -45,BPI - INFORMACION 4,1 -46,BPI - INFORMACION 5,1 -47,BPI - TEDAX NRBQ,1 -48,BPPC,1 -49,BPPJ,1 -50,BPPJ - UDEV ATRACOS,1 -51,BPPJ - UDEV AUDIENCIA PROVINCIAL,1 -52,BPPJ - UDEV CIBERDELINCUENCIA 1,1 -53,BPPJ - UDEV CIBERDELINCUENCIA 2,1 -54,BPPJ - UDEV HOMICIDIOS,1 -55,BPPJ - UDEV HURTOS,1 -56,BPPJ - UDEV JEFE,1 -57,BPPJ - UDEV JEFE SECCION,1 -58,BPPJ - UDEV ROBOS 1,1 -59,BPPJ - UDEV ROBOS 2,1 -60,BPPJ - UDEV UFAM GRUME,1 -61,BPPJ - UDEV UFAM PROTECCION,1 -62,BPSC,1 -63,BPSC - BRIGADA MOVIL,1 -64,BPSC - CELULAR CONDUCCIONES,1 -65,BPSC - ESCOLTAS,1 -66,BPSC - GUIAS CANINOS,1 -67,BPSC - INIDAD TERROTORIAL DE SEGURIDAD PRIVADA,1 -68,BPSC - PARTICIPACION CIUDADANA,1 -69,BPSC - PLANIFICACION,1 -70,BPSC - SALA 091,1 -71,BPSC - SUBSUELO,1 -72,BPSC - UPR 1,1 -73,BPSC - UPR 2,1 -74,BPSC - UPS,1 -75,DISTRITO CENTRO,1 -76,DISTRITO ESTE,1 -77,DISTRITO NORTE,1 -78,DISTRITO NORTE - GRUPO 1,1 -79,DISTRITO NORTE - GRUPO 2,1 -80,DISTRITO OESTE,1 -81,DISTRITO OESTE - GRUPO 1,1 -82,DISTRITO OESTE - GRUPO 2,1 -83,JEFATURA COMISARIO PRINCIPAL,1 -84,JEFATURA COMISARIA,1 -85,SECRETARIA,1 -86,SECRETARIA GENERAL,1 -87,SECRETARIA GENERAL - ASUNTOS LEGALES,1 -88,SECRETARIA GENERAL - INFORMATICA,1 -89,SECRETARIA GENERAL - INSTALACIONES,1 -90,SECRETARIA GENERAL - MATERIAL,1 -91,SECRETARIA GENERAL - TELECOMUNICACIONES,1 -92,SECRETARIA GENERAL- NUCLEO RESERVA,1 -96,UCOP,1 -97,UCOP - GABINETE TECNICO,1 -98,UCOP - GOES,1 -99,UCOP - GOTHAM,1 -100,UCOP - HELICOPTEROS,1 -101,UCOP - OMEGA,1 -102,UCOP - RICO 20,1 -103,UCOP - SISTEMAS ESPECIALES 1,1 -104,UCOP - SISTEMAS ESPECIALES 2,1 -105,UCOP - UVAO,1 -106,UDEF,1 -107,UDEF - BLANQUEO 1,1 -108,UDEF - BLANQUEO 2,1 -109,UDEF - BLANQUEO 3,1 -110,UDEF - DELITOS ECONOMICOS 1,1 -111,UDEF - DELITOS ECONOMICOS 2,1 -112,UDEF - IPLA,1 -113,UDYCO,1 -114,UDYCO - APOLO,1 -115,UDYCO - CRIMEN ORGANIZADO 1,1 -116,UDYCO - CRIMEN ORGANIZADO 2,1 -117,UDYCO - CRIMEN ORGANIZADO 3,1 -118,UDYCO - CRIMEN ORGANIZADO 4,1 -119,UDYCO - ESTUPEFACIENTES,1 -120,UDYCO - ESTUPEFACIENTES 1,1 -121,UDYCO - ESTUPEFACIENTES 2,1 -122,UDYCO - ESTUPEFACIENTES 3,1 -123,UDYCO - ESTUPEFACIENTES 4,1 -124,UDYCO - FUENTES,1 -125,UIP,1 -143,BLEF,2 -145,BLI,2 -147,BLPC,2 -148,BLPJ,2 -149,BLPJ - PATRIMONIO,2 -151,BLPJ - DELINCUENCIA ECONOMICA,2 -152,BLPJ - DELINCUENCIA URBANA,2 -156,BLPJ - FRAUDES,2 -157,BLPJ - HURTOS,2 -158,BLPJ - INFORMES,2 -159,BLPJ - JEFATURA,2 -160,BLPJ - PATRIMONIO,2 -161,BLPJ - PEQUEÑO TRAFICO,2 -162,BLPJ - PERSONAS,2 -163,BLPJ - ROBOS,2 -165,BLPJ - UDEV,2 -168,BLPJ - UFAM,2 -170,BLSC,2 -171,BLSC - UPR,2 -172,JEFATURA COMISARIA,2 -173,SECRETARIA,2 -174,UCOL,2 -175,BLEF,3 -176,BLI,3 -177,BLPC,3 -178,BLPJ,3 -179,BLPJ - PATRIMONIO,3 -180,BLPJ - DELINCUENCIA ECONOMICA,3 -181,BLPJ - DELINCUENCIA URBANA,3 -183,BLPJ - FRAUDES,3 -184,BLPJ - HURTOS,3 -185,BLPJ - INFORMES,3 -186,BLPJ - JEFATURA,3 -187,BLPJ - PATRIMONIO,3 -188,BLPJ - PEQUEÑO TRAFICO,3 -189,BLPJ - PERSONAS,3 -190,BLPJ - ROBOS,3 -191,BLPJ - UDEV,3 -192,BLPJ - UFAM,3 -193,BLSC,3 -194,BLSC - UPR,3 -195,JEFATURA COMISARIA,3 -196,SECRETARIA,3 -197,UCOL,3 -198,BLEF,4 -199,BLI,4 -200,BLPC,4 -201,BLPJ,4 -202,BLPJ - PATRIMONIO,4 -203,BLPJ - DELINCUENCIA ECONOMICA,4 -205,BLPJ - DELINCUENCIA URBANA,4 -206,BLPJ - FRAUDES,4 -207,BLPJ - HURTOS,4 -208,BLPJ - INFORMES,4 -209,BLPJ - JEFATURA,4 -210,BLPJ - PATRIMONIO,4 -211,BLPJ - PEQUEÑO TRAFICO,4 -212,BLPJ - PERSONAS,4 -213,BLPJ - ROBOS,4 -214,BLPJ - UDEV,4 -215,BLPJ - UFAM,4 -216,BLSC,4 -217,BLSC - UPR,4 -218,JEFATURA COMISARIA,4 -219,SECRETARIA,4 -220,UCOL,4 -221,BLEF,5 -222,BLI,5 -223,BLPC,5 -224,BLPJ,5 -225,BLPJ - PATRIMONIO,5 -226,BLPJ - DELINCUENCIA ECONOMICA,5 -228,BLPJ - DELINCUENCIA URBANA,5 -229,BLPJ - FRAUDES,5 -230,BLPJ - HURTOS,5 -231,BLPJ - INFORMES,5 -232,BLPJ - JEFATURA,5 -233,BLPJ - PATRIMONIO,5 -234,BLPJ - PEQUEÑO TRAFICO,5 -235,BLPJ - PERSONAS,5 -236,BLPJ - ROBOS,5 -237,BLPJ - UDEV,5 -238,BLPJ - UFAM,5 -239,BLSC,5 -240,BLSC - UPR,5 -241,JEFATURA COMISARIA,5 -242,SECRETARIA,5 -243,UCOL,5 -244,BLEF,6 -245,BLI,6 -246,BLPC,6 -247,BLPJ,6 -248,BLPJ - PATRIMONIO,6 -249,BLPJ - DELINCUENCIA ECONOMICA,6 -251,BLPJ - DELINCUENCIA URBANA,6 -252,BLPJ - FRAUDES,6 -253,BLPJ - HURTOS,6 -254,BLPJ - INFORMES,6 -255,BLPJ - JEFATURA,6 -256,BLPJ - PATRIMONIO,6 -257,BLPJ - PEQUEÑO TRAFICO,6 -258,BLPJ - PERSONAS,6 -259,BLPJ - ROBOS,6 -260,BLPJ - UDEV,6 -261,BLPJ - UFAM,6 -262,BLSC,6 -263,BLSC - UPR,6 -264,JEFATURA COMISARIA,6 -265,SECRETARIA,6 -266,UCOL,6 -267,BLEF,7 -268,BLI,7 -269,BLPC,7 -270,BLPJ,7 -271,BLPJ - PATRIMONIO,7 -272,BLPJ - DELINCUENCIA ECONOMICA,7 -274,BLPJ - DELINCUENCIA URBANA,7 -275,BLPJ - FRAUDES,7 -276,BLPJ - HURTOS,7 -277,BLPJ - INFORMES,7 -278,BLPJ - JEFATURA,7 -279,BLPJ - PATRIMONIO,7 -280,BLPJ - PEQUEÑO TRAFICO,7 -281,BLPJ - PERSONAS,7 -282,BLPJ - ROBOS,7 -283,BLPJ - UDEV,7 -284,BLPJ - UFAM,7 -285,BLSC,7 -286,BLSC - UPR,7 -287,JEFATURA COMISARIA,7 -288,SECRETARIA,7 -289,UCOL,7 -290,BLEF,8 -291,BLI,8 -292,BLPC,8 -293,BLPJ,8 -294,BLPJ - PATRIMONIO,8 -295,BLPJ - DELINCUENCIA ECONOMICA,8 -297,BLPJ - DELINCUENCIA URBANA,8 -298,BLPJ - FRAUDES,8 -299,BLPJ - HURTOS,8 -300,BLPJ - INFORMES,8 -301,BLPJ - JEFATURA,8 -302,BLPJ - PATRIMONIO,8 -303,BLPJ - PEQUEÑO TRAFICO,8 -304,BLPJ - PERSONAS,8 -305,BLPJ - ROBOS,8 -306,BLPJ - UDEV,8 -307,BLPJ - UFAM,8 -308,BLSC,8 -309,BLSC - UPR,8 -310,JEFATURA COMISARIA,8 -311,SECRETARIA,8 -312,UCOL,8 +id,unidad,poblacion_id +1,AEROPUERTO,1 +2,AUTOMOCION,1 +32,BPEF,1 +33,BPEF - PUERTO,1 +34,BPEF - UCRIF 1,1 +35,BPEF - UCRIF 2,1 +36,BPEF - UCRIF 3,1 +37,BPEF - UCRIF 4,1 +38,BPEF - UCRIF 5 EXPULSIONES,1 +39,BPEF - UCRIF 6,1 +40,BPEF - UDEX,1 +41,BPI,1 +42,BPI - INFORMACION 1,1 +43,BPI - INFORMACION 2,1 +44,BPI - INFORMACION 3,1 +45,BPI - INFORMACION 4,1 +46,BPI - INFORMACION 5,1 +47,BPI - TEDAX NRBQ,1 +48,BPPC,1 +49,BPPJ,1 +313,BPPJ - UDEV,1 +50,BPPJ - UDEV ATRACOS,1 +51,BPPJ - UDEV AUDIENCIA PROVINCIAL,1 +52,BPPJ - UDEV CIBERDELINCUENCIA 1,1 +53,BPPJ - UDEV CIBERDELINCUENCIA 2,1 +54,BPPJ - UDEV HOMICIDIOS,1 +55,BPPJ - UDEV HURTOS,1 +56,BPPJ - UDEV JEFATURA,1 +57,BPPJ - UDEV JEFATURA SECCION,1 +58,BPPJ - UDEV ROBOS 1,1 +59,BPPJ - UDEV ROBOS 2,1 +60,BPPJ - UDEV UFAM GRUME,1 +61,BPPJ - UDEV UFAM PROTECCION,1 +62,BPSC,1 +63,BPSC - BRIGADA MOVIL,1 +64,BPSC - CELULAR CONDUCCIONES,1 +65,BPSC - ESCOLTAS,1 +66,BPSC - GUIAS CANINOS,1 +67,BPSC - INIDAD TERROTORIAL DE SEGURIDAD PRIVADA,1 +68,BPSC - PARTICIPACION CIUDADANA,1 +69,BPSC - PLANIFICACION,1 +70,BPSC - SALA 091,1 +71,BPSC - SUBSUELO,1 +72,BPSC - UPR 1,1 +73,BPSC - UPR 2,1 +74,BPSC - UPS,1 +75,DISTRITO CENTRO,1 +76,DISTRITO ESTE,1 +77,DISTRITO NORTE,1 +78,DISTRITO NORTE - GRUPO 1,1 +79,DISTRITO NORTE - GRUPO 2,1 +80,DISTRITO OESTE,1 +81,DISTRITO OESTE - GRUPO 1,1 +82,DISTRITO OESTE - GRUPO 2,1 +83,JEFATURA COMISARIO PRINCIPAL,1 +84,JEFATURA COMISARIA,1 +85,SECRETARIA,1 +86,SECRETARIA GENERAL,1 +87,SECRETARIA GENERAL - ASUNTOS LEGALES,1 +88,SECRETARIA GENERAL - INFORMATICA,1 +89,SECRETARIA GENERAL - INSTALACIONES,1 +90,SECRETARIA GENERAL - MATERIAL,1 +91,SECRETARIA GENERAL - TELECOMUNICACIONES,1 +92,SECRETARIA GENERAL - NUCLEO RESERVA,1 +96,UCOP,1 +97,UCOP - GABINETE TECNICO,1 +98,UCOP - GOES,1 +99,UCOP - GOTHAM,1 +100,UCOP - HELICOPTEROS,1 +101,UCOP - OMEGA,1 +102,UCOP - RICO 20,1 +103,UCOP - SISTEMAS ESPECIALES 1,1 +104,UCOP - SISTEMAS ESPECIALES 2,1 +105,UCOP - UVAO,1 +106,UDEF,1 +107,UDEF - BLANQUEO 1,1 +108,UDEF - BLANQUEO 2,1 +109,UDEF - BLANQUEO 3,1 +110,UDEF - DELITOS ECONOMICOS 1,1 +111,UDEF - DELITOS ECONOMICOS 2,1 +112,UDEF - IPLA,1 +113,UDYCO,1 +114,UDYCO - APOLO,1 +115,UDYCO - CRIMEN ORGANIZADO 1,1 +116,UDYCO - CRIMEN ORGANIZADO 2,1 +117,UDYCO - CRIMEN ORGANIZADO 3,1 +118,UDYCO - CRIMEN ORGANIZADO 4,1 +119,UDYCO - ESTUPEFACIENTES,1 +120,UDYCO - ESTUPEFACIENTES 1,1 +121,UDYCO - ESTUPEFACIENTES 2,1 +122,UDYCO - ESTUPEFACIENTES 3,1 +123,UDYCO - ESTUPEFACIENTES 4,1 +124,UDYCO - FUENTES,1 +125,UIP,1 +143,BLEF,2 +145,BLI,2 +147,BLPC,2 +148,BLPJ,2 +149,BLPJ - PATRIMONIO,2 +151,BLPJ - DELINCUENCIA ECONOMICA,2 +152,BLPJ - DELINCUENCIA URBANA,2 +156,BLPJ - FRAUDES,2 +157,BLPJ - HURTOS,2 +158,BLPJ - INFORMES,2 +159,BLPJ - JEFATURA,2 +161,BLPJ - PEQUEÑO TRAFICO,2 +162,BLPJ - PERSONAS,2 +163,BLPJ - ROBOS,2 +165,BLPJ - UDEV,2 +168,BLPJ - UFAM,2 +170,BLSC,2 +171,BLSC - UPR,2 +172,JEFATURA COMISARIA,2 +173,SECRETARIA,2 +174,UCOL,2 +175,BLEF,3 +176,BLI,3 +177,BLPC,3 +178,BLPJ,3 +180,BLPJ - DELINCUENCIA ECONOMICA,3 +181,BLPJ - DELINCUENCIA URBANA,3 +183,BLPJ - FRAUDES,3 +184,BLPJ - HURTOS,3 +185,BLPJ - INFORMES,3 +186,BLPJ - JEFATURA,3 +187,BLPJ - PATRIMONIO,3 +188,BLPJ - PEQUEÑO TRAFICO,3 +189,BLPJ - PERSONAS,3 +190,BLPJ - ROBOS,3 +191,BLPJ - UDEV,3 +192,BLPJ - UFAM,3 +193,BLSC,3 +194,BLSC - UPR,3 +195,JEFATURA COMISARIA,3 +196,SECRETARIA,3 +197,UCOL,3 +198,BLEF,4 +199,BLI,4 +200,BLPC,4 +201,BLPJ,4 +203,BLPJ - DELINCUENCIA ECONOMICA,4 +205,BLPJ - DELINCUENCIA URBANA,4 +206,BLPJ - FRAUDES,4 +207,BLPJ - HURTOS,4 +208,BLPJ - INFORMES,4 +209,BLPJ - JEFATURA,4 +210,BLPJ - PATRIMONIO,4 +211,BLPJ - PEQUEÑO TRAFICO,4 +212,BLPJ - PERSONAS,4 +213,BLPJ - ROBOS,4 +214,BLPJ - UDEV,4 +215,BLPJ - UFAM,4 +216,BLSC,4 +217,BLSC - UPR,4 +218,JEFATURA COMISARIA,4 +219,SECRETARIA,4 +220,UCOL,4 +221,BLEF,5 +222,BLI,5 +223,BLPC,5 +224,BLPJ,5 +226,BLPJ - DELINCUENCIA ECONOMICA,5 +228,BLPJ - DELINCUENCIA URBANA,5 +229,BLPJ - FRAUDES,5 +230,BLPJ - HURTOS,5 +231,BLPJ - INFORMES,5 +232,BLPJ - JEFATURA,5 +233,BLPJ - PATRIMONIO,5 +234,BLPJ - PEQUEÑO TRAFICO,5 +235,BLPJ - PERSONAS,5 +236,BLPJ - ROBOS,5 +237,BLPJ - UDEV,5 +238,BLPJ - UFAM,5 +239,BLSC,5 +240,BLSC - UPR,5 +241,JEFATURA COMISARIA,5 +242,SECRETARIA,5 +243,UCOL,5 +244,BLEF,6 +245,BLI,6 +246,BLPC,6 +247,BLPJ,6 +249,BLPJ - DELINCUENCIA ECONOMICA,6 +251,BLPJ - DELINCUENCIA URBANA,6 +252,BLPJ - FRAUDES,6 +253,BLPJ - HURTOS,6 +254,BLPJ - INFORMES,6 +255,BLPJ - JEFATURA,6 +256,BLPJ - PATRIMONIO,6 +257,BLPJ - PEQUEÑO TRAFICO,6 +258,BLPJ - PERSONAS,6 +259,BLPJ - ROBOS,6 +260,BLPJ - UDEV,6 +261,BLPJ - UFAM,6 +262,BLSC,6 +263,BLSC - UPR,6 +264,JEFATURA COMISARIA,6 +265,SECRETARIA,6 +266,UCOL,6 +267,BLEF,7 +268,BLI,7 +269,BLPC,7 +270,BLPJ,7 +272,BLPJ - DELINCUENCIA ECONOMICA,7 +274,BLPJ - DELINCUENCIA URBANA,7 +275,BLPJ - FRAUDES,7 +276,BLPJ - HURTOS,7 +277,BLPJ - INFORMES,7 +278,BLPJ - JEFATURA,7 +279,BLPJ - PATRIMONIO,7 +280,BLPJ - PEQUEÑO TRAFICO,7 +281,BLPJ - PERSONAS,7 +282,BLPJ - ROBOS,7 +283,BLPJ - UDEV,7 +284,BLPJ - UFAM,7 +285,BLSC,7 +286,BLSC - UPR,7 +287,JEFATURA COMISARIA,7 +288,SECRETARIA,7 +289,UCOL,7 +290,BLEF,8 +291,BLI,8 +292,BLPC,8 +293,BLPJ,8 +295,BLPJ - DELINCUENCIA ECONOMICA,8 +297,BLPJ - DELINCUENCIA URBANA,8 +298,BLPJ - FRAUDES,8 +299,BLPJ - HURTOS,8 +300,BLPJ - INFORMES,8 +301,BLPJ - JEFATURA,8 +302,BLPJ - PATRIMONIO,8 +303,BLPJ - PEQUEÑO TRAFICO,8 +304,BLPJ - PERSONAS,8 +305,BLPJ - ROBOS,8 +306,BLPJ - UDEV,8 +307,BLPJ - UFAM,8 +308,BLSC,8 +309,BLSC - UPR,8 +310,JEFATURA COMISARIA,8 +311,SECRETARIA,8 +312,UCOL,8 diff --git a/templates/base.html b/templates/base.html index 455ea38..c0b726c 100755 --- a/templates/base.html +++ b/templates/base.html @@ -10,6 +10,7 @@ document.documentElement.setAttribute('data-theme', theme); })(); + @@ -18,17 +19,19 @@ + + + + + + + + +
+ + +{# Mensajes solo en página de inicio #} +{% if page == 'inicio' %} + {% if mensajes %} +
+
+
+ + + + {{ mensajes|length }} mensaje{{ 's' if mensajes|length != 1 }} +
+
+ +
+
+ {% for m in mensajes %} +
+
+
{{ m['fecha'] | fecha_es_hora }}
+
{{ m['texto'] }}
+
+
+ +
+
+ {% endfor %} +
+ {% endif %} +{% endif %} + + {% with messages = get_flashed_messages(with_categories=true) %} + {% for category, message in messages %} +
{{ message }}
+ {% endfor %} + {% endwith %} + + {% block content %}{% endblock %} + + + +
+ + + + + diff --git a/uploads/documentos/v3260_1788429735.pdf b/uploads/documentos/v3260_1788429735.pdf deleted file mode 100755 index ddaa137..0000000 Binary files a/uploads/documentos/v3260_1788429735.pdf and /dev/null differ diff --git a/uploads/documentos/v3260_1789042307.pdf b/uploads/documentos/v3260_1789042307.pdf new file mode 100755 index 0000000..995311a Binary files /dev/null and b/uploads/documentos/v3260_1789042307.pdf differ