Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from app.browser_automation.browser_automation import BrowserAutomation
- import requests
- import json
- import time
- import os
- from os import listdir
- from os.path import isfile, join
- import CONST
- import datetime
- from selenium import webdriver
- import smtplib
- from datetime import datetime
- from selenium import webdriver
- from selenium.webdriver.support import ui
- from selenium.webdriver.common.by import By
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.ui import Select
- from selenium.webdriver.support import expected_conditions as EC
- # browser deveria ficar dentro da variavel global de classe e sers importada ou ter o init reescrito para outras funcoes
- class EternalKrawlerOab:
- def __init__(self, system_url, instancia, sistema, estado , oab, advogado, escritorio, mod=1, set_val=0):
- self.system_url = system_url
- self.instancia = instancia
- self.sistema = sistema
- self.estado = estado
- self.advogado = advogado
- self.oab = oab
- self.escritorio = escritorio
- self.mod = mod
- self.set = set_val
- self.browser = self.init_browser()
- def init(self):
- # if self.oab != None:
- self.update_oab()
- print "-- Processos Importados --\n___FINAL DA ROTINA___"
- if not self.leitura_finalizada():
- time.sleep(100000)
- time.sleep(5)
- # else:
- # self.upload_processo_instancia()
- # self.update_oab()
- # print "-- Processos Importados --\n__FINAL DA ROTINA__"
- # if not self.leitura_finalizada():
- # time.sleep(100000)
- # time.sleep(5)
- def update_oab(self):
- # CONST.TOKEN = self.make_login()
- # self.update = True
- # if not self.update:
- # print "OAB:", self.oab
- # if self.make_consulta(self.oab):
- # CONST.TOKEN = self.make_login()
- # self.pick_process()
- # else:
- # self.oab_not_find()
- # else:
- count_anti_idle = 0
- while True:
- CONST.TOKEN = self.make_login()
- escritorios = self.read_from_inteligence(CONST.TOKEN)
- print "escritorios"
- print(json.dumps(escritorios))
- if len(escritorios) == 0:
- print "sem escritorios para esse sistema"
- if count_anti_idle==10:
- #Fazer anti idle a cada 10min
- print "Entrou aquiiii"
- self.anti_idle() #fazer funcao p/ todos os sistemas
- count_anti_idle = 0
- else:
- count_anti_idle = count_anti_idle + 1
- print 'conttt', count_anti_idle
- time.sleep(60)
- else:
- for escr in escritorios:
- print "entrou aquiii"
- data_ultima_atualizacao = escr['data_ultima_atualizacao']
- print "data_ultima_atualizacao", data_ultima_atualizacao
- for oab in escr['advogado']['oab']:
- print(json.dumps(oab))
- hj = datetime.now()
- # print "oab", oab['data_ultima_atualizacao']
- data = [hj.day, hj.month, hj.year]
- data1 = self.dataPorDia(data)
- print "data 1", data1
- data2 = data_ultima_atualizacao
- time.sleep(5)
- resposta = self.checarDatas(data2, data1)
- print "RESPOSTAAAA", resposta
- escTemp = escr['escritorio']
- self.escritorio = escTemp
- if resposta == 2:
- try:
- print "precisa de atualizacao"
- if self.make_consulta_data(oab['oab'], data1, data2):
- # CONST.TOKEN = self.make_login()
- self.pick_process(escr['escritorio'])
- else:
- self.oab_not_find()
- except:
- resposta = 1
- if resposta == 1:
- print "primeira atualizacao"
- if self.make_consulta(oab['oab']):
- self.pick_process(escr['escritorio'])
- else:
- self.oab_not_find()
- else:
- print "processos ja atualizados"
- print 'hey hoooooooooooooooo'
- self.post_setar_data( self.sistema, escTemp['id'])
- def anti_idle(self):
- print '____Anti Idle___'
- return self.browser.anti_idle()
- def make_login(self):
- # while CONST.TOKEN == '':
- try:
- response = requests.post(CONST.INTELIGENCE_URL+CONST.LOGIN_PATH,
- data={'login':'gerentejuscog', 'senha':'123456'},
- timeout=CONST.TIMEOUT)
- if response.status_code == 200:
- print 'Sucesso no login'
- return response.json()['body'].replace('access_token=', '')
- else:
- CONST.TOKEN = ''
- print 'Login falhou'
- return ''
- except Exception as e:
- print 'O login falhou. Talvez exista um erro de conexao: ' + str(e)
- print '======='
- return ''
- def oab_not_find(self):
- print "Oab nao Encontrda"
- print "OAB:", self.oab
- print "Escritorio:",self.escritorio
- time.sleep(10)
- def init_browser(self):
- return BrowserAutomation(self.estado, self.system_url, self.instancia, self.sistema)
- def make_consulta(self, oab):
- return self.browser.make_consulta(oab)
- def make_consulta_data(self, oab, data1, data2):
- return self.browser.make_consulta_data(oab, data1, data2)
- def pick_process(self, escritorio = None):
- return self.browser.pick_process(escritorio)
- def leitura_finalizada(self):
- print "LEITURA_FINALIZADAAAAAAAAAAAAAAAAAA"
- print "escritorio", self.escritorio
- print "sistema", self.sistema
- if self.escritorio == None:
- print "Nao ha escritorios para esse sistema"
- return True
- else:
- try:
- response = requests.post(CONST.INTELIGENCE_URL+CONST.LEITURA_FINALIZADA,
- headers={'Authorization': 'Bearer '+CONST.TOKEN,
- 'Accept': 'application/json, text/plain, /'},
- data={'escritorio_id':self.escritorio['id'], 'sistema_id':self.sistema},
- timeout=CONST.TIMEOUT)
- if response.status_code == 200:
- print 'Sucesso'
- return True
- else:
- print 'Erro ao indicar que finalizou leitura'
- return False
- except Exception as e:
- print 'Falhou. Talvez exista um erro de conexao: ' + str(e)
- print '======='
- return False
- def post_processos_completos(self,data):
- print("upload data to inteligence")
- CONST.TOKEN = self.make_login
- # print json.dumps(data)
- # print "TOKEN:",CONST.TOKEN
- try:
- response = requests.post(CONST.INTELIGENCE_URL+CONST.CADASTRAR_PROCESSOS_COMPLETOS,
- headers={'Authorization': 'Bearer '+CONST.TOKEN,
- 'Accept': 'application/json, text/plain, */*'},
- data=json.dumps(data),
- timeout=CONST.TIMEOUT)
- if response.status_code == 200:
- print 'Processo enviado com sucesso!'
- else:
- print 'Erro no envio dos processos'
- print "response: ",response.status_code
- except Exception as e:
- print 'Falha no envio dos processos: ' + str(e)
- print 'O servico esta rodando sem erros?'
- print '======='
- def read_from_inteligence(self, token, path=CONST.BUSCAR_OABS, params={}):
- print("read_from_inteligence")
- params = {'sistema': self.sistema,
- 'instancia': self.instancia,
- 'sigla': self.estado,
- 'unidade_federativa': self.estado,
- 'mod': self.mod,
- 'set': self.set}
- print params
- try:
- oabs = []
- url = CONST.INTELIGENCE_URL + path
- response = requests.get(url,
- headers={'Authorization': 'Bearer '+token,
- 'Accept': 'application/json, text/plain, /'},
- timeout=CONST.TIMEOUT,
- params=params)
- #print response.status_code
- #print response
- if response.status_code == 200:
- print 'oabs lidos do inteligencia'
- oabs = response.json()
- #print response.json()
- else:
- CONST.TOKEN = ''
- print "oabs"
- print(json.dumps(oabs))
- return oabs
- except:
- CONST.TOKEN = ''
- print 'Falha ao ler oabs do inteligencia.'
- print 'O servico esta rodando sem erros?'
- print '======================================='
- return []
- def upload_data_to_inteligence(self, data, path=CONST.NOVOS_PROCESSOS_INSTANCIA_KRAWLER):
- print("upload data to inteligence")
- # print "json data:",json.dumps(data)
- try:
- response = requests.post(CONST.INTELIGENCE_URL+path,
- headers={'Authorization': 'Bearer '+token,
- 'Accept': 'application/json, text/plain, */*'},
- data=json.dumps(data),
- timeout=CONST.TIMEOUT)
- print response.content
- if response.status_code == 200:
- print 'Dados enviados com sucesso!'
- return response
- else:
- print "Erro no envio de dados"
- CONST.TOKEN = self.make_login
- # time.sleep(90000)
- print '======================================='
- except:
- print "Erro no envio de dados"
- print 'O servico esta rodando sem erros?'
- print '======================================='
- time.sleep(90000)
- def checarDatas(self, data_ultima_atualizacao, dataOntem):
- if data_ultima_atualizacao == None:
- return 1
- elif self.comparaDatas(data_ultima_atualizacao, dataOntem) == 1:
- return 2
- else:
- return False
- def comparaDatas(self, data_ultima_atualizacao, dataOntem):
- if int(dataOntem[0]) < int(data_ultima_atualizacao[0]):
- return -1
- elif int(dataOntem[1]) < int(data_ultima_atualizacao[1]):
- return -1
- elif int(dataOntem[2]) < int(data_ultima_atualizacao[2]):
- return -1
- elif int(dataOntem[0]) == int(data_ultima_atualizacao[0]) and int(dataOntem[1]) == int(data_ultima_atualizacao[1]) and int(dataOntem[2]) == int(dataOntem[2]):
- return 0
- else:
- return 1
- def dataPorDia(self, data):
- dia = data[0]
- mes = data[1]
- ano = data[2]
- if (dia) == 1:
- if int(mes) == 3:
- diaFinal = 28
- mesFinal = 2
- anoFinal = int(ano)
- elif int(mes) == 1:
- diaFinal = 31
- mesFinal = 12
- anoFinal = int(ano) - 1
- elif int(mes) % 2 == 0 and int(mes) != 8:
- diaFinal = 30
- anoFinal = int(ano)
- else:
- diaFinal = 31
- anoFinal = int(ano)
- else:
- diaFinal = int(dia) - 1
- mesFinal = int (mes)
- anoFinal = int(ano)
- if int(dia) <= 9:
- diaInicial = '0' + str(dia)
- else:
- diaInicial = str(dia)
- if int(mes) <= 9:
- mesInicial = '0' + str(mes)
- else:
- mesInicial = str(mes)
- anoInicial = str(ano)
- if int(diaFinal) <= 9:
- diaFinal = '0' + str(diaFinal)
- if int(mesFinal) <= 9:
- mesFinal = '0' + str(mesFinal)
- datas = [diaFinal, mesFinal, anoFinal]
- return datas
- def post_setar_data(self, sistema, escritorio):
- print("upload data to inteligence")
- # print "TOKEN:",CONST.TOKEN
- try:
- response = requests.post(CONST.INTELIGENCE_URL+CONST.SETAR_DATAS,
- headers={'Authorization': 'Bearer '+CONST.TOKEN,
- 'Accept': 'application/json, text/plain, /'},
- data={'sistema': sistema, 'escritorio': escritorio},
- timeout=CONST.TIMEOUT)
- # print response.content
- if response.status_code == 200:
- print 'Processo enviado com sucesso!'
- else:
- print 'Erro no envio dos processos'
- except Exception as e:
- print 'Falha no envio dos processos: ' + str(e)
- print 'O servico esta rodando sem erros?'
- print '======='
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement