Conjunto de mudanças 8012 no repositório publico


Ignorar:
Timestamp:
14/04/2015 22:31:31 (5 anos atrás)
Autor:
gustavolepri
Mensagem:

inclusão de WS para tramitação do protocolo

Arquivo:
1 editado

Legenda:

Não Modificado
Adicionado
Removido
  • il.spdo/trunk/il/spdo/browser/ws.py

    r8011 r8012  
    1818from il.spdo.interfaces import ISPDOAPI, ISecurityChecker
    1919from il.spdo.nav import url
     20
     21
     22class TramiteAddWSView(grok.View):
     23
     24    grok.name('ws-tramite')
     25    grok.context(INavigationRoot)
     26    grok.require('zope2.View')
     27
     28    def update(self):
     29        self.api = getUtility(ISPDOAPI)
     30
     31    def _json_error(self, error_code):
     32        ERROS = {
     33            1: _(u'Parâmetro dados não informado.'),
     34            2: _(u'Estrutura de dados inválida.'),
     35        }
     36        return json.dumps(ERROS[error_code])
     37
     38    def _valida_dados(self, dados):
     39        """
     40        Valida o parâmetro 'dados', que deve ser uma estrutura como a demonstrada a seguir:
     41
     42        import json
     43        dados = {'area': 'Nome da Pessoa de Destino',
     44                 'despacho': 'Tramitação...',
     45                 'protocolo': 'E-00000023/2015-97'}
     46        print json.dumps(dados)
     47        """
     48
     49        # dados precisa ser um dicionário
     50        if not isinstance(dados, dict):
     51            return False
     52
     53        # dados deve conter todas as chaves
     54        for k in ('area', 'despacho', 'protocolo'):
     55            if dados.get(k, None) is None:
     56                return False
     57
     58        # valida o destino e o protoclo
     59        if dados.get('area', None):
     60            if not self._area(dados.get('area')):
     61                return False
     62        if dados.get('protocolo', None):
     63            if not self._protocolo(dados.get('protocolo')):
     64                return False
     65
     66        return True
     67
     68    def _area(self, nome):
     69        session = Session()
     70        return session.query(db.Pessoa).filter_by(nome=nome).first()
     71
     72    def _protocolo(self, numero):
     73        session = Session()
     74        return session.query(db.Protocolo).filter_by(numero=numero).first()
     75
     76    def _tramite(self, dados):
     77        protocolo_id = self._protocolo(dados['protocolo']).id
     78        area_id = self._area(dados['area']).id
     79        return self.api.TramiteEnvio([protocolo_id], [area_id], dados['despacho'])
     80
     81    @log
     82    def render(self):
     83        r = self.request
     84
     85        dados = r.get('dados', '')
     86        if not dados:
     87            return self._json_error(1)
     88
     89        dados = json.loads(dados)
     90        if not self._valida_dados(dados):
     91            return self._json_error(2)
     92
     93        resultado = self._tramite(dados)
     94        return json.dumps(resultado)
    2095
    2196
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.