GitHub PullRequestReviewCommentEvent at 2014-08-27 22:50:04
Repository: ka-lite
Actor: dylanjbarth
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/learningequality/ka-lite/pulls/comments/16810398","id":16810398,"diff_hunk":"@@ -0,0 +1,331 @@\n+\"\"\"Classes used by the student progress tastypie API\"\"\"\n+\n+from django.core.urlresolvers import reverse\n+from django.core.exceptions import ObjectDoesNotExist\n+\n+from kalite.facility.models import FacilityUser\n+from kalite.main.models import ExerciseLog, VideoLog\n+from kalite.playlist.models import VanillaPlaylist as Playlist, QuizLog\n+from kalite.topic_tools import get_slug2id_map, get_id2slug_map, get_flat_topic_tree, convert_leaf_url_to_id\n+\n+\n+FLAT_TOPIC_TREE = get_flat_topic_tree()\n+ID2SLUG_MAP = get_id2slug_map()\n+SLUG2ID_MAP = get_slug2id_map()\n+\n+class PlaylistProgressParent:\n+    \"\"\"Parent class for helpful class methods\"\"\"\n+\n+    @classmethod\n+    def get_playlist_entry_ids(cls, playlist):\n+        \"\"\"Return a tuple of the playlist's video ids and exercise ids as sets\"\"\"\n+        playlist_entries = playlist.get(\"entries\")\n+        pl_video_ids = set([SLUG2ID_MAP.get(convert_leaf_url_to_id(entry[\"entity_id\"])) for entry in playlist_entries if entry.get(\"entity_kind\") == \"Video\"])\n+        pl_exercise_ids = set([convert_leaf_url_to_id(entry[\"entity_id\"]) for entry in playlist_entries if entry.get(\"entity_kind\") == \"Exercise\"])\n+        return (pl_video_ids, pl_exercise_ids)\n+\n+    @classmethod\n+    def get_user_logs(cls, user, pl_video_ids=None, pl_exercise_ids=None):\n+        user_ex_logs = list(ExerciseLog.objects \\\n+            .filter(user=user) \\\n+            .values(\"exercise_id\", \"complete\", \"points\", \"attempts\", \"streak_progress\", \"struggling\", \"completion_timestamp\"))\n+        user_vid_logs = list(VideoLog.objects \\\n+            .filter(user=user) \\\n+            .values(\"video_id\", \"complete\", \"total_seconds_watched\", \"points\", \"completion_timestamp\"))\n+        \n+        if pl_video_ids and pl_exercise_ids:\n+            user_ex_logs = [ex_log for ex_log in user_ex_logs if ex_log.get(\"exercise_id\") in pl_exercise_ids]\n+            user_vid_logs = [vid_log for vid_log in user_vid_logs if vid_log.get(\"video_id\") in pl_video_ids]\n+\n+        return (user_vid_logs, user_ex_logs)\n+\n+    @classmethod \n+    def get_quiz_log(cls, user, playlist_entries, playlist_id):\n+        exists = True if [entry for entry in playlist_entries if entry[\"entity_kind\"] == \"Quiz\"] else False\n+        try:\n+            quiz = QuizLog.objects.get(user=user, quiz=playlist_id)\n+        except ObjectDoesNotExist:\n+            quiz = None\n+\n+        score = 0 if not quiz else int(float(quiz.total_correct) / float(quiz.total_number) * 100)","path":"kalite/coachreports/models.py","position":50,"original_position":50,"commit_id":"344adc5c1d07928ace804594a8e2bbceea6eb8f0","original_commit_id":"344adc5c1d07928ace804594a8e2bbceea6eb8f0","user":{"login":"dylanjbarth","id":1319950,"avatar_url":"https://avatars.githubusercontent.com/u/1319950?v=2","gravatar_id":"bf7e02d643066ba8afdf2b0ee0fc07cd","url":"https://api.github.com/users/dylanjbarth","html_url":"https://github.com/dylanjbarth","followers_url":"https://api.github.com/users/dylanjbarth/followers","following_url":"https://api.github.com/users/dylanjbarth/following{/other_user}","gists_url":"https://api.github.com/users/dylanjbarth/gists{/gist_id}","starred_url":"https://api.github.com/users/dylanjbarth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dylanjbarth/subscriptions","organizations_url":"https://api.github.com/users/dylanjbarth/orgs","repos_url":"https://api.github.com/users/dylanjbarth/repos","events_url":"https://api.github.com/users/dylanjbarth/events{/privacy}","received_events_url":"https://api.github.com/users/dylanjbarth/received_events","type":"User","site_admin":false},"body":"Updated to:\r\n\r\n```python\r\nif quiz:\r\n    score = int(float(quiz.response_log.replace(\"[\", \"\").replace(\"]\", \"\").split(\",\")[quiz.attempts-1]) / float(quiz.total_number) * 100)\r\nelse:\r\n    score = 0\r\n```\r\n\r\ngood catch. one q: this is pretty lengthy due to the way we store response_logs -- if we expect they are going to be a list, could we just store them as a comma delimited string to make them easier to manipulate on the way out? ","created_at":"2014-08-27T22:50:04Z","updated_at":"2014-08-27T22:50:04Z","html_url":"https://github.com/learningequality/ka-lite/pull/2325#discussion_r16810398","pull_request_url":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325","_links":{"self":{"href":"https://api.github.com/repos/learningequality/ka-lite/pulls/comments/16810398"},"html":{"href":"https://github.com/learningequality/ka-lite/pull/2325#discussion_r16810398"},"pull_request":{"href":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325"}}},"pull_request":{"url":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325","id":20019645,"html_url":"https://github.com/learningequality/ka-lite/pull/2325","diff_url":"https://github.com/learningequality/ka-lite/pull/2325.diff","patch_url":"https://github.com/learningequality/ka-lite/pull/2325.patch","issue_url":"https://api.github.com/repos/learningequality/ka-lite/issues/2325","number":2325,"state":"open","locked":false,"title":"Student progress reports for playlists","user":{"login":"dylanjbarth","id":1319950,"avatar_url":"https://avatars.githubusercontent.com/u/1319950?v=2","gravatar_id":"bf7e02d643066ba8afdf2b0ee0fc07cd","url":"https://api.github.com/users/dylanjbarth","html_url":"https://github.com/dylanjbarth","followers_url":"https://api.github.com/users/dylanjbarth/followers","following_url":"https://api.github.com/users/dylanjbarth/following{/other_user}","gists_url":"https://api.github.com/users/dylanjbarth/gists{/gist_id}","starred_url":"https://api.github.com/users/dylanjbarth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dylanjbarth/subscriptions","organizations_url":"https://api.github.com/users/dylanjbarth/orgs","repos_url":"https://api.github.com/users/dylanjbarth/repos","events_url":"https://api.github.com/users/dylanjbarth/events{/privacy}","received_events_url":"https://api.github.com/users/dylanjbarth/received_events","type":"User","site_admin":false},"body":"Not quite ready to merge, but putting it up here to get some feedback, mostly on the UI but if @aronasorman or @rtibbles have a second to look at the mess I've created with tastypie, that would be helpful too :+1: @jamalex is always welcome anywhere in my code as well, of course :smile: \r\n\r\nUI screenshots:\r\n![selection_055](https://cloud.githubusercontent.com/assets/1319950/3975324/795b8916-2805-11e4-8372-06093877a62c.png)\r\n![tooltip_058](https://cloud.githubusercontent.com/assets/1319950/3975325/7e964c7c-2805-11e4-8cec-f9c2d1390cc8.png)\r\n\r\n\r\n\r\nRemaining issues:\r\n\r\n1. API authorization -- only admins with permission and the student themselves should be able to view their report\r\n2. Gnarly messy code in the coachreport model and api resources. See if some of it can be abstracted to be more general\r\n3. Need to write tests \r\n\r\nNote to self, things to test:\r\n\r\n1. Generate more test data and look for weirdness. \r\n2. Test that you can view these reports from the coach view (e.g. not from account management page) \r\n3. How does it look on tablet sized screens? How about mobile?\r\n\r\nUX issues (fix them):\r\n\r\n1. No way to click through to the playlist, individual exercise, or video yet\r\n2. Are the colors meaningful enough? Should I add in descriptions of what the progress bar and the scores mean? (probably, especially b/c we have the Handlebars helper to grab the strings) \r\n3. Flip the caret upside down when expanding out the details \r\n","created_at":"2014-08-20T01:01:47Z","updated_at":"2014-08-27T22:50:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e28ee1aaaa5e7a2dde0835427fa8e3a67071d4d8","assignee":{"login":"rtibbles","id":1680573,"avatar_url":"https://avatars.githubusercontent.com/u/1680573?v=2","gravatar_id":"1a2f3374de870804f021ee28a23f373d","url":"https://api.github.com/users/rtibbles","html_url":"https://github.com/rtibbles","followers_url":"https://api.github.com/users/rtibbles/followers","following_url":"https://api.github.com/users/rtibbles/following{/other_user}","gists_url":"https://api.github.com/users/rtibbles/gists{/gist_id}","starred_url":"https://api.github.com/users/rtibbles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtibbles/subscriptions","organizations_url":"https://api.github.com/users/rtibbles/orgs","repos_url":"https://api.github.com/users/rtibbles/repos","events_url":"https://api.github.com/users/rtibbles/events{/privacy}","received_events_url":"https://api.github.com/users/rtibbles/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/learningequality/ka-lite/milestones/32","labels_url":"https://api.github.com/repos/learningequality/ka-lite/milestones/32/labels","id":584569,"number":32,"title":"Nalanda RCT 3","description":"AB testing framework.","creator":{"login":"bcipolli","id":4072455,"avatar_url":"https://avatars.githubusercontent.com/u/4072455?v=2","gravatar_id":"d87e7f8d7e3ad7016a07bf861d767ebd","url":"https://api.github.com/users/bcipolli","html_url":"https://github.com/bcipolli","followers_url":"https://api.github.com/users/bcipolli/followers","following_url":"https://api.github.com/users/bcipolli/following{/other_user}","gists_url":"https://api.github.com/users/bcipolli/gists{/gist_id}","starred_url":"https://api.github.com/users/bcipolli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bcipolli/subscriptions","organizations_url":"https://api.github.com/users/bcipolli/orgs","repos_url":"https://api.github.com/users/bcipolli/repos","events_url":"https://api.github.com/users/bcipolli/events{/privacy}","received_events_url":"https://api.github.com/users/bcipolli/received_events","type":"User","site_admin":false},"open_issues":25,"closed_issues":47,"state":"open","created_at":"2014-03-01T22:37:55Z","updated_at":"2014-08-24T11:39:46Z","due_on":"2014-08-08T07:00:00Z"},"commits_url":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325/commits","review_comments_url":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325/comments","review_comment_url":"https://api.github.com/repos/learningequality/ka-lite/pulls/comments/{number}","comments_url":"https://api.github.com/repos/learningequality/ka-lite/issues/2325/comments","statuses_url":"https://api.github.com/repos/learningequality/ka-lite/statuses/344adc5c1d07928ace804594a8e2bbceea6eb8f0","head":{"label":"dylanjbarth:quiz-in-student-report","ref":"quiz-in-student-report","sha":"344adc5c1d07928ace804594a8e2bbceea6eb8f0","user":{"login":"dylanjbarth","id":1319950,"avatar_url":"https://avatars.githubusercontent.com/u/1319950?v=2","gravatar_id":"bf7e02d643066ba8afdf2b0ee0fc07cd","url":"https://api.github.com/users/dylanjbarth","html_url":"https://github.com/dylanjbarth","followers_url":"https://api.github.com/users/dylanjbarth/followers","following_url":"https://api.github.com/users/dylanjbarth/following{/other_user}","gists_url":"https://api.github.com/users/dylanjbarth/gists{/gist_id}","starred_url":"https://api.github.com/users/dylanjbarth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dylanjbarth/subscriptions","organizations_url":"https://api.github.com/users/dylanjbarth/orgs","repos_url":"https://api.github.com/users/dylanjbarth/repos","events_url":"https://api.github.com/users/dylanjbarth/events{/privacy}","received_events_url":"https://api.github.com/users/dylanjbarth/received_events","type":"User","site_admin":false},"repo":{"id":10610390,"name":"ka-lite","full_name":"dylanjbarth/ka-lite","owner":{"login":"dylanjbarth","id":1319950,"avatar_url":"https://avatars.githubusercontent.com/u/1319950?v=2","gravatar_id":"bf7e02d643066ba8afdf2b0ee0fc07cd","url":"https://api.github.com/users/dylanjbarth","html_url":"https://github.com/dylanjbarth","followers_url":"https://api.github.com/users/dylanjbarth/followers","following_url":"https://api.github.com/users/dylanjbarth/following{/other_user}","gists_url":"https://api.github.com/users/dylanjbarth/gists{/gist_id}","starred_url":"https://api.github.com/users/dylanjbarth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dylanjbarth/subscriptions","organizations_url":"https://api.github.com/users/dylanjbarth/orgs","repos_url":"https://api.github.com/users/dylanjbarth/repos","events_url":"https://api.github.com/users/dylanjbarth/events{/privacy}","received_events_url":"https://api.github.com/users/dylanjbarth/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dylanjbarth/ka-lite","description":"Khan Academy Lite: lightweight web server for serving core Khan Academy content (videos and exercises) without needing internet connectivity","fork":true,"url":"https://api.github.com/repos/dylanjbarth/ka-lite","forks_url":"https://api.github.com/repos/dylanjbarth/ka-lite/forks","keys_url":"https://api.github.com/repos/dylanjbarth/ka-lite/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dylanjbarth/ka-lite/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dylanjbarth/ka-lite/teams","hooks_url":"https://api.github.com/repos/dylanjbarth/ka-lite/hooks","issue_events_url":"https://api.github.com/repos/dylanjbarth/ka-lite/issues/events{/number}","events_url":"https://api.github.com/repos/dylanjbarth/ka-lite/events","assignees_url":"https://api.github.com/repos/dylanjbarth/ka-lite/assignees{/user}","branches_url":"https://api.github.com/repos/dylanjbarth/ka-lite/branches{/branch}","tags_url":"https://api.github.com/repos/dylanjbarth/ka-lite/tags","blobs_url":"https://api.github.com/repos/dylanjbarth/ka-lite/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dylanjbarth/ka-lite/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dylanjbarth/ka-lite/git/refs{/sha}","trees_url":"https://api.github.com/repos/dylanjbarth/ka-lite/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dylanjbarth/ka-lite/statuses/{sha}","languages_url":"https://api.github.com/repos/dylanjbarth/ka-lite/languages","stargazers_url":"https://api.github.com/repos/dylanjbarth/ka-lite/stargazers","contributors_url":"https://api.github.com/repos/dylanjbarth/ka-lite/contributors","subscribers_url":"https://api.github.com/repos/dylanjbarth/ka-lite/subscribers","subscription_url":"https://api.github.com/repos/dylanjbarth/ka-lite/subscription","commits_url":"https://api.github.com/repos/dylanjbarth/ka-lite/commits{/sha}","git_commits_url":"https://api.github.com/repos/dylanjbarth/ka-lite/git/commits{/sha}","comments_url":"https://api.github.com/repos/dylanjbarth/ka-lite/comments{/number}","issue_comment_url":"https://api.github.com/repos/dylanjbarth/ka-lite/issues/comments/{number}","contents_url":"https://api.github.com/repos/dylanjbarth/ka-lite/contents/{+path}","compare_url":"https://api.github.com/repos/dylanjbarth/ka-lite/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dylanjbarth/ka-lite/merges","archive_url":"https://api.github.com/repos/dylanjbarth/ka-lite/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dylanjbarth/ka-lite/downloads","issues_url":"https://api.github.com/repos/dylanjbarth/ka-lite/issues{/number}","pulls_url":"https://api.github.com/repos/dylanjbarth/ka-lite/pulls{/number}","milestones_url":"https://api.github.com/repos/dylanjbarth/ka-lite/milestones{/number}","notifications_url":"https://api.github.com/repos/dylanjbarth/ka-lite/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dylanjbarth/ka-lite/labels{/name}","releases_url":"https://api.github.com/repos/dylanjbarth/ka-lite/releases{/id}","created_at":"2013-06-10T21:57:02Z","updated_at":"2014-06-24T23:02:39Z","pushed_at":"2014-08-21T23:00:58Z","git_url":"git://github.com/dylanjbarth/ka-lite.git","ssh_url":"git@github.com:dylanjbarth/ka-lite.git","clone_url":"https://github.com/dylanjbarth/ka-lite.git","svn_url":"https://github.com/dylanjbarth/ka-lite","homepage":"http://kalite.adhocsync.com/","size":82500,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"learningequality:nalanda-rct3","ref":"nalanda-rct3","sha":"114ee7d5f07eab6c8e45bc8decd2ef3574a8db42","user":{"login":"learningequality","id":3926525,"avatar_url":"https://avatars.githubusercontent.com/u/3926525?v=2","gravatar_id":"56ac3f6863c7474d8148e19a35a4e28f","url":"https://api.github.com/users/learningequality","html_url":"https://github.com/learningequality","followers_url":"https://api.github.com/users/learningequality/followers","following_url":"https://api.github.com/users/learningequality/following{/other_user}","gists_url":"https://api.github.com/users/learningequality/gists{/gist_id}","starred_url":"https://api.github.com/users/learningequality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/learningequality/subscriptions","organizations_url":"https://api.github.com/users/learningequality/orgs","repos_url":"https://api.github.com/users/learningequality/repos","events_url":"https://api.github.com/users/learningequality/events{/privacy}","received_events_url":"https://api.github.com/users/learningequality/received_events","type":"Organization","site_admin":false},"repo":{"id":5741125,"name":"ka-lite","full_name":"learningequality/ka-lite","owner":{"login":"learningequality","id":3926525,"avatar_url":"https://avatars.githubusercontent.com/u/3926525?v=2","gravatar_id":"56ac3f6863c7474d8148e19a35a4e28f","url":"https://api.github.com/users/learningequality","html_url":"https://github.com/learningequality","followers_url":"https://api.github.com/users/learningequality/followers","following_url":"https://api.github.com/users/learningequality/following{/other_user}","gists_url":"https://api.github.com/users/learningequality/gists{/gist_id}","starred_url":"https://api.github.com/users/learningequality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/learningequality/subscriptions","organizations_url":"https://api.github.com/users/learningequality/orgs","repos_url":"https://api.github.com/users/learningequality/repos","events_url":"https://api.github.com/users/learningequality/events{/privacy}","received_events_url":"https://api.github.com/users/learningequality/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/learningequality/ka-lite","description":"KA Lite: lightweight web server for serving core Khan Academy content (videos and exercises) without needing internet connectivity","fork":false,"url":"https://api.github.com/repos/learningequality/ka-lite","forks_url":"https://api.github.com/repos/learningequality/ka-lite/forks","keys_url":"https://api.github.com/repos/learningequality/ka-lite/keys{/key_id}","collaborators_url":"https://api.github.com/repos/learningequality/ka-lite/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/learningequality/ka-lite/teams","hooks_url":"https://api.github.com/repos/learningequality/ka-lite/hooks","issue_events_url":"https://api.github.com/repos/learningequality/ka-lite/issues/events{/number}","events_url":"https://api.github.com/repos/learningequality/ka-lite/events","assignees_url":"https://api.github.com/repos/learningequality/ka-lite/assignees{/user}","branches_url":"https://api.github.com/repos/learningequality/ka-lite/branches{/branch}","tags_url":"https://api.github.com/repos/learningequality/ka-lite/tags","blobs_url":"https://api.github.com/repos/learningequality/ka-lite/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/learningequality/ka-lite/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/learningequality/ka-lite/git/refs{/sha}","trees_url":"https://api.github.com/repos/learningequality/ka-lite/git/trees{/sha}","statuses_url":"https://api.github.com/repos/learningequality/ka-lite/statuses/{sha}","languages_url":"https://api.github.com/repos/learningequality/ka-lite/languages","stargazers_url":"https://api.github.com/repos/learningequality/ka-lite/stargazers","contributors_url":"https://api.github.com/repos/learningequality/ka-lite/contributors","subscribers_url":"https://api.github.com/repos/learningequality/ka-lite/subscribers","subscription_url":"https://api.github.com/repos/learningequality/ka-lite/subscription","commits_url":"https://api.github.com/repos/learningequality/ka-lite/commits{/sha}","git_commits_url":"https://api.github.com/repos/learningequality/ka-lite/git/commits{/sha}","comments_url":"https://api.github.com/repos/learningequality/ka-lite/comments{/number}","issue_comment_url":"https://api.github.com/repos/learningequality/ka-lite/issues/comments/{number}","contents_url":"https://api.github.com/repos/learningequality/ka-lite/contents/{+path}","compare_url":"https://api.github.com/repos/learningequality/ka-lite/compare/{base}...{head}","merges_url":"https://api.github.com/repos/learningequality/ka-lite/merges","archive_url":"https://api.github.com/repos/learningequality/ka-lite/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/learningequality/ka-lite/downloads","issues_url":"https://api.github.com/repos/learningequality/ka-lite/issues{/number}","pulls_url":"https://api.github.com/repos/learningequality/ka-lite/pulls{/number}","milestones_url":"https://api.github.com/repos/learningequality/ka-lite/milestones{/number}","notifications_url":"https://api.github.com/repos/learningequality/ka-lite/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/learningequality/ka-lite/labels{/name}","releases_url":"https://api.github.com/repos/learningequality/ka-lite/releases{/id}","created_at":"2012-09-09T20:01:40Z","updated_at":"2014-08-11T20:37:16Z","pushed_at":"2014-08-27T20:33:31Z","git_url":"git://github.com/learningequality/ka-lite.git","ssh_url":"git@github.com:learningequality/ka-lite.git","clone_url":"https://github.com/learningequality/ka-lite.git","svn_url":"https://github.com/learningequality/ka-lite","homepage":"https://learningequality.org/ka-lite/","size":163427,"stargazers_count":123,"watchers_count":123,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":159,"mirror_url":null,"open_issues_count":298,"forks":159,"open_issues":298,"watchers":123,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325"},"html":{"href":"https://github.com/learningequality/ka-lite/pull/2325"},"issue":{"href":"https://api.github.com/repos/learningequality/ka-lite/issues/2325"},"comments":{"href":"https://api.github.com/repos/learningequality/ka-lite/issues/2325/comments"},"review_comments":{"href":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325/comments"},"review_comment":{"href":"https://api.github.com/repos/learningequality/ka-lite/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/learningequality/ka-lite/pulls/2325/commits"},"statuses":{"href":"https://api.github.com/repos/learningequality/ka-lite/statuses/344adc5c1d07928ace804594a8e2bbceea6eb8f0"}}}}