@ -2,45 +2,48 @@ from django.contrib import admin
from django.db import models
from django.shortcuts import redirect
from django.urls import reverse
from unfold.admin import ModelAdmin , TabularInline
# 1. Change TabularInline to StackedInline
from unfold.admin import ModelAdmin , TabularInline
from utils.admin import dovoodi_admin_site , project_admin_site
from .models import AgentSettings , AgentPrompt
from unfold.contrib.forms.widgets import WysiwygWidget
class AgentPromptInline ( TabularInline ) :
class AgentPromptInline ( TabularInline ) :
model = AgentPrompt
extra = 0
fields = ( ' is_active ' , ' content ' )
fields = ( ' is_active ' , ' content ' )
formfield_overrides = {
models . TextField : {
' widget ' : admin . widgets . AdminTextareaWidget ( attrs = {
# 1. REDUCE HEIGHT: Set rows to 1 or 2
# 1. HEIGHT: Set to 1 row to keep it compact (it will expand if they type)
' rows ' : 2 ,
# 🎨 STYLING
# w-full: Fills the available space
# bg-black: Black background
# text-white: White text (Fixed typo from 'text-blacka')
# border-gray-600: Border color
# leading-normal: Adjusts line height for better vertical centering
' class ' : ' w-full p-2 border rounded-md bg-black text-white border-gray-600 focus:ring-primary-500 focus:border-primary-500 leading-normal ' ,
' class ' : (
' border border-gray-300 rounded-md shadow-sm '
' w-full block sm:text-sm '
' bg-white text-gray-900 '
' dark:bg-gray-900 dark:text-white dark:border-gray-700 '
' focus:ring-primary-500 focus:border-primary-500 '
) ,
' placeholder ' : ' Enter instruction prompt here... ' ,
# 2. INCREASE WIDTH: 'min-width' forces the table cell to expand
' style ' : ' width: 100 % ; min-width: 600px; resize: vertical; '
# 2. SIZE FIX:
# - background/color: inherit to keep your color fix
# - min-width: 600px to force the table column to be wide
# - width: 100% to fill that 600px+ space
' style ' : (
' background-color: inherit; '
' color: inherit; '
' width: 100 % ; '
' min-width: 700px; ' # Increased slightly for even better UX
' resize: vertical; '
)
} )
} ,
}
class AgentSettingsAdmin ( ModelAdmin ) :
def has_add_permission ( self , request ) :
return False
def has_delete_permission ( self , request , obj = None ) :
return False
# ... keep your existing permission and redirect logic ...
def has_add_permission ( self , request ) : return False
def has_delete_permission ( self , request , obj = None ) : return False
def changelist_view ( self , request , extra_context = None ) :
obj , created = self . model . objects . get_or_create ( pk = 1 )
@ -50,8 +53,8 @@ class AgentSettingsAdmin(ModelAdmin):
)
return redirect ( url )
# 2. Add the Stacked Inline
inlines = [ AgentPromptInline ]
# Register
dovoodi_admin_site . register ( AgentSettings , AgentSettingsAdmin )
project_admin_site . register ( AgentSettings , AgentSettingsAdmin )