Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.87 KB | None | 0 0
  1. from app.browser_automation.browser_automation import BrowserAutomation
  2. import requests
  3. import json
  4. import time
  5. import os
  6. from os import listdir
  7. from os.path import isfile, join
  8. import CONST
  9. import datetime
  10. from selenium import webdriver
  11. import smtplib
  12.  
  13. from datetime import datetime
  14. from selenium import webdriver
  15. from selenium.webdriver.support import ui
  16. from selenium.webdriver.common.by import By
  17. from selenium.webdriver.common.keys import Keys
  18. from selenium.webdriver.support.ui import Select
  19. from selenium.webdriver.support import expected_conditions as EC
  20.  
  21. # browser deveria ficar dentro da variavel global de classe e sers importada ou ter o init reescrito para outras funcoes
  22.  
  23.  
  24. class EternalKrawlerOab:
  25.     def __init__(self, system_url, instancia, sistema, estado , oab, advogado, escritorio, mod=1, set_val=0):
  26.         self.system_url = system_url
  27.         self.instancia = instancia
  28.         self.sistema = sistema
  29.         self.estado = estado
  30.  
  31.         self.advogado = advogado
  32.         self.oab = oab
  33.        
  34.         self.escritorio = escritorio
  35.  
  36.         self.mod = mod
  37.         self.set = set_val
  38.         self.browser = self.init_browser()
  39.  
  40.     def init(self):
  41.         # if self.oab != None:
  42.         self.update_oab()
  43.         print "-- Processos Importados --\n___FINAL DA ROTINA___"
  44.         if not self.leitura_finalizada():
  45.             time.sleep(100000)
  46.         time.sleep(5)
  47.         # else:
  48.         #   self.upload_processo_instancia()
  49.         # self.update_oab()
  50.         # print "-- Processos Importados --\n__FINAL DA ROTINA__"
  51.         # if not self.leitura_finalizada():
  52.   #             time.sleep(100000)
  53.         # time.sleep(5)
  54.  
  55.     def update_oab(self):
  56.         # CONST.TOKEN = self.make_login()
  57.         # self.update = True
  58.         # if not self.update:
  59.         #   print "OAB:", self.oab
  60.         #   if self.make_consulta(self.oab):
  61.         #       CONST.TOKEN = self.make_login()
  62.         #       self.pick_process()
  63.         #   else:
  64.         #       self.oab_not_find()
  65.         # else:
  66.         count_anti_idle = 0
  67.         while True:
  68.             CONST.TOKEN = self.make_login()
  69.             escritorios = self.read_from_inteligence(CONST.TOKEN)
  70.             print "escritorios"
  71.             print(json.dumps(escritorios))
  72.             if len(escritorios) == 0:
  73.                 print "sem escritorios para esse sistema"
  74.                 if count_anti_idle==10:
  75.                 #Fazer anti idle a cada 10min
  76.                     print "Entrou aquiiii"
  77.                     self.anti_idle() #fazer funcao p/ todos os sistemas
  78.                     count_anti_idle = 0
  79.                 else:
  80.                     count_anti_idle = count_anti_idle + 1
  81.                     print 'conttt', count_anti_idle
  82.                     time.sleep(60)
  83.             else:
  84.                 for escr in escritorios:
  85.                     print "entrou aquiii"
  86.                     data_ultima_atualizacao = escr['data_ultima_atualizacao']
  87.                     print "data_ultima_atualizacao", data_ultima_atualizacao
  88.                     for oab in escr['advogado']['oab']:
  89.                         print(json.dumps(oab))
  90.                         hj = datetime.now()
  91.                         # print "oab", oab['data_ultima_atualizacao']
  92.                         data = [hj.day, hj.month, hj.year]
  93.  
  94.                         data1 = self.dataPorDia(data)
  95.                         print "data 1", data1
  96.                         data2 = data_ultima_atualizacao
  97.                         time.sleep(5)
  98.                         resposta = self.checarDatas(data2, data1)
  99.                         print "RESPOSTAAAA", resposta
  100.                         escTemp = escr['escritorio']
  101.                         self.escritorio = escTemp
  102.                         if resposta == 2:
  103.                             try:
  104.                                 print "precisa de atualizacao"
  105.                                 if  self.make_consulta_data(oab['oab'], data1, data2):
  106.                                     # CONST.TOKEN = self.make_login()
  107.                                     self.pick_process(escr['escritorio'])
  108.                                 else:
  109.                                     self.oab_not_find()
  110.                             except:
  111.                                 resposta = 1
  112.  
  113.                         if resposta == 1:
  114.                             print "primeira atualizacao"
  115.                             if  self.make_consulta(oab['oab']):
  116.                                 self.pick_process(escr['escritorio'])
  117.                             else:
  118.                                 self.oab_not_find()
  119.                        
  120.                         else:
  121.                             print "processos ja atualizados"
  122.                         print 'hey hoooooooooooooooo'
  123.                         self.post_setar_data( self.sistema, escTemp['id'])
  124.  
  125.     def anti_idle(self):
  126.         print '____Anti Idle___'
  127.         return self.browser.anti_idle()
  128.     def make_login(self):
  129.         # while CONST.TOKEN == '':
  130.         try:
  131.             response = requests.post(CONST.INTELIGENCE_URL+CONST.LOGIN_PATH,
  132.                                         data={'login':'gerentejuscog', 'senha':'123456'},
  133.                                         timeout=CONST.TIMEOUT)
  134.             if response.status_code == 200:
  135.                 print 'Sucesso no login'
  136.                 return response.json()['body'].replace('access_token=', '')
  137.             else:
  138.                 CONST.TOKEN = ''
  139.                 print 'Login falhou'
  140.                 return ''
  141.         except Exception as e:
  142.             print 'O login falhou. Talvez exista um erro de conexao: ' + str(e)
  143.             print '======='
  144.             return ''
  145.  
  146.     def oab_not_find(self):
  147.        
  148.         print "Oab nao Encontrda"
  149.         print "OAB:", self.oab
  150.         print "Escritorio:",self.escritorio
  151.         time.sleep(10)                                                                                                                                                                                            
  152.  
  153.     def init_browser(self):
  154.         return BrowserAutomation(self.estado, self.system_url, self.instancia, self.sistema)
  155.  
  156.     def make_consulta(self, oab):
  157.         return self.browser.make_consulta(oab)
  158.  
  159.     def make_consulta_data(self, oab, data1, data2):
  160.         return self.browser.make_consulta_data(oab, data1, data2)
  161.  
  162.     def pick_process(self, escritorio = None):
  163.         return self.browser.pick_process(escritorio)
  164.  
  165.     def leitura_finalizada(self):
  166.  
  167.         print "LEITURA_FINALIZADAAAAAAAAAAAAAAAAAA"
  168.         print "escritorio", self.escritorio
  169.         print "sistema", self.sistema
  170.  
  171.         if self.escritorio == None:
  172.             print "Nao ha escritorios para esse sistema"
  173.             return True
  174.         else:
  175.             try:
  176.                 response = requests.post(CONST.INTELIGENCE_URL+CONST.LEITURA_FINALIZADA,
  177.                                             headers={'Authorization': 'Bearer '+CONST.TOKEN,
  178.                                                     'Accept': 'application/json, text/plain, /'},
  179.                                             data={'escritorio_id':self.escritorio['id'], 'sistema_id':self.sistema},
  180.                                             timeout=CONST.TIMEOUT)
  181.                 if response.status_code == 200:
  182.                     print 'Sucesso'
  183.                     return True
  184.                 else:
  185.                     print 'Erro ao indicar que finalizou leitura'
  186.                     return False
  187.             except Exception as e:
  188.                 print 'Falhou. Talvez exista um erro de conexao: ' + str(e)
  189.                 print '======='
  190.                 return False
  191.  
  192.     def post_processos_completos(self,data):
  193.         print("upload data to inteligence")
  194.         CONST.TOKEN = self.make_login
  195.         # print json.dumps(data)
  196.         # print "TOKEN:",CONST.TOKEN
  197.         try:
  198.             response = requests.post(CONST.INTELIGENCE_URL+CONST.CADASTRAR_PROCESSOS_COMPLETOS,
  199.                                         headers={'Authorization': 'Bearer '+CONST.TOKEN,
  200.                                                 'Accept': 'application/json, text/plain, */*'},
  201.                                         data=json.dumps(data),
  202.                                         timeout=CONST.TIMEOUT)
  203.             if response.status_code == 200:
  204.                 print 'Processo enviado com sucesso!'
  205.             else:
  206.                 print 'Erro no envio dos processos'
  207.                 print "response: ",response.status_code
  208.         except Exception as e:
  209.             print 'Falha no envio dos processos: ' + str(e)
  210.             print 'O servico esta rodando sem erros?'
  211.             print '======='
  212.  
  213.  
  214.     def read_from_inteligence(self, token, path=CONST.BUSCAR_OABS, params={}):
  215.         print("read_from_inteligence")
  216.        
  217.         params = {'sistema': self.sistema,
  218.                             'instancia': self.instancia,
  219.                             'sigla': self.estado,
  220.                             'unidade_federativa': self.estado,
  221.                             'mod': self.mod,
  222.                             'set': self.set}
  223.         print params
  224.         try:
  225.             oabs = []
  226.             url = CONST.INTELIGENCE_URL + path
  227.            
  228.             response = requests.get(url,
  229.                            headers={'Authorization': 'Bearer '+token,
  230.                                     'Accept': 'application/json, text/plain, /'},
  231.                             timeout=CONST.TIMEOUT,
  232.                             params=params)
  233.             #print response.status_code
  234.             #print response
  235.  
  236.             if response.status_code == 200:
  237.                 print 'oabs lidos do inteligencia'
  238.                 oabs = response.json()
  239.                 #print response.json()
  240.             else:
  241.                 CONST.TOKEN = ''
  242.  
  243.             print "oabs"
  244.             print(json.dumps(oabs))
  245.             return oabs
  246.         except:
  247.             CONST.TOKEN = ''
  248.             print 'Falha ao ler oabs do inteligencia.'
  249.             print 'O servico esta rodando sem erros?'
  250.             print '======================================='
  251.             return []
  252.  
  253.     def upload_data_to_inteligence(self, data, path=CONST.NOVOS_PROCESSOS_INSTANCIA_KRAWLER):
  254.         print("upload data to inteligence")
  255.         # print "json data:",json.dumps(data)
  256.         try:
  257.             response = requests.post(CONST.INTELIGENCE_URL+path,
  258.                             headers={'Authorization': 'Bearer '+token,
  259.                                      'Accept': 'application/json, text/plain, */*'},
  260.                             data=json.dumps(data),
  261.                             timeout=CONST.TIMEOUT)
  262.             print response.content
  263.             if response.status_code == 200:
  264.                 print 'Dados enviados com sucesso!'
  265.                 return response
  266.             else:
  267.                 print "Erro no envio de dados"
  268.                 CONST.TOKEN = self.make_login
  269.                 # time.sleep(90000)
  270.                 print '======================================='
  271.         except:
  272.             print "Erro no envio de dados"
  273.             print 'O servico esta rodando sem erros?'
  274.             print '======================================='
  275.             time.sleep(90000)
  276.  
  277.     def checarDatas(self, data_ultima_atualizacao, dataOntem):
  278.    
  279.         if data_ultima_atualizacao == None:
  280.             return 1
  281.         elif self.comparaDatas(data_ultima_atualizacao, dataOntem) == 1:
  282.             return 2
  283.         else:
  284.             return False
  285.  
  286.     def comparaDatas(self, data_ultima_atualizacao, dataOntem):
  287.         if int(dataOntem[0]) < int(data_ultima_atualizacao[0]):
  288.             return -1
  289.         elif int(dataOntem[1]) < int(data_ultima_atualizacao[1]):
  290.             return -1
  291.         elif int(dataOntem[2]) < int(data_ultima_atualizacao[2]):
  292.             return -1
  293.         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]):
  294.             return 0
  295.         else:
  296.             return 1
  297.  
  298.     def dataPorDia(self, data):
  299.         dia = data[0]
  300.         mes = data[1]
  301.         ano = data[2]
  302.  
  303.         if (dia) == 1:
  304.             if int(mes) == 3:
  305.                 diaFinal = 28
  306.                 mesFinal = 2
  307.                 anoFinal = int(ano)
  308.             elif int(mes) == 1:
  309.                 diaFinal = 31
  310.                 mesFinal = 12
  311.                 anoFinal = int(ano) - 1
  312.             elif int(mes) % 2 == 0 and int(mes) != 8:
  313.                 diaFinal = 30
  314.                 anoFinal = int(ano)
  315.             else:
  316.                 diaFinal = 31
  317.                 anoFinal = int(ano)
  318.         else:
  319.             diaFinal = int(dia) - 1
  320.             mesFinal = int (mes)
  321.             anoFinal = int(ano)
  322.  
  323.         if int(dia) <= 9:
  324.             diaInicial = '0' + str(dia)
  325.         else:
  326.             diaInicial = str(dia)
  327.         if int(mes) <= 9:
  328.             mesInicial = '0' + str(mes)
  329.         else:
  330.             mesInicial = str(mes)
  331.         anoInicial = str(ano)
  332.  
  333.         if int(diaFinal) <= 9:
  334.             diaFinal = '0' + str(diaFinal)
  335.         if int(mesFinal) <= 9:
  336.             mesFinal = '0' + str(mesFinal)
  337.  
  338.         datas = [diaFinal, mesFinal, anoFinal]
  339.         return datas
  340.  
  341.     def post_setar_data(self, sistema, escritorio):
  342.                 print("upload data to inteligence")
  343.             # print "TOKEN:",CONST.TOKEN
  344.             try:
  345.                 response = requests.post(CONST.INTELIGENCE_URL+CONST.SETAR_DATAS,
  346.                                             headers={'Authorization': 'Bearer '+CONST.TOKEN,
  347.                                                     'Accept': 'application/json, text/plain, /'},
  348.                                             data={'sistema': sistema, 'escritorio': escritorio},
  349.                                             timeout=CONST.TIMEOUT)
  350.                 # print response.content
  351.                 if response.status_code == 200:
  352.                     print 'Processo enviado com sucesso!'
  353.                 else:
  354.                     print 'Erro no envio dos processos'
  355.             except Exception as e:
  356.                 print 'Falha no envio dos processos: ' + str(e)
  357.                 print 'O servico esta rodando sem erros?'
  358.                 print '======='
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement