diff --git a/action_map.yml b/action_map.yml index 444881d2..1c22a771 100644 --- a/action_map.yml +++ b/action_map.yml @@ -218,12 +218,6 @@ app: list: action_help: List apps arguments: - --fields: - help: fields to fetch - nargs: "+" - -f: - full: --filter - help: LDAP filter used to search -l: full: --limit help: Maximum number of app fetched diff --git a/yunohost_app.py b/yunohost_app.py index 8c98c1d4..4a9ca08d 100644 --- a/yunohost_app.py +++ b/yunohost_app.py @@ -35,17 +35,43 @@ def app_updatelist(url=None): win_msg(_("List updated successfully")) -def app_list(filter=None, fields=None, offset=None, limit=None): +def app_list(offset=None, limit=None): + """ + List available applications + + Keyword arguments: + offset -- App to begin with + limit -- Number of apps to list + + Returns: + Dict of apps + + """ + + # TODO: List installed applications + # TODO: Implement fields to fetch + + if offset: offset = int(offset) + else: offset = 0 + if limit: limit = int(limit) + else: limit = 1000 with open('/var/cache/yunohost/apps/list.json') as json_list: app_dict = json.loads(str(json_list.read())) list_dict = {} - for app_id, app_info in app_dict.items(): - list_dict[app_id] = { - 'Name': app_info['manifest']['name'], - 'Version': app_info['manifest']['version'], - 'Description': app_info['manifest']['description'] - } + if len(app_dict) > (0 + offset) and limit > 0: + i = 0 + offset + sorted_app_dict = {} + for sorted_keys in sorted(app_dict.keys())[i:]: + if i <= limit: + sorted_app_dict[sorted_keys] = app_dict[sorted_keys] + i += 1 + for app_id, app_info in sorted_app_dict.items(): + list_dict[app_id] = { + 'Name': app_info['manifest']['name'], + 'Version': app_info['manifest']['version'], + 'Description': app_info['manifest']['description'] + } return list_dict diff --git a/yunohost_user.py b/yunohost_user.py index 809ff4e8..9014e9b7 100644 --- a/yunohost_user.py +++ b/yunohost_user.py @@ -46,7 +46,7 @@ def user_list(fields=None, filter=None, limit=None, offset=None): if result and len(result) > (0 + offset) and limit > 0: i = 0 + offset for user in result[i:]: - if i < limit: + if i <= limit: entry = { 'Username': user['uid'], 'Fullname': user['cn'],