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
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()
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