@@ -197,6 +197,7 @@ def settings_root(request: HttpRequest) -> HttpResponse:
197197 data = fu ._user_data
198198
199199 country_attr = str (settings .SELF_SERVICE_ADDRESS_COUNTRY_ATTR ).strip () or "c"
200+ country_attr_lower = country_attr .lower ()
200201
201202 # --- Profile ---
202203 # Use the FreeIPA attribute data as the source of truth. This avoids relying on
@@ -674,14 +675,24 @@ def _user_can_reauth(password: str) -> bool:
674675 current_value = profile_initial .get ("fasGitLabUsername" ),
675676 new_value = profile_form .cleaned_data ["fasGitLabUsername" ],
676677 )
677- _add_change_setattr (
678- setattrs = profile_setattrs ,
679- delattrs = profile_delattrs ,
680- attr = country_attr ,
681- current_value = profile_initial .get ("country_code" ),
682- new_value = profile_form .cleaned_data ["country_code" ],
683- transform = str .upper ,
684- )
678+ if country_attr_lower in {"c" , "st" , "l" , "postalcode" }:
679+ _add_change (
680+ updates = profile_direct_updates ,
681+ delattrs = profile_delattrs ,
682+ attr = country_attr_lower ,
683+ current_value = profile_initial .get ("country_code" ),
684+ new_value = profile_form .cleaned_data ["country_code" ],
685+ transform = str .upper ,
686+ )
687+ else :
688+ _add_change_setattr (
689+ setattrs = profile_setattrs ,
690+ delattrs = profile_delattrs ,
691+ attr = country_attr ,
692+ current_value = profile_initial .get ("country_code" ),
693+ new_value = profile_form .cleaned_data ["country_code" ],
694+ transform = str .upper ,
695+ )
685696
686697 current_private = profile_initial ["fasIsPrivate" ]
687698 new_private = profile_form .cleaned_data ["fasIsPrivate" ]
@@ -973,14 +984,24 @@ def _user_can_reauth(password: str) -> bool:
973984 current_value = profile_initial .get ("fasGitLabUsername" ),
974985 new_value = profile_form .cleaned_data ["fasGitLabUsername" ],
975986 )
976- _add_change_setattr (
977- setattrs = setattrs ,
978- delattrs = delattrs ,
979- attr = country_attr ,
980- current_value = profile_initial .get ("country_code" ),
981- new_value = profile_form .cleaned_data ["country_code" ],
982- transform = str .upper ,
983- )
987+ if country_attr_lower in {"c" , "st" , "l" , "postalcode" }:
988+ _add_change (
989+ updates = direct_updates ,
990+ delattrs = delattrs ,
991+ attr = country_attr_lower ,
992+ current_value = profile_initial .get ("country_code" ),
993+ new_value = profile_form .cleaned_data ["country_code" ],
994+ transform = str .upper ,
995+ )
996+ else :
997+ _add_change_setattr (
998+ setattrs = setattrs ,
999+ delattrs = delattrs ,
1000+ attr = country_attr ,
1001+ current_value = profile_initial .get ("country_code" ),
1002+ new_value = profile_form .cleaned_data ["country_code" ],
1003+ transform = str .upper ,
1004+ )
9841005
9851006 current_private = profile_initial ["fasIsPrivate" ]
9861007 new_private = profile_form .cleaned_data ["fasIsPrivate" ]
0 commit comments