MCPcopy Index your code
hub / github.com/diffgram/diffgram / share_link

Function share_link

default/methods/share/share_link.py:18–70  ·  view source on GitHub ↗

(project_string_id, task_id)

Source from the content-addressed store, hash-verified

16 apis_user_list = ["builder_or_trainer"],
17 roles = ["admin", "Editor", "Viewer"])
18def share_link(project_string_id, task_id):
19 """
20
21
22 """
23
24 spec_list = [
25 {'member_list': None},
26 {'message': {
27 'default': '',
28 'required': False,
29 'allow_empty': True,
30 'kind': str
31 }},
32 {'link': str},
33 ]
34 log, input, untrusted_input = regular_input.master(request=request,
35 spec_list=spec_list)
36 if len(log["error"].keys()) >= 1:
37 return jsonify(log=log), 400
38
39 with sessionMaker.session_scope() as session:
40
41 # Case of providing just task_id (For trainer mode)
42 if not project_string_id:
43 task = Task.get_by_id(session, task_id=task_id)
44 project_string_id = task.project.project_string_id
45
46 current_user = User.get(session = session)
47 link_sharer = LinkSharer(
48 session=session,
49 user_sending=current_user,
50 log=log,
51 link_to_send=input['link'],
52 member_list=input['member_list'],
53 message=input['message'],
54 project=Project.get(session, project_string_id),
55 )
56
57 link_sharer.share_to_member_list()
58
59 if len(link_sharer.log["error"].keys()) >= 1:
60 return jsonify(log=link_sharer.log), 400
61
62 link_sharer.log["success"] = True
63
64 # Set cache dirty
65 with sessionMaker.session_scope() as session:
66 project = Project.get_by_string_id(session, project_string_id=project_string_id)
67 project.set_cache_key_dirty('member_list')
68 session.add(project)
69
70 return jsonify(link_sharer.log), 200
71
72
73class LinkSharer:

Callers

nothing calls this directly

Calls 7

share_to_member_listMethod · 0.95
LinkSharerClass · 0.85
set_cache_key_dirtyMethod · 0.80
get_by_idMethod · 0.45
getMethod · 0.45
get_by_string_idMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected