# from django.contrib import admin # from django.utils.translation import gettext_lazy as _ # from dj_category.admin import BaseCategoryAdmin # from ajaxdatatable.admin import AjaxDatatable # from django.http import JsonResponse # from django.urls import path # from django.db.models import Q # from django.utils.safestring import mark_safe # from django.forms.widgets import RadioSelect # from apps.hadis.models import * # from django import forms # from utils.json_editor_field import JsonEditorWidget # # Define color choices # COLOR_CHOICES = [ # ('red', _('Red')), # ('blue', _('Blue')), # ('green', _('Green')), # ('yellow', _('Yellow')), # ('orange', _('Orange')), # ('purple', _('Purple')), # ('pink', _('Pink')), # ('brown', _('Brown')), # ('gray', _('Gray')), # ('black', _('Black')), # ] # class ColorRadioSelect(RadioSelect): # template_name = 'admin/widgets/color_radio.html' # option_template_name = 'admin/widgets/color_radio_option.html' # def get_links_schema(): # return { # 'type': "array", # 'format': 'table', # 'title': ' ', # 'items': { # 'type': 'object', # 'title': str(_('Link')), # 'properties': { # 'text': {'type': 'string', "format": "textarea",'title': str(_('text'))}, # 'link': {'type': 'string', "format": "textarea", 'title': str(_('link'))}, # } # } # } # class HadisOverviewForm(forms.ModelForm): # status_color = forms.ChoiceField( # choices=COLOR_CHOICES, # widget=ColorRadioSelect(), # required=False # ) # class Meta: # model = HadisOverview # fields = '__all__' # widgets = { # 'links': JsonEditorWidget(attrs={'schema': get_links_schema}), # } # @admin.register(HadisTag) # class HadisTagAdmin(AjaxDatatable): # list_display = ['title', 'status'] # search_fields = ['title'] # class ReferenceImageInline(admin.TabularInline): # model = ReferenceImage # extra = 1 # verbose_name_plural = _('Reference Images') # fields = ('thumbnail', 'priority') # @admin.register(HadisReference) # class HadisReferenceAdmin(AjaxDatatable): # list_display = ['hadis', 'book', 'created_at'] # list_filter = ['book'] # search_fields = ['hadis__title', 'hadis__number', 'description'] # autocomplete_fields = ['hadis', 'book'] # readonly_fields = ['created_at'] # inlines = [ReferenceImageInline] # fieldsets = ( # (None, { # 'fields': ('hadis', 'book', 'description') # }), # ) # @admin.register(HadisOverview) # class HadisOverviewAdmin(AjaxDatatable): # change_form_template = 'admin/hadisowerview_change_form.html' # form = HadisOverviewForm # ordering = ['hadis__number'] # list_display = ['hadis', 'status', 'created_at'] # search_fields = ['hadis__title', 'hadis__number', 'status_text',] # autocomplete_fields = ['hadis', 'tags'] # fieldsets = ( # (None, { # 'fields': ('hadis', 'status', 'status_color', 'status_text') # }), # (_('Reference Information'), { # 'fields': ('address', 'share_link',), # }), # (_('Additional Information'), { # 'fields': ('links', 'tags', 'created_at'), # 'classes': ('collapse',), # }), # ) # class HadisOverviewInline(admin.StackedInline): # change_form_template = 'admin/hadisowerview_change_form.html' # form = HadisOverviewForm # model = HadisOverview # autocomplete_fields = ['tags', ] # can_delete = False # verbose_name_plural = _('Hadis Overview') # fieldsets = ( # (None, { # 'fields': ('status', 'status_color', 'status_text', 'address', 'share_link', 'links', 'tags',), # }), # ) # extra = 1 # min_num = 1 # @admin.register(Hadis) # class HadisAdmin(AjaxDatatable): # # form = HadisForm # list_display = ['number', 'title', 'category', 'status', 'created_at'] # list_filter = ['status', 'category'] # search_fields = ['title', 'text', 'number'] # readonly_fields = ['created_at', 'updated_at'] # autocomplete_fields = ['category'] # inlines = [HadisOverviewInline] # fieldsets = ( # (None, { # 'fields': ('number', 'title', 'category', 'status') # }), # (_('Content'), { # 'fields': ('text', 'translation'), # 'classes': ('collapse',), # }), # ) # def get_form(self, request, obj=None, **kwargs): # form = super().get_form(request, obj, **kwargs) # if obj is None: # form.base_fields['category'].widget.can_add_related = False # return form