def save(self, *args, **kwargs): return Order.create_from(client=self.client, config=self.cleaned_data.get("config"), media=self.cleaned_data.get("media"), quantity=self.cleaned_data.get("quantity"), address=self.cleaned_data.get("address"), request_lang=self.request_lang).min_id
def order_add_shipping(request, order_id): order = Order.get_by_scheduler_id(order_id) if order.data.status != "pending_shipment": raise Http404( _("Order %(order_id)s is not pending_shipment") % {"order_id": order.min_id}) context = {"order": order} if request.method == "POST": form = OrderShippingForm(order=order, data=request.POST) if form.is_valid(): try: form.save() except Exception as exp: logger.error(exp) messages.error( request, _("Failed to record shipping informations.. (ref: %(err)s)" ) % {"err": exp}, ) else: messages.success(request, _("Order Shipping informations recorded!")) return redirect("order_detail", order_min_id=order.min_id) else: form = OrderShippingForm(order=order) context["form"] = form return render(request, "add_shipping.html", context)
def order_detail_scheduler_id(request, order_id): order = Order.get_by_scheduler_id(order_id) if order is None: raise Http404( "Order with Scheduler ID `{}` not found".format(order_id)) return redirect("order_detail", order_min_id=order.min_id)
def order_detail(request, order_min_id): order = Order.get_or_none(order_min_id) if order is None: raise Http404("Order with ID `{}` not found".format(order_min_id)) context = {"order": order} return render(request, "order.html", context)
def order_detail_scheduler_id(request, order_id): order = Order.get_by_scheduler_id(order_id) if order is None: raise Http404( _("Order with Scheduler ID `%(order_id)s` not found") % {"order_id": order_id}) return redirect("order_detail", order_min_id=order.min_id)
def order_detail(request, order_min_id): order = Order.get_or_none(order_min_id) if order is None: raise Http404( _("Order with ID `%(order_id)s` not found") % {"order_id": order_min_id}) context = {"order": order} return render(request, "order.html", context)
def order_cancel(request, order_min_id): order = Order.get_or_none(order_min_id) if order is None: raise Http404("Order with ID `{}` not found".format(order_min_id)) if order.cancel(): messages.success(request, "Successfuly canceled order #{}".format(order_min_id)) else: messages.error(request, "Unable to cancel order #{}".format(order_min_id)) return redirect("order_detail", order_min_id=order.min_id)
def handle(self, *args, **options): logger.info("## running periodic tasks...") now = timezone.now() logger.info("updating scheduler data for in-progress orders...") for order in Order.objects.filter(status=Order.IN_PROGRESS): o = Order.fetch_and_get(order.id) logger.debug(f"..{o.min_id}: {o.status}") logger.info("disabling expired user accounts...") for profile in Profile.objects.filter(expire_on__lte=now, user__is_active=True): logger.info(f" disabling {profile.username}: {profile}") profile.user.is_active = False profile.user.save() profile.expire_on = None profile.save() logger.info(">done")
def order_cancel(request, order_min_id): order = Order.get_or_none(order_min_id) if order is None: raise Http404( _("Order with ID `%(order_id)s` not found") % {"order_id": order_min_id}) if order.cancel(): messages.success( request, _("Successfuly canceled order #%(order_id)s") % {"order_id": order_min_id}, ) else: messages.error( request, _("Unable to cancel order #%(order_id)s") % {"order_id": order_min_id}, ) return redirect("order_detail", order_min_id=order.min_id)
def recreate(request, order_id): order = Order.get_by_scheduler_id(order_id) if order is None: raise Http404( _("Order `%(order_id)s` does not exists") % {"order_id": order_id} ) try: new_order = order.recreate() except Exception as exc: logger.error(f"Unable to recreate order: {exc}") logger.exception(exc) messages.error( request, _("Unable to recreate order %(order_id)s: -- ref: %(err)s") % {"order_id": order_id, "err": exc}, ) else: messages.success( request, _("Successfuly recreated order: %(new_id)s (NEW)") % {"new_id": new_order.scheduler_id}, ) return redirect("all-orders")
def order_new(request, kind=Media.VIRTUAL): context = { "addresses": Address.objects.filter(organization=request.user.profile.organization), "configurations": Configuration.objects.filter( organization=request.user.profile.organization), "medias": Media.objects.all(), "LINK_VALIDITY_DAYS": Media.EXPIRATION_DELAY, } # can't order without a config if not context["configurations"].count(): messages.warning( request, _("You need a Configuration to place an Order. Add one first!")) return redirect("configuration_list") # staff and admin are allowed to place multiple orders at once if request.user.is_staff or request.user.is_superuser: can_order = True previous_order_id = None else: previous_order_id = Order.profile_has_active(request.user.profile) can_order = not previous_order_id context.update({ "can_order": can_order, "previous_order_id": previous_order_id }) # display an alert informing user he cannot order at the moment # if he had just clicked on Order, using an error message and blocking the process # otherwise a warning is enough if not context["can_order"]: func = getattr(messages, "error" if request.method == "POST" else "warning") func( request, _("Your previous Order (#%(order_id)s) must complete " "before you're allowed to request a new one.") % {"order_id": previous_order_id}, ) form = OrderForm(request=request) if request.method == "POST" and can_order: # which form is being saved? form = OrderForm(request.POST, request=request) if form.is_valid(): try: res = form.save() except Exception as exp: logger.error(exp) messages.error(request, _("Error while saving… %(err)s") % {"err": exp}) else: messages.success(request, form.success_message(res)) return redirect("order_list") else: pass context["form"] = form return render(request, "order_new.html", context)