Basket¶
Basket reference.
Modifiers¶
To use the modifiers:
from salesman.basket.modifiers import basket_modifiers_pool
modifiers = basket_modifiers_pool.get_modifiers()
-
class
salesman.basket.modifiers.
BasketModifier
[source]¶ Basket modifier base, all modifiers defined in
SALESMAN_BASKET_MODIFIERS
must extend this class.-
add_extra_row
(obj: BasketOrItem, label: str, amount: decimal.Decimal, extra: dict = {}, charge: bool = True) → None[source]¶ Adds extra row to either the basket or item.
- Parameters
obj (BasketOrItem) – Basket or BasketItem instance
label (str) – Row label
amount (Decimal) – Row amount
extra (dict, optional) – Row extra data. Defaults to {}.
charge (bool, optional) – Whether to charge the amount. Defaults to True.
-
process_item
(item: salesman.basket.models.BasketItem, request: django.http.request.HttpRequest) → None[source]¶ Process item. Add extra row to item using
self.add_extra_row()
method.- Parameters
item (BasketItem) – Basket item instance
request (HttpRequest) – Django request
-
-
modifiers.
basket_modifiers_pool
= <salesman.basket.modifiers.BasketModifiersPool object>¶
Models¶
-
class
salesman.basket.models.
Basket
(id, owner, extra, date_created, date_updated)[source]¶ -
update
(request: django.http.request.HttpRequest) → None[source]¶ Process basket with modifiers defined in
SALESMAN_BASKET_MODIFIERS
. This method setssubtotal
,total
andextra_rows
attributes on the basket and updates the items. Should be called every time the basket item is added, removed or updated or basket extra is updated.- Parameters
request (HttpRequest) – Django request
-
add
(product: object, quantity: int = 1, ref: Optional[str] = None, extra: Optional[dict] = None) → salesman.basket.models.BasketItem[source]¶ Add product to the basket.
- Returns
BasketItem instance
- Return type
-
remove
(ref: str) → None[source]¶ Remove item with given
ref
from the basket.- Parameters
ref (str) – Item ref to remove.
-
merge
(other: salesman.basket.models.Basket) → None[source]¶ Merge other basket with this one, delete afterwards.
- Parameters
other (Basket) – Basket which to merge
-
property
count
¶ Returns basket item count.
-
property
quantity
¶ Returns the total quantity of all items in a basket.
-
-
class
salesman.basket.models.
BasketItem
(id, basket, ref, product_content_type, product_id, quantity, extra, date_created, date_updated)[source]¶ -
update
(request: django.http.request.HttpRequest) → None[source]¶ Process items with modifiers defined in
SALESMAN_BASKET_MODIFIERS
. This method setsunit_price
,subtotal
,total
andextra_rows
attributes on the item. Should be called every time the basket item is added, removed or updated.- Parameters
request (HttpRequest) – Django request
-
Serializers¶
-
class
salesman.basket.serializers.
ProductField
(*args, **kwargs)[source]¶ Related product field that uses a serializer based on product type taken from
SALESMAN_PRODUCT_TYPES
setting.
-
class
salesman.basket.serializers.
ExtraRowsField
(*args, **kwargs)[source]¶ Field to display a list of
ExtraRowSerializer
instances.
-
class
salesman.basket.serializers.
ExtraRowSerializer
(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]¶ Extra row serializer used for adding extra data to
extra_rows
dict on both the basket and basket item model. Mostly used when processing basket modifiers.
-
class
salesman.basket.serializers.
BasketItemSerializer
(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]¶ Serializer for basket item.
-
class
salesman.basket.serializers.
BasketItemCreateSerializer
(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]¶ Bases:
rest_framework.serializers.ModelSerializer
Serializer used to add a new item to basket.