Conjunto de mudanças 8014 no repositório publico


Ignorar:
Timestamp:
16/04/2015 19:11:41 (5 anos atrás)
Autor:
gustavolepri
Mensagem:

inclusão de novos WS

Arquivo:
1 editado

Legenda:

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

    r8012 r8014  
    77
    88from five import grok
    9 from zope.component import getUtility
     9from zope.component import getUtility, getMultiAdapter
    1010
    1111from plone.app.layout.navigation.interfaces import INavigationRoot
     
    1818from il.spdo.interfaces import ISPDOAPI, ISecurityChecker
    1919from il.spdo.nav import url
    20 
     20from il.spdo.browser.views import ProtocoloShowView
     21
     22
     23class ProtocoloShowWSView(grok.View):
     24
     25    grok.name('ws-show-protocolo')
     26    grok.context(INavigationRoot)
     27    grok.require('zope2.View')
     28
     29    def update(self):
     30        self.api = getUtility(ISPDOAPI)
     31        self.protocolo_view = getMultiAdapter((self.context, self.request), name=u'show-protocolo')
     32
     33    def _json_error(self, error_code):
     34        ERROS = {
     35            1: _(u'Parâmetro dados não informado.'),
     36            2: _(u'Estrutura de dados inválida.'),
     37        }
     38        return json.dumps(ERROS[error_code])
     39
     40    def _valida_dados(self, dados):
     41        """
     42        Valida o parâmetro 'dados', que deve ser uma estrutura como a demonstrada a seguir:
     43
     44        import json
     45        dados = {'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 o protocolo
     54        for k in ('protocolo',):
     55            if dados.get(k, None) is None:
     56                return False
     57
     58        # os valores de “protocolo” deve ser valido
     59        if not self._protocolo(dados.get('protocolo')):
     60            return False
     61
     62        return True
     63
     64    def _protocolo(self, numero):
     65        session = Session()
     66        return session.query(db.Protocolo).filter_by(numero=numero).first()
     67
     68    def _busca_protocolo(self, dados):
     69        protocolo = self.api.getProtocolo(self._protocolo(dados['protocolo']).id)
     70        self.protocolo_view._protocolo = protocolo
     71        tramites = self.protocolo_view._tramites()
     72        ntramites = []
     73        for i in tramites:
     74            if i['data_recebimento']:
     75                i['data_recebimento'] = i['data_recebimento'].strftime('%d/%m%/%Y')
     76            if i['data_disponibilizacao']:
     77                i['data_disponibilizacao'] = i['data_disponibilizacao'].strftime('%d/%m%/%Y')
     78            ntramites.append(i)
     79
     80        dados_prot = {
     81            'protocolo_id': protocolo.id,
     82            'tipoprotocolo': self.protocolo_view._tipo_protocolo(),
     83            'tipodocumento': protocolo.tipodocumento.nome,
     84            'numero': protocolo.numero,
     85            'data_protocolo': protocolo.data_protocolo.strftime('%d/%m%/%Y'),
     86            'numero_documento': protocolo.numero_documento,
     87            'data_emissao': protocolo.data_emissao.strftime('%d/%m%/%Y'),
     88            'assunto': protocolo.assunto,
     89            'situacao': protocolo.situacao.nome,
     90            'referencias': self.protocolo_view._referencias(),
     91            'referenciado_por': self.protocolo_view._referenciado_por(),
     92            'apensado': self.protocolo_view._apensado(),
     93            'apensos': self.protocolo_view._apensos(),
     94            'origens': self.protocolo_view._origens(),
     95            'destinos': self.protocolo_view._destinos(),
     96            'observacoes': self.protocolo_view._observacoes(),
     97            'anexos': self.protocolo_view._anexos(),
     98            'tramites': ntramites,
     99        }
     100
     101        return dados_prot
     102
     103    @log
     104    def render(self):
     105        r = self.request
     106
     107        dados = r.get('dados', '')
     108        if not dados:
     109            return self._json_error(1)
     110
     111        dados = json.loads(dados)
     112        if not self._valida_dados(dados):
     113            return self._json_error(2)
     114
     115        resultado = self._busca_protocolo(dados)
     116        return json.dumps(resultado)
    21117
    22118class TramiteAddWSView(grok.View):
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.