Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import json
- import requests
- import collections
- ORDEM_POWERBI_TABLE_IEPG = [
- '#',
- 'Tipo',
- 'Situação',
- 'Título',
- 'Produto',
- 'Quantidade Programada',
- 'Quantidade Executada',
- 'Início',
- 'Prazo final',
- 'Responsável',
- '% Terminado',
- 'Fechado',
- 'Alterado em',
- 'MACRODESAFIO'
- ]
- def setBancoDadosSimplan():
- df = pd.DataFrame()
- def verificaDivisoes(rest=0, offset=100, tc=0):
- rest = tc % offset
- return (tc // offset)+1 if rest > 0 else tc // offset
- def conversaoObjeto(i):
- obj2 = collections.OrderedDict()
- obj2['#'] = i['id']
- obj2["Tipo"] = i['tracker']['name']
- obj2["Situação"] = i['status']['name']
- obj2["Título"] = i['subject']
- obj2["Produto"] = i['custom_fields'][6]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][9]['value']
- obj2["Quantidade Programada"] = i['custom_fields'][9]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][12]['value']
- obj2["Quantidade Executada"] = i['custom_fields'][10]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][14]['value']
- obj2["Prazo final"] = i['due_date']
- obj2["% Terminado"] = float(i['done_ratio'])
- obj2["Início"] = i['start_date']
- obj2["Alterado em"] = i['updated_on']
- obj2["Responsável"] = i['assigned_to']['name']
- obj2["MACRODESAFIO"] = i['custom_fields'][11]['value'] if i['tracker']['name'] == 'Etapa' else i['custom_fields'][15]['value']
- # 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()
- try:
- obj2["Fechado"] = i['closed_on']
- except:
- pass
- return obj2
- URL = 'http://simplan/issues.json?status_id=*'
- HEADERS = {"X-Redmine-API-Key":""}
- first_request = requests.get(url=URL, headers=HEADERS)
- tc = json.loads(first_request.text)['total_count']
- print(f"Primeira request [Total de Atividades]: {tc}")
- for k in range(0, verificaDivisoes(tc=tc)):
- st = f'http://simplan/issues.json?offset={k*100}&limit=100&status_id=*'
- print(f'Doing..{st}')
- temp = requests.get(url=st, headers=HEADERS)
- print(f'Request {k+1} done!')
- j = json.loads(temp.text)
- for issue in j['issues']:
- df = df.append(conversaoObjeto(issue), ignore_index=True)
- return df
- export_df = setBancoDadosSimplan()
- export_df = export_df[ORDEM_POWERBI_TABLE_IEPG]
- 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')
- print('Reordering columns...:')
- print("Done!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement