@ -171,6 +171,16 @@ class HadisStatus(models.Model):
ORANGE = ' orange ' , _ ( ' Orange ' )
ORANGE = ' orange ' , _ ( ' Orange ' )
PURPLE = ' purple ' , _ ( ' Purple ' )
PURPLE = ' purple ' , _ ( ' Purple ' )
GRAY = ' gray ' , _ ( ' Gray ' )
GRAY = ' gray ' , _ ( ' Gray ' )
COLOR_PALETTE = {
' red ' : { ' main ' : ' #E74C3C ' , ' light ' : ' #FADBD8 ' } ,
' green ' : { ' main ' : ' #27AE60 ' , ' light ' : ' #D5F5E3 ' } ,
' blue ' : { ' main ' : ' #2980B9 ' , ' light ' : ' #D4E6F1 ' } ,
' yellow ' : { ' main ' : ' #F1C40F ' , ' light ' : ' #FCF3CF ' } ,
' orange ' : { ' main ' : ' #E67E22 ' , ' light ' : ' #FAE5D3 ' } ,
' purple ' : { ' main ' : ' #8E44AD ' , ' light ' : ' #EBDEF0 ' } ,
' gray ' : { ' main ' : ' #7F8C8D ' , ' light ' : ' #E5E8E8 ' } ,
}
title = models . JSONField ( default = list , verbose_name = _ ( ' Title ' ) )
title = models . JSONField ( default = list , verbose_name = _ ( ' Title ' ) )
slug = models . SlugField ( max_length = 255 , verbose_name = _ ( ' slug ' ) , blank = True , unique = True )
slug = models . SlugField ( max_length = 255 , verbose_name = _ ( ' slug ' ) , blank = True , unique = True )
@ -178,6 +188,20 @@ class HadisStatus(models.Model):
order = models . IntegerField ( default = 0 , verbose_name = _ ( ' order ' ) )
order = models . IntegerField ( default = 0 , verbose_name = _ ( ' order ' ) )
description = models . JSONField ( default = list , verbose_name = _ ( ' Description ' ) )
description = models . JSONField ( default = list , verbose_name = _ ( ' Description ' ) )
@property
def color_hashes ( self ) :
""" Returns the dictionary of hash codes based on the selected color """
return self . COLOR_PALETTE . get ( self . color , { ' main ' : ' #000000 ' , ' light ' : ' #FFFFFF ' } )
# Helper for specific fields if you need them flat
@property
def main_color_code ( self ) :
return self . color_hashes [ ' main ' ]
@property
def light_color_code ( self ) :
return self . color_hashes [ ' light ' ]
def save ( self , * args , * * kwargs ) :
def save ( self , * args , * * kwargs ) :
if not self . slug or ( isinstance ( self . slug , str ) and self . slug . strip ( ) == ' ' ) :
if not self . slug or ( isinstance ( self . slug , str ) and self . slug . strip ( ) == ' ' ) :
# Try to get text from title field with robust error handling
# Try to get text from title field with robust error handling