def get_already_voted(request): """ Don't show vote buttons if posted or voted from the same IP. """ ip = request.META.get('REMOTE_ADDR', '0.0.0.0') posted = [feedback.id() for feedback in Feedback.all(keys_only=True).filter('ip', ip)] voted = [vote.feedback_id() for vote in Vote.all().filter('ip', ip)] # logging.debug('posted=%s voted=%s' % (posted, voted)) return set(posted + voted)
def index(request): """ Handle post requests or list recent feedback messages. """ # Check if this is a post request with new feedback. feedback_form = FeedbackForm(request.POST or None) if feedback_form.is_valid(): return submit(request, page=feedback_form.cleaned_data['page'], message=feedback_form.cleaned_data['message']) # Check if this is a post request to vote on a message. vote_form = VoteForm(request.POST or None) if vote_form.is_valid(): return vote(request, vote_form.cleaned_data['vote']) # Check if this is a post request to delete a message. delete_form = DeleteForm(request.POST or None) if delete_form.is_valid(): return delete(request, delete_form.cleaned_data['delete']) # Otherwise, display recent feedback. feedback_list = Feedback.all() feedback_list.order('-points').order('-submitted') already_voted = get_already_voted(request) return render_to_response(request, 'feedback/index.html', locals())