def _valida_privilegio_criador_anexo(self, **kwargs): """O anexo deve ter sido criado pelo usuário que quer apagá-lo. Não deve existir um tramite com data de disponibilização posterior a data do anexo. """ anexo_id = kwargs.get('anexo_id', None) protocolo_id = kwargs.get('protocolo_id', None) if anexo_id is None or protocolo_id is None: logger( _(u'O método _valida_privilegio_criador_anexo não recebeu os parâmetros anexo_id ou protocolo_id.' )) return False session = Session() api = getUtility(ISPDOAPI) usuario = api.getAuthId() anexo = session.query(db.Anexo).\ filter_by(id=anexo_id).\ filter_by(protocolo_id=protocolo_id).\ filter_by(usuario=usuario).first() if anexo is None: return False tramite = session.query(db.Tramite).\ filter_by(protocolo_id=anexo.protocolo_id).\ filter(db.Tramite.data_disponibilizacao > anexo.data_anexo).first() return not bool(tramite)
def _valida_protocolo_fluxo_area_inicial(self, **kwargs): """O tipo de protocolo e o tipo de documento possuem uma definição de fluxo rigoroso. A área onde o usuário está lotado deve corresponder a uma área inicial de uma das transições desse fluxo. """ tipoprotocolo = kwargs.get('tipoprotocolo', None) tipodocumento_id = kwargs.get('tipodocumento_id', None) if tipoprotocolo is None or tipodocumento_id is None: logger(_(u'O método _valida_protocolo_fluxo_area_inicial não recebeu os parâmetros tipoprotocolo e tipodocumento_id.')) return False area_id_auth = self._get_area_usuario() if area_id_auth is None: return False session = Session() fluxo = session.query(db.Fluxo).\ filter_by(tipoprotocolo=tipoprotocolo).\ filter_by(tipodocumento_id=tipodocumento_id).\ filter_by(flexivel=False).first() if fluxo is None: return True return bool(session.query(db.Transicao).\ filter_by(fluxo_id=fluxo.id).\ filter_by(area_origem_id=area_id_auth).\ filter_by(inicial=True).first())
def _notificaResponsaveis(self, protocolos): """Envia email notificando tramitação para a pessoa destino """ pu = getToolByName(getSite(), 'portal_url') portal = pu.getPortalObject() mh = portal.MailHost session = Session() protocolos = list(set(protocolos)) for protocolo_id in protocolos: protocolo = session.query(db.Protocolo).get(protocolo_id) # 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': protocolo.numero, 'data_tramitacao': tramite.data_disponibilizacao, 'assunto': 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': protocolo.situacao.nome, 'despacho': tramite.despacho, 'url_protocolo': url('show-protocolo', id=protocolo.id) } mfrom = unicode(portal.getProperty('email_from_address'), 'utf-8') mto = tramite.responsavel.pessoa.email subject = NOTIFICACAO_OBRIG_ASSUNTO % d body = NOTIFICACAO_OBRIG_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') logger(_(u'Enviou...')) logger(_(text)) except: logger(_(u'Erro ao enviar a mensagem de notificação.'))
def _valida_privilegio_criador_observacao(self, **kwargs): """A observação deve ter sido criada pelo usuário que quer modificá-la ou apagá-la. Não deve existir um tramite com data de disponibilização posterior a data da observação. """ observacao_id = kwargs.get('observacao_id', None) protocolo_id = kwargs.get('protocolo_id', None) if observacao_id is None or protocolo_id is None: logger( _(u'O método _valida_privilegio_criador_observacao não recebeu os parâmetros observacao_id ou protocolo_id.' )) return False session = Session() api = getUtility(ISPDOAPI) usuario = api.getAuthId() observacao = session.query(db.Observacao).\ filter_by(id=observacao_id).\ filter_by(protocolo_id=protocolo_id).\ filter_by(usuario=usuario).first() if observacao is None: return False tramite = session.query(db.Tramite).\ filter_by(protocolo_id=observacao.protocolo_id).\ filter(db.Tramite.data_disponibilizacao > observacao.data_observacao).first() return not bool(tramite)
def _valida_protocolo_fluxo(self, **kwargs): """O tipo de protocolo e o tipo de documento possuem uma definição de fluxo rigoroso. A tramitação de envio deve seguir uma transição desse fluxo. """ protocolo_id = kwargs.get('protocolo_id', None) areas = kwargs.get('areas', []) if protocolo_id is None or not areas: logger( _(u'O método _valida_protocolo_fluxo não recebeu os parâmetros protocolo_id e areas.' )) return False api = getUtility(ISPDOAPI) protocolo = api.getProtocolo(protocolo_id) if protocolo is None: return False tipoprotocolo = protocolo.tipoprotocolo tipodocumento_id = protocolo.tipodocumento_id session = Session() fluxo = session.query(db.Fluxo).\ filter_by(tipoprotocolo=tipoprotocolo).\ filter_by(tipodocumento_id=tipodocumento_id).\ filter_by(flexivel=False).first() if fluxo is None: return True area_id_auth = self._get_area_usuario() if area_id_auth is None: return False for area in areas: if not bool(session.query(db.Transicao).\ filter_by(fluxo_id=fluxo.id).\ filter_by(area_origem_id=area_id_auth).\ filter_by(area_destino_id=area).first()): return False return True
def _valida_protocolo_fluxo(self, **kwargs): """O tipo de protocolo e o tipo de documento possuem uma definição de fluxo rigoroso. A tramitação de envio deve seguir uma transição desse fluxo. """ protocolo_id = kwargs.get('protocolo_id', None) areas = kwargs.get('areas', []) if protocolo_id is None or not areas: logger(_(u'O método _valida_protocolo_fluxo não recebeu os parâmetros protocolo_id e areas.')) return False api = getUtility(ISPDOAPI) protocolo = api.getProtocolo(protocolo_id) if protocolo is None: return False tipoprotocolo = protocolo.tipoprotocolo tipodocumento_id = protocolo.tipodocumento_id session = Session() fluxo = session.query(db.Fluxo).\ filter_by(tipoprotocolo=tipoprotocolo).\ filter_by(tipodocumento_id=tipodocumento_id).\ filter_by(flexivel=False).first() if fluxo is None: return True area_id_auth = self._get_area_usuario() if area_id_auth is None: return False for area in areas: if not bool(session.query(db.Transicao).\ filter_by(fluxo_id=fluxo.id).\ filter_by(area_origem_id=area_id_auth).\ filter_by(area_destino_id=area).first()): return False return True
def _valida_protocolo_fluxo_area_inicial(self, **kwargs): """O tipo de protocolo e o tipo de documento possuem uma definição de fluxo rigoroso. A área onde o usuário está lotado deve corresponder a uma área inicial de uma das transições desse fluxo. """ tipoprotocolo = kwargs.get('tipoprotocolo', None) tipodocumento_id = kwargs.get('tipodocumento_id', None) if tipoprotocolo is None or tipodocumento_id is None: logger( _(u'O método _valida_protocolo_fluxo_area_inicial não recebeu os parâmetros tipoprotocolo e tipodocumento_id.' )) return False area_id_auth = self._get_area_usuario() if area_id_auth is None: return False session = Session() fluxo = session.query(db.Fluxo).\ filter_by(tipoprotocolo=tipoprotocolo).\ filter_by(tipodocumento_id=tipodocumento_id).\ filter_by(flexivel=False).first() if fluxo is None: return True return bool(session.query(db.Transicao).\ filter_by(fluxo_id=fluxo.id).\ filter_by(area_origem_id=area_id_auth).\ filter_by(inicial=True).first())
def _addProtocolo(self, dados, anexos=[]): session = Session() api = getUtility(ISPDOAPI) # origens (e destinos) pessoas_origens = [] pessoas_destinos = [] for f in ('origens', 'destinos'): for origem in dados[f]: pessoa = session.query( db.Pessoa).filter_by(email=origem['email']).first() if not pessoa: pessoa = db.Pessoa(origem['nome'], origem['email']) session.add(pessoa) session.flush() if f == 'origens': pessoas_origens.append(pessoa.id) else: pessoas_destinos.append(pessoa.id) # "situacao" e "tipodocumento" situacao = session.query(db.Situacao).filter_by( nome=dados.get('situacao')).filter_by(inicial=True).first() tipodocumento = self._tipodocumento(dados.get('tipodocumento')) # data de emissão dt = dados.get('data_emissao') if dt: aaaa, mm, dd = dt.split('-') aaaa = int(aaaa) mm = int(mm) dd = int(dd) dt = datetime.date(aaaa, mm, dd) else: dt = None # cria protocolo, observacao, anexos e tramite inicial, utilizando a API # IMPORTANTE: Por definição, exceto na criação dos protocolos, # os anexos e as observações são sempre adicionadas ANTES da # tramitação ocorrer. protocolo_id = api.addProtocolo(dados['tipoprotocolo'], tipodocumento.id, dados['numero_documento'], dt, dados['assunto'], situacao.id, pessoas_origens, pessoas_destinos) api.TramiteInicial(protocolo_id) if dados['observacao'].strip(): api.addObservacao(protocolo_id, dados['observacao']) if anexos: api.addAnexos(protocolo_id, anexos) protocolo = api.getProtocolo(protocolo_id) return protocolo.numero, protocolo.data_protocolo
def _create_and_add(self, dados): session = Session() protocolo = session.query( db.Protocolo).filter_by(numero=dados['protocolo']).first() for numero in dados['apensos']: apenso = session.query( db.Protocolo).filter_by(numero=numero).first() protocolo.apenso_id = apenso.id
def _addProtocolo(self, dados, anexos=[]): session = Session() api = getUtility(ISPDOAPI) # origens (e destinos) pessoas_origens = [] pessoas_destinos = [] for f in ('origens', 'destinos'): for origem in dados[f]: pessoa = session.query(db.Pessoa).filter_by(email=origem['email']).first() if not pessoa: pessoa = db.Pessoa(origem['nome'], origem['email']) session.add(pessoa) session.flush() if f == 'origens': pessoas_origens.append(pessoa.id) else: pessoas_destinos.append(pessoa.id) # "situacao" e "tipodocumento" situacao = session.query(db.Situacao).filter_by(nome=dados.get('situacao')).filter_by(inicial=True).first() tipodocumento = self._tipodocumento(dados.get('tipodocumento')) # data de emissão dt = dados.get('data_emissao') if dt: aaaa, mm, dd = dt.split('-') aaaa = int(aaaa) mm = int(mm) dd = int(dd) dt = datetime.date(aaaa, mm, dd) else: dt = None # cria protocolo, observacao, anexos e tramite inicial, utilizando a API # IMPORTANTE: Por definição, exceto na criação dos protocolos, # os anexos e as observações são sempre adicionadas ANTES da # tramitação ocorrer. protocolo_id = api.addProtocolo(dados['tipoprotocolo'], tipodocumento.id, dados['numero_documento'], dt, dados['assunto'], situacao.id, pessoas_origens, pessoas_destinos) api.TramiteInicial(protocolo_id) if dados['observacao'].strip(): api.addObservacao(protocolo_id, dados['observacao']) if anexos: api.addAnexos(protocolo_id, anexos) protocolo = api.getProtocolo(protocolo_id) return protocolo.numero, protocolo.data_protocolo
def getProtocolo(self, id=None): """Retorna o objeto Protocolo a partir do ID. """ session = Session() if id is None: id = self.getProtocoloId() return session.query(db.Protocolo).get(id)
def _TramiteRecuperacao(self, protocolos, apenso=False): """Tramite de recuperação (recupera um protocolo enviado que não foi recebido). """ protocolos = list(set(protocolos)) session = Session() area_id_auth = self.getAuthPessoa().area_id ret = [] for protocolo_id in protocolos: ret.append(protocolo_id) protocolo = self.getProtocolo(protocolo_id) if not apenso: sc = getUtility(ISecurityChecker) msg = _( u'Protocolo não disponível para recuperação. Protocolo: ' ) + protocolo.numero sc.enforce('tramitar_recuperacao', protocolo_id=protocolo_id, msg=msg) tramites = session.query(db.Tramite).\ filter_by(protocolo_id=protocolo_id).\ filter_by(area_id_anterior=area_id_auth).\ filter_by(data_recebimento=None).all() for tramite in tramites: session.delete(tramite) self._add_box(db.TramiteInbox, protocolo_id, area_id_auth) self._del_box(db.TramiteOutbox, protocolo_id, area_id_auth) # propaga tramitação nos apensos for apenso in protocolo.apenso: ret.extend(self._TramiteRecuperacao([apenso.id], apenso=True)) return ret
def _TramiteRecebimento(self, protocolos, apenso=False): """Tramite de recebimento. """ protocolos = list(set(protocolos)) session = Session() area_id_auth = self.getAuthPessoa().area_id ret = [] for protocolo_id in protocolos: ret.append(protocolo_id) protocolo = self.getProtocolo(protocolo_id) if not apenso: sc = getUtility(ISecurityChecker) msg = _( u'Protocolo não disponível para recebimento. Protocolo: ' ) + protocolo.numero sc.enforce('tramitar_recebimento', protocolo_id=protocolo_id, msg=msg) tramite = session.query(db.Tramite).\ filter_by(protocolo_id=protocolo_id).\ filter_by(area_id=area_id_auth).\ filter_by(data_recebimento=None).first() tramite.data_recebimento = datetime.datetime.now() self._add_box(db.TramiteInbox, protocolo_id, area_id_auth) self._del_box(db.TramiteOutbox, protocolo_id, tramite.area_id_anterior) # propaga tramitação nos apensos for apenso in protocolo.apenso: ret.extend(self._TramiteRecebimento([apenso.id], apenso=True)) return ret
def _TramiteRecuperacao(self, protocolos, apenso=False): """Tramite de recuperação (recupera um protocolo enviado que não foi recebido). """ protocolos = list(set(protocolos)) session = Session() area_id_auth = self.getAuthPessoa().area_id ret = [] for protocolo_id in protocolos: ret.append(protocolo_id) protocolo = self.getProtocolo(protocolo_id) if not apenso: sc = getUtility(ISecurityChecker) msg = _(u'Protocolo não disponível para recuperação. Protocolo: ') + protocolo.numero sc.enforce('tramitar_recuperacao', protocolo_id=protocolo_id, msg=msg) tramites = session.query(db.Tramite).\ filter_by(protocolo_id=protocolo_id).\ filter_by(area_id_anterior=area_id_auth).\ filter_by(data_recebimento=None).all() for tramite in tramites: session.delete(tramite) self._add_box(db.TramiteInbox, protocolo_id, area_id_auth) self._del_box(db.TramiteOutbox, protocolo_id, area_id_auth) # propaga tramitação nos apensos for apenso in protocolo.apenso: ret.extend(self._TramiteRecuperacao([apenso.id], apenso=True)) return ret
def getFluxo(self, id=None): """Retorna o objeto Fluxo a partir do ID. """ session = Session() if id is None: id = self.getFluxoId() return session.query(db.Fluxo).get(id)
def update(self): self.request.set("disable_border", True) self.dados = [] session = Session() items = session.query(db.Situacao).all() for i in items: self.dados.append({"id": i.id, "nome": i.nome, "inicial": i.inicial, "final": i.final})
def update(self): self.request.set("disable_border", True) self.dados = [] session = Session() items = session.query(db.UF).all() for i in items: self.dados.append({"id": i.id, "sigla": i.sigla, "nome": i.nome})
def _valida_dados(self, dados): """ Valida o parâmetro 'dados', que deve ser uma estrutura como a demonstrada a seguir: import json dados = {'origem': 'Nome da Pessoa de Origem', 'destino': 'Nome da Pessoa de Destino', 'assunto': 'Assunto...', 'situacao': 'Tramitando', 'tipodocumento': 'Carta', 'tipoprotocolo': 'E', 'inativo': '4', 'area': 'Comissão'} print json.dumps(dados) """ # dados precisa ser um dicionário if not isinstance(dados, dict): return False # os valores de “situacao”, “tipodocumento” e ”area” devem estar cadastrados if dados.get('situacao', None): session = Session() if not session.query(db.Situacao).filter_by( nome=dados.get('situacao')).filter_by( inicial=True).first(): return False if dados.get('tipodocumento', None): if not self._tipodocumento(dados.get('tipodocumento')): return False if dados.get('area', None): if not self._area(dados.get('area')): return False return True
def _TramiteRecebimento(self, protocolos, apenso=False): """Tramite de recebimento. """ protocolos = list(set(protocolos)) session = Session() area_id_auth = self.getAuthPessoa().area_id ret = [] for protocolo_id in protocolos: ret.append(protocolo_id) protocolo = self.getProtocolo(protocolo_id) if not apenso: sc = getUtility(ISecurityChecker) msg = _(u'Protocolo não disponível para recebimento. Protocolo: ') + protocolo.numero sc.enforce('tramitar_recebimento', protocolo_id=protocolo_id, msg=msg) tramite = session.query(db.Tramite).\ filter_by(protocolo_id=protocolo_id).\ filter_by(area_id=area_id_auth).\ filter_by(data_recebimento=None).first() tramite.data_recebimento=datetime.datetime.now() self._add_box(db.TramiteInbox, protocolo_id, area_id_auth) self._del_box(db.TramiteOutbox, protocolo_id, tramite.area_id_anterior) # propaga tramitação nos apensos for apenso in protocolo.apenso: ret.extend(self._TramiteRecebimento([apenso.id], apenso=True)) return ret
def _valida_dados(self, dados): """ Valida o parâmetro 'dados', que deve ser uma estrutura como a demonstrada a seguir: import json dados = {'origem': 'Nome da Pessoa de Origem', 'destino': 'Nome da Pessoa de Destino', 'assunto': 'Assunto...', 'situacao': 'Tramitando', 'tipodocumento': 'Carta', 'tipoprotocolo': 'E', 'inativo': '4', 'area': 'Comissão'} print json.dumps(dados) """ # dados precisa ser um dicionário if not isinstance(dados, dict): return False # os valores de “situacao”, “tipodocumento” e ”area” devem estar cadastrados if dados.get('situacao', None): session = Session() if not session.query(db.Situacao).filter_by(nome=dados.get('situacao')).filter_by(inicial=True).first(): return False if dados.get('tipodocumento', None): if not self._tipodocumento(dados.get('tipodocumento')): return False if dados.get('area', None): if not self._area(dados.get('area')): return False return True
def render(self): self.dados = [] session = Session() items = session.query(db.Pessoa).order_by(db.Pessoa.nome).all() for i in items: self.dados.append({'email': i.email, 'nome': i.nome}) return json.dumps(self.dados)
def _notificaResponsaveis(self, protocolos): """Envia email notificando tramitação para a pessoa destino """ pu = getToolByName(getSite(), 'portal_url') portal = pu.getPortalObject() mh = portal.MailHost session = Session() protocolos = list(set(protocolos)) for protocolo_id in protocolos: protocolo = session.query(db.Protocolo).get(protocolo_id) # 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': protocolo.numero, 'data_tramitacao': tramite.data_disponibilizacao, 'assunto': 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': protocolo.situacao.nome, 'despacho': tramite.despacho, 'url_protocolo': url('show-protocolo', id=protocolo.id)} mfrom = unicode(portal.getProperty('email_from_address'), 'utf-8') mto = tramite.responsavel.pessoa.email subject=NOTIFICACAO_OBRIG_ASSUNTO % d body=NOTIFICACAO_OBRIG_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') logger(_(u'Enviou...')) logger(_(text)) except: logger(_(u'Erro ao enviar a mensagem de notificação.'))
def render(self): session = Session() r = self.request content = session.query(db.Referencia).get((r.protocolo_id, r.referencia_id)) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u'Registro removido.'), 'info') go('list-referencia', protocolo_id=r.protocolo_id)
def render(self): session = Session() content = session.query(db.Transicao).get(self.request.id) fluxo_id = content.fluxo_id session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u'Registro removido.'), 'info') go('list-transicao', fluxo_id=fluxo_id)
def render(self): session = Session() r = self.request content = session.query(db.PessoaOrigem).get((r.protocolo_id, r.pessoa_id)) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u'Registro removido.'), 'info') go('show-protocolo', id=r.protocolo_id)
def render(self): session = Session() r = self.request content = session.query(db.PessoaDestino).get((r.protocolo_id, r.pessoa_id)) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u'Registro removido.'), 'info') go('show-protocolo', id=r.protocolo_id)
def update(self): sc = getUtility(ISecurityChecker) sc.enforce("acessar_list_pessoa") self.request.set("disable_border", True) self.dados = [] session = Session() items = session.query(db.Pessoa).all() for i in items: self.dados.append({"id": i.id, "nome": i.nome, "email": i.email})
def render(self): session = Session() r = self.request content = session.query(db.PessoaDestino).get((r.protocolo_id, r.pessoa_id)) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u"Registro removido."), "info") go("show-protocolo", id=r.protocolo_id)
def render(self): session = Session() r = self.request content = session.query(db.Referencia).get((r.protocolo_id, r.referencia_id)) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u"Registro removido."), "info") go("list-referencia", protocolo_id=r.protocolo_id)
def render(self): session = Session() content = session.query(db.Transicao).get(self.request.id) fluxo_id = content.fluxo_id session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u"Registro removido."), "info") go("list-transicao", fluxo_id=fluxo_id)
def render(self): session = Session() anexo = session.query(db.Anexo).get(self.request.id) p = anexo.protocolo path_anexo = os.path.join(PATH_ANEXOS, ScopeID(), str(p.ano), str(p.id), str(anexo.id)) file_anexo = NamedFile(open(path_anexo, "r"), filename=anexo.arquivo) cd = 'inline; filename="%s"' % anexo.arquivo.encode("utf-8") self.request.response.setHeader("Content-Disposition", cd) set_headers(file_anexo, self.request.response) return stream_data(file_anexo)
def render(self): session = Session() api = getUtility(ISPDOAPI) pessoa_id = api.getAuthPessoa().id content = session.query(db.Notificacao).get((pessoa_id, self.request.protocolo_id)) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u'Registro removido.'), 'info') go('list-notificacao')
def update(self): self.request.set('disable_border', True) self.dados = [] session = Session() items = session.query(db.TipoEntrega).all() for i in items: self.dados.append({ 'id': i.id, 'nome': i.nome, })
def render(self): session = Session() anexo = session.query(db.Anexo).get(self.request.id) p = anexo.protocolo path_anexo = os.path.join(PATH_ANEXOS, ScopeID(), str(p.ano), str(p.id), str(anexo.id)) file_anexo = NamedFile(open(path_anexo, 'r'), filename=anexo.arquivo) cd = 'inline; filename="%s"' % anexo.arquivo.encode('utf-8') self.request.response.setHeader('Content-Disposition', cd) set_headers(file_anexo, self.request.response) return stream_data(file_anexo)
def render(self): session = Session() api = getUtility(ISPDOAPI) pessoa_id = api.getAuthPessoa().id content = session.query(db.Notificacao).get((pessoa_id, self.request.protocolo_id)) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u"Registro removido."), "info") go("list-notificacao")
def render(self): self.dados = [] session = Session() items = session.query(db.TipoDocumento).all() for i in items: self.dados.append({ 'id': i.id, 'nome': i.nome, }) return json.dumps(self.dados)
def render(self): self.dados = [] session = Session() items = session.query(db.Pessoa).order_by(db.Pessoa.nome).all() for i in items: self.dados.append({ 'email': i.email, 'nome': i.nome }) return json.dumps(self.dados)
def render(self): session = Session() content = session.query(db.Observacao).get(self.request.id) protocolo_id = content.protocolo_id sc = getUtility(ISecurityChecker) sc.enforce("acessar_remove_observacao", protocolo_id=protocolo_id, observacao_id=self.request.id) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u"Registro removido."), "info") go("show-protocolo", id=protocolo_id)
def render(self): session = Session() content = session.query(db.Observacao).get(self.request.id) protocolo_id = content.protocolo_id sc = getUtility(ISecurityChecker) sc.enforce('acessar_remove_observacao', protocolo_id=protocolo_id, observacao_id=self.request.id) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u'Registro removido.'), 'info') go('show-protocolo', id=protocolo_id)
def _add_box(self, box, protocolo_id, area_id): assert(box in (db.TramiteInbox, db.TramiteOutbox)) session = Session() t = session.query(box).get((protocolo_id, area_id)) if t is None: t = box() t.protocolo_id=protocolo_id t.area_id=area_id tbl = box is db.TramiteInbox and 'tramite_inbox' or 'tramite_outbox' t.version = db.nextVersion(tbl, protocolo_id=protocolo_id, area_id=area_id) session.add(t)
def render(self): session = Session() content = session.query(db.Anexo).get(self.request.id) protocolo_id = content.protocolo_id sc = getUtility(ISecurityChecker) sc.enforce('acessar_remove_anexo', protocolo_id=protocolo_id, anexo_id=self.request.id) session.delete(content) session.flush() status = IStatusMessage(self.request) status.add(_(u'Registro removido.'), 'info') go('show-protocolo', id=protocolo_id)
def update(self): self.request.set('disable_border', True) self.dados = [] session = Session() items = session.query(db.Situacao).all() for i in items: self.dados.append({ 'id': i.id, 'nome': i.nome, 'inicial': i.inicial, 'final': i.final, })
def getProtocolosEnviados(self): """Consulta os protocolos enviados pela área. """ session = Session() area_id_auth = self.getAuthPessoa().area_id items = session.query(db.TramiteOutbox).\ filter_by(area_id=area_id_auth).\ join(db.Protocolo).\ filter(db.Protocolo.apenso_id == None).\ join(db.Situacao).\ filter(db.Situacao.final == False).all() return self._getProtocolosData([i.protocolo for i in items])
def pesquisaProtocolos(self): """Pesquisa protocolos. """ session = Session() items = session.query(db.Protocolo) tipoprotocolo = getTipoProtocolo() if tipoprotocolo is not None: items = items.filter_by(tipoprotocolo=tipoprotocolo) tipodocumento_id = getTipoDocumento() if tipodocumento_id is not None: items = items.filter_by(tipodocumento_id=tipodocumento_id) assunto = getAssunto() if assunto is not None: clause = rdb.or_(db.Protocolo.assunto.contains(assunto), db.Protocolo.assunto.ilike(assunto)) items = items.filter(clause) situacao_id = getSituacao() if situacao_id is not None: items = items.filter_by(situacao_id=situacao_id) origem = getOrigem() 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 = getDestino() 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) area_id = getArea() if area_id is not None: inbox1 = aliased(db.TramiteInbox) items = items.join(inbox1).filter_by(area_id=area_id) tempo_inativo = getTempoInativo() if tempo_inativo is not None: d = datetime.datetime.now() - datetime.timedelta( days=tempo_inativo) inbox2 = aliased(db.TramiteInbox) items = items.join(inbox2).filter(inbox2.version_date < d) return self._getProtocolosData(items.limit(SEARCH_LIMIT).all())
def consultarProtocolo(self, data): status = IStatusMessage(self.request) session = Session() query = session.query(db.Protocolo) clause = or_(db.Protocolo.numero.contains(data['numero']), db.Protocolo.numero.ilike(data['numero'])) protocolo = query.filter(clause).first() if protocolo is None: status.add(_(u'Verifique o número informado. Protocolo: ' + data['numero']), 'error') go('search-protocolo-barra') else: go('show-protocolo', id=protocolo.id)
def pesquisaProtocolos(self): """Pesquisa protocolos. """ session = Session() items = session.query(db.Protocolo) tipoprotocolo = getTipoProtocolo() if tipoprotocolo is not None: items = items.filter_by(tipoprotocolo=tipoprotocolo) tipodocumento_id = getTipoDocumento() if tipodocumento_id is not None: items = items.filter_by(tipodocumento_id=tipodocumento_id) assunto = getAssunto() if assunto is not None: clause = rdb.or_(db.Protocolo.assunto.contains(assunto), db.Protocolo.assunto.ilike(assunto)) items = items.filter(clause) situacao_id = getSituacao() if situacao_id is not None: items = items.filter_by(situacao_id=situacao_id) origem = getOrigem() 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 = getDestino() 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) area_id = getArea() if area_id is not None: inbox1 = aliased(db.TramiteInbox) items = items.join(inbox1).filter_by(area_id=area_id) tempo_inativo = getTempoInativo() if tempo_inativo is not None: d = datetime.datetime.now() - datetime.timedelta(days=tempo_inativo) inbox2 = aliased(db.TramiteInbox) items = items.join(inbox2).filter(inbox2.version_date < d) return self._getProtocolosData(items.limit(SEARCH_LIMIT).all())
def _add_box(self, box, protocolo_id, area_id): assert (box in (db.TramiteInbox, db.TramiteOutbox)) session = Session() t = session.query(box).get((protocolo_id, area_id)) if t is None: t = box() t.protocolo_id = protocolo_id t.area_id = area_id tbl = box is db.TramiteInbox and 'tramite_inbox' or 'tramite_outbox' t.version = db.nextVersion(tbl, protocolo_id=protocolo_id, area_id=area_id) session.add(t)
def render(self): self.dados = [] session = Session() items = session.query(db.Situacao).all() for i in items: self.dados.append({ 'id': i.id, 'nome': i.nome, 'inicial': i.inicial, 'final': i.final, }) return json.dumps(self.dados)
def update(self): sc = getUtility(ISecurityChecker) sc.enforce('acessar_list_pessoa') self.request.set('disable_border', True) self.dados = [] session = Session() items = session.query(db.Pessoa).all() for i in items: self.dados.append({ 'id': i.id, 'nome': i.nome, 'email': i.email, })
def consultarProtocolo(self, data): status = IStatusMessage(self.request) session = Session() query = session.query(db.Protocolo) clause = or_(db.Protocolo.numero.contains(data['numero']), db.Protocolo.numero.ilike(data['numero'])) protocolo = query.filter(clause).first() if protocolo is None: status.add( _(u'Verifique o número informado. Protocolo: ' + data['numero']), 'error') go('search-protocolo-barra') else: go('show-protocolo', id=protocolo.id)
def update(self): self.request.set('disable_border', True) self.dados = [] session = Session() items = session.query(db.Area).all() for i in items: self.dados.append({ 'id': i.id, 'sigla': i.sigla, 'nome': i.nome, 'chefia_id': i.chefia_id, 'chefia_sigla': getattr(i.area,'sigla',''), 'chefia_nome': getattr(i.area,'nome',''), })
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), })