MCPcopy Create free account
hub / github.com/diffgram/diffgram / star_project_toggle

Function star_project_toggle

default/methods/project/star.py:13–59  ·  view source on GitHub ↗
(project_string_id, username)

Source from the content-addressed store, hash-verified

11@Project_permissions.user_has_project(["allow_if_project_is_public",
12 "Viewer", "admin", "Editor"])
13def star_project_toggle(project_string_id, username):
14
15 with sessionMaker.session_scope() as session:
16
17 data = request.get_json(force=True)
18
19 user = User.get(session)
20 if user is None:
21 return jsonify(success = False), 400, {'ContentType':'application/json'}
22
23 project = Project.get(session, project_string_id)
24 if project is None:
25 return jsonify(success = False), 400, {'ContentType':'application/json'}
26
27 existing_star = session.query(ProjectStar).filter(
28 ProjectStar.project_id == project.id,
29 ProjectStar.user_id == user.id).first()
30 if existing_star:
31
32 # TODO Do we want to do a soft delete here?
33 session.delete(existing_star)
34
35 session.add(project)
36 project.star_count -= 1
37
38 return jsonify(success = True,
39 star_count = project.star_count,
40 state = "Unstarred"), 200, {'ContentType':'application/json'}
41
42
43 project_star = ProjectStar()
44 project_star.user = user
45 project_star.project = project
46
47 session.add(project_star)
48
49 if project.star_count:
50 project.star_count += 1
51 else:
52 project.star_count = 1
53
54 session.add(project)
55
56
57 return jsonify(success = True,
58 star_count = project.star_count,
59 state = "Starred"), 200, {'ContentType':'application/json'}
60
61
62@routes.route('/api/project/<string:project_string_id>' +

Callers

nothing calls this directly

Calls 4

ProjectStarClass · 0.90
getMethod · 0.45
deleteMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected