def avaliar(self, avaliado, avaliacao_valor, email, relatorio_id): avaliacao = Avaliacoes() try: relatorio = Relatorio.objects(pk=relatorio_id).first() except ValidationError: raise ReportNotFound() if relatorio == None: raise ReportNotFound() for tipo in ['eventosAusentes', 'eventosPresentes', 'proposicoes']: for item in relatorio.to_dict()[tipo]: if 'id' in item and str(item['id']) == avaliado: avaliacao.avaliado = item break if avaliacao.avaliado == {}: raise ItemNotFound() avaliacao.email = email avaliacao.relatorioId = ObjectId(relatorio.pk) avaliacao.avaliacao = avaliacao_valor avaliacao.parlamentar = relatorio.parlamentar avaliacao_existente = Avaliacoes.objects( avaliado__id__=avaliacao.avaliado['id'], parlamentar__id__=relatorio.parlamentar.id, parlamentar__cargo=relatorio.parlamentar.cargo, email=email, relatorioId=relatorio.pk) if avaliacao_existente: Avaliacoes.objects(pk=avaliacao_existente.first().pk).update_one( set__avaliacao=avaliacao['avaliacao']) else: avaliacao.save()
def verificar_relatorio(self, parlamentar, data_final, cargo, periodo): brasilia_tz = pytz.timezone('America/Sao_Paulo') data_inicial = datetime.strptime( data_final, '%Y-%m-%d') - timedelta(days=int(periodo)) relatorio = Relatorio.objects( parlamentar__id__=parlamentar, parlamentar__cargo=cargo, data_final=brasilia_tz.localize( datetime.strptime(data_final, '%Y-%m-%d')), data_inicial=brasilia_tz.localize(data_inicial)) return relatorio.first() if relatorio else None
def buscar_por_parlamentar(self, cargo, parlamentar_id): return json.loads( Relatorio.objects(parlamentar__id__=parlamentar_id, parlamentar__cargo=cargo).to_json())
def obter_por_id(self, relatorio_id): try: return Relatorio.objects(pk=relatorio_id).first() except ValidationError: return None