(project_string_id, task_id)
| 16 | apis_user_list = ["builder_or_trainer"], |
| 17 | roles = ["admin", "Editor", "Viewer"]) |
| 18 | def 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 | |
| 73 | class LinkSharer: |
nothing calls this directly
no test coverage detected