Fix 2035 - Profile configuration (#2036)

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
This commit is contained in:
Daniel Girtler 2023-09-14 20:05:05 +10:00 committed by GitHub
parent c8e0b9a4d6
commit dcf3dfef57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 19 deletions

View File

@ -27,11 +27,13 @@ class ProfileConfiguration:
@classmethod
def parse_arg(cls, arg: Dict[str, Any]) -> 'ProfileConfiguration':
from .profiles_handler import profile_handler
profile = profile_handler.parse_profile_config(arg['profile'])
greeter = arg.get('greeter', None)
gfx_driver = arg.get('gfx_driver', None)
return ProfileConfiguration(
profile_handler.parse_profile_config(arg['profile']),
profile,
GfxDriver(gfx_driver) if gfx_driver else None,
GreeterType(greeter) if greeter else None
)

View File

@ -52,9 +52,9 @@ class ProfileHandler:
def parse_profile_config(self, profile_config: Dict[str, Any]) -> Optional[Profile]:
"""
Deserialize JSON configuration
Deserialize JSON configuration for profile
"""
profile = None
profile: Optional[Profile] = None
# the order of these is important, we want to
# load all the default_profiles from url and custom
@ -97,29 +97,26 @@ class ProfileHandler:
if main := profile_config.get('main', None):
profile = self.get_profile_by_name(main) if main else None
valid: List[Profile] = []
if not profile:
return None
valid_sub_profiles: List[Profile] = []
invalid_sub_profiles: List[str] = []
details: List[str] = profile_config.get('details', [])
if details:
valid = []
invalid = []
for detail in filter(None, details):
if profile := self.get_profile_by_name(detail):
valid.append(profile)
if sub_profile := self.get_profile_by_name(detail):
valid_sub_profiles.append(sub_profile)
else:
invalid.append(detail)
invalid_sub_profiles.append(detail)
if invalid:
info('No profile definition found: {}'.format(', '.join(invalid)))
if invalid_sub_profiles:
info('No profile definition found: {}'.format(', '.join(invalid_sub_profiles)))
custom_settings = profile_config.get('custom_settings', {})
for profile in valid:
profile.set_custom_settings(
custom_settings.get(profile.name, {})
)
if profile is not None:
profile.set_current_selection(valid)
profile.set_custom_settings(custom_settings)
profile.set_current_selection(valid_sub_profiles)
return profile