Implement basic group listing and re-enabled group creation

This commit is contained in:
Tim Lorsbach
2026-04-14 20:58:12 +02:00
parent 877804c0ff
commit b508511cd6
7 changed files with 64 additions and 13 deletions

View File

@ -0,0 +1,23 @@
from django.conf import settings as s
from ninja import Router
from ninja_extra.pagination import paginate
from epdb.logic import GroupManager
from ..pagination import EnhancedPageNumberPagination
from ..schemas import GroupOutSchema
router = Router()
@router.get("/groups/", response=EnhancedPageNumberPagination.Output[GroupOutSchema])
@paginate(
EnhancedPageNumberPagination,
page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE,
)
def list_all_groups(request):
"""
List all groups the user has access to.
"""
user = request.user
return GroupManager.get_groups(user)

View File

@ -15,9 +15,9 @@ router = Router()
EnhancedPageNumberPagination, EnhancedPageNumberPagination,
page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE, page_size=s.API_PAGINATION_DEFAULT_PAGE_SIZE,
) )
def list_all_pathways(request): def list_all_settings(request):
""" """
List all pathways from reviewed packages. List all settings the user has access to.
""" """
user = request.user user = request.user
return SettingManager.get_all_settings(user) return SettingManager.get_all_settings(user)

View File

@ -1,6 +1,7 @@
from ninja import Router from ninja import Router
from ninja.security import SessionAuth from ninja.security import SessionAuth
from envipath import settings as s
from .auth import BearerTokenAuth from .auth import BearerTokenAuth
from .endpoints import ( from .endpoints import (
packages, packages,
@ -13,8 +14,8 @@ from .endpoints import (
structure, structure,
additional_information, additional_information,
settings, settings,
groups,
) )
from envipath import settings as s
# Main router with authentication # Main router with authentication
router = Router( router = Router(
@ -35,6 +36,7 @@ router.add_router("", models.router)
router.add_router("", structure.router) router.add_router("", structure.router)
router.add_router("", additional_information.router) router.add_router("", additional_information.router)
router.add_router("", settings.router) router.add_router("", settings.router)
router.add_router("", groups.router)
if s.IUCLID_EXPORT_ENABLED: if s.IUCLID_EXPORT_ENABLED:
from epiuclid.api import router as iuclid_router from epiuclid.api import router as iuclid_router

View File

@ -126,3 +126,10 @@ class SettingOutSchema(Schema):
url: str = "" url: str = ""
name: str name: str
description: str description: str
class GroupOutSchema(Schema):
uuid: UUID
url: str = ""
name: str
description: str

View File

@ -2846,9 +2846,15 @@ def groups(request):
{"Group": s.SERVER_URL + "/group"}, {"Group": s.SERVER_URL + "/group"},
] ]
context["objects"] = Group.objects.all() # Context for paginated template
context["entity_type"] = "group"
context["api_endpoint"] = f"{s.SERVER_PATH}/api/v1/groups/"
context["per_page"] = s.API_PAGINATION_DEFAULT_PAGE_SIZE
context["list_title"] = "groups"
context["list_mode"] = "combined"
return render(request, "collections/groups_paginated.html", context)
return render(request, "collections/objects_list.html", context)
elif request.method == "POST": elif request.method == "POST":
group_name = request.POST.get("group-name") group_name = request.POST.get("group-name")
group_description = request.POST.get("group-description", s.DEFAULT_VALUES["description"]) group_description = request.POST.get("group-description", s.DEFAULT_VALUES["description"])

View File

@ -1,8 +0,0 @@
<li>
<a
role="button"
onclick="document.getElementById('new_group_modal').showModal(); return false;"
>
<span class="glyphicon glyphicon-plus"></span> New Group</a
>
</li>

View File

@ -0,0 +1,21 @@
{% extends "collections/paginated_base.html" %}
{% block page_title %}Groups{% endblock %}
{% block action_button %}
<button
type="button"
class="btn btn-primary btn-sm"
onclick="document.getElementById('new_group_modal').showModal(); return false;"
>
New Group
</button>
{% endblock action_button %}
{% block action_modals %}
{% include "modals/collections/new_group_modal.html" %}
{% endblock action_modals %}
{% block description %}
<p>Users can team up in groups to share packages.</p>
{% endblock description %}