Coverage for src/unfold.py: 100%
4 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-04 12:59 +0300
1from django.urls import reverse_lazy
2from django.templatetags.static import static
3from django.utils.translation import gettext_lazy as _
5UNFOLD = {
6 'SITE_URL': 'https://drf-react-gems.web.app',
7 'SITE_DROPDOWN': [
8 {
9 'icon': 'diamond',
10 'title': _('DRF-React-TS Gems'),
11 'link': 'https://drf-react-gems.web.app',
12 },
13 ],
14 'THEME': 'light',
15 'STYLES': [
16 lambda request: static('css/style.css'),
17 ],
18 'SCRIPTS': [
19 lambda request: static('js/script.js'),
20 ],
21 'SIDEBAR': {
22 'navigation': [
23 {
24 'title': _('Users & Groups'),
25 'icon': 'people',
26 'collapsible': True,
27 'separator': True,
28 'items': [
29 {
30 'title': _('Users'),
31 'icon': 'person',
32 'link': reverse_lazy(
33 'admin:accounts_usercredential_changelist'
34 ),
35 'permission': lambda request: request.user.is_superuser,
36 },
37 {
38 'title': _('Groups'),
39 'icon': 'group',
40 'link': reverse_lazy('admin:auth_group_changelist'),
41 'permission': lambda request: request.user.is_superuser,
42 },
43 ],
44 },
45 {
46 'title': _('Products'),
47 'collapsible': True,
48 'separator': True,
49 'permission': lambda request: request.user.has_perm(
50 'products.view_earwear'
51 ),
52 'items': [
53 {
54 'title': _('Earwear'),
55 'icon': 'inventory',
56 'link': reverse_lazy(
57 'admin:products_earwear_changelist'
58 ),
59 'permission': lambda request: request.user.has_perm(
60 'products.view_earwear'
61 ),
62 },
63 {
64 'title': _('Fingerwear'),
65 'icon': 'inventory',
66 'link': reverse_lazy(
67 'admin:products_fingerwear_changelist'
68 ),
69 'permission': lambda request: request.user.has_perm(
70 'products.view_fingerwear'
71 ),
72 },
73 {
74 'title': _('Neckwear'),
75 'icon': 'inventory',
76 'link': reverse_lazy(
77 'admin:products_neckwear_changelist'
78 ),
79 'permission': lambda request: request.user.has_perm(
80 'products.view_neckwear'
81 ),
82 },
83 {
84 'title': _('Wristwear'),
85 'icon': 'inventory',
86 'link': reverse_lazy(
87 'admin:products_wristwear_changelist'
88 ),
89 'permission': lambda request: request.user.has_perm(
90 'products.view_wristwear'
91 ),
92 },
93 ],
94 },
95 {
96 'title': _('Product Attributes'),
97 'separator': True,
98 'collapsible': True,
99 'permission': lambda request: request.user.has_perm(
100 'products.view_color'
101 ),
102 'items': [
103 {
104 'title': _('Colors'),
105 'icon': 'Palette',
106 'link': reverse_lazy(
107 'admin:products_color_changelist'
108 ),
109 'permission': lambda request: request.user.has_perm(
110 'products.view_color'
111 ),
112 },
113 {
114 'title': _('Metals'),
115 'icon': 'Texture',
116 'link': reverse_lazy(
117 'admin:products_metal_changelist'
118 ),
119 'permission': lambda request: request.user.has_perm(
120 'products.view_metal'
121 ),
122 },
123 {
124 'title': _('Stone'),
125 'icon': 'Diamond',
126 'link': reverse_lazy(
127 'admin:products_stone_changelist'
128 ),
129 'permission': lambda request: request.user.has_perm(
130 'products.view_stone'
131 ),
132 },
133 {
134 'title': _('Collections'),
135 'icon': 'Bookmarks',
136 'link': reverse_lazy(
137 'admin:products_collection_changelist'
138 ),
139 'permission': lambda request: request.user.has_perm(
140 'products.view_collection'
141 ),
142 },
143 {
144 'title': _('Size'),
145 'icon': 'crop',
146 'link': reverse_lazy('admin:products_size_changelist'),
147 'permission': lambda request: request.user.has_perm(
148 'products.view_size'
149 ),
150 },
151 ],
152 },
153 {
154 'separator': True,
155 'permission': lambda request: request.user.has_perm(
156 'products.view_review'
157 ),
158 'items': [
159 {
160 'title': _('Product Reviews'),
161 'icon': 'star',
162 'link': reverse_lazy(
163 'admin:products_review_changelist'
164 ),
165 'permission': lambda request: request.user.has_perm(
166 'products.view_review'
167 ),
168 },
169 {
170 'title': _('Shopping Bags'),
171 'icon': 'shopping_bag',
172 'link': reverse_lazy(
173 'admin:shopping_bags_shoppingbag_changelist'
174 ),
175 'permission': lambda request: request.user.has_perm(
176 'shopping_bags.view_shoppingbag'
177 ),
178 },
179 {
180 'title': _('Orders'),
181 'icon': 'shopping_cart',
182 'link': reverse_lazy('admin:orders_order_changelist'),
183 'permission': lambda request: request.user.has_perm(
184 'orders.view_order'
185 ),
186 },
187 {
188 'title': _('Wishlists'),
189 'icon': 'favorite',
190 'link': reverse_lazy(
191 'admin:wishlists_wishlist_changelist'
192 ),
193 'permission': lambda request: request.user.has_perm(
194 'wishlists.view_wishlist'
195 ),
196 },
197 ],
198 },
199 ],
200 },
201}