from django.contrib import admin from .models import * from unfold.admin import ModelAdmin as UnfoldModelAdmin from import_export.admin import ImportExportModelAdmin from unfold.contrib.import_export.forms import ExportForm, ImportForm, SelectableFieldsExportForm from unfold.contrib.forms.widgets import ArrayWidget, WysiwygWidget from django.contrib.postgres.fields import ArrayField from unfold.decorators import action, display from django.utils.html import format_html from unfold.decorators import display from utils.admin import ModelAdmin from unfold.contrib.filters.admin import ChoicesDropdownFilter @admin.register(ShowCaseSlider) class ShowCaseSliderAdmin(ModelAdmin, ImportExportModelAdmin): import_form_class = ImportForm export_form_class = ExportForm search_fields = ['title'] compressed_fields = False warn_unsaved_form = True formfield_overrides = { ArrayField: { "widget": ArrayWidget, } } @admin.register(LearnVideoModel) class LearnVideoAdmin(UnfoldModelAdmin): list_display = ['title', 'section', 'display_viewd'] search_fields = ['title', 'section', 'content_type__app_label'] # autocomplete_fields = ['section'] compressed_fields = False list_filter = ['viewd', 'section'] warn_unsaved_form = True list_filter_submit = True change_form_template = 'video_change_form_after.html' formfield_overrides = { ArrayField: { "widget": ArrayWidget, } } def has_delete_permission(self, request, obj=None): return request.user.video_uploader def has_add_permission(self, request, obj=None): return request.user.video_uploader @display(description='دیده شده') def display_viewd(self, instance): if instance.viewd: svg = f'' else: svg = f'' return format_html( svg ) @admin.register(SliderModel) class SliderAdmin(ModelAdmin, ImportExportModelAdmin): import_form_class = ImportForm export_form_class = ExportForm search_fields = ['description', 'title'] compressed_fields = False warn_unsaved_form = True formfield_overrides = { ArrayField: { "widget": ArrayWidget, } } @admin.register(HomeImageModel) class HomeImageAdmin(ModelAdmin, ImportExportModelAdmin): import_form_class = ImportForm export_form_class = ExportForm compressed_fields = True warn_unsaved_form = True formfield_overrides = { ArrayField: { "widget": ArrayWidget, } } # admin.py from django.contrib import admin from unfold.admin import ModelAdmin from django_celery_beat.models import ( ClockedSchedule, CrontabSchedule, IntervalSchedule, PeriodicTask, SolarSchedule, ) from django_celery_beat.admin import ClockedScheduleAdmin as BaseClockedScheduleAdmin from django_celery_beat.admin import CrontabScheduleAdmin as BaseCrontabScheduleAdmin from django_celery_beat.admin import PeriodicTaskAdmin as BasePeriodicTaskAdmin from django_celery_beat.admin import PeriodicTaskForm, TaskSelectWidget from unfold.widgets import * admin.site.unregister(PeriodicTask) admin.site.unregister(IntervalSchedule) admin.site.unregister(CrontabSchedule) admin.site.unregister(SolarSchedule) admin.site.unregister(ClockedSchedule) class UnfoldTaskSelectWidget(UnfoldAdminSelectWidget, TaskSelectWidget): pass class UnfoldPeriodicTaskForm(PeriodicTaskForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["task"].widget = UnfoldAdminTextInputWidget() self.fields["regtask"].widget = UnfoldTaskSelectWidget() @admin.register(PeriodicTask) class PeriodicTaskAdmin(BasePeriodicTaskAdmin, ModelAdmin): form = UnfoldPeriodicTaskForm @admin.register(IntervalSchedule) class IntervalScheduleAdmin(ModelAdmin): pass @admin.register(CrontabSchedule) class CrontabScheduleAdmin(BaseCrontabScheduleAdmin, ModelAdmin): pass @admin.register(SolarSchedule) class SolarScheduleAdmin(ModelAdmin): pass @admin.register(ClockedSchedule) class ClockedScheduleAdmin(BaseClockedScheduleAdmin, ModelAdmin): pass