def update(self): sc = getUtility(ISecurityChecker) sc.enforce("acessar_list_referencia") self.request.set("disable_border", True) self.dados = [] self.dados_protocolo = {} api = getUtility(ISPDOAPI) protocolo = api.getProtocolo() self.dados_protocolo = { "protocolo_id": protocolo.id, "numero": protocolo.numero, "data_protocolo": protocolo.data_protocolo, "assunto": protocolo.assunto, "tipodocumento": protocolo.tipodocumento.nome, "situacao": protocolo.situacao.nome, "url": url("show-protocolo", id=protocolo.id), } for i in protocolo.protocolo: self.dados.append( { "protocolo_id": i.protocolo_id, "referencia_id": i.referencia_id, "numero": i.referencia.numero, "data_protocolo": i.referencia.data_protocolo, "assunto": i.referencia.assunto, "tipodocumento": i.referencia.tipodocumento.nome, "situacao": i.referencia.situacao.nome, "url-remove": url("remove-referencia", protocolo_id=i.protocolo_id, referencia_id=i.referencia_id), } )
def update(self): self.request.set('disable_border', True) self.dados = [] api = getUtility(ISPDOAPI) fluxo = api.getFluxo() self.request.response.setCookie('fluxo_id', fluxo.id) self.dados_fluxo = { 'nome': fluxo.nome, 'url': url('show-fluxo', id=fluxo.id), } for i in fluxo.transicao: self.dados.append({ 'fluxo_id': i.fluxo_id, 'inicial': i.inicial, 'area_origem': i.area_origem.nome, 'url-area-origem': url('show-area', id=i.area_origem_id), 'area_destino': i.area_destino.nome, 'url-area-destino': url('show-area', id=i.area_destino_id), 'url-remove': url('remove-transicao', id=i.id), })
def update(self): sc = getUtility(ISecurityChecker) sc.enforce('acessar_list_referencia') self.request.set('disable_border', True) self.dados = [] self.dados_protocolo = {} api = getUtility(ISPDOAPI) protocolo = api.getProtocolo() self.dados_protocolo = { 'protocolo_id': protocolo.id, 'numero': protocolo.numero, 'data_protocolo': protocolo.data_protocolo, 'assunto': protocolo.assunto, 'tipodocumento': protocolo.tipodocumento.nome, 'situacao': protocolo.situacao.nome, 'url': url('show-protocolo', id=protocolo.id) } for i in protocolo.protocolo: self.dados.append({ 'protocolo_id': i.protocolo_id, 'referencia_id': i.referencia_id, 'numero': i.referencia.numero, 'data_protocolo': i.referencia.data_protocolo, 'assunto': i.referencia.assunto, 'tipodocumento': i.referencia.tipodocumento.nome, 'situacao': i.referencia.situacao.nome, 'url-remove': url('remove-referencia', protocolo_id=i.protocolo_id, referencia_id=i.referencia_id), })
def _destinos(self): sc = getUtility(ISecurityChecker) show_pessoa = sc.check("acessar_show_pessoa") edit_pessoadestino = sc.check("acessar_edit_pessoadestino", protocolo_id=self._protocolo.id) remove_pessoadestino = sc.check("acessar_remove_pessoadestino", protocolo_id=self._protocolo.id) ret = [] for p in self._protocolo.pessoa_destino: i = p.pessoa url_pessoa = show_pessoa and url("show-pessoa", id=i.id) or None url_edit = ( edit_pessoadestino and url("edit-pessoadestino", protocolo_id=self._protocolo.id, pessoa_id=i.id) or None ) url_remove = ( remove_pessoadestino and url("remove-pessoadestino", protocolo_id=self._protocolo.id, pessoa_id=i.id) or None ) ret.append( { "nome": i.nome, "email": i.email, "tipoentrega": p.tipoentrega.nome if p.tipoentrega is not None else "", "data_entrega": p.data_entrega, "objeto_correios": p.objeto_correios, "url": url_pessoa, "url-edit": url_edit, "url-remove": url_remove, } ) return ret
def update(self): sc = getUtility(ISecurityChecker) sc.enforce('acessar_list_notificacao') self.request.set('disable_border', True) self.dados = [] self.dados_pessoa = {} api = getUtility(ISPDOAPI) pessoa = api.getAuthPessoa() self.dados_pessoa = { 'pessoa_id': pessoa.id, 'nome': pessoa.nome, 'email': pessoa.email, 'url': url('show-pessoa', id=pessoa.id) } for i in pessoa.notificacao: self.dados.append({ 'protocolo_id': i.protocolo.id, 'numero': i.protocolo.numero, 'data_protocolo': i.protocolo.data_protocolo, 'assunto': i.protocolo.assunto, 'tipodocumento': i.protocolo.tipodocumento.nome, 'situacao': i.protocolo.situacao.nome, 'url-remove': url('remove-notificacao', protocolo_id=i.protocolo.id), })
def update(self): sc = getUtility(ISecurityChecker) sc.enforce("acessar_list_notificacao") self.request.set("disable_border", True) self.dados = [] self.dados_pessoa = {} api = getUtility(ISPDOAPI) pessoa = api.getAuthPessoa() self.dados_pessoa = { "pessoa_id": pessoa.id, "nome": pessoa.nome, "email": pessoa.email, "url": url("show-pessoa", id=pessoa.id), } for i in pessoa.notificacao: self.dados.append( { "protocolo_id": i.protocolo.id, "numero": i.protocolo.numero, "data_protocolo": i.protocolo.data_protocolo, "assunto": i.protocolo.assunto, "tipodocumento": i.protocolo.tipodocumento.nome, "situacao": i.protocolo.situacao.nome, "url-remove": url("remove-notificacao", protocolo_id=i.protocolo.id), } )
def _EnviaNotificacoes(self, protocolos): """Envia emails de notificação, avisando as pessoas interessadas que os protocolos tramitaram. """ protocolos = list(set(protocolos)) pu = getToolByName(getSite(), 'portal_url') portal = pu.getPortalObject() mh = portal.MailHost session = Session() for protocolo_id in protocolos: notificacoes = session.query(db.Notificacao).\ filter_by(protocolo_id=protocolo_id).all() for notificacao in notificacoes: logger(_(u'Notificando ') + notificacao.pessoa.email) # TODO: refatorar. Essa lista de tramites pode vir # pronta do método TramiteEnvio, evitando notificações # desnecessárias nas tramitações por cópia. tramites = session.query(db.Tramite).\ filter_by(protocolo_id=protocolo_id).\ filter_by(data_recebimento=None).all() for tramite in tramites: d = { 'numero': notificacao.protocolo.numero, 'data_tramitacao': tramite.data_disponibilizacao, 'assunto': notificacao.protocolo.assunto, 'area_origem': tramite.area_anterior.nome, 'responsavel_origem': tramite.area_anterior.responsavel[-1].pessoa.nome, 'area_destino': tramite.area.nome, 'responsavel_destino': tramite.responsavel.pessoa.nome, 'situacao': notificacao.protocolo.situacao.nome, 'url_protocolo': url('show-protocolo', id=notificacao.protocolo.id), 'url_notificacoes': url('list-notificacao') } mfrom = unicode(portal.getProperty('email_from_address'), 'utf-8') mto = notificacao.pessoa.email subject = NOTIFICACAO_ASSUNTO % d body = NOTIFICACAO_MSG % d text = u"From: %s\nTo: %s\nSubject: %s\n\n%s" % ( mfrom, mto, subject, body) try: mh.send(text, immediate=True, charset='utf8') except: logger(_(u'Erro ao enviar a mensagem de notificação.'))
def _origens(self): sc = getUtility(ISecurityChecker) show_pessoa = sc.check("acessar_show_pessoa") remove_pessoaorigem = sc.check("acessar_remove_pessoaorigem", protocolo_id=self._protocolo.id) ret = [] for p in self._protocolo.pessoa_origem: i = p.pessoa url_pessoa = show_pessoa and url("show-pessoa", id=i.id) or None url_remove = ( remove_pessoaorigem and url("remove-pessoaorigem", protocolo_id=self._protocolo.id, pessoa_id=i.id) or None ) ret.append({"nome": i.nome, "email": i.email, "url": url_pessoa, "url-remove": url_remove}) return ret
def _origens(self): sc = getUtility(ISecurityChecker) show_pessoa = sc.check('acessar_show_pessoa') remove_pessoaorigem = sc.check('acessar_remove_pessoaorigem', protocolo_id=self._protocolo.id) ret = [] for p in self._protocolo.pessoa_origem: i = p.pessoa url_pessoa = show_pessoa and url('show-pessoa', id=i.id) or None url_remove = remove_pessoaorigem and url('remove-pessoaorigem', protocolo_id=self._protocolo.id, pessoa_id=i.id) or None ret.append({ 'nome': i.nome, 'email': i.email, 'url': url_pessoa, 'url-remove': url_remove, }) return ret
def _apensado(self): i = self._protocolo.apensado if i is not None: return { 'numero': i.numero, 'url': url('show-protocolo', id=i.id) }
def _observacoes(self): ret = [] sc = getUtility(ISecurityChecker) if not sc.check("visualizar_observacoes", protocolo_id=self._protocolo.id): return ret for i in self._protocolo.observacao: edit_observacao = sc.check("acessar_edit_observacao", protocolo_id=self._protocolo.id, observacao_id=i.id) url_edit = edit_observacao and url("edit-observacao", id=i.id) or None remove_observacao = sc.check( "acessar_remove_observacao", protocolo_id=self._protocolo.id, observacao_id=i.id ) url_remove = remove_observacao and url("remove-observacao", id=i.id) or None ret.append( {"texto": i.texto, "data_observacao": i.data_observacao, "url-edit": url_edit, "url-remove": url_remove} ) return ret
def _anexos(self): ret = [] sc = getUtility(ISecurityChecker) if not sc.check('visualizar_anexos', protocolo_id=self._protocolo.id): return ret for i in self._protocolo.anexo: remove_anexo = sc.check('acessar_remove_anexo', protocolo_id=self._protocolo.id, anexo_id=i.id) url_remove = remove_anexo and url('remove-anexo', id=i.id) or None ret.append({ 'arquivo': i.arquivo, 'tamanho': i.tamanho, 'data_anexo': i.data_anexo, 'download_url': url('download-anexo', id=i.id), 'url-remove': url_remove, }) return ret
def _observacoes(self): ret = [] sc = getUtility(ISecurityChecker) if not sc.check('visualizar_observacoes', protocolo_id=self._protocolo.id): return ret for i in self._protocolo.observacao: edit_observacao = sc.check('acessar_edit_observacao', protocolo_id=self._protocolo.id, observacao_id=i.id) url_edit = edit_observacao and url('edit-observacao', id=i.id) or None remove_observacao = sc.check('acessar_remove_observacao', protocolo_id=self._protocolo.id, observacao_id=i.id) url_remove = remove_observacao and url('remove-observacao', id=i.id) or None ret.append({ 'texto': i.texto, 'data_observacao': i.data_observacao, 'url-edit': url_edit, 'url-remove': url_remove, }) return ret
def _apensos(self): ret = [] for i in self._protocolo.apenso: ret.append({ 'numero': i.numero, 'url': url('show-protocolo', id=i.id), }) return ret
def _referenciado_por(self): ret = [] sc = getUtility(ISecurityChecker) if not sc.check("acessar_list_referencia"): return ret for i in self._protocolo.referencia: ret.append({"numero": i.protocolo.numero, "url": url("show-protocolo", id=i.protocolo_id)}) return ret
def update(self): self.request.set('disable_border', True) self.dados = [] session = Session() items = session.query(db.Responsavel).all() for i in items: self.dados.append({ 'id': i.id, 'area_id': i.area_id, 'area_sigla': i.area.sigla, 'area_nome': i.area.nome, 'pessoa_id': i.pessoa_id, 'pessoa_nome': i.pessoa.nome, 'pessoa_email': i.pessoa.email, 'data_responsavel': i.data_responsavel, 'url-area': url('show-area', id=i.area_id), 'url-pessoa': url('show-pessoa', id=i.pessoa_id), })
def _anexos(self): ret = [] sc = getUtility(ISecurityChecker) if not sc.check("visualizar_anexos", protocolo_id=self._protocolo.id): return ret for i in self._protocolo.anexo: remove_anexo = sc.check("acessar_remove_anexo", protocolo_id=self._protocolo.id, anexo_id=i.id) url_remove = remove_anexo and url("remove-anexo", id=i.id) or None ret.append( { "arquivo": i.arquivo, "tamanho": i.tamanho, "data_anexo": i.data_anexo, "download_url": url("download-anexo", id=i.id), "url-remove": url_remove, } ) return ret
def update(self): self.request.set("disable_border", True) self.dados = [] api = getUtility(ISPDOAPI) fluxo = api.getFluxo() self.request.response.setCookie("fluxo_id", fluxo.id) self.dados_fluxo = {"nome": fluxo.nome, "url": url("show-fluxo", id=fluxo.id)} for i in fluxo.transicao: self.dados.append( { "fluxo_id": i.fluxo_id, "inicial": i.inicial, "area_origem": i.area_origem.nome, "url-area-origem": url("show-area", id=i.area_origem_id), "area_destino": i.area_destino.nome, "url-area-destino": url("show-area", id=i.area_destino_id), "url-remove": url("remove-transicao", id=i.id), } )
def _EnviaNotificacoes(self, protocolos): """Envia emails de notificação, avisando as pessoas interessadas que os protocolos tramitaram. """ protocolos = list(set(protocolos)) pu = getToolByName(getSite(), 'portal_url') portal = pu.getPortalObject() mh = portal.MailHost session = Session() for protocolo_id in protocolos: notificacoes = session.query(db.Notificacao).\ filter_by(protocolo_id=protocolo_id).all() for notificacao in notificacoes: logger(_(u'Notificando ') + notificacao.pessoa.email) # TODO: refatorar. Essa lista de tramites pode vir # pronta do método TramiteEnvio, evitando notificações # desnecessárias nas tramitações por cópia. tramites = session.query(db.Tramite).\ filter_by(protocolo_id=protocolo_id).\ filter_by(data_recebimento=None).all() for tramite in tramites: d = {'numero': notificacao.protocolo.numero, 'data_tramitacao': tramite.data_disponibilizacao, 'assunto': notificacao.protocolo.assunto, 'area_origem': tramite.area_anterior.nome, 'responsavel_origem': tramite.area_anterior.responsavel[-1].pessoa.nome, 'area_destino': tramite.area.nome, 'responsavel_destino': tramite.responsavel.pessoa.nome, 'situacao': notificacao.protocolo.situacao.nome, 'url_protocolo': url('show-protocolo', id=notificacao.protocolo.id), 'url_notificacoes': url('list-notificacao')} mfrom=unicode(portal.getProperty('email_from_address'), 'utf-8') mto=notificacao.pessoa.email subject=NOTIFICACAO_ASSUNTO % d body=NOTIFICACAO_MSG % d text = u"From: %s\nTo: %s\nSubject: %s\n\n%s" % (mfrom, mto, subject, body) try: mh.send(text, immediate=True, charset='utf8') except: logger(_(u'Erro ao enviar a mensagem de notificação.'))
def update(self): self.request.set("disable_border", True) self.dados = [] session = Session() items = session.query(db.Responsavel).all() for i in items: self.dados.append( { "id": i.id, "area_id": i.area_id, "area_sigla": i.area.sigla, "area_nome": i.area.nome, "pessoa_id": i.pessoa_id, "pessoa_nome": i.pessoa.nome, "pessoa_email": i.pessoa.email, "data_responsavel": i.data_responsavel, "url-area": url("show-area", id=i.area_id), "url-pessoa": url("show-pessoa", id=i.pessoa_id), } )
def _referenciado_por(self): ret = [] sc = getUtility(ISecurityChecker) if not sc.check('acessar_list_referencia'): return ret for i in self._protocolo.referencia: ret.append({ 'numero': i.protocolo.numero, 'url': url('show-protocolo', id=i.protocolo_id), }) return ret
def update(self): self.request.set('disable_border', True) self.dados = [] api = getUtility(ISPDOAPI) fluxo = api.getFluxo() self.request.response.setCookie('fluxo_id', fluxo.id) self.dados_fluxo = { 'nome':fluxo.nome, 'url': url('show-fluxo', id=fluxo.id), } for i in fluxo.transicao: self.dados.append({ 'fluxo_id': i.fluxo_id, 'inicial': i.inicial, 'area_origem': i.area_origem.nome, 'url-area-origem': url('show-area', id=i.area_origem_id), 'area_destino': i.area_destino.nome, 'url-area-destino': url('show-area', id=i.area_destino_id), 'url-remove': url('remove-transicao', id=i.id), })
def _menu(self): sc = getUtility(ISecurityChecker) protocolo_id = self._protocolo.id apenso_id = self._protocolo.apenso_id ret = [] if sc.check('acessar_edit_protocolo', protocolo_id=protocolo_id): ret.append({'url': url('edit-protocolo', id=protocolo_id), 'titulo': _(u'Atualizar Protocolo'), 'id': 'overlay-edit-protocolo'}) if sc.check('acessar_add_observacao', protocolo_id=protocolo_id): ret.append({'url': url('add-observacao', protocolo_id=protocolo_id), 'titulo': _(u'Adicionar Observação'), 'class': 'overlay-add-edit-observacao'}) if sc.check('acessar_add_anexo', protocolo_id=protocolo_id): ret.append({'url': url('add-anexo', protocolo_id=protocolo_id), 'titulo': _(u'Adicionar Anexo')}) if sc.check('acessar_list_referencia', protocolo_id=protocolo_id): ret.append({'url': url('list-referencia', protocolo_id=protocolo_id), 'titulo': _(u'Referências')}) if sc.check('acessar_add_apenso', protocolo_id=protocolo_id, apenso_id=apenso_id): ret.append({'url': url('add-apenso', protocolo_id=protocolo_id), 'titulo': _(u'Apenso')}) if sc.check('acessar_add_tramite', protocolo_id=protocolo_id): ret.append({'url': url('add-tramite', protocolo_id=protocolo_id), 'titulo': _(u'Tramitar')}) return ret
def _getProtocolosData(self, protocolos): ret = [] for i in protocolos: ret.append({ 'id': i.id, 'numero': i.numero, 'data_protocolo': i.data_protocolo, 'assunto': i.assunto, 'tipodocumento': i.tipodocumento.nome, 'situacao': i.situacao.nome, 'url': url('show-protocolo', id=i.id), }) return ret
def _destinos(self): sc = getUtility(ISecurityChecker) show_pessoa = sc.check('acessar_show_pessoa') edit_pessoadestino = sc.check('acessar_edit_pessoadestino', protocolo_id=self._protocolo.id) remove_pessoadestino = sc.check('acessar_remove_pessoadestino', protocolo_id=self._protocolo.id) ret = [] for p in self._protocolo.pessoa_destino: i = p.pessoa url_pessoa = show_pessoa and url('show-pessoa', id=i.id) or None url_edit = edit_pessoadestino and url('edit-pessoadestino', protocolo_id=self._protocolo.id, pessoa_id=i.id) or None url_remove = remove_pessoadestino and url('remove-pessoadestino', protocolo_id=self._protocolo.id, pessoa_id=i.id) or None ret.append({ 'nome': i.nome, 'email': i.email, 'tipoentrega': p.tipoentrega.nome if p.tipoentrega is not None else '', 'data_entrega': p.data_entrega, 'objeto_correios': p.objeto_correios, 'url': url_pessoa, 'url-edit': url_edit, 'url-remove': url_remove, }) return ret
def update(self): self.request.set('disable_border', True) self.dados = [] session = Session() items = session.query(db.Fluxo).all() for i in items: self.dados.append({ 'id': i.id, 'nome': i.nome, 'tipoprotocolo': self._tipo_protocolo(i.tipoprotocolo), 'tipodocumento': i.tipodocumento.nome, 'flexivel': i.flexivel, 'url-transicao': url('list-transicao', fluxo_id=i.id), })
def update(self): self.request.set("disable_border", True) self.dados = [] session = Session() items = session.query(db.Fluxo).all() for i in items: self.dados.append( { "id": i.id, "nome": i.nome, "tipoprotocolo": self._tipo_protocolo(i.tipoprotocolo), "tipodocumento": i.tipodocumento.nome, "flexivel": i.flexivel, "url-transicao": url("list-transicao", fluxo_id=i.id), } )
def _tramites(self): sc = getUtility(ISecurityChecker) show_pessoa = sc.check('acessar_show_pessoa') visualizar_despachos = sc.check('visualizar_despachos', protocolo_id=self._protocolo.id) ret = [] for i in self._protocolo.tramite: url_responsavel = show_pessoa and url('show-pessoa', id=i.responsavel.pessoa.id) or None despacho = visualizar_despachos and i.despacho or None ret.append({ 'data_disponibilizacao': i.data_disponibilizacao, 'data_recebimento': i.data_recebimento, 'area': i.area.sigla, 'nome_responsavel': i.responsavel.pessoa.nome, 'url-responsavel': url_responsavel, 'despacho': despacho, }) return ret
def _tramites(self): sc = getUtility(ISecurityChecker) show_pessoa = sc.check("acessar_show_pessoa") visualizar_despachos = sc.check("visualizar_despachos", protocolo_id=self._protocolo.id) ret = [] for i in self._protocolo.tramite: url_responsavel = show_pessoa and url("show-pessoa", id=i.responsavel.pessoa.id) or None despacho = visualizar_despachos and i.despacho or None ret.append( { "data_disponibilizacao": i.data_disponibilizacao, "data_recebimento": i.data_recebimento, "area": i.area.sigla, "nome_responsavel": i.responsavel.pessoa.nome, "url-responsavel": url_responsavel, "despacho": despacho, } ) return ret
def _tramites(self): sc = getUtility(ISecurityChecker) show_pessoa = sc.check('acessar_show_pessoa') visualizar_despachos = sc.check('visualizar_despachos', protocolo_id=self._protocolo.id) ret = [] for i in self._protocolo.tramite: if i.responsavel.pessoa: url_responsavel = show_pessoa and url('show-pessoa', id=i.responsavel.pessoa.id) or None else: url_responsavel = None despacho = visualizar_despachos and i.despacho or None ret.append({ 'data_disponibilizacao': i.data_disponibilizacao, 'data_recebimento': i.data_recebimento, 'area': i.area.sigla, 'nome_responsavel': i.responsavel.pessoa.nome, 'url-responsavel': url_responsavel, 'despacho': despacho, }) return ret
def _menu(self): sc = getUtility(ISecurityChecker) protocolo_id = self._protocolo.id apenso_id = self._protocolo.apenso_id ret = [] if sc.check("acessar_edit_protocolo", protocolo_id=protocolo_id): ret.append( { "url": url("edit-protocolo", id=protocolo_id), "titulo": _(u"Atualizar Protocolo"), "id": "overlay-edit-protocolo", } ) if sc.check("acessar_add_observacao", protocolo_id=protocolo_id): ret.append( { "url": url("add-observacao", protocolo_id=protocolo_id), "titulo": _(u"Adicionar Observação"), "class": "overlay-add-edit-observacao", } ) if sc.check("acessar_add_anexo", protocolo_id=protocolo_id): ret.append({"url": url("add-anexo", protocolo_id=protocolo_id), "titulo": _(u"Adicionar Anexo")}) if sc.check("acessar_list_referencia", protocolo_id=protocolo_id): ret.append({"url": url("list-referencia", protocolo_id=protocolo_id), "titulo": _(u"Referências")}) if sc.check("acessar_add_apenso", protocolo_id=protocolo_id, apenso_id=apenso_id): ret.append({"url": url("add-apenso", protocolo_id=protocolo_id), "titulo": _(u"Apenso")}) if sc.check("acessar_add_tramite", protocolo_id=protocolo_id): ret.append({"url": url("add-tramite", protocolo_id=protocolo_id), "titulo": _(u"Tramitar")}) return ret
def show_url(self, id, vs=None): vs = self.view_sufix if vs is None else vs return url('show-'+vs, id=id)
def _apensos(self): ret = [] for i in self._protocolo.apenso: ret.append({"numero": i.numero, "url": url("show-protocolo", id=i.id)}) return ret
def _apensado(self): i = self._protocolo.apensado if i is not None: return {"numero": i.numero, "url": url("show-protocolo", id=i.id)}
def add_url(self, vs=None): vs = self.view_sufix if vs is None else vs return url('add-'+vs)
def _consulta_protocolos(self, dados): session = Session() items = session.query(db.Protocolo) tipoprotocolo = dados.get('tipoprotocolo', None) if tipoprotocolo is not None: items = items.filter_by(tipoprotocolo=tipoprotocolo) tipodocumento = dados.get('tipodocumento', None) if tipodocumento is not None: tipodocumento_id = session.query( db.TipoDocumento).filter_by(nome=tipodocumento).first().id items = items.filter_by(tipodocumento_id=tipodocumento_id) situacao = dados.get('situacao', None) if situacao is not None: situacao_id = session.query( db.Situacao).filter_by(nome=situacao).first().id items = items.filter_by(situacao_id=situacao_id) origem = dados.get('origem', None) if origem is not None: pessoa1 = aliased(db.Pessoa) items = items.join(db.PessoaOrigem).join(pessoa1) clause = rdb.or_(pessoa1.nome.contains(origem), pessoa1.nome.ilike(origem)) items = items.filter(clause) destino = dados.get('destino', None) if destino is not None: pessoa2 = aliased(db.Pessoa) items = items.join(db.PessoaDestino).join(pessoa2) clause = rdb.or_(pessoa2.nome.contains(destino), pessoa2.nome.ilike(destino)) items = items.filter(clause) assunto = dados.get('assunto', None) if assunto is not None: clause = rdb.or_(db.Protocolo.assunto.contains(assunto), db.Protocolo.assunto.ilike(assunto)) items = items.filter(clause) area = dados.get('area', None) if area is not None: area_tb = aliased(db.Area) area_id = area_tb.id inbox1 = aliased(db.TramiteInbox) items = items.join(inbox1).filter_by(area_id=area_id) tempo_inativo = dados.get('inativo', None) if tempo_inativo is not None: tempo_inativo = int(tempo_inativo) d = datetime.datetime.now() - datetime.timedelta( days=tempo_inativo) inbox2 = aliased(db.TramiteInbox) items = items.join(inbox2).filter(inbox2.version_date < d) ret = [] resultado = items.limit(SEARCH_LIMIT).all() for i in resultado: ret.append({ 'id': i.id, 'numero': i.numero, 'data_protocolo': i.data_protocolo.strftime('%d/%m/%Y'), 'assunto': i.assunto, 'tipodocumento': i.tipodocumento.nome, 'situacao': i.situacao.nome, 'url': url('show-protocolo', id=i.id), }) return ret