========= Dashboard ========= The dashboard is the backend interface for managing the store. That includes the product catalogue, orders and stock, offers etc. It is intended as a complete replacement of the Django admin interface. The app itself only contains a view that serves as a kind of homepage, and some logic for managing the navigation (in ``nav.py``). There's several sub-apps that are responsible for managing the different parts of the Oscar store. Permission-based dashboard -------------------------- Staff users (users with ``is_staff==True``) get access to all views in the dashboard. To better support Oscar's use for marketplace scenarios, the permission-based dashboard has been introduced. If a non-staff user has the ``partner.dashboard_access`` permission set, they are given access to a subset of views, and their access to products and orders is limited. :class:`~oscar.apps.partner.abstract_models.AbstractPartner` instances have a :attr:`~oscar.apps.partner.abstract_models.AbstractPartner.users` field. Prior to Oscar 0.6, this field was not used. Since Oscar 0.6, it is used solely for modelling dashboard access. If a non-staff user with the ``partner.dashboard_access`` permission is in :attr:`~oscar.apps.partner.abstract_models.AbstractPartner.users`, they can: * Create products. It is enforced that at least one stock record's partner has the current user in ``users``. * Update products. At least one stock record must have the user in the stock record's partner's ``users``. * Delete and list products. Limited to products the user is allowed to update. * Managing orders. Similar to products, a user get access if one of an order's lines is associated with a matching partner. For many marketplace scenarios, it will make sense to ensure at checkout that a basket only contains lines from one partner. Please note that the dashboard currently ignores any other permissions, including `Django's default permissions`_. .. note:: The permission-based dashboard currently does not support parent or child products. Supporting this requires a modelling change. If you require this, please get in touch so we can first learn about your use case. .. _Django's default permissions: https://docs.djangoproject.com/en/stable/topics/auth/default/#default-permissions Abstract models --------------- None. Views ----- .. automodule:: oscar.apps.dashboard.views :members: