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.

views.py 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from django.http import HttpResponseRedirect
  2. from django.template import Context, loader, RequestContext
  3. from django.shortcuts import render, get_object_or_404
  4. from django.core.urlresolvers import reverse
  5. from django.core.paginator import Paginator, InvalidPage, EmptyPage
  6. from django.views.generic import ListView, DetailView
  7. from oscar.views import ModelView
  8. from oscar.services import import_module
  9. order_models = import_module('order.models', ['Order', 'BatchLine', 'ShippingEvent', 'ShippingEventType', 'PaymentEventType'])
  10. class OrderListView(ListView):
  11. context_object_name = "orders"
  12. template_name = 'order_management/browse.html'
  13. paginate_by = 20
  14. def get_queryset(self):
  15. return order_models.Order.objects.all()
  16. class OrderView(ModelView):
  17. template_file = "order_management/order.html"
  18. def get_model(self):
  19. return get_object_or_404(order_models.Order, number=self.kwargs['order_number'])
  20. def handle_GET(self, order):
  21. shipping_options = order_models.ShippingEventType.objects.all()
  22. payment_options = order_models.PaymentEventType.objects.all()
  23. self.response = render(self.request, self.template_file, locals())
  24. def handle_POST(self, order):
  25. self.response = HttpResponseRedirect(reverse('oscar-order-management-order', kwargs={'order_number': order.number}))
  26. line_ids = self.request.POST.getlist('order_line')
  27. # Need to determine what kind of event update this is
  28. if self.request.POST['shipping_event']:
  29. # Load event type obj
  30. event_type = order_models.ShippingEventType.objects.get(code=self.request.POST['shipping_event'])
  31. # Need to load lines in a way that checks they are from the order
  32. lines = order_models.BatchLine.objects.in_bulk(line_ids)
  33. for line in lines.values():
  34. order_models.ShippingEvent.objects.create(line=line, quantity=line.quantity, event_type=event_type)