You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

114 lines
2.8 KiB

from django.core.urlresolvers import reverse_lazy, reverse
from django.http import JsonResponse, HttpResponse, HttpResponseRedirect
from django.utils import timezone
from django.views.decorators.http import etag
from django.views.generic import View, ListView, DetailView
from .models import DTYSModel
import logging
log = logging.getLogger(__name__)
def get_change(current, previous):
if current == previous:
return 100.0
try:
return (abs(current - previous) / previous) * 100.0
except ZeroDivisionError:
return 0
class DTYSListView(ListView):
model = DTYSModel
template_name = "dtys/index.jinja"
def get_queryset(self, *args, **kwargs):
qs = super(DTYSListView, self).get_queryset(*args, **kwargs)
qs = qs.filter(
is_public=True,
start_date__lte=timezone.now().date(),
end_date__gte=timezone.now().date(),
start_time__lte=timezone.now().time(),
end_time__gte=timezone.now().time()
)
return qs
class DTYSBuyView(DetailView):
model = DTYSModel
def get(self, request, *args, **kwargs):
obj = self.get_object()
log.debug(obj.id)
if obj.is_public and not obj.is_stopped:
from store.cart import Cart, CartItem
from store.models import ProductVariation
# stop DTYS for this product
obj.stop()
# Add to cart
cart = Cart(self.request)
try:
item_variant = ProductVariation.objects.get(pk=obj.product.pk)
except ProductVariation.DoesNotExist:
return HttpResponseRedirect('/')
cart.add_item(CartItem(item_variant, 1))
return HttpResponseRedirect('/store/cart/')
return HttpResponseRedirect('/dtys/')
def latest_entry(request):
d = DTYSModel.objects.filter(
is_public=True,
is_stopped=False
)
if d.count() > 0:
pass
return "myETAG" + str(timezone.now().second)
@etag(latest_entry)
def dtys_modified(request):
return HttpResponse('')
class DTYSInfoView(View):
"""Ajax info"""
def get(self, request):
data = {
"dtys_list": []
}
dtys_list = DTYSModel.objects.filter(
is_public=True,
start_date__lte=timezone.now(),
end_date__gte=timezone.now(),
start_time__lte=timezone.now().time()
)
for i in dtys_list:
if i.end_time <= timezone.now().time():
i.stop()
dtys_item = {
'id': i.id,
'stopped': i.is_stopped
}
if not i.is_stopped:
dtys_item['current_price'] = i.current_price_format()
data['dtys_list'].append(dtys_item)
return JsonResponse(data)