Coverage for src/unfold.py: 100%
4 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-21 16:24 +0300
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-21 16:24 +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_earring'
51 ),
52 'items': [
53 {
54 'title': _('Earring'),
55 'icon': 'inventory',
56 'link': reverse_lazy(
57 'admin:products_earring_changelist'
58 ),
59 'permission': lambda request: request.user.has_perm(
60 'products.view_earring'
61 ),
62 },
63 {
64 'title': _('Ring'),
65 'icon': 'inventory',
66 'link': reverse_lazy(
67 'admin:products_ring_changelist'
68 ),
69 'permission': lambda request: request.user.has_perm(
70 'products.view_ring'
71 ),
72 },
73 {
74 'title': _('Necklace'),
75 'icon': 'inventory',
76 'link': reverse_lazy(
77 'admin:products_necklace_changelist'
78 ),
79 'permission': lambda request: request.user.has_perm(
80 'products.view_necklace'
81 ),
82 },
83 {
84 'title': _('Pendant'),
85 'icon': 'inventory',
86 'link': reverse_lazy(
87 'admin:products_pendant_changelist'
88 ),
89 'permission': lambda request: request.user.has_perm(
90 'products.view_pendant'
91 ),
92 },
93 {
94 'title': _('Bracelet'),
95 'icon': 'inventory',
96 'link': reverse_lazy(
97 'admin:products_bracelet_changelist'
98 ),
99 'permission': lambda request: request.user.has_perm(
100 'products.view_bracelet'
101 ),
102 },
103 {
104 'title': _('Watch'),
105 'icon': 'inventory',
106 'link': reverse_lazy(
107 'admin:products_watch_changelist'
108 ),
109 'permission': lambda request: request.user.has_perm(
110 'products.view_watch'
111 ),
112 },
113 ],
114 },
115 {
116 'title': _('Product Attributes'),
117 'separator': True,
118 'collapsible': True,
119 'permission': lambda request: request.user.has_perm(
120 'products.view_color'
121 ),
122 'items': [
123 {
124 'title': _('Colors'),
125 'icon': 'Palette',
126 'link': reverse_lazy(
127 'admin:products_color_changelist'
128 ),
129 'permission': lambda request: request.user.has_perm(
130 'products.view_color'
131 ),
132 },
133 {
134 'title': _('Metals'),
135 'icon': 'Texture',
136 'link': reverse_lazy(
137 'admin:products_metal_changelist'
138 ),
139 'permission': lambda request: request.user.has_perm(
140 'products.view_metal'
141 ),
142 },
143 {
144 'title': _('Stone'),
145 'icon': 'Diamond',
146 'link': reverse_lazy(
147 'admin:products_stone_changelist'
148 ),
149 'permission': lambda request: request.user.has_perm(
150 'products.view_stone'
151 ),
152 },
153 {
154 'title': _('Collections'),
155 'icon': 'Bookmarks',
156 'link': reverse_lazy(
157 'admin:products_collection_changelist'
158 ),
159 'permission': lambda request: request.user.has_perm(
160 'products.view_collection'
161 ),
162 },
163 {
164 'title': _('Size'),
165 'icon': 'crop',
166 'link': reverse_lazy('admin:products_size_changelist'),
167 'permission': lambda request: request.user.has_perm(
168 'products.view_size'
169 ),
170 },
171 ],
172 },
173 {
174 'separator': True,
175 'permission': lambda request: request.user.has_perm(
176 'products.view_review'
177 ),
178 'items': [
179 {
180 'title': _('Product Reviews'),
181 'icon': 'star',
182 'link': reverse_lazy(
183 'admin:products_review_changelist'
184 ),
185 'permission': lambda request: request.user.has_perm(
186 'products.view_review'
187 ),
188 },
189 {
190 'title': _('Shopping Bags'),
191 'icon': 'shopping_bag',
192 'link': reverse_lazy(
193 'admin:shopping_bags_shoppingbag_changelist'
194 ),
195 'permission': lambda request: request.user.has_perm(
196 'shopping_bags.view_shoppingbag'
197 ),
198 },
199 {
200 'title': _('Orders'),
201 'icon': 'shopping_cart',
202 'link': reverse_lazy('admin:orders_order_changelist'),
203 'permission': lambda request: request.user.has_perm(
204 'orders.view_order'
205 ),
206 },
207 {
208 'title': _('Wishlists'),
209 'icon': 'favorite',
210 'link': reverse_lazy(
211 'admin:wishlists_wishlist_changelist'
212 ),
213 'permission': lambda request: request.user.has_perm(
214 'wishlists.view_wishlist'
215 ),
216 },
217 ],
218 },
219 ],
220 },
221}