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