Commit 937b4f26 by Juan

Merge branch 'pf2023-2' into 'master'

Pf2023 2

See merge request !2
2 parents bf349199 2646905b
carpetaDescargas = "/home/juan/Descargas/"
cabezaeraDescargas = "Planilla_Diaria-54"
grepfile = "/home/juan/Pruebas-RTO/grep.sh"
\ No newline at end of file
File mode changed
import datetime
from time import sleep
import os, subprocess
from configuracion import *
import pandas as pd
date_format_cent = '%d/%m/%Y %H:%M'
hora_format_cent = '%H:%M'
class FosaDiaria():
"""Esta clase almacenara todos los datos de finalizacion de
una planilla de foza, se busca se baja el excel se abra
y se guarda en ran los resultados"""
def __init__(self) -> None:
self.Cache = {}
self.Archivo = "data/fosa.json"
self.cabezaera = cabezaeraDescargas
self.CarpetaDescarga = carpetaDescargas
def BuscarDatosDominio(self,dominio,selenium,dia=False):
if dia == False:
now = datetime.datetime.now()
dia = now.strftime("%d/%m/%Y")
try:
data1 = self.Cache[dia]
except:
self.Cache[dia] = {}
try:
data = self.Cache[dia][dominio]
except:
data = False
if not data == False:
return data["hora"]
try:
self.ActualizarDatosDominios(selenium,dia)
except Exception as E:
print(f"""Error al actualizar dominio {str(E)}""")
return self.LimpiarData(dominio,dia)
def LimpiarData(self,dominio,dia):
"""Por ahora solo lo usa para extraer hora el resto lo descartp"""
try:
data = self.Cache[dia][dominio]
fin = data["hora"]
del data
except Exception as E:
print("Error al limpiar datos ",E)
fin = datetime.datetime.now().strftime(hora_format_cent)
return(fin)
def ActualizarDatosDominios(self,selenium,dia):
self.BajarExcel(selenium)
archivo = self.BuscarExcelDescargado()
df = pd.read_excel(archivo)
#print(df)
#print(df.to_dict())
self.ProcesarDatos(df,dia)
def ProcesarDatos(self,df,dia):
data = df.to_dict()
#print(data["domino"], type(data["domino"]))
try:
test = self.Cache[dia]
#print(test)
except:
self.Cache[dia] = {}
for n in data["domino"].keys():
if data["resultado"][n] in ["No Inspeccionado","Anulado"]:
continue
#print("key", n)
dominio = data["domino"][n]
#print(dominio,"dominio")
#print(type(n))
self.Cache[dia][dominio] ={
"dominio":dominio,
"tipo":data["tipo"][n],
"inicio":data["inicio"][n],
"fin":data["fin"][n],
"resultado":data["resultado"][n],
"cuit":data["cuit"][n],
"vence":data["vence"][n],
"hora":self.CorreccionDeHora(data["fin"][n],dia)
}
n = n + 1 #arranco desde 0
#print(self.Cache)
def CorreccionDeHora(self,fin, dia):
"""Hora de finalizacion menos 10 minutos"""
strdatetime = f"{dia} {fin}"
delta = datetime.timedelta(minutes=11)
obj = datetime.datetime.strptime(strdatetime, date_format_cent) - delta
return obj.strftime(hora_format_cent)
def BajarExcel(self,selenium):
self.LimpiarCarpertaDescarga()
selenium.get("https://rto.cent.gov.ar/rto/RTO/planillaDiaria")
now = datetime.datetime.now()
dia = now.strftime("%d")
mes = now.strftime("%m")
ano = now.strftime("%Y")
self.LimpiarCarpertaDescarga()
URL = f"""https://rto.cent.gov.ar/rto/report/planillaDiariaEXCEL/planillaDiariaEXCEL?codTaller=54&fechaConsulta={dia}%2F{mes}%2F{ano}&agruparPorLinea=false&format=excel&extension=xls"""
selenium.get(URL)
def BuscarExcelDescargado(self,tmp="/dev/shm/tmpscdecas.txt"):
test = True
n = 0
while test:
arc = self._BuscarExcelDescargado(tmp)
n = n + 1
if not arc == False:
print(arc, n)
test = False
if n > 70:
return " "
return(arc)
def _BuscarExcelDescargado(self,tmp):
rta = False
os.system(grepfile)
sleep(0.1)
file1 = open(tmp, 'r')
Lines = file1.readlines()
for line in Lines:
der = str(line).split(" ")
archivo = f"""{self.CarpetaDescarga}{der[-1]}"""
rta = archivo.replace("\n","")
file1.close()
os.system(f"""rm {tmp}""")
return rta
def LimpiarCarpertaDescarga(self):
try:
os.system(f"""rm {self.CarpetaDescarga}{self.cabezaera}*""")
sleep(0.1)
except Exception as E:
print(f"Error al intentar borrar planillas diarias anteriores: {str(E)}")
#!/bin/bash
ls /home/juan/Descargas/ -ls |grep Planilla_Diaria-54| grep xls | grep -v crdownload &> /dev/shm/tmpscdecas.txt
\ No newline at end of file
#-*- coding: utf-8 -*-
from flask import Flask, render_template, request, url_for, make_response, redirect
from iselenium import SeleniumInterface as SI
import random, json, os, datetime, ingenieros,apollo
import random, json, os, datetime, ingenieros,apollo, fosadiaria
ing = ingenieros.ingenieros()
FozaDiaria = fosadiaria.FosaDiaria()
app = Flask(__name__)
......@@ -124,6 +125,7 @@ def anomalies():
except:
s.driver.quit()
return f"Error en el login"
fingfd = FozaDiaria.BuscarDatosDominio(plate.upper(),selenium=s)
try:
gototec(s, d)
except:
......@@ -142,6 +144,7 @@ def anomalies():
s.driver.quit()
anom['header']['patente'] = plate
anom['header']['fecha'] = datetime.datetime.now().strftime("%d/%m/%Y")
anom['header']["hora"] = str(fingfd)
return render_template("anomalies.html", anomalies = anom)
@app.route('/report', methods = ['POST'])
......@@ -164,8 +167,10 @@ def report():
answer['header']['patente'] = plate.upper()
answer['header']["fecha-hora"] = apollo.estaticos.FechaHora()
answer['header']["hora"] = apollo.estaticos.Hora()
#print(1,answer)
answer['header']["ingeniero"] = ing.LeerDatosUsuario(request.cookies["login"])['nombreyapellido']
#answer['header']["hora"] = apollo.estaticos.Hora()
#print(2,answer)
try:
login(
......@@ -178,11 +183,16 @@ def report():
except:
s.driver.quit()
return f"Error en el login"
fingfd = FozaDiaria.BuscarDatosDominio(plate.upper(),selenium=s)
#print(3,answer)
try:
answer = gototec(s, answer)
except:
except Exception as E:
s.driver.quit()
return f"Error yendo a las especificaciones técnicas del dominio '{plate}'."
return f"Error yendo a las especificaciones técnicas del dominio '{plate}'. {str(E)}"
try:
answer = readdata(s, answer)
except:
......@@ -193,7 +203,9 @@ def report():
except:
s.driver.quit()
return f"Error completando datos extra de la patente '{plate}'."
#print(answer)
answer['header']["hora"] = str(fingfd)
s.driver.quit()
return json.dumps(answer)
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!