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.

AbstractPartner instances have a 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 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. By default, user will get access to all lines of the order, even though supplies only one of them. If you need user to see only own lines or apply additional filtering - you can customise get_order_lines() method.

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.


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.

Abstract models



class oscar.apps.dashboard.views.IndexView(**kwargs)[source]

An overview view which displays several reports about the shop.

Supports the permission-based dashboard. It is recommended to add a oscar/dashboard/index_nonstaff.html template because Oscar’s default template will display potentially sensitive store information.


Return active conditional offers of type “site offer”. The returned Queryset of site offers is filtered by end date greater then the current date.


Get all active vouchers. The returned Queryset of vouchers is filtered by end date greater then the current date.

get_hourly_report(orders, hours=24, segments=10)[source]

Get report of order revenue split up in hourly chunks. A report is generated for the last hours (default=24) from the current time. The report provides max_revenue of the hourly order revenue sum, y-range as the labelling for the y-axis in a template and order_total_hourly, a list of properties for hourly chunks. segments defines the number of labelling segments used for the y-axis when generating the y-axis labels (default=10).


Return a list of template names to be used for the request. Must return a list. May not be called if render_to_response() is overridden.

class oscar.apps.dashboard.views.LoginView(**kwargs)[source]

alias of django.contrib.auth.forms.AuthenticationForm


Return the URL to redirect to after processing a valid form.