Advertisement
davidgaf

rEDsimplan

Dec 6th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.84 KB | None | 0 0
  1. import pandas as pd
  2. import json
  3. import requests
  4. import collections
  5.  
  6. ORDEM_POWERBI_TABLE_IEPG = [
  7.     '#',
  8.     'Tipo',
  9.     'Situação',
  10.     'Título',
  11.     'Produto',
  12.     'Quantidade Programada',
  13.     'Quantidade Executada',
  14.     'Início',
  15.     'Prazo final',
  16.     'Responsável',
  17.     '% Terminado',
  18.     'Fechado',
  19.     'Alterado em',
  20.     'MACRODESAFIO'
  21. ]
  22.  
  23. def setBancoDadosSimplan():
  24.  
  25.     df = pd.DataFrame()
  26.  
  27.     def verificaDivisoes(rest=0, offset=100, tc=0):
  28.         rest = tc % offset
  29.         return (tc // offset)+1 if rest > 0 else tc // offset
  30.  
  31.     def conversaoObjeto(i):
  32.  
  33.         obj2 = collections.OrderedDict()
  34.         obj2['#'] = i['id']
  35.         obj2["Tipo"] = i['tracker']['name']
  36.         obj2["Situação"] = i['status']['name']
  37.         obj2["Título"] = i['subject']
  38.         obj2["Produto"] = i['custom_fields'][6]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][9]['value']
  39.         obj2["Quantidade Programada"] = i['custom_fields'][9]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][12]['value']
  40.         obj2["Quantidade Executada"] = i['custom_fields'][10]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][14]['value']
  41.         obj2["Prazo final"] = i['due_date']
  42.         obj2["% Terminado"] = float(i['done_ratio'])
  43.         obj2["Início"] = i['start_date']
  44.         obj2["Alterado em"] = i['updated_on']
  45.         obj2["Responsável"] = i['assigned_to']['name']
  46.         obj2["MACRODESAFIO"] = i['custom_fields'][11]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][15]['value']
  47.         # obj2["MACRODESAFIO.2"] = (i['custom_fields'][11]['value']).split("-")[0].strip() if i['tracker']['name'] == 'Etapa' else (i['custom_fields'][15]['value']).split("-")[0].strip()
  48.         try:
  49.             obj2["Fechado"] = i['closed_on']
  50.         except:
  51.             pass
  52.  
  53.         return obj2
  54.  
  55.     URL = 'http://simplan/issues.json?status_id=*'
  56.     HEADERS = {"X-Redmine-API-Key":""}
  57.    
  58.     first_request = requests.get(url=URL, headers=HEADERS)
  59.     tc = json.loads(first_request.text)['total_count']
  60.  
  61.     print(f"Primeira request [Total de Atividades]: {tc}")
  62.    
  63.     for k in range(0, verificaDivisoes(tc=tc)):
  64.         st = f'http://simplan/issues.json?offset={k*100}&limit=100&status_id=*'
  65.         print(f'Doing..{st}')
  66.         temp = requests.get(url=st, headers=HEADERS)
  67.         print(f'Request {k+1} done!')
  68.         j = json.loads(temp.text)
  69.         for issue in j['issues']:
  70.             df = df.append(conversaoObjeto(issue), ignore_index=True)
  71.  
  72.     return df
  73.  
  74. export_df = setBancoDadosSimplan()
  75. export_df = export_df[ORDEM_POWERBI_TABLE_IEPG]
  76. export_csv = export_df.to_csv(r'C:\Users\david.silva\Pictures\Painel Estratégico\IEPG\issues.csv', sep=";", index=False, decimal=',', encoding='utf-8')
  77. print('Reordering columns...:')
  78.  
  79.  
  80. print("Done!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement