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_MODIFIERSmust 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,totalandextra_rowsattributes 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
reffrom 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,totalandextra_rowsattributes 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_TYPESsetting.
-
class
salesman.basket.serializers.ExtraRowsField(*args, **kwargs)[source]¶ Field to display a list of
ExtraRowSerializerinstances.
-
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_rowsdict 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.ModelSerializerSerializer used to add a new item to basket.