|
12 | 12 | from flask import g, render_template |
13 | 13 | from flask_login import current_user, login_required |
14 | 14 | 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 | +) |
16 | 19 | from invenio_communities.proxies import current_identities_cache |
17 | 20 | from invenio_communities.subcommunities.services.request import SubCommunityRequest |
18 | 21 | from invenio_communities.utils import identity_cache_key |
@@ -240,8 +243,11 @@ def community_dashboard_request_view(request, community, community_ui, **kwargs) |
240 | 243 |
|
241 | 244 | is_draft_submission = request_type == CommunitySubmission.type_id |
242 | 245 | is_record_inclusion = request_type == CommunityInclusion.type_id |
243 | | - is_member_invitation = request_type == CommunityInvitation.type_id |
244 | 246 | is_subcommunity_request = request_type == SubCommunityRequest.type_id |
| 247 | + types_of_member_requests = [ |
| 248 | + CommunityInvitation.type_id, |
| 249 | + MembershipRequestRequestType.type_id, |
| 250 | + ] |
245 | 251 | request_is_accepted = request["status"] == AcceptAction.status_to |
246 | 252 |
|
247 | 253 | permissions = community.has_permissions_to( |
@@ -277,9 +283,23 @@ def community_dashboard_request_view(request, community, community_ui, **kwargs) |
277 | 283 | include_deleted=False, |
278 | 284 | ) |
279 | 285 |
|
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() |
283 | 303 |
|
284 | 304 | return render_community_theme_template( |
285 | 305 | f"invenio_requests/{request_type}/community_dashboard.html", |
|
0 commit comments