Esempio n. 1
0
 def createAndAdd(self, data):
     uf = UF()
     uf.sigla = data['sigla']
     uf.nome = data['nome']
     session = Session()
     session.add(uf)
     session.flush()
Esempio n. 2
0
 def _tramite(self, dados, apenso=False):
     protocolo_id = self._protocolo(dados['protocolo']).id
     area_id = self._area(dados['area']).id
     session = Session()
     area_id_auth = self.api.getAuthPessoa().area_id
     copia = len([area_id]) > 1
     ret = []
     ret.append(protocolo_id)
     protocolo = self.api.getProtocolo(protocolo_id)
     tramite = db.Tramite(
         protocolo_id=protocolo_id,
         area_id=area_id,
         data_disponibilizacao=datetime.datetime.now(),
         data_recebimento=None,
         despacho=dados['despacho'],
         usuario=self.api.getAuthId(),
         copia=copia,
         area_id_anterior=area_id_auth,
     )
     session.add(tramite)
     self.api._add_box(db.TramiteOutbox, protocolo_id, area_id_auth)
     self.api._del_box(db.TramiteInbox, protocolo_id, area_id_auth)
     session.flush()
     # propaga tramitação nos apensos
     for apenso in protocolo.apenso:
         ret.extend(
             self._tramite([apenso.id],
                           area_id,
                           dados['despacho'],
                           apenso=True))
     return ret
Esempio n. 3
0
 def createAndAdd(self, data):
     uf = UF()
     uf.sigla = data['sigla']
     uf.nome = data['nome']
     session = Session()
     session.add(uf)
     session.flush()
Esempio n. 4
0
 def addProtocolo(self, tipoprotocolo, tipodocumento_id, numero_documento, data_emissao, assunto, situacao_id, origem, destino, **kwargs):
     """Adiciona protocolo.
     """
     session = Session()
     protocolo = db.Protocolo(
                 tipoprotocolo=tipoprotocolo,
                 tipodocumento_id=tipodocumento_id,
                 numero_documento=numero_documento,
                 data_emissao=data_emissao,
                 assunto=assunto,
                 situacao_id=situacao_id,
                 usuario=self.getAuthId(),
                 )
     session.add(protocolo)
     session.flush()
     protocolo_id = protocolo.id
     for pessoa_id in origem:
         pessoa_origem = db.PessoaOrigem(
                         protocolo_id=protocolo_id,
                         pessoa_id=pessoa_id,
                         )
         session.add(pessoa_origem)
     for pessoa_id in destino:
         pessoa_destino = db.PessoaDestino(
                          protocolo_id=protocolo_id,
                          pessoa_id=pessoa_id,
                          )
         session.add(pessoa_destino)
     session.flush()
     return protocolo_id
Esempio n. 5
0
 def _tramite(self, dados, apenso=False):
     protocolo_id = self._protocolo(dados['protocolo']).id
     area_id = self._area(dados['area']).id
     session = Session()
     area_id_auth = self.api.getAuthPessoa().area_id
     copia = len([area_id]) > 1
     ret = []
     ret.append(protocolo_id)
     protocolo = self.api.getProtocolo(protocolo_id)
     tramite = db.Tramite(
         protocolo_id=protocolo_id,
         area_id=area_id,
         data_disponibilizacao=datetime.datetime.now(),
         data_recebimento=None,
         despacho=dados['despacho'],
         usuario=self.api.getAuthId(),
         copia=copia,
         area_id_anterior=area_id_auth,
     )
     session.add(tramite)
     self.api._add_box(db.TramiteOutbox, protocolo_id, area_id_auth)
     self.api._del_box(db.TramiteInbox, protocolo_id, area_id_auth)
     session.flush()
     # propaga tramitação nos apensos
     for apenso in protocolo.apenso:
         ret.extend(self._tramite([apenso.id], area_id, dados['despacho'], apenso=True))
     return ret
Esempio n. 6
0
 def addAnexos(self, protocolo_id, anexos):
     """Adiciona anexos.
     """
     p = self.getProtocolo(protocolo_id)
     if p is None or anexos is None:
         return []
     session = Session()
     path_protocolo = os.path.join(PATH_ANEXOS, ScopeID(), str(p.ano), str(p.id))
     if not os.path.exists(path_protocolo):
         os.makedirs(path_protocolo, 0700)
     ret = []
     for arquivo in anexos:
         anexo = db.Anexo(
                 protocolo_id=protocolo_id,
                 arquivo=arquivo.filename,
                 tamanho=arquivo.getSize(),
                 usuario=self.getAuthId(),
                 )
         session.add(anexo)
         session.flush()
         ret.append(anexo.id)
         path_anexo = os.path.join(path_protocolo, str(anexo.id))
         with open(path_anexo, 'w') as file_anexo:
             file_anexo.write(arquivo.data)
     # propaga anexos nos apensos
     for apenso in p.apenso:
         ret.extend(self.addAnexos(apenso.id, anexos))
     return ret
Esempio n. 7
0
 def addAnexos(self, protocolo_id, anexos):
     """Adiciona anexos.
     """
     p = self.getProtocolo(protocolo_id)
     if p is None or anexos is None:
         return []
     session = Session()
     path_protocolo = os.path.join(PATH_ANEXOS, ScopeID(), str(p.ano),
                                   str(p.id))
     if not os.path.exists(path_protocolo):
         os.makedirs(path_protocolo, 0700)
     ret = []
     for arquivo in anexos:
         anexo = db.Anexo(
             protocolo_id=protocolo_id,
             arquivo=arquivo.filename,
             tamanho=arquivo.getSize(),
             usuario=self.getAuthId(),
         )
         session.add(anexo)
         session.flush()
         ret.append(anexo.id)
         path_anexo = os.path.join(path_protocolo, str(anexo.id))
         with open(path_anexo, 'w') as file_anexo:
             file_anexo.write(arquivo.data)
     # propaga anexos nos apensos
     for apenso in p.apenso:
         ret.extend(self.addAnexos(apenso.id, anexos))
     return ret
Esempio n. 8
0
 def addProtocolo(self, tipoprotocolo, tipodocumento_id, numero_documento,
                  data_emissao, assunto, situacao_id, origem, destino,
                  **kwargs):
     """Adiciona protocolo.
     """
     session = Session()
     protocolo = db.Protocolo(
         tipoprotocolo=tipoprotocolo,
         tipodocumento_id=tipodocumento_id,
         numero_documento=numero_documento,
         data_emissao=data_emissao,
         assunto=assunto,
         situacao_id=situacao_id,
         usuario=self.getAuthId(),
     )
     session.add(protocolo)
     session.flush()
     protocolo_id = protocolo.id
     for pessoa_id in origem:
         pessoa_origem = db.PessoaOrigem(
             protocolo_id=protocolo_id,
             pessoa_id=pessoa_id,
         )
         session.add(pessoa_origem)
     for pessoa_id in destino:
         pessoa_destino = db.PessoaDestino(
             protocolo_id=protocolo_id,
             pessoa_id=pessoa_id,
         )
         session.add(pessoa_destino)
     session.flush()
     return protocolo_id
Esempio n. 9
0
    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
Esempio n. 10
0
 def createAndAdd(self, data):
     responsavel = Responsavel()
     responsavel.area_id = data['area_id']
     responsavel.pessoa_id = data['pessoa_id']
     responsavel.data_responsavel = data['data_responsavel']
     session = Session()
     session.add(responsavel)
     session.flush()
Esempio n. 11
0
 def createAndAdd(self, data):
     responsavel = Responsavel()
     responsavel.area_id = data['area_id']
     responsavel.pessoa_id = data['pessoa_id']
     responsavel.data_responsavel = data['data_responsavel']
     session = Session()
     session.add(responsavel)
     session.flush()
Esempio n. 12
0
 def createAndAdd(self, data):
     situacao = Situacao()
     situacao.nome = data['nome']
     situacao.inicial = data['inicial']
     situacao.final = data['final']
     session = Session()
     session.add(situacao)
     session.flush()
Esempio n. 13
0
 def createAndAdd(self, data):
     situacao = Situacao()
     situacao.nome = data["nome"]
     situacao.inicial = data["inicial"]
     situacao.final = data["final"]
     session = Session()
     session.add(situacao)
     session.flush()
Esempio n. 14
0
 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)
Esempio n. 15
0
 def createAndAdd(self, data):
     fluxo = Fluxo()
     fluxo.nome = data['nome']
     fluxo.tipoprotocolo = data['tipoprotocolo']
     fluxo.tipodocumento_id = data['tipodocumento_id']
     fluxo.flexivel = data['flexivel']
     session = Session()
     session.add(fluxo)
     session.flush()
Esempio n. 16
0
 def createAndAdd(self, data):
     fluxo = Fluxo()
     fluxo.nome = data['nome']
     fluxo.tipoprotocolo = data['tipoprotocolo']
     fluxo.tipodocumento_id = data['tipodocumento_id']
     fluxo.flexivel = data['flexivel']
     session = Session()
     session.add(fluxo)
     session.flush()
Esempio n. 17
0
 def createAndAdd(self, data):
     area = Area()
     area.sigla = data['sigla']
     area.nome = data['nome']
     area.chefia_id = data['chefia_id']
     session = Session()
     session.add(area)
     session.flush()
     return area
Esempio n. 18
0
 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)
Esempio n. 19
0
 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)
Esempio n. 20
0
 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)
Esempio n. 21
0
 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)
Esempio n. 22
0
 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)
Esempio n. 23
0
 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)
Esempio n. 24
0
 def createAndAdd(self, data):
     area = Area()
     area.sigla = data["sigla"]
     area.nome = data["nome"]
     area.chefia_id = data["chefia_id"]
     session = Session()
     session.add(area)
     session.flush()
     return area
Esempio n. 25
0
 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')
Esempio n. 26
0
 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")
Esempio n. 27
0
 def createAndAdd(self, data):
     api = getUtility(ISPDOAPI)
     protocolo_id = api.getProtocoloId()
     session = Session()
     for i in data['pessoa_id']:
         pessoaorigem = PessoaOrigem()
         pessoaorigem.protocolo_id = protocolo_id
         pessoaorigem.pessoa_id = i
         pessoaorigem.version = nextVersion('pessoa_origem', protocolo_id=protocolo_id, pessoa_id=i)
         session.add(pessoaorigem)
     session.flush()
Esempio n. 28
0
 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)
Esempio n. 29
0
 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)
Esempio n. 30
0
 def createAndAdd(self, data):
     api = getUtility(ISPDOAPI)
     pessoa_id = api.getAuthPessoa().id
     session = Session()
     for i in data['protocolo_id']:
         notificacao = Notificacao()
         notificacao.pessoa_id = pessoa_id
         notificacao.protocolo_id = i
         notificacao.version = nextVersion('notificacao', pessoa_id=pessoa_id, protocolo_id=i)
         session.add(notificacao)
     session.flush()
Esempio n. 31
0
    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
Esempio n. 32
0
 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)
Esempio n. 33
0
 def removeItem(self):
     content = self.getContent()
     status = IStatusMessage(self.request)
     try:
         session = Session()
         session.delete(content)
         session.flush()
     except AssertionError, e:
         msg = _(u'Falha de integridade relacional: ' + str(e))
         status.add(msg, 'error')
         logger(msg)
         raise
Esempio n. 34
0
 def removeItem(self):
     content = self.getContent()
     status = IStatusMessage(self.request)
     try:
         session = Session()
         session.delete(content)
         session.flush()
     except AssertionError, e:
         msg = _(u'Falha de integridade relacional: ' + str(e))
         status.add(msg, 'error')
         logger(msg)
         raise
Esempio n. 35
0
 def createAndAdd(self, data):
     api = getUtility(ISPDOAPI)
     pessoa_id = api.getAuthPessoa().id
     session = Session()
     for i in data['protocolo_id']:
         notificacao = Notificacao()
         notificacao.pessoa_id = pessoa_id
         notificacao.protocolo_id = i
         notificacao.version = nextVersion('notificacao',
                                           pessoa_id=pessoa_id,
                                           protocolo_id=i)
         session.add(notificacao)
     session.flush()
Esempio n. 36
0
 def addObservacao(self, protocolo_id, texto):
     """Adiciona observação.
     """
     if not texto:
         return
     session = Session()
     observacao = db.Observacao(
                  protocolo_id=protocolo_id,
                  texto=texto,
                  usuario=self.getAuthId(),
                  )
     session.add(observacao)
     session.flush()
     return observacao.id
Esempio n. 37
0
 def createAndAdd(self, data):
     api = getUtility(ISPDOAPI)
     protocolo_id = api.getProtocoloId()
     session = Session()
     for i in data['referencia_id']:
         # garante que o protocolo não faz referência para ele mesmo
         if protocolo_id == i:
             continue
         referencia = Referencia()
         referencia.protocolo_id = protocolo_id
         referencia.referencia_id = i
         referencia.version = nextVersion('referencia', protocolo_id=protocolo_id, referencia_id=i)
         session.add(referencia)
     session.flush()
Esempio n. 38
0
 def addObservacao(self, protocolo_id, texto):
     """Adiciona observação.
     """
     if not texto:
         return
     session = Session()
     observacao = db.Observacao(
         protocolo_id=protocolo_id,
         texto=texto,
         usuario=self.getAuthId(),
     )
     session.add(observacao)
     session.flush()
     return observacao.id
Esempio n. 39
0
 def handleCadastrar(self, action):
     data, errors = self.extractData()
     if errors:
         self.status = self.formErrorsMessage
         return
     status = IStatusMessage(self.request)
     try:
         obj = self.createAndAdd(data)
         session = Session()
         session.flush()
     except IntegrityError, e:
         msg = _(u'Falha de integridade relacional: ' + str(e))
         status.add(msg, 'error')
         logger(msg)
         raise
Esempio n. 40
0
 def handleCadastrar(self, action):
     data, errors = self.extractData()
     if errors:
         self.status = self.formErrorsMessage
         return
     status = IStatusMessage(self.request)
     try:
         obj = self.createAndAdd(data)
         session = Session()
         session.flush()
     except IntegrityError, e:
         msg = _(u'Falha de integridade relacional: ' + str(e))
         status.add(msg, 'error')
         logger(msg)
         raise
Esempio n. 41
0
 def createAndAdd(self, data):
     api = getUtility(ISPDOAPI)
     fluxo_id = api.getFluxoId()
     session = Session()
     for i in data['area_origem_id']:
         for j in data['area_destino_id']:
             # garante que a transição não tenha origem e destino iguais
             if i == j:
                 continue
             transicao = Transicao()
             transicao.fluxo_id = fluxo_id
             transicao.inicial = data['inicial']
             transicao.area_origem_id = i
             transicao.area_destino_id = j
             session.add(transicao)
     session.flush()
Esempio n. 42
0
 def TramiteInicial(self, protocolo_id):
     """Tramite inicial.
     """
     session = Session()
     area_id_auth = self.getAuthPessoa().area_id
     tramite = db.Tramite(
               protocolo_id=protocolo_id,
               area_id=area_id_auth,
               data_disponibilizacao=None,
               data_recebimento=datetime.datetime.now(),
               despacho=_(u'Protocolo Criado'),
               usuario=self.getAuthId(),
               )
     session.add(tramite)
     self._add_box(db.TramiteInbox, protocolo_id, area_id_auth)
     session.flush()
Esempio n. 43
0
 def TramiteInicial(self, protocolo_id):
     """Tramite inicial.
     """
     session = Session()
     area_id_auth = self.getAuthPessoa().area_id
     tramite = db.Tramite(
         protocolo_id=protocolo_id,
         area_id=area_id_auth,
         data_disponibilizacao=None,
         data_recebimento=datetime.datetime.now(),
         despacho=_(u'Protocolo Criado'),
         usuario=self.getAuthId(),
     )
     session.add(tramite)
     self._add_box(db.TramiteInbox, protocolo_id, area_id_auth)
     session.flush()
Esempio n. 44
0
 def createAndAdd(self, data):
     api = getUtility(ISPDOAPI)
     fluxo_id = api.getFluxoId()
     session = Session()
     for i in data['area_origem_id']:
         for j in data['area_destino_id']:
             # garante que a transição não tenha origem e destino iguais
             if i == j:
                 continue
             transicao = Transicao()
             transicao.fluxo_id = fluxo_id
             transicao.inicial = data['inicial']
             transicao.area_origem_id = i
             transicao.area_destino_id = j
             session.add(transicao)
     session.flush()
Esempio n. 45
0
 def createAndAdd(self, data):
     api = getUtility(ISPDOAPI)
     protocolo_id = api.getProtocoloId()
     session = Session()
     for i in data['referencia_id']:
         # garante que o protocolo não faz referência para ele mesmo
         if protocolo_id == i:
             continue
         referencia = Referencia()
         referencia.protocolo_id = protocolo_id
         referencia.referencia_id = i
         referencia.version = nextVersion('referencia',
                                          protocolo_id=protocolo_id,
                                          referencia_id=i)
         session.add(referencia)
     session.flush()
Esempio n. 46
0
 def _TramiteEnvio(self, protocolos, areas, despacho, apenso=False):
     """Tramite de envio.
     """
     protocolos = list(set(protocolos))
     areas = list(set(areas))
     session = Session()
     area_id_auth = self.getAuthPessoa().area_id
     # evita o envio para a própria área
     if areas.count(area_id_auth):
         areas.pop(areas.index(area_id_auth))
     copia = len(areas) > 1
     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 envio. Protocolo: '
                     ) + protocolo.numero
             sc.enforce('tramitar_envio',
                        protocolo_id=protocolo_id,
                        msg=msg)
         for area_id in areas:
             tramite = db.Tramite(
                 protocolo_id=protocolo_id,
                 area_id=area_id,
                 data_disponibilizacao=datetime.datetime.now(),
                 data_recebimento=None,
                 despacho=despacho,
                 usuario=self.getAuthId(),
                 copia=copia,
                 area_id_anterior=area_id_auth,
             )
             session.add(tramite)
             self._add_box(db.TramiteOutbox, protocolo_id, area_id_auth)
             self._del_box(db.TramiteInbox, protocolo_id, area_id_auth)
             session.flush()
         # propaga tramitação nos apensos
         for apenso in protocolo.apenso:
             ret.extend(
                 self._TramiteEnvio([apenso.id],
                                    areas,
                                    despacho,
                                    apenso=True))
     return ret
Esempio n. 47
0
    def createAndAdd(self, data):
        del data['id']

        # garante que alguns campos são armazenados apenas como
        # números, mesmo sendo strings
        for campo in ('cep', 'cpf_cnpj'):
            if data[campo] is not None:
                data[campo] = ''.join([c for c in data[campo] if c.isdigit()])

        # ROLE_ADMIN ou ROLE_GESTOR são necessários para definir a
        # lotação de uma pessoa. Isso é importante para evitar que um
        # operador modifique a própria lotação para contornar
        # restrições de segurança.
        sc = getUtility(ISecurityChecker)
        if not sc.check('lotacao_pessoa'):
            del data['area_id']

        pessoa = Pessoa(**data)
        session = Session()
        session.add(pessoa)
        session.flush()
Esempio n. 48
0
    def createAndAdd(self, data):
        del data['id']

        # garante que alguns campos são armazenados apenas como
        # números, mesmo sendo strings
        for campo in ('cep', 'cpf_cnpj'):
            if data[campo] is not None:
                data[campo] = ''.join([c for c in data[campo] if c.isdigit()])

        # ROLE_ADMIN ou ROLE_GESTOR são necessários para definir a
        # lotação de uma pessoa. Isso é importante para evitar que um
        # operador modifique a própria lotação para contornar
        # restrições de segurança.
        sc = getUtility(ISecurityChecker)
        if not sc.check('lotacao_pessoa'):
            del data['area_id']

        pessoa = Pessoa(**data)
        session = Session()
        session.add(pessoa)
        session.flush()
Esempio n. 49
0
 def _TramiteEnvio(self, protocolos, areas, despacho, apenso=False):
     """Tramite de envio.
     """
     protocolos = list(set(protocolos))
     areas = list(set(areas))
     session = Session()
     area_id_auth = self.getAuthPessoa().area_id
     # evita o envio para a própria área
     if areas.count(area_id_auth):
         areas.pop(areas.index(area_id_auth))
     copia = len(areas) > 1
     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 envio. Protocolo: ') + protocolo.numero
             sc.enforce('tramitar_envio', protocolo_id=protocolo_id, msg=msg)                
         for area_id in areas:
             tramite = db.Tramite(
                       protocolo_id=protocolo_id,
                       area_id=area_id,
                       data_disponibilizacao=datetime.datetime.now(),
                       data_recebimento=None,
                       despacho=despacho,
                       usuario=self.getAuthId(),
                       copia=copia,
                       area_id_anterior=area_id_auth,
                       )
             session.add(tramite)
             self._add_box(db.TramiteOutbox, protocolo_id, area_id_auth)
             self._del_box(db.TramiteInbox, protocolo_id, area_id_auth)
             session.flush()
         # propaga tramitação nos apensos
         for apenso in protocolo.apenso:
             ret.extend(self._TramiteEnvio([apenso.id], areas, despacho, apenso=True))
     return ret
Esempio n. 50
0
if __name__ == '__main__':

    if CREATE_ALL_TABLES:
        metadata = Base.metadata
        metadata.drop_all(engine)
        metadata.create_all(engine)

    if not CREATE_SAMPLES:
        sys.exit()

    session = Session()

    # Area
    a1 = Area(sigla='t1', nome='Teste1')
    session.add(a1)
    session.flush()
    a2 = Area(sigla='t2', nome='Teste2', chefia_id=a1.id)
    session.add(a2)
    session.flush()
    a3 = Area(sigla='t3', nome='Teste3', chefia_id=a2.id)
    session.add(a3)
    session.flush()

    # UF
    UFs = """
          AC Acre
          AL Alagoas
          AP Amapá
          AM Amazonas
          BA Bahia
          CE Ceará
Esempio n. 51
0
 def createAndAdd(self, data):
     tipoentrega = TipoEntrega()
     tipoentrega.nome = data['nome']
     session = Session()
     session.add(tipoentrega)
     session.flush()
Esempio n. 52
0
if __name__ == '__main__':

    if CREATE_ALL_TABLES:
        metadata = Base.metadata
        metadata.drop_all(engine)
        metadata.create_all(engine)

    if not CREATE_SAMPLES:
        sys.exit()

    session = Session()

    # Area
    a1 = Area(sigla='t1', nome='Teste1')
    session.add(a1)
    session.flush()
    a2 = Area(sigla='t2', nome='Teste2', chefia_id=a1.id)
    session.add(a2)
    session.flush()
    a3 = Area(sigla='t3', nome='Teste3', chefia_id=a2.id)
    session.add(a3)
    session.flush()

    # UF
    UFs = """
          AC Acre
          AL Alagoas
          AP Amapá
          AM Amazonas
          BA Bahia
          CE Ceará
Esempio n. 53
0
 def createAndAdd(self, data):
     tipoentrega = TipoEntrega()
     tipoentrega.nome = data['nome']
     session = Session()
     session.add(tipoentrega)
     session.flush()
Esempio n. 54
0
 def createAndAdd(self, data):
     tipodocumento = TipoDocumento()
     tipodocumento.nome = data['nome']
     session = Session()
     session.add(tipodocumento)
     session.flush()