예제 #1
0
파일: ws.py 프로젝트: LeandroJatai/il.spdo
 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
예제 #2
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()
예제 #3
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