Fix 2035 - Profile configuration (#2036)
Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
This commit is contained in:
parent
c8e0b9a4d6
commit
dcf3dfef57
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue