def get_community_object_action_list(nome_comunidade, data_inicial, data_final, tipo_servico, tipo_log, format): listaDeDados = [] listaDeObjetos = [] listaTemp = [] existente = False data_temp = datetime.strptime(data_inicial, format) if tipo_servico == "todos": for row in database.LOG.view('log/stats_by_all_objects',startkey=[nome_comunidade, data_inicial], endkey=[nome_comunidade, data_final,{}], group="true"): if (tipo_log == "leitura" and row.key[3] in VERBOS_LEITURA) or (tipo_log == "escrita" and row.key[3] in VERBOS_ESCRITA) or \ (tipo_log == "todos" and (row.key[3] in VERBOS_LEITURA or row.key[3] in VERBOS_ESCRITA)): if row.key[4] != "none": nome_objeto = core.dispatcher.URL_TO_PAGETITLE[row.key[4]]+": "+row.key[2] if nome_objeto not in listaDeObjetos: listaDeObjetos.append(nome_objeto) for i in listaDeDados: if (converteDataYMDToMDYStrSemHora(row.key[1]) in i[0]) and (nome_objeto in i[2]): listaDeDados.append((converteDataYMDToMDYStrSemHora(row.key[1]), str(int(i[1]) + int(row.value)), nome_objeto)) listaDeDados.remove(i) existente = True break else: existente = False if not existente: listaDeDados.append((converteDataYMDToMDYStrSemHora(row.key[1]), str(row.value), nome_objeto)) listaTemp.append((converteDataYMDToMDYStrSemHora(row.key[1]), nome_objeto)) while (data_temp) <= (datetime.strptime(data_final, format)): for object in listaDeObjetos: #se data_temp = data_incial e não há ações nesta data if ((data_temp) == (datetime.strptime(data_inicial, format))) and ((str(converteDataYMDToMDYStrSemHora(str(data_temp))), object) not in listaTemp): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp))), '0', object)) if ((data_temp) == (datetime.strptime(data_final, format))) and ((str(converteDataYMDToMDYStrSemHora(str(data_temp))), object) not in listaTemp): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp))), '0', object)) if (str(converteDataYMDToMDYStrSemHora(str(data_temp))), object) in listaTemp: if (((str(converteDataYMDToMDYStrSemHora(str(data_temp - timedelta(days=1)))), object) not in listaTemp) and \ ((data_temp - timedelta(days=1)) > (datetime.strptime(data_inicial, format)))): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp - timedelta(days=1)))), '0', object)) if ((str(converteDataYMDToMDYStrSemHora(str(data_temp + timedelta(days=1)))), object) not in listaTemp and \ ((data_temp + timedelta(days=1)) < (datetime.strptime(data_final, format)))): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp + timedelta(days=1)))), '0', object)) data_temp += timedelta(days=1) else: for row in database.LOG.view('log/stats_by_object',startkey=[nome_comunidade, tipo_servico, data_inicial], endkey=[nome_comunidade, tipo_servico, data_final,{}], group="true"): if (tipo_log == "leitura" and row.key[4] in VERBOS_LEITURA) or (tipo_log == "escrita" and row.key[4] in VERBOS_ESCRITA) or \ (tipo_log == "todos" and (row.key[4] in VERBOS_LEITURA or row.key[4] in VERBOS_ESCRITA)): if row.key[3] not in listaDeObjetos: listaDeObjetos.append(row.key[3]) for i in listaDeDados: if (converteDataYMDToMDYStrSemHora(row.key[2]) in i[0]) and (row.key[3] in i[2]): listaDeDados.append((converteDataYMDToMDYStrSemHora(row.key[2]), str(int(i[1]) + int(row.value)), row.key[3])) listaDeDados.remove(i) existente = True break else: existente = False if not existente: listaDeDados.append((converteDataYMDToMDYStrSemHora(row.key[2]), str(row.value), row.key[3])) listaTemp.append((converteDataYMDToMDYStrSemHora(row.key[2]), row.key[3])) while (data_temp) <= (datetime.strptime(data_final, format)): for object in listaDeObjetos: #se data_temp = data_incial e não há ações nesta data if ((data_temp) == (datetime.strptime(data_inicial, format))) and ((str(converteDataYMDToMDYStrSemHora(str(data_temp))), object) not in listaTemp): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp))), '0', object)) if ((data_temp) == (datetime.strptime(data_final, format))) and ((str(converteDataYMDToMDYStrSemHora(str(data_temp))), object) not in listaTemp): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp))), '0', object)) if (str(converteDataYMDToMDYStrSemHora(str(data_temp))), object) in listaTemp: if (((str(converteDataYMDToMDYStrSemHora(str(data_temp - timedelta(days=1)))), object) not in listaTemp) and \ ((data_temp - timedelta(days=1)) > (datetime.strptime(data_inicial, format)))): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp - timedelta(days=1)))), '0', object)) if ((str(converteDataYMDToMDYStrSemHora(str(data_temp + timedelta(days=1)))), object) not in listaTemp and \ ((data_temp + timedelta(days=1)) < (datetime.strptime(data_final, format)))): listaDeDados.append((str(converteDataYMDToMDYStrSemHora(str(data_temp + timedelta(days=1)))), '0', object)) data_temp += timedelta(days=1) listaDeDados.sort(key=lambda x: x[2]) listaDeDados.sort(key=lambda x: (converteDataMDYToYMDStrSemHora(x[0]))) #listaDeDados.sort(key=lambda x: str(x[0]).split("/")[1]) #str(converteDataMDYToYMDStrSemHora(x[0]))) #listaDeDados.sort(key=lambda x: str(x[0]).split("/")[0]) #listaDeDados.sort(key=lambda x: str(x[0]).split("/")[2]) return (listaDeDados, listaDeObjetos)