Skip to content

Commit 77aa1b7

Browse files
committed
membership-requests [#855]: add discussion page in community dashboard [+]
- also fix top menu to display "Members"
1 parent ce94069 commit 77aa1b7

File tree

2 files changed

+63
-5
lines changed

2 files changed

+63
-5
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{# -*- coding: utf-8 -*-
2+
3+
This file is part of Invenio.
4+
Copyright (C) 2022 CERN.
5+
Copyright (C) 2024 Northwestern University
6+
7+
Invenio is free software; you can redistribute it and/or modify it
8+
under the terms of the MIT License; see LICENSE file for more details.
9+
#}
10+
{% set title = invenio_request.title %}
11+
{% extends "invenio_requests/details/index.html" %}
12+
{% from "invenio_requests/macros/request_header.html" import member_request_header %}
13+
14+
{% set active_community_header_menu_item = 'members' %}
15+
{% set active_members_menu_item = 'membership_requests' %}
16+
17+
{% block request_header %}
18+
{{
19+
member_request_header(
20+
back_button_url=url_for("invenio_communities.membership_requests", pid_value=invenio_request.receiver.community),
21+
back_button_text=_("Back to membership requests"),
22+
request=invenio_request
23+
)
24+
}}
25+
{% endblock %}
26+
27+
28+
{% block settings_body %}
29+
<div class="sixteen wide mobile sixteen wide tablet thirteen wide computer column right floated">
30+
{% block request_body %}
31+
{{ super() }}
32+
{% endblock request_body %}
33+
</div>
34+
{% endblock %}
35+
36+
{% block page_body %}
37+
{{ super.super() }}
38+
{% endblock page_body %}

invenio_app_rdm/requests_ui/views/requests.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
from flask import g, render_template
1313
from flask_login import current_user, login_required
1414
from invenio_communities.config import COMMUNITIES_ROLES
15-
from invenio_communities.members.services.request import CommunityInvitation
15+
from invenio_communities.members.services.request import (
16+
CommunityInvitation,
17+
MembershipRequestRequestType,
18+
)
1619
from invenio_communities.proxies import current_identities_cache
1720
from invenio_communities.subcommunities.services.request import SubCommunityRequest
1821
from invenio_communities.utils import identity_cache_key
@@ -240,8 +243,11 @@ def community_dashboard_request_view(request, community, community_ui, **kwargs)
240243

241244
is_draft_submission = request_type == CommunitySubmission.type_id
242245
is_record_inclusion = request_type == CommunityInclusion.type_id
243-
is_member_invitation = request_type == CommunityInvitation.type_id
244246
is_subcommunity_request = request_type == SubCommunityRequest.type_id
247+
types_of_member_requests = [
248+
CommunityInvitation.type_id,
249+
MembershipRequestRequestType.type_id,
250+
]
245251
request_is_accepted = request["status"] == AcceptAction.status_to
246252

247253
permissions = community.has_permissions_to(
@@ -277,9 +283,23 @@ def community_dashboard_request_view(request, community, community_ui, **kwargs)
277283
include_deleted=False,
278284
)
279285

280-
elif is_member_invitation:
281-
if not permissions["can_search_invites"]:
282-
raise PermissionDeniedError()
286+
elif request_type in types_of_member_requests:
287+
permissions = community.has_permissions_to(
288+
[
289+
"update",
290+
"read",
291+
"search_requests",
292+
"members_search_public",
293+
"search_invites",
294+
"search_membership_requests",
295+
]
296+
)
297+
if request_type == CommunityInvitation.type_id:
298+
if not permissions["can_search_invites"]:
299+
raise PermissionDeniedError()
300+
else: # is a membership request
301+
if not permissions["can_search_membership_requests"]:
302+
raise PermissionDeniedError()
283303

284304
return render_community_theme_template(
285305
f"invenio_requests/{request_type}/community_dashboard.html",

0 commit comments

Comments
 (0)