eos-parental-controls-client: Add OARS filter support
This basic support will return the value of a given OARS section to the caller. Signed-off-by: Philip Withnall <withnall@endlessm.com> https://phabricator.endlessm.com/T23999
This commit is contained in:
parent
6cc9b9bb27
commit
8b2115a801
|
@ -95,6 +95,23 @@ def __lookup_user_id_or_error(user):
|
||||||
raise SystemExit(EXIT_INVALID_OPTION)
|
raise SystemExit(EXIT_INVALID_OPTION)
|
||||||
|
|
||||||
|
|
||||||
|
def __oars_value_to_string(value):
|
||||||
|
"""Convert an EosParentalControls.AppFilterOarsValue to a human-readable
|
||||||
|
string."""
|
||||||
|
mapping = {
|
||||||
|
EosParentalControls.AppFilterOarsValue.UNKNOWN: "unknown",
|
||||||
|
EosParentalControls.AppFilterOarsValue.NONE: "none",
|
||||||
|
EosParentalControls.AppFilterOarsValue.MILD: "mild",
|
||||||
|
EosParentalControls.AppFilterOarsValue.MODERATE: "moderate",
|
||||||
|
EosParentalControls.AppFilterOarsValue.INTENSE: "intense",
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
return mapping[value]
|
||||||
|
except KeyError:
|
||||||
|
return "invalid (OARS value {})".format(value)
|
||||||
|
|
||||||
|
|
||||||
def command_get(user, quiet=False, interactive=True):
|
def command_get(user, quiet=False, interactive=True):
|
||||||
"""Get the app filter for the given user."""
|
"""Get the app filter for the given user."""
|
||||||
user_id = __lookup_user_id_or_error(user)
|
user_id = __lookup_user_id_or_error(user)
|
||||||
|
@ -121,6 +138,17 @@ def command_check(user, path, quiet=False, interactive=True):
|
||||||
raise SystemExit(EXIT_PATH_NOT_ALLOWED)
|
raise SystemExit(EXIT_PATH_NOT_ALLOWED)
|
||||||
|
|
||||||
|
|
||||||
|
def command_oars_section(user, section, quiet=False, interactive=True):
|
||||||
|
"""Get the value of the given OARS section for the given user, according
|
||||||
|
to their OARS filter."""
|
||||||
|
user_id = __lookup_user_id_or_error(user)
|
||||||
|
app_filter = __get_app_filter_or_error(user_id, interactive)
|
||||||
|
|
||||||
|
value = app_filter.get_oars_value(section)
|
||||||
|
print('OARS section ‘{}’ for user {} has value ‘{}’'.format(
|
||||||
|
section, user_id, __oars_value_to_string(value)))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# Parse command line arguments
|
# Parse command line arguments
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
|
@ -164,6 +192,18 @@ def main():
|
||||||
parser_check.add_argument('path',
|
parser_check.add_argument('path',
|
||||||
help='path to a program to check')
|
help='path to a program to check')
|
||||||
|
|
||||||
|
# ‘oars-section’ command
|
||||||
|
parser_oars_section = subparsers.add_parser('oars-section',
|
||||||
|
parents=[common_parser],
|
||||||
|
help='get the value of a '
|
||||||
|
'given OARS section')
|
||||||
|
parser_oars_section.set_defaults(function=command_oars_section)
|
||||||
|
parser_oars_section.add_argument('user', default='', nargs='?',
|
||||||
|
help='user ID or username to get the '
|
||||||
|
'OARS filter for (default: current '
|
||||||
|
'user)')
|
||||||
|
parser_oars_section.add_argument('section', help='OARS section to get')
|
||||||
|
|
||||||
# Parse the command line arguments and run the subcommand.
|
# Parse the command line arguments and run the subcommand.
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
args_dict = dict((k, v) for k, v in vars(args).items() if k != 'function')
|
args_dict = dict((k, v) for k, v in vars(args).items() if k != 'function')
|
||||||
|
|
Loading…
Reference in New Issue