adminka togirlandi
Some checks failed
Deploy Django Application to Server / deploy (push) Failing after 10s
Telegram Notifications / Telegram Gate (push) Failing after 5s

This commit is contained in:
Husanjonazamov
2026-03-03 15:23:11 +05:00
parent 8d172c6393
commit 2add18b8d2
11 changed files with 69 additions and 353 deletions

View File

@@ -1,11 +1,10 @@
from django.contrib import admin
from unfold.admin import ModelAdmin # noqa
from apps.geology.models import Category
@admin.register(Category)
class CategoryAdmin(ModelAdmin):
class CategoryAdmin(admin.ModelAdmin):
list_display = ("name", "created_at", "updated_at")
search_fields = ("name",)
list_filter = ("created_at", "updated_at")

View File

@@ -1,20 +1,18 @@
from django.contrib import admin
from unfold.admin import ModelAdmin
from apps.geology.models import GalleryCategory, Gallery
@admin.register(GalleryCategory)
class GalleryCategoryAdmin(ModelAdmin):
class GalleryCategoryAdmin(admin.ModelAdmin):
list_display = ("id", "name", "created_at", "updated_at")
search_fields = ("name",)
filter_horizontal = ("gallery",)
list_filter = ("created_at", "updated_at")
exclude = ("count",)
@admin.register(Gallery)
class GalleryAdmin(ModelAdmin):
class GalleryAdmin(admin.ModelAdmin):
list_display = ("id", "name", "created_at", "updated_at")
search_fields = ("name",)
list_filter = ("created_at", "updated_at")

View File

@@ -1,11 +1,10 @@
from django.contrib import admin
from unfold.admin import ModelAdmin # noqa
from apps.geology.models import Geology
@admin.register(Geology)
class GeologyAdmin(ModelAdmin):
class GeologyAdmin(admin.ModelAdmin):
list_display = ("name", "category", "created_at", "updated_at")
search_fields = ("name", "title", "body1", "body2", "body3")
list_filter = ("category", "created_at", "updated_at")

View File

@@ -1,11 +1,10 @@
from django.contrib import admin
from unfold.admin import ModelAdmin # noqa
from apps.geology.models import Photo
@admin.register(Photo)
class PhotoAdmin(ModelAdmin):
class PhotoAdmin(admin.ModelAdmin):
list_display = ("name", "description", "type", "size", "image", "created_at")
search_fields = ("name", "description", "type", "size", "image")
list_filter = ("type",)

View File

@@ -1,33 +1 @@
from django.contrib import admin
from django.contrib.auth.admin import GroupAdmin as BaseGroupAdmin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import Group, User
from unfold.admin import ModelAdmin # noqa
from unfold.forms import (
UserChangeForm,
UserCreationForm,
AdminPasswordChangeForm,
) # noqa
admin.site.unregister(Group)
admin.site.unregister(User)
@admin.register(Group)
class GroupAdmin(BaseGroupAdmin, ModelAdmin):
list_display = ("name",)
search_fields = ("name",)
filter_vertical = ("permissions",)
@admin.register(User)
class UserAdmin(BaseUserAdmin, ModelAdmin):
change_password_form = AdminPasswordChangeForm
add_form = UserCreationForm
form = UserChangeForm
list_display = ("username", "email", "is_active", "is_staff", "is_superuser")
list_filter = ("is_active", "is_staff", "is_superuser")
search_fields = ("username", "email")
ordering = ("username",)
list_editable = ("is_active", "is_staff", "is_superuser")
filter_vertical = ("groups", "user_permissions")

View File

@@ -1,256 +1,4 @@
/*! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/
*, :after, :before {
box-sizing: border-box;
border: 0 solid #e5e7eb
}
:after, :before {
--tw-content: ""
}
:host, html {
line-height: 1.5;
-webkit-text-size-adjust: 100%;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
font-family: ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
font-feature-settings: normal;
font-variation-settings: normal;
-webkit-tap-highlight-color: transparent
}
body {
margin: 0;
line-height: inherit
}
hr {
height: 0;
color: inherit;
border-top-width: 1px
}
abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted
}
h1, h2, h3, h4, h5, h6 {
font-size: inherit;
font-weight: inherit
}
a {
color: inherit;
text-decoration: inherit
}
b, strong {
font-weight: bolder
}
code, kbd, pre, samp {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
font-feature-settings: normal;
font-variation-settings: normal;
font-size: 1em
}
small {
font-size: 80%
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: initial
}
sub {
bottom: -.25em
}
sup {
top: -.5em
}
table {
text-indent: 0;
border-color: inherit;
border-collapse: collapse
}
button, input, optgroup, select, textarea {
font-family: inherit;
font-feature-settings: inherit;
font-variation-settings: inherit;
font-size: 100%;
font-weight: inherit;
line-height: inherit;
letter-spacing: inherit;
color: inherit;
margin: 0;
padding: 0
}
button, select {
text-transform: none
}
button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]) {
-webkit-appearance: button;
background-color: initial;
background-image: none
}
:-moz-focusring {
outline: auto
}
:-moz-ui-invalid {
box-shadow: none
}
progress {
vertical-align: initial
}
::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
height: auto
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px
}
::-webkit-search-decoration {
-webkit-appearance: none
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit
}
summary {
display: list-item
}
blockquote, dd, dl, figure, h1, h2, h3, h4, h5, h6, hr, p, pre {
margin: 0
}
fieldset {
margin: 0
}
fieldset, legend {
padding: 0
}
menu, ol, ul {
list-style: none;
margin: 0;
padding: 0
}
dialog {
padding: 0
}
textarea {
resize: vertical
}
input::-moz-placeholder, textarea::-moz-placeholder {
opacity: 1;
color: #9ca3af
}
input::placeholder, textarea::placeholder {
opacity: 1;
color: #9ca3af
}
[role=button], button {
cursor: pointer
}
:disabled {
cursor: default
}
audio, canvas, embed, iframe, img, object, svg, video {
display: block;
vertical-align: middle
}
img, video {
max-width: 100%;
height: auto
}
[hidden] {
display: none
}
*, ::backdrop, :after, :before {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-gradient-from-position: ;
--tw-gradient-via-position: ;
--tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: #3b82f680;
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style:
}
/* Custom project utility classes for Unfold admin */
.\!container {
width: 100% !important
}
@@ -531,11 +279,13 @@ img, video {
max-width: 300px
}
.flex-shrink, .shrink {
.flex-shrink,
.shrink {
flex-shrink: 1
}
.flex-grow, .grow {
.flex-grow,
.grow {
flex-grow: 1
}
@@ -851,7 +601,8 @@ img, video {
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color)
}
.shadow, .shadow-md {
.shadow,
.shadow-md {
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
@@ -874,7 +625,8 @@ img, video {
--tw-blur: blur(8px)
}
.blur, .grayscale {
.blur,
.grayscale {
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
}

View File

@@ -1,12 +1,6 @@
THIRD_PARTY_APPS = [
# "jazzmin",
"unfold",
"unfold.contrib.filters",
"unfold.contrib.forms",
"unfold.contrib.import_export",
"unfold.contrib.guardian",
"unfold.contrib.simple_history",
"modeltranslation",
"jazzmin",
"django_ckeditor_5",
"corsheaders",
"rosetta",

View File

@@ -65,43 +65,43 @@ UNFOLD = {
"show_all_applications": True,
"navigation": navigation.PAGES,
},
"TABS": [
{
"models": [
"geology.geology",
"geology.photo",
"geology.category",
],
"items": [
{
"title": _("Madanlar"),
"link": reverse_lazy("admin:geology_geology_changelist"),
},
{
"title": _("Fotolar"),
"link": reverse_lazy("admin:geology_photo_changelist"),
},
{
"title": _("Kategoriyalar"),
"link": reverse_lazy("admin:geology_category_changelist"),
},
],
},
{
"models": [
"geology.gallerycategory",
"geology.gallery",
],
"items": [
{
"title": _("Galereya kategoriyalari"),
"link": reverse_lazy("admin:geology_gallerycategory_changelist"),
},
{
"title": _("Galereya"),
"link": reverse_lazy("admin:geology_gallery_changelist"),
},
],
},
],
# "TABS": [
# {
# "models": [
# "geology.geology",
# "geology.photo",
# "geology.category",
# ],
# "items": [
# {
# "title": _("Madanlar"),
# "link": reverse_lazy("admin:geology_geology_changelist"),
# },
# {
# "title": _("Fotolar"),
# "link": reverse_lazy("admin:geology_photo_changelist"),
# },
# {
# "title": _("Kategoriyalar"),
# "link": reverse_lazy("admin:geology_category_changelist"),
# },
# ],
# },
# {
# "models": [
# "geology.gallerycategory",
# "geology.gallery",
# ],
# "items": [
# {
# "title": _("Galereya kategoriyalari"),
# "link": reverse_lazy("admin:geology_gallerycategory_changelist"),
# },
# {
# "title": _("Galereya"),
# "link": reverse_lazy("admin:geology_gallery_changelist"),
# },
# ],
# },
# ],
}

View File

@@ -29,7 +29,7 @@ PAGES = [
"title": _("Foydalanuvchilar"),
"items": [
{
"title": _("Guruhlar"),
"title": _("Groups"),
"icon": "person_add",
"link": reverse_lazy("admin:auth_group_changelist"),
"permission": lambda request: user_has_group_or_permission(

View File

@@ -128,3 +128,11 @@ SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
JAZZMIN_SETTINGS = {
"site_title": "Geology Admin",
"site_header": "Geology Admin",
"site_brand": "Geology",
"welcome_sign": "Geologiya boshqaruv paneli",
"show_ui_builder": False,
}

View File

@@ -13,7 +13,6 @@ django-cors-headers==4.3.1
django-rosetta==0.10.0
colorama==0.4.6
PyJWT~=2.8.0
django-unfold
flower==2.0.1
celery
django-redis