Skip to content

Commit 429b1fd

Browse files
authored
Merge pull request #16 from SmartBase-SK/develop
triv: #24416 extended documentation
2 parents 79adf97 + ab87f66 commit 429b1fd

20 files changed

+262
-17
lines changed

docs/dashboard.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import TabItem from '@theme/TabItem';
88
SmartBase Admin supports dashboard views that can include charts, lists, and aggregate widgets for analytical and operational insight.
99
You can fully customize and extend dashboards to fit your use case.
1010

11-
![Dashboard](/img/screenshots/dashboard.png)
11+
![Dashboard](/img/screenshots/dashboard_big.png)
1212

1313
## 🛠 How It Works
1414

docs/detail/_category_.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"label": "Detail view",
3-
"position": 4,
3+
"position": 5,
44
"link": {
55
"type": "generated-index",
66
"description": "Integration examples"

docs/detail/classes.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Fieldset Layout Classes
3-
sidebar_position: 3
3+
sidebar_position: 1
44
---
55
import Tabs from '@theme/Tabs';
66
import TabItem from '@theme/TabItem';

docs/detail/fake_inlines.mdx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
sidebar_position: 2
2+
sidebar_position: 4
33
title: Fake Inlines
44
---
55
import Tabs from '@theme/Tabs';
@@ -10,6 +10,10 @@ import TabItem from '@theme/TabItem';
1010
SBAdminFakeInlineMixin is used to create inlines that are dynamically filtered — without needing a real ForeignKey relationship in the database. This is useful when you want to show related data based on some logic (e.g. "products from the same manufacturer") but don’t want to (or can't) define a hard model relation.
1111

1212
These inlines are rendered like standard inlines but do not impact database schema.
13+
14+
![Fake inlines](/img/screenshots/fake_inline_example.png)
15+
16+
1317
## 🛠 How it works
1418
- Define inline which extending `SBAdminFakeInlineMixin`
1519
- For inline, define `filter_fake_inline_identifier_by_parent_instance(self, inline_queryset, parent_instance)`. This controls what queryset will be shown in the inline, based on the parent instance.
@@ -21,11 +25,11 @@ This example showcases a fake inline for a Product admin page that lists other p
2125
```python title="catalog/sb_admin.py"
2226
class ProductSameManufacturerInline(SBAdminFakeInlineMixin, SBAdminTableInline):
2327
model = Product
24-
fields = ["name", "is_current_product"]
25-
readonly_fields = ["name", "is_current_product"]
28+
fields = ["name", "price", "is_active", "created", "is_current_product"]
29+
readonly_fields = fields
2630
can_delete = False
27-
verbose_name = "Product from the same manufacturer"
28-
verbose_name_plural = "Products from the same manufacturer"
31+
verbose_name = "Product from the same manufacturer - Fake inline example"
32+
verbose_name_plural = "Products from the same manufacturer - Fake inline example"
2933

3034
def has_add_permission(self, request, obj=None):
3135
return False

docs/detail/inlines.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
sidebar_position: 1
2+
sidebar_position: 3
33
---
44
import Tabs from '@theme/Tabs';
55
import TabItem from '@theme/TabItem';

docs/detail/tabs.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
2-
title: Detail View Tabs
3-
sidebar_position: 4
2+
title: Tabs
3+
sidebar_position: 2
44
---
55
import Tabs from '@theme/Tabs';
66
import TabItem from '@theme/TabItem';
77

8-
### Detail View Tabs
8+
# Tabs
99

1010
SmartBase Admin allows you to organize fieldsets and inlines into tabs using the `sbadmin_tabs` configuration
1111

docs/installation.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ title: Quick start
55
# Getting Started
66

77
Smartbase Admin is a powerful extension for Django projects, providing a customizable admin interface. Follow the steps below to install and configure it in your project.
8+
![Dashboard](/img/screenshots/dashboard_big.png)
89

910
---
1011

docs/menu.mdx

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import TabItem from '@theme/TabItem';
77
# Menu
88
This section demonstrates how to define menu items using the SBAdminRoleConfiguration class.
99

10-
### Defining Menu Items
10+
## Defining Menu Items
1111
To create a custom menu, define a list of SBAdminMenuItem instances and pass them to SBAdminRoleConfiguration.
1212

1313
```python title="sb_admin_configuration.py"
@@ -31,4 +31,62 @@ Each `SBAdminMenuItem` accepts the following key parameters:
3131
- `view_id`: Unique identifier of the view this item links to.
3232
- `icon` (optional): The icon name from [🔗 Available icons](https://github.com/SmartBase-SK/django-smartbase-admin/tree/main/src/django_smartbase_admin/static/sb_admin/sprites/sb_admin).
3333
- `label` (optional): Overrides the default label.
34-
- `sub_items` (optional): A list of nested SBAdminMenuItem objects, supporting menu nesting.
34+
- `sub_items` (optional): A list of nested SBAdminMenuItem objects, supporting menu nesting.
35+
36+
## Role-Based Menu Configuration
37+
You can define different menus for different user roles by extending SBAdminRoleConfiguration and using get_configuration_for_roles in your SBAdminConfiguration.
38+
39+
### Step 1: Define Menu Variants
40+
41+
42+
```python title="sb_admin_configuration.py"
43+
admin_menu_items = [
44+
SBAdminMenuItem(view_id="dashboard", icon="All-application"),
45+
SBAdminMenuItem(
46+
label="Catalog",
47+
icon="Box",
48+
sub_items=[
49+
SBAdminMenuItem(view_id="catalog_product", label="Products"),
50+
SBAdminMenuItem(view_id="catalog_category", label="Categories"),
51+
SBAdminMenuItem(view_id="catalog_manufacturer", label="Manufacturers"),
52+
],
53+
),
54+
SBAdminMenuItem(view_id="catalog_product", label="List View", icon="List-checkbox"),
55+
SBAdminMenuItem(view_id="catalog_purchase", label="Advanced filters", icon="Filter"),
56+
]
57+
58+
editor_menu_items = [
59+
SBAdminMenuItem(view_id="catalog_product", icon="List-checkbox", label="List View"),
60+
SBAdminMenuItem(view_id="catalog_category", icon="List-checkbox", label="Tree View"),
61+
SBAdminMenuItem(view_id="catalog_manufacturer", icon="Box"),
62+
]
63+
```
64+
65+
### Step 2: Create Role-Based Configurations
66+
67+
```python title="sb_admin_configuration.py"
68+
class AdminConfiguration(SBAdminRoleConfiguration):
69+
menu_items = admin_menu_items
70+
default_view = SBAdminMenuItem(view_id="dashboard")
71+
registered_views = [...]
72+
73+
74+
class EditorConfiguration(SBAdminRoleConfiguration):
75+
menu_items = editor_menu_items
76+
default_view = SBAdminMenuItem(view_id="catalog_product")
77+
registered_views = [...]
78+
```
79+
80+
### Step 3: Return the Configuration Based on User Role
81+
```python title="sb_admin_configuration.py"
82+
EDITOR_ROLE = "Editors"
83+
84+
class SBAdminConfiguration(SBAdminConfigurationBase):
85+
def get_configuration_for_roles(self, user_roles):
86+
user_roles = list(user_roles)
87+
if EDITOR_ROLE in user_roles:
88+
return EditorConfiguration()
89+
return AdminConfiguration()
90+
```
91+
92+
With this setup, each user will see a customized menu based on their role. You can extend this further to support more roles or dynamic permissions.

docs/table/_category_.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"label": "Table",
3-
"position": 5,
2+
"label": "List view",
3+
"position": 4,
44
"link": {
55
"type": "generated-index",
66
"description": "Table listing"

docs/table/filters.mdx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,21 @@ class ProductSBAdmin(SBAdmin):
5757
</TabItem>
5858

5959
</Tabs>
60+
61+
# Advanced Filters
62+
To enable advance filters you have to set filter version in your `SBAdminRoleConfiguration`
63+
64+
<Tabs groupId="1">
65+
<TabItem value="code" label="Code">
66+
```python title="sb_admin_configuration.py"
67+
class SBAdminConfiguration(SBAdminConfigurationBase):
68+
filters_version = FilterVersions.FILTERS_VERSION_2,
69+
```
70+
71+
</TabItem>
72+
<TabItem value="list" label="Result">
73+
![Category sbadmin](/img/screenshots/advanced_filters.png)
74+
</TabItem>
75+
76+
</Tabs>
77+

0 commit comments

Comments
 (0)