Exemple #1
0
    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}),
        })
Exemple #2
0
 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,
     }
Exemple #3
0
 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")
Exemple #4
0
    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
Exemple #5
0
    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)