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 @classmethod
def parse_arg(cls, arg: Dict[str, Any]) -> 'ProfileConfiguration': def parse_arg(cls, arg: Dict[str, Any]) -> 'ProfileConfiguration':
from .profiles_handler import profile_handler from .profiles_handler import profile_handler
profile = profile_handler.parse_profile_config(arg['profile'])
greeter = arg.get('greeter', None) greeter = arg.get('greeter', None)
gfx_driver = arg.get('gfx_driver', None) gfx_driver = arg.get('gfx_driver', None)
return ProfileConfiguration( return ProfileConfiguration(
profile_handler.parse_profile_config(arg['profile']), profile,
GfxDriver(gfx_driver) if gfx_driver else None, GfxDriver(gfx_driver) if gfx_driver else None,
GreeterType(greeter) if greeter 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]: 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 # the order of these is important, we want to
# load all the default_profiles from url and custom # load all the default_profiles from url and custom
@ -97,29 +97,26 @@ class ProfileHandler:
if main := profile_config.get('main', None): if main := profile_config.get('main', None):
profile = self.get_profile_by_name(main) if main else 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', []) details: List[str] = profile_config.get('details', [])
if details: if details:
valid = []
invalid = []
for detail in filter(None, details): for detail in filter(None, details):
if profile := self.get_profile_by_name(detail): if sub_profile := self.get_profile_by_name(detail):
valid.append(profile) valid_sub_profiles.append(sub_profile)
else: else:
invalid.append(detail) invalid_sub_profiles.append(detail)
if invalid: if invalid_sub_profiles:
info('No profile definition found: {}'.format(', '.join(invalid))) info('No profile definition found: {}'.format(', '.join(invalid_sub_profiles)))
custom_settings = profile_config.get('custom_settings', {}) custom_settings = profile_config.get('custom_settings', {})
for profile in valid: profile.set_custom_settings(custom_settings)
profile.set_custom_settings( profile.set_current_selection(valid_sub_profiles)
custom_settings.get(profile.name, {})
)
if profile is not None:
profile.set_current_selection(valid)
return profile return profile