from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponse, HttpResponseRedirect
from .models import Question, Choice, Person
from django.template import loader
from django.http import Http404
from django.urls import reverse
from django.views import generic
from django.views.generic import TemplateView, ListView
import http.client
import json


class IndexView(generic.ListView):
    template_name = 'index.html'
    context_object_name = 'latest_question_list'
    def get_queryset(self):
        """Return the last five published questions."""
        return Question.objects.order_by('-pub_date')[:5]

class DetailView(generic.DetailView):
    model = Question
    template_name = 'polls/detail.html'

class ResultsView(generic.DetailView):
    model = Question
    template_name = 'polls/results.html'

def vote(request, question_id):
    question = get_object_or_404(Question, pk=question_id)
    try:
        selected_choice = question.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        # Redisplay the question voting form.
        return render(request, 'polls/detail.html', {
            'question': question,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()
        # Always return an HttpResponseRedirect after successfully dealing
        # with POST data. This prevents data from being posted twice if a
        # user hits the Back button.
        return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))

def person_query(request):
    query = 'SELECT * FROM polls_person WHERE polls_person.first_name LIKE  "%s"' % request.GET['first_name']
    model_items = Person.objects.raw(query)
    #if 'first_name' in request.GET and 'last_name' in request.GET:
    #    query = 'SELECT * FROM polls_person WHERE polls_person.first_name LIKE  "%s"' % request.GET['first_name']
       # model_items = Person.objects.raw(query)
        #print(Person.objects.raw(query))
    #else:
       # model_items = Person.objects.all()
    return render(request, 'person_query.html', {'model_items': model_items})
    #return redirect(request.META['HTTP_REFERER'])
