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: salesman.basket.modifiers.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
- process_basket(basket: salesman.basket.models.Basket, request: django.http.request.HttpRequest) → None[source]¶
Process basket. Add extra row to bakset using
self.add_extra_row()
method.- Parameters
basket (Basket) – Basket instance
request (HttpRequest) – Django request
- class salesman.basket.modifiers.BasketModifiersPool[source]¶
Pool for storing modifier instances.
- get_modifiers() → List[salesman.basket.modifiers.BasketModifier][source]¶
Returns modifier instances.
- Returns
Modifier instances
- Return type
list
- modifiers.basket_modifiers_pool = <salesman.basket.modifiers.BasketModifiersPool object>¶
Utils¶
- salesman.basket.utils.validate_extra(value: dict, context: dict = {}) → dict[source]¶
Default extra validator function. Can be overriden by providing a dotted path to a function in
SALESMAN_EXTRA_VALIDATOR
setting.- Parameters
value (str) – Extra dict to be validated
context (dict, optional) – Validator context data. Defaults to {}.
- Raises
ValidationError – In case data is not valid
- Returns
Validated value
- Return type
dict
Models¶
- class salesman.basket.models.BasketManager(*args, **kwargs)[source]¶
- get_or_create_from_request(request: django.http.request.HttpRequest) → Tuple[salesman.basket.models.Basket, bool][source]¶
Get basket from request or create a new one. If user is logged in session basket gets merged into a user basket.
- Returns
(basket, created)
- Return type
tuple
- 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: int¶
Returns basket item count.
- property quantity: int¶
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(*args, **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(*args, **kwargs)[source]¶
Serializer for basket item.