groups.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. #
  3. # Copyright (C) 2023 Ferass El Hafidi <vitali64pmemail@protonmail.com>
  4. from markupsafe import escape
  5. from api.base import api_call
  6. # Groups
  7. def get_subgroups_list(instance, group, search_query = None, page = 1):
  8. if search_query is None:
  9. subgroups_list = api_call('https://%s/api/v4/groups/%s/subgroups?page=%s' \
  10. % (instance, group, page))
  11. else: # Search
  12. subgroups_list = api_call(\
  13. 'https://%s/api/v4/groups/%s/subgroups?search=%s&page=%s' \
  14. % (instance, group, search_query, page))
  15. if subgroups_list == []:
  16. return "<p style=\"background-color: orangered; padding: 10px\">" \
  17. "an error occured: no subgroups found</p>"
  18. # Convert to HTML
  19. subgroups_list_html = "<table class=\"laboratory_list\"><tbody>"
  20. subgroups_list_html += "<tr>" "<th>Name</th>" \
  21. "<th>Description</th>" "<th>Created at</th>" "</tr>"
  22. for subgroup in subgroups_list:
  23. subgroups_list_html += "<tr><td><a href=\"/%s/%s\">%s</a></th>" % \
  24. (instance, subgroup['full_path'], \
  25. subgroup['full_path']) + \
  26. "<td><a href=\"/%s/%s\">%s</a></td>" % (instance, \
  27. subgroup['full_path'], subgroup['description']) + \
  28. "<td><a href=\"/%s/%s\">%s</a></td></tr>" % (instance, \
  29. subgroup['full_path'], subgroup['created_at'])
  30. subgroups_list_html += "</tbody></table>"
  31. subgroups_list_html += "<a href=\"?page=%s\">Next →</a>" % (page + 1)
  32. return subgroups_list_html
  33. def get_group_data(instance, group):
  34. recv = api_call("https://%s/api/v4/groups/%s" % \
  35. (instance, group))
  36. return recv['avatar_url'] if recv['avatar_url'] != None else "", \
  37. recv['name'], recv['description']