{"action":"created","comment":{"url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/comments/105959821","pull_request_review_id":26857976,"id":105959821,"diff_hunk":"@@ -0,0 +1,280 @@\n+import itertools\n+import random\n+\n+from app import person, room\n+from app.models import Model\n+\n+MAX_OFFICE_CAP = 6\n+MAX_LIVING_SPACE_CAP = 4\n+\n+\n+class Dojo:\n+    \"\"\"This class contains methods for adding persons, creating new rooms, and for returning\n+       all rooms or all persons in storage\n+    \"\"\"\n+\n+    def __init__(self):\n+        \"\"\"Instantiates the Model class to allow for storage\"\"\"\n+        self.model = Model()\n+\n+    @staticmethod\n+    def allocate_office_space(person_name, person_type):\n+        \"\"\" This methods randomly allocates an office to a fellow or staff.\n+\n+            Returns True if successful and False if not\n+        \"\"\"\n+\n+        successful = True\n+        random.seed()\n+\n+        # return the list of available offices\n+        all_offices = Model.get_list(\"offices\")\n+        # return a list of offices with capacity to spare\n+        non_full_offices = [office\n+                            for office in all_offices\n+                            if office.current_capacity < MAX_OFFICE_CAP]\n+        if not non_full_offices:\n+            raise ValueError(\"There are no offices to allocate\")\n+\n+        if person_type == \"fellow\":\n+            random_office = random.choice(non_full_offices)\n+            fellow = Model.get_fellow(person_name)\n+            random_office.current_capacity += 1\n+            fellow.current_office = random_office.name\n+            return successful\n+\n+        elif person_type == \"staff\":\n+            random_office = random.choice(non_full_offices)\n+            staff = Model.get_staff(person_name)\n+            random_office.current_capacity += 1\n+            staff.current_office = random_office.name\n+            return successful\n+\n+        else:\n+            return not successful\n+\n+    @staticmethod\n+    def allocate_living_space(fellow_name):\n+        \"\"\" This methods randomly allocates a living space to a fellow or staff.\n+\n+            Returns True if successful and False if not\n+        \"\"\"\n+\n+        successful = True\n+        random.seed()\n+\n+        # return a list of available living spaces\n+        all_living_spaces = Model.get_list(\"living_spaces\")\n+        # return a list of living spaces with capacity to spare\n+        non_full_living_spaces = [living_space\n+                                  for living_space in all_living_spaces\n+                                  if living_space.current_capacity < MAX_LIVING_SPACE_CAP]\n+\n+        if not non_full_living_spaces:\n+            raise ValueError(\"There are no living spaces to allocate\")\n+        random_living_space = random.choice(non_full_living_spaces)\n+        fellow = Model.get_fellow(fellow_name)\n+        random_living_space.current_capacity += 1\n+        fellow.current_living_space = random_living_space.name\n+\n+        return successful\n+\n+    def create_new_office(self, name):\n+        \"\"\" Creates a new office \"\"\"\n+\n+        successful = True\n+        new_office = room.Office(name)\n+\n+        # get the existing offices\n+        offices = Model.get_list(\"offices\")\n+        living_spaces = Model.get_list(\"living_spaces\")\n+        # check whether the office already exists, if it does raise an exception\n+        similar_office = [office for office in offices if office.name == name]\n+        similar_living_space = [ls for ls in living_spaces if ls.name == name]\n+        if similar_office or similar_living_space:\n+            raise ValueError(\"An office or living space '{}' already exists\".format(name))\n+        self.model.update(new_office, \"offices\")\n+        return successful\n+\n+    def create_new_living_space(self, name):\n+        \"\"\" Creates a new living space \"\"\"\n+\n+        successful = True\n+        new_living_space = room.LivingSpace(name)\n+        living_spaces = Model.get_list(\"living_spaces\")\n+        offices = Model.get_list(\"offices\")\n+        # check whether the living space already exists, if it does raise an exception\n+        similar_living_space = [ls for ls in living_spaces if ls.name == name]\n+        similar_office = [office for office in offices if office.name == name]\n+        if similar_living_space or similar_office:\n+            raise ValueError(\"An office or living space '{}' already exists\".format(name))\n+        # create new living space\n+        self.model.update(new_living_space, \"living_spaces\")\n+        return successful\n+\n+    def add_fellow(self, name, wants_accommodation=False):\n+        \"\"\" Adds a new fellow \"\"\"\n+\n+        new_fellow = person.Fellow(name)\n+        self.model.update(new_fellow, \"fellows\")\n+        print(\"Fellow {} has been successfully added\".format(new_fellow.name))\n+        try:\n+            self.allocate_office_space(new_fellow.name, person_type=\"fellow\")\n+            print(\"{} has been allocated the office {}\"\n+                  .format(new_fellow.name, new_fellow.current_office))\n+        except ValueError as e:\n+            print(e)\n+\n+        if wants_accommodation:\n+            try:\n+                self.allocate_living_space(new_fellow.name)\n+                print(\"{} has been allocated the living space {}\"\n+                      .format(new_fellow.name, new_fellow.current_living_space))\n+            except ValueError as e:\n+                print(e)\n+\n+    def add_staff(self, name):\n+        \"\"\" Adds a new member of staff \"\"\"\n+\n+        new_staff = person.Staff(name)\n+        self.model.update(new_staff, \"staff\")\n+        print(\"Staff {} has been successfully added\".format(new_staff.name))\n+        try:\n+            self.allocate_office_space(new_staff.name, person_type=\"staff\")\n+            print(\"{} has been allocated the office {}\"\n+                  .format(new_staff.name, new_staff.current_office))\n+        except ValueError as e:\n+            print(e)\n+\n+    def get_persons_by_room(self, room):\n+        \"\"\"Returns a list of the people in the given room\"\"\"\n+        rooms = self.model.get_list(\"offices\") + self.model.get_list(\"living_spaces\")\n+        if room not in [room.name for room in rooms]:\n+            raise ValueError(\"The requested room does not exist\")\n+        fellows = self.model.get_list(\"fellows\")\n+        staff = self.model.get_list(\"staff\")\n+        persons = staff + fellows\n+        persons_in_room = []\n+        for person in persons:\n+            if person.current_office == room or person.current_living_space == room:\n+                persons_in_room.append(person.name)\n+        return persons_in_room\n+\n+    def print_persons_by_room(self, room_name):\n+        \"\"\"Prints the people in the given room to screen\"\"\"\n+        try:\n+            persons_in_given_room = self.get_persons_by_room(room_name)\n+            is_office = self.model.get_office(room_name)\n+            is_living_space = self.model.get_living_space(room_name)\n+            if is_office:\n+                return \"(OFFICE) {}:\\n\".format(room_name.upper()) + \",\".join(persons_in_given_room)\n+            elif is_living_space:\n+                return \"(LIVING SPACE) {}:\\n\".format(room_name.upper()) + \",\".join(persons_in_given_room)\n+        except ValueError as e:\n+            print(e)\n+\n+    def print_allocations(self, filename=None):\n+        \"\"\"Prints all the room allocations to the screen or to a txt file\"\"\"\n+        staff = self.model.get_list(\"staff\")\n+        fellows = self.model.get_list(\"fellows\")\n+\n+        rooms = {}\n+\n+        for fellow in fellows:\n+            if (\"L_SPACE\", fellow.current_living_space) not in rooms:\n+                rooms[(\"L_SPACE\", fellow.current_living_space)] = [fellow.name]\n+            else:\n+                rooms[(\"L_SPACE\", fellow.current_living_space)] += [fellow.name]\n+\n+        for person in itertools.chain(staff, fellows):\n+            if (\"OFFICE\", person.current_office) not in rooms:\n+                rooms[(\"OFFICE\", person.current_office)] = [person.name]\n+            else:\n+                rooms[(\"OFFICE\", person.current_office)] += [person.name]\n+\n+        if not rooms:\n+            raise ValueError(\"No allocations have been made\".upper())\n+\n+        if filename:\n+            with open(filename + \".txt\", \"w\") as file:\n+                for room, occupants in rooms.items():\n+                    if room[1]:\n+                        file_output = \"{}: {}\\n\".format(room[0], room[1].upper()) + \\\n+                                      \"----------------------------\\n\" + \\\n+                                      \"{}\\n\\n\".format(\", \".join(map(str.upper, occupants)))\n+                        file.write(file_output)\n+            print(\"The allocations have been successfully printed to the file {}.txt\".format(filename))\n+\n+        else:\n+            output = \"\"\n+\n+            for room, occupants in rooms.items():\n+                if room[1]:\n+                    output += \"({}) {}:\\n\".format(room[0], room[1].upper()) + \\\n+                              \"-----------------------------\\n\" + \\\n+                              \"{}\\n\\n\".format(\",\".join(map(str.upper, occupants)))\n+\n+            return output\n+\n+    def get_unallocated_persons(self):\n+        \"\"\"Returns a dictionary with the unallocated persons\"\"\"\n+\n+        staff = self.model.get_list(\"staff\")\n+        fellows = self.model.get_list(\"fellows\")\n+        # staff without an office\n+        unallocated_staff = [staff_member.name for staff_member in staff if staff_member.current_office is None]\n+        # fellows without an office\n+        unallocated_fellows_office = [fellow.name for fellow in fellows if fellow.current_office is None]\n+        # fellows without a living space\n+        unallocated_fellows_living_space = [fellow.name for fellow in fellows if fellow.current_living_space is None]\n+\n+        if not unallocated_staff:\n+            unallocated_staff = [\"No unallocated staff\"]\n+        if not unallocated_fellows_office:\n+            unallocated_fellows_office = [\"No unallocated fellows\"]\n+        if not unallocated_fellows_living_space:\n+            unallocated_fellows_living_space = [\"No unallocated fellows\"]\n+        return {\"staff\": unallocated_staff,\n+                \"fellows_office\": unallocated_fellows_office,\n+                \"fellows_living\": unallocated_fellows_living_space}\n+\n+    def print_unallocated(self, filename=None):\n+        \"\"\"Prints all the unallocated persons to screen or to a txt file\"\"\"\n+        unallocated = self.get_unallocated_persons()\n+\n+        output = \"STAFF WITHOUT AN OFFICE:\\n\" \\\n+                 \"----------------------------\\n\" + \\\n+                 \"{}\\n\\n\".format(\", \".join(map(str.upper,unallocated[\"staff\"]))) + \\\n+                 \"FELLOWS WITHOUT AN OFFICE:\\n\" \\\n+                 \"-----------------------------\\n\" + \\","path":"app/dojo.py","position":249,"original_position":249,"commit_id":"2b38d6323c83c6fe4567e7af1ce55a9eaff7342e","original_commit_id":"2b38d6323c83c6fe4567e7af1ce55a9eaff7342e","user":{"login":"jimmykimani","id":25106761,"avatar_url":"https://avatars0.githubusercontent.com/u/25106761?v=3","gravatar_id":"","url":"https://api.github.com/users/jimmykimani","html_url":"https://github.com/jimmykimani","followers_url":"https://api.github.com/users/jimmykimani/followers","following_url":"https://api.github.com/users/jimmykimani/following{/other_user}","gists_url":"https://api.github.com/users/jimmykimani/gists{/gist_id}","starred_url":"https://api.github.com/users/jimmykimani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jimmykimani/subscriptions","organizations_url":"https://api.github.com/users/jimmykimani/orgs","repos_url":"https://api.github.com/users/jimmykimani/repos","events_url":"https://api.github.com/users/jimmykimani/events{/privacy}","received_events_url":"https://api.github.com/users/jimmykimani/received_events","type":"User","site_admin":false},"body":"You can make use of the `Quick tip` here","created_at":"2017-03-14T16:34:28Z","updated_at":"2017-03-14T16:34:40Z","html_url":"https://github.com/jomomg/office-space-allocation/pull/2#discussion_r105959821","pull_request_url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2","_links":{"self":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/comments/105959821"},"html":{"href":"https://github.com/jomomg/office-space-allocation/pull/2#discussion_r105959821"},"pull_request":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2","id":108805721,"html_url":"https://github.com/jomomg/office-space-allocation/pull/2","diff_url":"https://github.com/jomomg/office-space-allocation/pull/2.diff","patch_url":"https://github.com/jomomg/office-space-allocation/pull/2.patch","issue_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues/2","number":2,"state":"open","locked":false,"title":"code review","user":{"login":"jomomg","id":25581395,"avatar_url":"https://avatars1.githubusercontent.com/u/25581395?v=3","gravatar_id":"","url":"https://api.github.com/users/jomomg","html_url":"https://github.com/jomomg","followers_url":"https://api.github.com/users/jomomg/followers","following_url":"https://api.github.com/users/jomomg/following{/other_user}","gists_url":"https://api.github.com/users/jomomg/gists{/gist_id}","starred_url":"https://api.github.com/users/jomomg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jomomg/subscriptions","organizations_url":"https://api.github.com/users/jomomg/orgs","repos_url":"https://api.github.com/users/jomomg/repos","events_url":"https://api.github.com/users/jomomg/events{/privacy}","received_events_url":"https://api.github.com/users/jomomg/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-03-02T17:05:46Z","updated_at":"2017-03-14T16:34:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"56c47fa4f97e52725a8d193a1bf89d2bd0a92f11","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2/commits","review_comments_url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2/comments","review_comment_url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/comments{/number}","comments_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues/2/comments","statuses_url":"https://api.github.com/repos/jomomg/office-space-allocation/statuses/2b38d6323c83c6fe4567e7af1ce55a9eaff7342e","head":{"label":"jomomg:topic-review","ref":"topic-review","sha":"2b38d6323c83c6fe4567e7af1ce55a9eaff7342e","user":{"login":"jomomg","id":25581395,"avatar_url":"https://avatars1.githubusercontent.com/u/25581395?v=3","gravatar_id":"","url":"https://api.github.com/users/jomomg","html_url":"https://github.com/jomomg","followers_url":"https://api.github.com/users/jomomg/followers","following_url":"https://api.github.com/users/jomomg/following{/other_user}","gists_url":"https://api.github.com/users/jomomg/gists{/gist_id}","starred_url":"https://api.github.com/users/jomomg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jomomg/subscriptions","organizations_url":"https://api.github.com/users/jomomg/orgs","repos_url":"https://api.github.com/users/jomomg/repos","events_url":"https://api.github.com/users/jomomg/events{/privacy}","received_events_url":"https://api.github.com/users/jomomg/received_events","type":"User","site_admin":false},"repo":{"id":83425861,"name":"office-space-allocation","full_name":"jomomg/office-space-allocation","owner":{"login":"jomomg","id":25581395,"avatar_url":"https://avatars1.githubusercontent.com/u/25581395?v=3","gravatar_id":"","url":"https://api.github.com/users/jomomg","html_url":"https://github.com/jomomg","followers_url":"https://api.github.com/users/jomomg/followers","following_url":"https://api.github.com/users/jomomg/following{/other_user}","gists_url":"https://api.github.com/users/jomomg/gists{/gist_id}","starred_url":"https://api.github.com/users/jomomg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jomomg/subscriptions","organizations_url":"https://api.github.com/users/jomomg/orgs","repos_url":"https://api.github.com/users/jomomg/repos","events_url":"https://api.github.com/users/jomomg/events{/privacy}","received_events_url":"https://api.github.com/users/jomomg/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jomomg/office-space-allocation","description":null,"fork":false,"url":"https://api.github.com/repos/jomomg/office-space-allocation","forks_url":"https://api.github.com/repos/jomomg/office-space-allocation/forks","keys_url":"https://api.github.com/repos/jomomg/office-space-allocation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jomomg/office-space-allocation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jomomg/office-space-allocation/teams","hooks_url":"https://api.github.com/repos/jomomg/office-space-allocation/hooks","issue_events_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues/events{/number}","events_url":"https://api.github.com/repos/jomomg/office-space-allocation/events","assignees_url":"https://api.github.com/repos/jomomg/office-space-allocation/assignees{/user}","branches_url":"https://api.github.com/repos/jomomg/office-space-allocation/branches{/branch}","tags_url":"https://api.github.com/repos/jomomg/office-space-allocation/tags","blobs_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/refs{/sha}","trees_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jomomg/office-space-allocation/statuses/{sha}","languages_url":"https://api.github.com/repos/jomomg/office-space-allocation/languages","stargazers_url":"https://api.github.com/repos/jomomg/office-space-allocation/stargazers","contributors_url":"https://api.github.com/repos/jomomg/office-space-allocation/contributors","subscribers_url":"https://api.github.com/repos/jomomg/office-space-allocation/subscribers","subscription_url":"https://api.github.com/repos/jomomg/office-space-allocation/subscription","commits_url":"https://api.github.com/repos/jomomg/office-space-allocation/commits{/sha}","git_commits_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/commits{/sha}","comments_url":"https://api.github.com/repos/jomomg/office-space-allocation/comments{/number}","issue_comment_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues/comments{/number}","contents_url":"https://api.github.com/repos/jomomg/office-space-allocation/contents/{+path}","compare_url":"https://api.github.com/repos/jomomg/office-space-allocation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jomomg/office-space-allocation/merges","archive_url":"https://api.github.com/repos/jomomg/office-space-allocation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jomomg/office-space-allocation/downloads","issues_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues{/number}","pulls_url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls{/number}","milestones_url":"https://api.github.com/repos/jomomg/office-space-allocation/milestones{/number}","notifications_url":"https://api.github.com/repos/jomomg/office-space-allocation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jomomg/office-space-allocation/labels{/name}","releases_url":"https://api.github.com/repos/jomomg/office-space-allocation/releases{/id}","deployments_url":"https://api.github.com/repos/jomomg/office-space-allocation/deployments","created_at":"2017-02-28T11:42:42Z","updated_at":"2017-03-01T12:04:20Z","pushed_at":"2017-03-14T15:54:21Z","git_url":"git://github.com/jomomg/office-space-allocation.git","ssh_url":"git@github.com:jomomg/office-space-allocation.git","clone_url":"https://github.com/jomomg/office-space-allocation.git","svn_url":"https://github.com/jomomg/office-space-allocation","homepage":null,"size":45,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"jomomg:develop","ref":"develop","sha":"39f888be55e8662da4cb4c5915177a9b4ae58f15","user":{"login":"jomomg","id":25581395,"avatar_url":"https://avatars1.githubusercontent.com/u/25581395?v=3","gravatar_id":"","url":"https://api.github.com/users/jomomg","html_url":"https://github.com/jomomg","followers_url":"https://api.github.com/users/jomomg/followers","following_url":"https://api.github.com/users/jomomg/following{/other_user}","gists_url":"https://api.github.com/users/jomomg/gists{/gist_id}","starred_url":"https://api.github.com/users/jomomg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jomomg/subscriptions","organizations_url":"https://api.github.com/users/jomomg/orgs","repos_url":"https://api.github.com/users/jomomg/repos","events_url":"https://api.github.com/users/jomomg/events{/privacy}","received_events_url":"https://api.github.com/users/jomomg/received_events","type":"User","site_admin":false},"repo":{"id":83425861,"name":"office-space-allocation","full_name":"jomomg/office-space-allocation","owner":{"login":"jomomg","id":25581395,"avatar_url":"https://avatars1.githubusercontent.com/u/25581395?v=3","gravatar_id":"","url":"https://api.github.com/users/jomomg","html_url":"https://github.com/jomomg","followers_url":"https://api.github.com/users/jomomg/followers","following_url":"https://api.github.com/users/jomomg/following{/other_user}","gists_url":"https://api.github.com/users/jomomg/gists{/gist_id}","starred_url":"https://api.github.com/users/jomomg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jomomg/subscriptions","organizations_url":"https://api.github.com/users/jomomg/orgs","repos_url":"https://api.github.com/users/jomomg/repos","events_url":"https://api.github.com/users/jomomg/events{/privacy}","received_events_url":"https://api.github.com/users/jomomg/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jomomg/office-space-allocation","description":null,"fork":false,"url":"https://api.github.com/repos/jomomg/office-space-allocation","forks_url":"https://api.github.com/repos/jomomg/office-space-allocation/forks","keys_url":"https://api.github.com/repos/jomomg/office-space-allocation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jomomg/office-space-allocation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jomomg/office-space-allocation/teams","hooks_url":"https://api.github.com/repos/jomomg/office-space-allocation/hooks","issue_events_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues/events{/number}","events_url":"https://api.github.com/repos/jomomg/office-space-allocation/events","assignees_url":"https://api.github.com/repos/jomomg/office-space-allocation/assignees{/user}","branches_url":"https://api.github.com/repos/jomomg/office-space-allocation/branches{/branch}","tags_url":"https://api.github.com/repos/jomomg/office-space-allocation/tags","blobs_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/refs{/sha}","trees_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jomomg/office-space-allocation/statuses/{sha}","languages_url":"https://api.github.com/repos/jomomg/office-space-allocation/languages","stargazers_url":"https://api.github.com/repos/jomomg/office-space-allocation/stargazers","contributors_url":"https://api.github.com/repos/jomomg/office-space-allocation/contributors","subscribers_url":"https://api.github.com/repos/jomomg/office-space-allocation/subscribers","subscription_url":"https://api.github.com/repos/jomomg/office-space-allocation/subscription","commits_url":"https://api.github.com/repos/jomomg/office-space-allocation/commits{/sha}","git_commits_url":"https://api.github.com/repos/jomomg/office-space-allocation/git/commits{/sha}","comments_url":"https://api.github.com/repos/jomomg/office-space-allocation/comments{/number}","issue_comment_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues/comments{/number}","contents_url":"https://api.github.com/repos/jomomg/office-space-allocation/contents/{+path}","compare_url":"https://api.github.com/repos/jomomg/office-space-allocation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jomomg/office-space-allocation/merges","archive_url":"https://api.github.com/repos/jomomg/office-space-allocation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jomomg/office-space-allocation/downloads","issues_url":"https://api.github.com/repos/jomomg/office-space-allocation/issues{/number}","pulls_url":"https://api.github.com/repos/jomomg/office-space-allocation/pulls{/number}","milestones_url":"https://api.github.com/repos/jomomg/office-space-allocation/milestones{/number}","notifications_url":"https://api.github.com/repos/jomomg/office-space-allocation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jomomg/office-space-allocation/labels{/name}","releases_url":"https://api.github.com/repos/jomomg/office-space-allocation/releases{/id}","deployments_url":"https://api.github.com/repos/jomomg/office-space-allocation/deployments","created_at":"2017-02-28T11:42:42Z","updated_at":"2017-03-01T12:04:20Z","pushed_at":"2017-03-14T15:54:21Z","git_url":"git://github.com/jomomg/office-space-allocation.git","ssh_url":"git@github.com:jomomg/office-space-allocation.git","clone_url":"https://github.com/jomomg/office-space-allocation.git","svn_url":"https://github.com/jomomg/office-space-allocation","homepage":null,"size":45,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2"},"html":{"href":"https://github.com/jomomg/office-space-allocation/pull/2"},"issue":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/issues/2"},"comments":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/jomomg/office-space-allocation/statuses/2b38d6323c83c6fe4567e7af1ce55a9eaff7342e"}}}}
{"actor":{"display_login":"jimmykimani"}}