예제 #1
0
    def __call__(self, REQUEST, RESPONSE):
        annotations = apoiar_proposta.get_anno_apoios(self.context)
        if api.user.is_anonymous():
            resultado = {
                'msg': u"É necessário logar na plataforma para votar",
                'action': "",
                'total': len(annotations[APOIOS_KEY])
            }
            # Devolve resposta json para solicitação ajax
            response_json = json.dumps(resultado)
            RESPONSE.setHeader('Content-Type',
                               'application/json; charset=utf-8')
            RESPONSE.setHeader('content-length', len(response_json))
            return response_json
            # return RESPONSE.redirect(
            #     '%s/login?came_from=%s' %
            #     (api.portal.get().absolute_url(), REQUEST['HTTP_REFERER']))

        userid = api.user.get_current().getUserName()

        # Verifica se o usuário está apoiando outra proposta
        consulta_publica = self.context.__parent__
        propostas = consulta_publica.listFolderContents(
            contentFilter={"portal_type": "Proposta"})
        apoio_existente = False
        for proposta in propostas:
            if proposta.id == self.context.id:
                continue
            annotations_proposta = IAnnotations(proposta)
            if userid in annotations_proposta[APOIOS_KEY]:
                apoio_existente = True
                break

        # Verifica se a proposta já foi apoiada pelo usuário.
        # Caso positivo, o apoio é desfeito.
        if apoio_existente == True:
            action = ''
            msg = u'Você já apoiou outra proposta: "%s".' % proposta.title
        elif userid in annotations[APOIOS_KEY]:
            annotations[APOIOS_KEY].remove(userid)
            action = 'desfazer'
            msg = u'O seu apoio foi desfeito com sucesso.'
        else:
            annotations[APOIOS_KEY].append(userid)
            action = 'apoiar'
            msg = u'O seu apoio foi contabilizado. Obrigado pela participação!'

        self.context.reindexObject(idxs=['apoios'])

        resultado = {
            'msg': msg,
            'action': action,
            'total': len(annotations[APOIOS_KEY])
        }
        # Devolve resposta json para solicitação ajax
        response_json = json.dumps(resultado)
        RESPONSE.setHeader('Content-Type', 'application/json; charset=utf-8')
        RESPONSE.setHeader('content-length', len(response_json))
        return response_json
예제 #2
0
    def __call__(self, REQUEST, RESPONSE):
        annotations = apoiar_proposta.get_anno_apoios(self.context)
        if api.user.is_anonymous():
            return RESPONSE.redirect(
                '%s/login?came_from=%s' %
                (api.portal.get().absolute_url(), REQUEST['HTTP_REFERER']))

        userid = api.user.get_current().getUserName()

        # Verifica se o usuário está apoiando outra proposta
        consulta_publica = self.context.__parent__
        propostas = consulta_publica.listFolderContents(
            contentFilter={"portal_type": "Proposta"}
        )
        for proposta in propostas:
            if proposta.id == self.context.id:
                continue
            annotations_proposta = IAnnotations(proposta)
            if userid in annotations_proposta[APOIOS_KEY]:
                msg = u'Você já apoiou outra proposta: "%s".' % proposta.title
                return msg

        # Verifica se a proposta já foi apoiada pelo usuário.
        # Caso positivo, o apoio é desfeito.
        if userid in annotations[APOIOS_KEY]:
            annotations[APOIOS_KEY].remove(userid)
            action = 'desfazer'
            msg = u'O seu apoio foi desfeito com sucesso.'
        else:
            annotations[APOIOS_KEY].append(userid)
            action = 'apoiar'
            msg = u'O seu apoio foi contabilizado. Obrigado pela participação!'

        self.context.reindexObject(idxs=['apoios'])

        resultado = {
            'msg': msg,
            'action': action,
            'total': len(annotations[APOIOS_KEY])
        }
        # Devolve resposta json para solicitação ajax
        response_json = json.dumps(resultado)
        RESPONSE.setHeader('Content-Type',
                           'application/json; charset=utf-8')
        RESPONSE.setHeader('content-length', len(response_json))
        return response_json
예제 #3
0
 def __init__(self, context, request):
     super(PropostaView, self).__init__(context, request)
     self.annotations = apoiar_proposta.get_anno_apoios(self.context)
예제 #4
0
 def __init__(self, context, request):
     super(PropostaView, self).__init__(context, request)
     self.annotations = apoiar_proposta.get_anno_apoios(self.context)