def __call__(self, REQUEST, RESPONSE): anonuid = None #pode_votar_anonimo = api.portal.portal.getProperty( # 'cioppino.twothumbs.anonymousvoting') if api.user.is_anonymous(): return RESPONSE.redirect( '%s/login?came_from=%s' % (api.portal.get().absolute_url(), REQUEST['HTTP_REFERER'])) # if not pode_votar_anonimo: # return RESPONSE.redirect( # '%s/login?came_from=%s' % # (api.portal.get().absolute_url(), REQUEST['HTTP_REFERER'])) # anonuid = self.request.cookies.get(COOKIENAME, None) # if anonuid is None: # anonuid = str(uuid4()) # RESPONSE.setCookie(COOKIENAME, anonuid) form = self.request.form try: paragrafo_id = int(form.get('paragrafo_id')) except TypeError: return 'Erro: paragrafo invalido' comentario = form.get('comentario', None) action = form.get('action', None) if action == 'concordar': action = rate.concordar(self.context, paragrafo_id, userid=anonuid) elif action == 'concordar_ressalva': action = rate.concordar_ressalva(self.context, paragrafo_id, userid=anonuid) elif action == 'discordar': action = rate.discordar(self.context, paragrafo_id, userid=anonuid) elif action == 'comentar' and comentario != '': action = rate.comentar(self.context, paragrafo_id, comentario, userid=anonuid) else: return 'Erro: ou você concorda ou você discorda.' if not form.get('ajax', False): return RESPONSE.redirect(REQUEST['HTTP_REFERER']) else: resultado = rate.get_total(self.context, paragrafo_id) resultado['action'] = action resultado['msg'] = _get_message(action) # 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
def get_total(self): """ Examina a anotação no objeto e devolve o numero de concordancias e discordancias por parágrafo """ return rate.get_total(self.context, self.paragrafo_id)