# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render

from django.conf import settings
from magazin.models import *
from prostopages.models import *

from django.http import Http404, HttpResponse, HttpResponsePermanentRedirect
from django.shortcuts import get_object_or_404
from django.views.generic import DetailView

from django.shortcuts import render_to_response
from django.template.loader import get_template


from django.views.generic import *
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
# Create your views here.

from django.db.models import Count
# class PostDetailView(DetailView): # детализированное представление модели
#     model = Stranica
from django.template import loader
DEFAULT_TEMPLATE = 'magazin/magzin_detail.html'
# class StranicaListView(ListView):
    # model = Stranica
    # queryset = Stranica.objects.filter(active=True).order_by('name_block')
    # paginate_by = 3
	# context_object_name = 'cat'
	# template_name = 'stranica/stranica_list.html'

#поиск
from myfifasalon.forms import *
import json
from django.views.generic import *
# //////////////////////////////////////////////


def magazin_list(request ):
	#поиск
	form = SearchTagForm()
	# страницы
	akciya = Akciya.objects.filter(active=True)
	slider = Slider.objects.filter(active=True)
	fotos = Fotos.objects.filter(active=True)
	blog = Blog.objects.filter(active=True)
	pages = Pages.objects.filter(active=True)
	prostopages = Prostopages.objects.filter(active=True)
	masters = Masters.objects.filter(active=True)
	otziv = Otziv.objects.filter(active=True)
	otzivall = Otziv.objects.filter(active=True)[:8]
	otzivallmax = Otziv.objects.filter(active=True).annotate(Count("id"))
	skidka = Skidka.objects.filter(active=True)
	category = Category.objects.filter(active=True)
	#tovar = Tovar.objects.filter(active=True)


	tovar = Tovar.objects.filter(active=True).order_by('created_at').annotate(count_post = Count('id'))
	paginator = Paginator(tovar, 12)
	page = request.GET.get('page')
	try:
		tovar = paginator.page(page)
	except PageNotAnInteger:
		tovar = paginator.page(1)
	except EmptyPage:
		tovar = paginator.page(paginator.num_pages)
	return render(request, 'magazin/magazin_list.html', {
		
		'akciya':akciya, 
		'slider':slider, 
		'fotos':fotos, 

		'blog':blog, 
		'prostopages':prostopages, 
		'pages':pages, 
		'masters':masters, 
		'otziv':otziv,
		'otzivall':otzivall,
		'otzivallmax':otzivallmax,  

		'skidka':skidka, 
		'category':category, 

		'tovar':tovar, 

		'page': page,

		'searchtag' : form,
		# "cat": cat

		})




def magazin_category(reguest,  category_slug):
	#поиск
	form = SearchTagForm()
	# страницы
	akciya = Akciya.objects.filter(active=True)
	slider = Slider.objects.filter(active=True)
	fotos = Fotos.objects.filter(active=True)
	blog = Blog.objects.filter(active=True)
	pages = Pages.objects.filter(active=True)
	prostopages = Prostopages.objects.filter(active=True)
	masters = Masters.objects.filter(active=True)
	otziv = Otziv.objects.filter(active=True)
	otzivall = Otziv.objects.filter(active=True)[:8]
	otzivallmax = Otziv.objects.filter(active=True).annotate(Count("id"))
	skidka = Skidka.objects.filter(active=True)
	tovar = Tovar.objects.filter(active=True, category_tovar__category_slug=category_slug)
	category = get_object_or_404(Category, category_slug=category_slug)
	categoryall = Category.objects.filter(active=True)
	# category = Category.objects.all().annotate(count_post = Count('tovar'))



	paginator = Paginator(tovar, 12)
	page = reguest.GET.get('page')
	try:
		tovar = paginator.page(page)
	except PageNotAnInteger:
		tovar = paginator.page(1)
	except EmptyPage:
		tovar = paginator.page(paginator.num_pages)
	return render(reguest, 'magazin/category.html', {
		'akciya':akciya, 
		'slider':slider, 
		'fotos':fotos, 

		'blog':blog, 
		'prostopages':prostopages, 
		'pages':pages, 
		'masters':masters, 
		'otziv':otziv, 
		'otzivall':otzivall,
		'otzivallmax':otzivallmax, 

		'skidka':skidka, 
		'tovar':tovar, 
		'category': category,
		'categoryall':categoryall, 

		'page': page,

		'searchtag' : form,
		})


def magazin_single(request, tovar_slug, category_slug):
	#поиск
	form = SearchTagForm()
	# страницы
	akciya = Akciya.objects.filter(active=True)
	slider = Slider.objects.filter(active=True)
	fotos = Fotos.objects.filter(active=True)

	blog = Blog.objects.filter(active=True)
	pages = Pages.objects.filter(active=True)
	prostopages = Prostopages.objects.filter(active=True)
	masters = Masters.objects.filter(active=True)
	otziv = Otziv.objects.filter(active=True)
	otzivall = Otziv.objects.filter(active=True)[:8]
	otzivallmax = Otziv.objects.filter(active=True).annotate(Count("id"))
	skidka = Skidka.objects.filter(active=True)
	# tovar = Tovar.objects.filter(active=True)
	category = get_object_or_404(Category, category_slug=category_slug)

	tovar = get_object_or_404(Tovar.objects.filter(active=True), tovar_slug=tovar_slug, category_tovar__category_slug=category_slug)
	
	tovarrandom = Tovar.objects.all()[:8]

	if tovar.template_name:
		template = loader.select_template((tovar.template_name, DEFAULT_TEMPLATE))
	else:
		template = loader.get_template(DEFAULT_TEMPLATE)
	response = HttpResponse(template.render({

		'akciya':akciya, 
		'slider':slider, 
		'fotos':fotos, 

		'blog':blog, 
		'prostopages':prostopages, 
		'pages':pages, 
		'masters':masters, 
		'otziv':otziv, 
		'otzivall':otzivall,
		'otzivallmax':otzivallmax, 

		'skidka':skidka, 
		'category':category, 
		'tovar':tovar, 

		'tovarrandom':tovarrandom, 

		'searchtag' : form,
	
		 }, request))
	return response
