Skip to content

Commit 9698d12

Browse files
committed
membership-request [inveniosoftware#855]: remove MemberLinks template
1 parent 609e592 commit 9698d12

File tree

2 files changed

+7
-33
lines changed

2 files changed

+7
-33
lines changed

Diff for: invenio_communities/members/services/links.py

+5-26
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,14 @@
99

1010
from invenio_records_resources.services.base.links import Link, LinksTemplate
1111
from invenio_requests.customizations import RequestActions
12-
from invenio_requests.proxies import current_requests_service
12+
from invenio_requests.proxies import (
13+
current_request_type_registry,
14+
current_requests_service,
15+
)
1316
from invenio_requests.resolvers.registry import ResolverRegistry
1417
from uritemplate import URITemplate
1518

1619

17-
class MemberLinksTemplate(LinksTemplate):
18-
"""A links template that passes the request type in the context.
19-
20-
This template is useful to avoid having to dereference the request type into
21-
members at the DB-level. It's legitimate (for now), because we know what
22-
kind of request type we are dealing with at the service search method (e.g. when
23-
searching for invitations we know the request type of requests associated with
24-
Members is CommunityInvitation).
25-
"""
26-
27-
def __init__(self, links, context=None, request_type=None):
28-
"""Constructor.
29-
30-
:param links: a dict of Links (or objects that have same interface)
31-
:param context: dict of context values
32-
:param request_type: a RequestType
33-
"""
34-
context = context or {}
35-
context["request_type"] = request_type
36-
super().__init__(links, context=context)
37-
38-
3920
class LinksForActionsOfMember:
4021
"""Intermediary template of links.
4122
@@ -88,8 +69,8 @@ def __init__(self, obj, context):
8869
:param context: dict of context values
8970
"""
9071
self.id = obj.request_id
91-
self.type = context["request_type"]
9272
request_relation = obj["request"]
73+
self.type = current_request_type_registry.lookup(request_relation["type"])
9374
self.status = request_relation["status"]
9475
self.created_by = self._get_created_by(obj)
9576
self.receiver = self._get_receiver(obj)
@@ -129,8 +110,6 @@ def _get_receiver(self, obj):
129110
receiver_ref_type = self.type.allowed_receiver_ref_types[0]
130111
return self._get_proxy_by_ref_type(receiver_ref_type, obj)
131112

132-
# assert 1 == len(self.type.allowed_topic_ref_types)
133-
134113
def _get_proxy_by_ref_type(self, ref_type, obj):
135114
"""Returns proxy for given ref type.
136115

Diff for: invenio_communities/members/services/service.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
from ...proxies import current_roles
3939
from ..errors import AlreadyMemberError, InvalidMemberError
4040
from ..records.api import ArchivedInvitation
41-
from .links import MemberLinksTemplate
4241
from .request import CommunityInvitation, MembershipRequestRequestType
4342
from .schemas import (
4443
AddBulkSchema,
@@ -452,9 +451,7 @@ def search_invitations(
452451
params=params,
453452
search_preference=search_preference,
454453
endpoint="invitations",
455-
links_item_tpl=MemberLinksTemplate( # TODO
456-
self.config.links_item, request_type=CommunityInvitation
457-
),
454+
links_item_tpl=LinksTemplate(self.config.links_item),
458455
**kwargs
459456
)
460457

@@ -880,9 +877,7 @@ def search_membership_requests(
880877
params=params,
881878
search_preference=search_preference,
882879
endpoint="membership-requests",
883-
links_item_tpl=MemberLinksTemplate(
884-
self.config.links_item, request_type=MembershipRequestRequestType
885-
),
880+
links_item_tpl=LinksTemplate(self.config.links_item),
886881
**kwargs
887882
)
888883

0 commit comments

Comments
 (0)