forked from enviPath/enviPy
Implement basic group listing and re-enabled group creation
This commit is contained in:
23
epapi/v1/endpoints/groups.py
Normal file
23
epapi/v1/endpoints/groups.py
Normal 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)
|
||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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"])
|
||||||
|
|||||||
@ -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>
|
|
||||||
|
|||||||
21
templates/collections/groups_paginated.html
Normal file
21
templates/collections/groups_paginated.html
Normal 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 %}
|
||||||
Reference in New Issue
Block a user