def _handle_finalize(self, request): state = json.loads(self.get_request_body(request))["state"] self.object = self.get_object() if self.object.pk: # Edit order = update_order_from_state(state, self.object, modified_by=request.user) assert self.object.pk == order.pk messages.success( request, _("Order `%(identifier)s` was updated.") % vars(order)) else: # Create order = create_order_from_state( state, creator=request.user, ip_address=get_client_ip(request), ) object_created.send(sender=Order, object=order, request=request) messages.success( request, _("Order `%(identifier)s` created.") % vars(order)) object_saved.send(sender=Order, object=order, request=request) return JsonResponse({ "success": True, "orderIdentifier": order.identifier, "url": reverse("shuup_admin:order.detail", kwargs={"pk": order.pk}), })
def _handle_source_data(self, request): self.object = self.get_object() state = json.loads(self.get_request_body(request))["state"] source = create_source_from_state( state, creator=request.user, ip_address=get_client_ip(request), order_to_update=self.object if self.object.pk else None, ) # Calculate final lines for confirmation source.calculate_taxes(force_recalculate=True) return { "taxfulTotal": format_money(source.taxful_total_price.amount), "taxlessTotal": format_money(source.taxless_total_price.amount), "totalDiscountAmount": format_money(source.total_discount.amount), "orderLines": [ encode_line(line) for line in source.get_final_lines(with_taxes=True) ], "billingAddress": source.billing_address.as_string_list() if source.billing_address else None, "shippingAddress": source.shipping_address.as_string_list() if source.shipping_address else None, }
def get_notifications(self, request): if not self.check_demo_optin(request): return yield Notification(text="Your IP is %s" % get_client_ip(request)) yield Notification(title="Dice", text="Your lucky number is %d" % random.randint(1, 43), kind="success") yield Notification(title="Stock Alert", text="Items X, Y, Z are running low", kind="warning") yield Notification(title="Outstanding Orders", text="10 orders have not been touched in 7 days", kind="danger")
def __init__(self, request, basket_name="basket", shop=None, **kwargs): super(BaseBasket, self).__init__(shop or request.shop) self.request = request self.basket_name = basket_name self.key = basket_name if request: self.ip_address = get_client_ip(request) self.storage = get_storage() self._data = None self._shipping_address = None self._billing_address = None self._customer_comment = u"" self.creator = getattr(request, "user", None) # {Note: Being "dirty" means "not saved". It's independent of # {the caching status (which is cleared with self.uncache()). # I.e. it's possible to be not saved but cached, or saved but # not cached. self.dirty = False self.uncache() # Set empty values for cache variables
def form_valid(self, form): old_enabled_addons = get_enabled_addons( settings.SHUUP_ENABLED_ADDONS_FILE) new_enabled_addons = form.get_enabled_addons() changes = [] n_add = len(set(new_enabled_addons) - set(old_enabled_addons)) n_del = len(set(old_enabled_addons) - set(new_enabled_addons)) if n_add: changes.append(_("%d new addons enabled.") % n_add) if n_del: changes.append(_("%d previously enabled addons disabled.") % n_del) if changes: set_enabled_addons( settings.SHUUP_ENABLED_ADDONS_FILE, new_enabled_addons, comment="Written via Shuup admin (user %s; IP %s; time %s)" % (self.request.user.pk, get_client_ip( self.request), now().isoformat())) messages.success(self.request, " ".join(changes)) return HttpResponseRedirect(self.request.path + "?reload=1") messages.info(self.request, _("No changes were made.")) return HttpResponseRedirect(self.request.path)