Base models

class shopkit.category.basemodels.CategoryBase(*args, **kwargs)

Bases: django.db.models.base.Model

Abstract base class for a category.

The in_shop property should be a Manager containing all the items which should be enabled in the shop’s frontend.

classmethod get_categories()

Gets all the available categories.

classmethod get_main_categories()

Gets the main categories, which for unnested categories implies all of them. This method exists purely for uniformity reasons.

get_products()

Get all active products for the current category.

class shopkit.category.basemodels.NestedCategoryBase(*args, **kwargs)

Bases: shopkit.category.basemodels.CategoryBase

Abstract base class for a nested category.

classmethod get_main_categories()

Gets the main categories; the ones which have no parent.

get_parent_list(reversed=False)

Return a list of all parent categories of the current category.

By default it lists the categories from parent to child, ie.:

[<categoryt>, <subcategory>, <subsubcategory>, ...]

If the argument reversed evaluates to True, the list runs in reverse order. This saves an extra reverse operation.

Todo

Cache this. It is a slow operation which requires as many queries as the category tree is deep.

get_products()

Get all active products for the current category.

For performance reasons, and added control, this only returns only products explicitly associated to this category - as opposed to listing also products in subcategories of the current category.

This would take a lot more requests and is probably not what we should wish for.

get_subcategories()

Gets the subcategories for the current category.

class shopkit.category.basemodels.MPTTCategoryBase(*args, **kwargs)

Bases: mptt.models.MPTTModel, shopkit.category.basemodels.NestedCategoryBase

classmethod get_main_categories()

Gets the main categories; the ones which have no parent.

get_products()

Get all active products for the current category.

As opposed to the original function in the base class, this also includes products in subcategories of the current category object.

get_subcategories()

Gets the subcategories for the current category.