@@ -918,6 +918,40 @@ def __str__(self):
918918 return self .name
919919
920920
921+ # declare form here as we can't import forms.py due to circular imports not even locally
922+ class ToolConfigForm_Admin (forms .ModelForm ):
923+ password = forms .CharField (widget = forms .PasswordInput , required = False )
924+ api_key = forms .CharField (widget = forms .PasswordInput , required = False )
925+ ssh = forms .CharField (widget = forms .PasswordInput , required = False )
926+
927+ # django doesn't seem to have an easy way to handle password fields as PasswordInput requires reentry of passwords
928+ password_from_db = None
929+ ssh_from_db = None
930+ api_key_from_db = None
931+
932+ def __init__ (self , * args , ** kwargs ):
933+ super ().__init__ (* args , ** kwargs )
934+ if self .instance :
935+ # keep password from db to use if the user entered no password
936+ self .password_from_db = self .instance .password
937+ self .ssh_from_db = self .instance .ssh
938+ self .api_key = self .instance .api_key
939+
940+ def clean (self ):
941+ # self.fields['endpoints'].queryset = Endpoint.objects.all()
942+ cleaned_data = super ().clean ()
943+ if not cleaned_data ['password' ] and not cleaned_data ['ssh' ] and not cleaned_data ['api_key' ]:
944+ cleaned_data ['password' ] = self .password_from_db
945+ cleaned_data ['ssh' ] = self .ssh_from_db
946+ cleaned_data ['api_key' ] = self .api_key_from_db
947+
948+ return cleaned_data
949+
950+
951+ class Tool_Configuration_Admin (admin .ModelAdmin ):
952+ form = ToolConfigForm_Admin
953+
954+
921955class Network_Locations (models .Model ):
922956 location = models .CharField (max_length = 500 , help_text = "Location of network testing: Examples: VPN, Internet or Internal." )
923957
@@ -2634,6 +2668,33 @@ def get_priority(self, status):
26342668 return 'N/A'
26352669
26362670
2671+ # declare form here as we can't import forms.py due to circular imports not even locally
2672+ class JIRAForm_Admin (forms .ModelForm ):
2673+ password = forms .CharField (widget = forms .PasswordInput , required = True )
2674+
2675+ # django doesn't seem to have an easy way to handle password fields as PasswordInput requires reentry of passwords
2676+ password_from_db = None
2677+
2678+ def __init__ (self , * args , ** kwargs ):
2679+ super ().__init__ (* args , ** kwargs )
2680+ if self .instance :
2681+ # keep password from db to use if the user entered no password
2682+ self .password_from_db = self .instance .password
2683+ self .fields ['password' ].required = False
2684+
2685+ def clean (self ):
2686+ # self.fields['endpoints'].queryset = Endpoint.objects.all()
2687+ cleaned_data = super ().clean ()
2688+ if not cleaned_data ['password' ]:
2689+ cleaned_data ['password' ] = self .password_from_db
2690+
2691+ return cleaned_data
2692+
2693+
2694+ class JIRA_Conf_Admin (admin .ModelAdmin ):
2695+ form = JIRAForm_Admin
2696+
2697+
26372698class JIRA_Issue (models .Model ):
26382699 jira_id = models .CharField (max_length = 200 )
26392700 jira_key = models .CharField (max_length = 200 )
@@ -3481,11 +3542,11 @@ def enable_disable_auditlog(enable=True):
34813542admin .site .register (IPScan )
34823543admin .site .register (Alerts )
34833544admin .site .register (JIRA_Issue )
3484- admin .site .register (JIRA_Conf )
3545+ admin .site .register (JIRA_Conf , JIRA_Conf_Admin )
34853546admin .site .register (JIRA_PKey )
34863547admin .site .register (GITHUB_Conf )
34873548admin .site .register (GITHUB_PKey )
3488- admin .site .register (Tool_Configuration )
3549+ admin .site .register (Tool_Configuration , Tool_Configuration_Admin )
34893550admin .site .register (Tool_Product_Settings )
34903551admin .site .register (Tool_Type )
34913552admin .site .register (Cred_User )
0 commit comments