Add app list sort

This commit is contained in:
Kloadut 2013-02-10 22:34:14 +01:00
parent d26c545293
commit 8f2ce51ccb
3 changed files with 34 additions and 14 deletions

View file

@ -218,12 +218,6 @@ app:
list: list:
action_help: List apps action_help: List apps
arguments: arguments:
--fields:
help: fields to fetch
nargs: "+"
-f:
full: --filter
help: LDAP filter used to search
-l: -l:
full: --limit full: --limit
help: Maximum number of app fetched help: Maximum number of app fetched

View file

@ -35,13 +35,39 @@ def app_updatelist(url=None):
win_msg(_("List updated successfully")) 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: with open('/var/cache/yunohost/apps/list.json') as json_list:
app_dict = json.loads(str(json_list.read())) app_dict = json.loads(str(json_list.read()))
list_dict = {} list_dict = {}
for app_id, app_info in app_dict.items(): 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] = { list_dict[app_id] = {
'Name': app_info['manifest']['name'], 'Name': app_info['manifest']['name'],
'Version': app_info['manifest']['version'], 'Version': app_info['manifest']['version'],

View file

@ -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: if result and len(result) > (0 + offset) and limit > 0:
i = 0 + offset i = 0 + offset
for user in result[i:]: for user in result[i:]:
if i < limit: if i <= limit:
entry = { entry = {
'Username': user['uid'], 'Username': user['uid'],
'Fullname': user['cn'], 'Fullname': user['cn'],