diff --git a/engine/core/static/graphql.svg b/engine/core/static/graphql.svg
new file mode 100644
index 00000000..cbf9d25c
--- /dev/null
+++ b/engine/core/static/graphql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/engine/core/static/redoc.svg b/engine/core/static/redoc.svg
new file mode 100644
index 00000000..bc0a2531
--- /dev/null
+++ b/engine/core/static/redoc.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/engine/core/static/swagger.svg b/engine/core/static/swagger.svg
new file mode 100644
index 00000000..cb06ec4b
--- /dev/null
+++ b/engine/core/static/swagger.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/evibes/settings/base.py b/evibes/settings/base.py
index 3f0d742a..fbe8be79 100644
--- a/evibes/settings/base.py
+++ b/evibes/settings/base.py
@@ -108,13 +108,13 @@ SITE_ID: int = 1
INSTALLED_APPS: list[str] = [
"django_prometheus",
- "constance",
"unfold",
"unfold.contrib.filters",
"unfold.contrib.forms",
"unfold.contrib.inlines",
"unfold.contrib.constance",
"unfold.contrib.import_export",
+ "constance",
"modeltranslation",
"django.contrib.admin",
"django.contrib.admindocs",
diff --git a/evibes/settings/constance.py b/evibes/settings/constance.py
index b511e3d7..7634b520 100644
--- a/evibes/settings/constance.py
+++ b/evibes/settings/constance.py
@@ -2,11 +2,13 @@ from collections import OrderedDict
from os import getenv
from django.utils.translation import gettext_noop as _
+from unfold.contrib.constance.settings import UNFOLD_CONSTANCE_ADDITIONAL_FIELDS
CONSTANCE_BACKEND = "constance.backends.database.DatabaseBackend"
CONSTANCE_SUPERUSER_ONLY = False
CONSTANCE_ADDITIONAL_FIELDS = {
+ **UNFOLD_CONSTANCE_ADDITIONAL_FIELDS,
"json": [
"django.forms.fields.JSONField",
{
diff --git a/evibes/settings/unfold.py b/evibes/settings/unfold.py
index e2fbd335..9247b627 100644
--- a/evibes/settings/unfold.py
+++ b/evibes/settings/unfold.py
@@ -73,6 +73,51 @@ UNFOLD = {
"icon": "health_metrics",
"link": reverse_lazy("health_check:health_check_home"),
},
+ {
+ "title": _("Config"),
+ "icon": "construction",
+ "link": reverse_lazy("admin:core_config_changelist"),
+ },
+ {
+ "title": _("Users"),
+ "icon": "person",
+ "link": reverse_lazy("admin:vibes_auth_user_changelist"),
+ },
+ {
+ "title": _("Groups"),
+ "icon": "people",
+ "link": reverse_lazy("admin:vibes_auth_group_changelist"),
+ },
+ {
+ "title": _("Products"),
+ "icon": "storefront",
+ "link": reverse_lazy("admin:core_product_changelist"),
+ },
+ {
+ "title": _("Categories"),
+ "icon": "category",
+ "link": reverse_lazy("admin:core_category_changelist"),
+ },
+ {
+ "title": _("Brands"),
+ "icon": "copyright",
+ "link": reverse_lazy("admin:core_brand_changelist"),
+ },
+ {
+ "title": _("Blogposts"),
+ "icon": "newspaper",
+ "link": reverse_lazy("admin:blog_post_changelist"),
+ },
+ {
+ "title": _("Periodic Tasks"),
+ "icon": "event_list",
+ "link": reverse_lazy("admin:django_celery_beat_periodictask_changelist"),
+ },
+ {
+ "title": _("Sitemap"),
+ "icon": "rss_feed",
+ "link": reverse_lazy("core:sitemap-index"),
+ },
{
"title": _("Swagger"),
"icon": "integration_instructions",