shuup.core.order_creator package

Submodules

shuup.core.order_creator.constants module

shuup.core.order_creator.signals module

Module contents

shuup.core.order_creator.get_order_source_modifier_modules()

Get a list of configured order source modifier module instances.

Return type:

list[OrderSourceModifierModule]

shuup.core.order_creator.is_code_usable(order_source, code)
class shuup.core.order_creator.OrderCreator(request=None)

Bases: OrderProcessor

Initialize order creator.

Parameters:

request (django.http.HttpRequest|None) – Optional request object for backward compatibility. Passing non-None value is DEPRECATED.

__init__(request=None)[source]

Initialize order creator.

Parameters:

request (django.http.HttpRequest|None) – Optional request object for backward compatibility. Passing non-None value is DEPRECATED.

create_order(order_source)[source]
class shuup.core.order_creator.OrderModifier

Bases: OrderProcessor

update_order_from_source(order_source, order)[source]
class shuup.core.order_creator.OrderSource(shop)

Bases: object

A “provisional order” object.

Contains data that is not strictly about a basket’s contents, but is useful for things that need to calculate something based on the basket’s contents and extra data, such as shipping/billing addresses.

The core API of OrderCreator reads an OrderSource.

No objects held here need to be saved, but they may be.

__init__(shop)[source]
add_code(code)[source]

Add a code to this OrderSource.

At this point it is expected that the customers permission to use the code has already been checked by the caller.

The code will be converted to text.

Parameters:

code (str) – The code to add.

Returns:

True if code was added, False if it was already there.

Return type:

bool

add_line(**kwargs)[source]
calculate_taxes(force_recalculate=False)[source]
calculate_taxes_or_raise()[source]
clear_codes()[source]

Remove all codes from this OrderSource.

Returns:

True if there were any codes before clearing.

Return type:

bool

property codes
count_products(supplier=None)[source]

The same as smart_product_count`, but accepts a supplier as a filter.

Return type:

int

create_line(**kwargs)[source]
property creator
property customer
get_final_lines(with_taxes=False)[source]

Get lines with processed lines added.

This implementation includes all lines returned by get_lines. In addition, lines from shipping and payment methods are also returned. These latter lines can be extended, deleted or replaced by a subclass (by overriding _compute_processed_lines method) and with the post_compute_source_lines signal. Lines returned are not validated.

Note

By default, taxes for the returned lines are not calculated when self.calculate_taxes_automatically is false. Pass in True to with_taxes argument or use calculate_taxes method to force tax calculation.

get_lines()[source]

Get unprocessed lines in this OrderSource.

See also get_final_lines.

get_product_lines()[source]

Get lines with a product.

This does not use get_final_lines because it will be called when final lines are being computed (for example to determine shipping discounts based on the total price of all products).

get_tax_summary()[source]
Return type:

TaxSummary

get_total_tax_amount()[source]
Return type:

Money

get_validation_errors()[source]
has_shippable_lines()[source]
property is_empty
property language
property modified_by
property orderer
property payment_method
property product_count

Get the sum of product quantities in this order source.

Note: It is a bit silly to sum different units together. Check smart_product_count and product_line_count for other options.

Return type:

decimal.Decimal

property product_ids
property product_line_count

Get the total number of product lines in this order source.

Return type:

int

remove_code(code)[source]

Remove a given code from this OrderSource.

Parameters:

code (str) – The code to remove.

Returns:

True if code was removed, False if code was not there.

Return type:

bool

property shipping_method
property smart_product_count

Get the total number of separate products in this order source.

Quantities of lines, which have countable products, will be summed and then number of lines with non-countable product units will be added to that. E.g. smart product count for a basket containing 5 chocolate bars, 2 t-shirts and 2.5 kg of cocoa beans would be 5 + 2 + 1 = 8.

Definition of “countable” here: If product has an unit that allows presenting its quantities as a bare number (see allow_bare_number) and its quantity is an integral number, we assume that the unit is similar to “Pieces” unit and those products being countable. Other units are assumed to be non-countable.

Return type:

int

property status
taxful_total_discount

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

taxful_total_discount_or_none

Property that turns TaxesNotCalculated exception to None.

Used to implement the OrderSource taxful/taxless total price properties with the “_or_none” suffix.

taxful_total_price

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

taxful_total_price_of_products

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

taxful_total_price_or_none

Property that turns TaxesNotCalculated exception to None.

Used to implement the OrderSource taxful/taxless total price properties with the “_or_none” suffix.

taxless_total_discount

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

taxless_total_discount_or_none

Property that turns TaxesNotCalculated exception to None.

Used to implement the OrderSource taxful/taxless total price properties with the “_or_none” suffix.

taxless_total_price

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

taxless_total_price_of_products

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

taxless_total_price_or_none

Property that turns TaxesNotCalculated exception to None.

Used to implement the OrderSource taxful/taxless total price properties with the “_or_none” suffix.

total_discount

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

property total_gross_weight
total_price

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

total_price_of_products

Property that calculates a sum of prices.

Used to implement various total price properties to OrderSource.

Calculate the totals same way as for orders which is from rounded line prices.

uncache()[source]

Uncache processed lines.

Should be called after changing the contents and before (re)accessing lines with get_final_lines.

update(**values)[source]
update_from_order(order)[source]
verify_orderability()[source]
class shuup.core.order_creator.OrderSourceModifierModule

Bases: object

can_use_code(order_source, code)[source]
clear_codes(order)[source]
get_new_lines(order_source, lines)[source]

Get new lines to be added to order source.

Return type:

Iterable[shuup.core.order_creator.SourceLine]

use_code(order, code)[source]
class shuup.core.order_creator.OrderSourceMethodsUnavailabilityReasonsValidator

Bases: object

classmethod get_validation_errors(order_source)[source]
class shuup.core.order_creator.OrderSourceMinTotalValidator

Bases: object

classmethod get_validation_errors(order_source)[source]
class shuup.core.order_creator.OrderSourceSupplierValidator

Bases: object

classmethod get_validation_errors(order_source)[source]
class shuup.core.order_creator.SourceLine(source, **kwargs)

Bases: TaxableItem, Priceful, LineWithUnit

Line of OrderSource.

Note: Properties like price, taxful_price, tax_rate, etc. are inherited from the Priceful mixin.

Initialize SourceLine with a given source and data.

Parameters:
__init__(source, **kwargs)[source]

Initialize SourceLine with a given source and data.

Parameters:
base_unit_price = None
property data
discount_amount = None
classmethod from_dict(source, data)[source]

Create SourceLine from a given OrderSource and dict.

Return type:

cls

get(key, default=None)[source]
on_parent_change_behavior = 1
property parent_line
quantity = None
property tax_amount

shuup.utils.money.Money

Type:

rtype

property tax_class

shuup.core.models.TaxClass

Type:

rtype

property taxes

Taxes of this line.

Determined by a TaxModule in OrderSource.calculate_taxes.

Return type:

list[shuup.core.taxing.LineTax]

to_dict()[source]
update(**kwargs)[source]
exception shuup.core.order_creator.TaxesNotCalculated

Bases: TypeError

Requested tax calculated price, but taxes are not calculated.

Raised when requesting a price with taxful/taxless mismatching with shop.prices_include_tax, but taxes are not yet calculated.

class shuup.core.order_creator.OrderLineBehavior(value)

Bases: Enum

INHERIT = 1
SKIP = 2
DELETE = 3