{"action":"created","comment":{"url":"https://api.github.com/repos/indico/indico/pulls/comments/49198600","id":49198600,"diff_hunk":"@@ -0,0 +1,359 @@\n+{% extends 'forms/base_widget.html' %}\n+\n+{% block html %}\n+    <div class=\"i-location-field\">\n+        <input type=\"hidden\" id=\"{{ field.id }}\" name=\"{{ field.name }}\"\n+               value=\"{{ field._value() | tojson | forceescape }}\">\n+        <div class=\"wrapper\">\n+            <div class=\"typeahead-container\">\n+                <div class=\"typeahead-field\">\n+                    <a class=\"i-button highlight icon-close close-backdrop-button\">\n+                        {%- trans %}Leave empty{% endtrans -%}\n+                    </a>\n+                    <input id=\"location-venue-{{ field.id }}\"\n+                           class=\"i-location-input-field\"\n+                           name=\"location-venue-{{ field.name }}\"\n+                           type=\"text\"\n+                           placeholder=\"{% trans %}Venue{% endtrans %}\"\n+                           autocomplete=\"off\"\n+                           tabindex=\"-1\">\n+                    <span class=\"highlighter\"></span>\n+                    <span class=\"toggle-results-list icon-arrow-down\"></span>\n+                    <div class=\"typeahead-results\">\n+                        <div class=\"results-list-container\" id=\"location-venue-{{ field.id }}-results\"></div>\n+                    </div>\n+                </div>\n+            </div>\n+            <div class=\"typeahead-container\">\n+                <div class=\"typeahead-field\">\n+                    <a class=\"i-button highlight icon-close close-backdrop-button\">\n+                        {%- trans %}Leave empty{% endtrans -%}\n+                    </a>\n+                    <input id=\"location-room-{{ field.id }}\"\n+                           class=\"i-location-input-field\"\n+                           name=\"location-room-{{ field.name }}\"\n+                           type=\"text\"\n+                           placeholder=\"{% trans %}Room{% endtrans %}\"\n+                           autocomplete=\"off\"\n+                           tabindex=\"-1\">\n+                    <span class=\"highlighter\"></span>\n+                    <span class=\"toggle-results-list icon-arrow-down\"></span>\n+                    <div class=\"typeahead-results\">\n+                        <div class=\"results-list-container\" id=\"location-room-{{ field.id }}-results\"></div>\n+                    </div>\n+                </div>\n+            </div>\n+            <input id=\"location-inheritance-{{ field.id }}\"\n+                   name=\"location-inheritance-{{ field.name }}\"\n+                   type=\"checkbox\">\n+            <label for=\"location-inheritance-{{ field.id }}\">{% trans %}Use default{% endtrans %}</label>\n+            <textarea id=\"location-address-{{ field.id }}\" name=\"location-address\"\n+                      placeholder=\"{% trans %}Address{% endtrans %}\"></textarea>\n+        </div>\n+    </div>\n+    <div class=\"clearfix\"></div>\n+{% endblock %}\n+\n+{% block javascript %}\n+    <script>\n+        (function() {\n+            'use strict';\n+\n+            var field = $('#{{ field.id }}');\n+            var description = field.closest('.form-field').find('.form-field-description');\n+            var venueInput = $('#location-venue-{{ field.id }}');\n+            var roomInput = $('#location-room-{{ field.id }}');\n+            var address = $('#location-address-{{ field.id }}');\n+            var usingDefault = $('#location-inheritance-{{ field.id }}');\n+            var venues = {{ venues | tojson }};\n+            var venueNames = {{ venue_names | tojson }};\n+            var rooms = {{ rooms | tojson }};\n+            var hiddenData = field.val() ? JSON.parse(field.val()) : {};\n+            var latestUsedField = '';\n+            var latestSelectedOption = {field: '', value: ''};\n+\n+            if (hiddenData.inheriting) {\n+                usingDefault.prop('checked', hiddenData.inheriting);\n+            }\n+            if (hiddenData.address) {\n+                address.val(hiddenData.address);\n+            }\n+            if (hiddenData.room_name) {\n+                roomInput.val(hiddenData.room_name);\n+            }\n+            if (hiddenData.venue_name) {\n+                venueInput.val(hiddenData.venue_name);\n+            }\n+\n+            function toggleDefaultLocation(isChecked) {\n+                var message = ('Using default location from: ' + {{ parent[1] | tojson }} +\n+                               ' (' + {{ parent[0] | tojson }} + ')');\n+                var text = isChecked ? message : 'Using custom location';\n+                description.html(text);\n+                venueInput.prop('disabled', isChecked).toggleClass('disabled', isChecked);\n+                roomInput.prop('disabled', isChecked).toggleClass('disabled', isChecked);\n+                address.prop('disabled', isChecked).toggleClass('disabled', isChecked);\n+\n+                hiddenData.inheriting = isChecked;\n+                field.val(JSON.stringify(hiddenData));\n+            };\n+\n+            function reorderCategories(item) {\n+                var groupOrder = [item.name];\n+                for (var i = venueNames.length - 1; i >= 0; i--) {\n+                    if (-groupOrder.indexOf(venueNames[i])) {\n+                        groupOrder.push(venueNames[i]);\n+                    }\n+                }\n+                Typeahead[roomInput.selector].options.groupOrder = groupOrder;\n+            }\n+\n+            function updateVenueOnRoomChange(item) {\n+                if (item.venue_id != hiddenData.venue_id) {\n+                    var data = {item_name: item.group, venue_id: item.venue_id, room_id: item.id};\n+                    venueInput.trigger('indico:click-on-option', data);\n+                }\n+            }\n+\n+            function updateResultsList(node, resultHtmlList) {\n+                var resultsWrapper = node.siblings('.typeahead-results');\n+                resultsWrapper.css('top', node.outerHeight() + 'px');\n+                var justUse = node.parent().find('.just-use-option');\n+                if (node.val().length > 0) {\n+                    if (justUse.length === 0) {\n+                        justUse = $('<div>').attr({\n+                                'class': 'just-use-option'\n+                            })\n+                            .on('click', function() {\n+                                node.trigger('indico:click-on-custom-option', {item_name: node.val()});\n+                            });\n+                        resultsWrapper.append(justUse);\n+                    }\n+                    justUse.html(\"Just use &quot;\" + node.val() + \"&quot;\")\n+                } else if (justUse.length != 0) {\n+                    justUse.remove();\n+                }\n+                return resultHtmlList;\n+            }\n+\n+            function buildBackdrop() {\n+                var wrapper = $('.dropback-wrapper');\n+                var wrapperCloseButton = latestUsedField.parent().find('.close-backdrop-button');\n+                if (wrapper.length === 0) {\n+                    var dropbackWrapper = $('<div>').attr({\n+                        'class': 'dropback-wrapper'\n+                    }).on('click keydown', function(e) {\n+                        if (latestUsedField.val() != \"\") {\n+                            e.stopPropagation();\n+                        } else {\n+                            $(this).hide();\n+                            latestUsedField.parent().find('.close-backdrop-button').hide();\n+                        }\n+                    });\n+                    var closeButton = $('<a>').attr({\n+                        'class': 'icon-close close-button'\n+                    }).on('click', function() {\n+                        $(this).parent().hide();\n+                    });\n+                    dropbackWrapper.append(closeButton);\n+                    latestUsedField.closest('.i-location-field').append(dropbackWrapper);\n+                    wrapperCloseButton.show();\n+                } else {\n+                    wrapper.show();\n+                    wrapperCloseButton.show();\n+                }\n+            }\n+\n+            function postSelectionActions(inputField, value) {\n+                inputField.val(value);\n+                field.val(JSON.stringify(hiddenData));\n+                inputField.trigger('indico:close-results-list');\n+            }\n+\n+            function highlightOption(inputField, value) {\n+                var highlighter = inputField.parent().find('.highlighter');\n+                highlighter.html(value).addClass('visible');\n+            }\n+\n+            function cleanQuery(query) {\n+                if (query) {\n+                    query = query.trim();\n+                    if (!query) {\n+                        query = ''\n+                    }\n+                }\n+                return query\n+            }\n+\n+            usingDefault.on('click', function() {\n+                toggleDefaultLocation($(this).prop('checked'));\n+            });\n+\n+            toggleDefaultLocation(usingDefault.prop('checked'));\n+\n+            venueInput.typeahead({\n+                source: venues,\n+                minLength: 0,\n+                searchOnFocus: true,\n+                resultContainer: '#' + venueInput.siblings('.typeahead-results').find('.results-list-container').attr('id'),\n+                template: {% raw %}'<span>{{name}}</span>'{% endraw %},\n+                emptyTemplate: function (query) {\n+                    return \"No results for \\\"\" + query + \"\\\"\";\n+                },\n+                display: 'name',\n+                backdrop: true,\n+                callback: {\n+                    onClickAfter: function(node, a, item, event) {\n+                        reorderCategories(item);\n+                        venueInput.trigger('indico:click-on-option', {item_name: item.name, venue_id: item.id});\n+                        venueInput.trigger('blur');\n+                        latestSelectedOption = {field: node.attr('id'), value: item.name}\n+                    },\n+                    onLayoutBuiltBefore: function(node, query, result, resultHtmlList) {\n+                        return updateResultsList(node, resultHtmlList);\n+                    },\n+                    onSearch: function(node, query) {\n+                        this.query = cleanQuery(query);\n+                    },\n+                    onShowLayout: function(node, query) {\n+                        venueInput.parent().find('.highlighter').removeClass('visible');\n+                    }\n+                }\n+            });\n+\n+            roomInput.typeahead({\n+                source: rooms,\n+                minLength: 0,\n+                searchOnFocus: true,\n+                group: true,\n+                maxItem: 0,\n+                resultContainer: '#' + roomInput.siblings('.typeahead-results').find('.results-list-container').attr('id'),\n+                template: {% raw %}'<span>{{name}}</span>'{% endraw %},\n+                emptyTemplate: function (query) {\n+                    return \"No results for \\\"\" + query + \"\\\"\";\n+                },\n+                display: 'name',\n+                backdrop: true,\n+                callback: {\n+                    onClickAfter: function(node, a, item, event) {\n+                        updateVenueOnRoomChange(item);\n+\n+                        hiddenData.room_id = item.id;\n+                        delete hiddenData.room_name;\n+\n+                        postSelectionActions(roomInput, item.name);\n+                        roomInput.trigger('blur');\n+                        latestSelectedOption = {field: node.attr('id'), value: item.name}\n+                        highlightOption(roomInput, item.name);\n+                    },\n+                    onLayoutBuiltBefore: function(node, query, result, resultHtmlList) {\n+                        return updateResultsList(node, resultHtmlList);\n+                    },\n+                    onSearch: function(node, query) {\n+                        this.query = cleanQuery(query);\n+                    },\n+                    onShowLayout: function(node, query) {\n+                        roomInput.parent().find('.highlighter').removeClass('visible');\n+                    }\n+                }\n+            });\n+\n+            venueInput.on('indico:click-on-option', function(e, data) {\n+                if (hiddenData.venue_id && data.venue_id != hiddenData.venue_id) {\n+                    delete hiddenData.room_id;\n+                    roomInput.val('');\n+                    roomInput.parent().find('.highlighter').removeClass('visible');\n+                }\n+                hiddenData.venue_name = data.item_name;\n+                hiddenData.venue_id = data.venue_id;\n+                postSelectionActions(venueInput, data.item_name);\n+                highlightOption(venueInput, data.item_name);\n+            })\n+            .on('indico:click-on-custom-option', function(e, data) {\n+                if (hiddenData.room_id) {\n+                    delete hiddenData.room_id;\n+                    roomInput.val('');\n+                }\n+                delete hiddenData.venue_id;\n+                hiddenData.venue_name = data.item_name;\n+                postSelectionActions(venueInput, data.item_name);\n+            })\n+            .on('indico:click-on-clear-button', function() {\n+                delete hiddenData.venue_name;\n+                delete hiddenData.venue_id;\n+                if (hiddenData.room_id) {\n+                    delete hiddenData.room_id;\n+                    postSelectionActions(roomInput, \"\");\n+                }\n+                postSelectionActions(venueInput, \"\");\n+            });\n+\n+            roomInput.on('indico:click-on-custom-option', function(e, data) {\n+                delete hiddenData.room_id;\n+                hiddenData.room_name = data.item_name;\n+                postSelectionActions(roomInput, data.item_name);\n+                highlightOption(roomInput, data.item_name);\n+            })\n+            .on('indico:click-on-clear-button', function() {\n+                delete hiddenData.room_name;\n+                delete hiddenData.room_id;\n+                postSelectionActions(roomInput, \"\");\n+            });\n+\n+\n+            $('.i-location-input-field').on('indico:close-results-list', function() {\n+                Typeahead[\"#\" + this.id].hideLayout();\n+                $('.dropback-wrapper').hide();\n+                $('.close-backdrop-button').hide();\n+                $(this).trigger('blur');\n+            })\n+            .on('focus.typeahead', function() {\n+                $(this).trigger('input.typeahead');\n+                $('.ui-dialog-content').css('overflow', 'inherit');\n+                latestUsedField = $(this);\n+                buildBackdrop();\n+            })\n+            .on('keydown', function(e) {\n+                var $this = $(this);\n+                if (e.keyCode == 9) { // on tab\n+                    e.preventDefault();\n+                    $this.trigger('indico:close-results-list')\n+                } else if (e.keyCode == 27) { // on esc\n+                    e.preventDefault();\n+                    latestUsedField.trigger('indico:click-on-clear-button');\n+                } else if (e.keyCode == 13) { // on enter\n+                    if (latestSelectedOption != '' || latestSelectedOption.field == $this.attr('id') && latestSelectedOption.value != $this.val()) {\n+                        $this.trigger('indico:click-on-custom-option', {item_name: $this.val()});\n+                    }\n+                }\n+            });\n+\n+            $('.toggle-results-list').on('click', function() {\n+                var container = $(this).parent().parent();\n+                var input = container.find('.i-location-input-field');\n+                if (container.hasClass('result')) {\n+                    if (input.val() == \"\") {","path":"indico/web/templates/forms/location_widget.html","position":335,"original_position":335,"commit_id":"ceaf2cdb172384c0956528a7c7aece0c8c00e459","original_commit_id":"ceaf2cdb172384c0956528a7c7aece0c8c00e459","user":{"login":"ThiefMaster","id":179599,"avatar_url":"https://avatars.githubusercontent.com/u/179599?v=3","gravatar_id":"","url":"https://api.github.com/users/ThiefMaster","html_url":"https://github.com/ThiefMaster","followers_url":"https://api.github.com/users/ThiefMaster/followers","following_url":"https://api.github.com/users/ThiefMaster/following{/other_user}","gists_url":"https://api.github.com/users/ThiefMaster/gists{/gist_id}","starred_url":"https://api.github.com/users/ThiefMaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThiefMaster/subscriptions","organizations_url":"https://api.github.com/users/ThiefMaster/orgs","repos_url":"https://api.github.com/users/ThiefMaster/repos","events_url":"https://api.github.com/users/ThiefMaster/events{/privacy}","received_events_url":"https://api.github.com/users/ThiefMaster/received_events","type":"User","site_admin":false},"body":"`!input.val()`","created_at":"2016-01-08T15:25:14Z","updated_at":"2016-01-08T15:25:14Z","html_url":"https://github.com/indico/indico/pull/2194#discussion_r49198600","pull_request_url":"https://api.github.com/repos/indico/indico/pulls/2194","_links":{"self":{"href":"https://api.github.com/repos/indico/indico/pulls/comments/49198600"},"html":{"href":"https://github.com/indico/indico/pull/2194#discussion_r49198600"},"pull_request":{"href":"https://api.github.com/repos/indico/indico/pulls/2194"}}},"pull_request":{"url":"https://api.github.com/repos/indico/indico/pulls/2194","id":55463570,"html_url":"https://github.com/indico/indico/pull/2194","diff_url":"https://github.com/indico/indico/pull/2194.diff","patch_url":"https://github.com/indico/indico/pull/2194.patch","issue_url":"https://api.github.com/repos/indico/indico/issues/2194","number":2194,"state":"open","locked":false,"title":"WIP: Location widget","user":{"login":"nop33","id":1579899,"avatar_url":"https://avatars.githubusercontent.com/u/1579899?v=3","gravatar_id":"","url":"https://api.github.com/users/nop33","html_url":"https://github.com/nop33","followers_url":"https://api.github.com/users/nop33/followers","following_url":"https://api.github.com/users/nop33/following{/other_user}","gists_url":"https://api.github.com/users/nop33/gists{/gist_id}","starred_url":"https://api.github.com/users/nop33/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nop33/subscriptions","organizations_url":"https://api.github.com/users/nop33/orgs","repos_url":"https://api.github.com/users/nop33/repos","events_url":"https://api.github.com/users/nop33/events{/privacy}","received_events_url":"https://api.github.com/users/nop33/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-01-08T13:54:36Z","updated_at":"2016-01-08T15:25:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e8b47727408d6c92dc28aa6aac934d05b20da115","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/indico/indico/pulls/2194/commits","review_comments_url":"https://api.github.com/repos/indico/indico/pulls/2194/comments","review_comment_url":"https://api.github.com/repos/indico/indico/pulls/comments{/number}","comments_url":"https://api.github.com/repos/indico/indico/issues/2194/comments","statuses_url":"https://api.github.com/repos/indico/indico/statuses/ceaf2cdb172384c0956528a7c7aece0c8c00e459","head":{"label":"nop33:devel","ref":"devel","sha":"ceaf2cdb172384c0956528a7c7aece0c8c00e459","user":{"login":"nop33","id":1579899,"avatar_url":"https://avatars.githubusercontent.com/u/1579899?v=3","gravatar_id":"","url":"https://api.github.com/users/nop33","html_url":"https://github.com/nop33","followers_url":"https://api.github.com/users/nop33/followers","following_url":"https://api.github.com/users/nop33/following{/other_user}","gists_url":"https://api.github.com/users/nop33/gists{/gist_id}","starred_url":"https://api.github.com/users/nop33/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nop33/subscriptions","organizations_url":"https://api.github.com/users/nop33/orgs","repos_url":"https://api.github.com/users/nop33/repos","events_url":"https://api.github.com/users/nop33/events{/privacy}","received_events_url":"https://api.github.com/users/nop33/received_events","type":"User","site_admin":false},"repo":{"id":22684703,"name":"indico","full_name":"nop33/indico","owner":{"login":"nop33","id":1579899,"avatar_url":"https://avatars.githubusercontent.com/u/1579899?v=3","gravatar_id":"","url":"https://api.github.com/users/nop33","html_url":"https://github.com/nop33","followers_url":"https://api.github.com/users/nop33/followers","following_url":"https://api.github.com/users/nop33/following{/other_user}","gists_url":"https://api.github.com/users/nop33/gists{/gist_id}","starred_url":"https://api.github.com/users/nop33/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nop33/subscriptions","organizations_url":"https://api.github.com/users/nop33/orgs","repos_url":"https://api.github.com/users/nop33/repos","events_url":"https://api.github.com/users/nop33/events{/privacy}","received_events_url":"https://api.github.com/users/nop33/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/nop33/indico","description":"The Indico Project (mirror)","fork":true,"url":"https://api.github.com/repos/nop33/indico","forks_url":"https://api.github.com/repos/nop33/indico/forks","keys_url":"https://api.github.com/repos/nop33/indico/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nop33/indico/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nop33/indico/teams","hooks_url":"https://api.github.com/repos/nop33/indico/hooks","issue_events_url":"https://api.github.com/repos/nop33/indico/issues/events{/number}","events_url":"https://api.github.com/repos/nop33/indico/events","assignees_url":"https://api.github.com/repos/nop33/indico/assignees{/user}","branches_url":"https://api.github.com/repos/nop33/indico/branches{/branch}","tags_url":"https://api.github.com/repos/nop33/indico/tags","blobs_url":"https://api.github.com/repos/nop33/indico/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nop33/indico/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nop33/indico/git/refs{/sha}","trees_url":"https://api.github.com/repos/nop33/indico/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nop33/indico/statuses/{sha}","languages_url":"https://api.github.com/repos/nop33/indico/languages","stargazers_url":"https://api.github.com/repos/nop33/indico/stargazers","contributors_url":"https://api.github.com/repos/nop33/indico/contributors","subscribers_url":"https://api.github.com/repos/nop33/indico/subscribers","subscription_url":"https://api.github.com/repos/nop33/indico/subscription","commits_url":"https://api.github.com/repos/nop33/indico/commits{/sha}","git_commits_url":"https://api.github.com/repos/nop33/indico/git/commits{/sha}","comments_url":"https://api.github.com/repos/nop33/indico/comments{/number}","issue_comment_url":"https://api.github.com/repos/nop33/indico/issues/comments{/number}","contents_url":"https://api.github.com/repos/nop33/indico/contents/{+path}","compare_url":"https://api.github.com/repos/nop33/indico/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nop33/indico/merges","archive_url":"https://api.github.com/repos/nop33/indico/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nop33/indico/downloads","issues_url":"https://api.github.com/repos/nop33/indico/issues{/number}","pulls_url":"https://api.github.com/repos/nop33/indico/pulls{/number}","milestones_url":"https://api.github.com/repos/nop33/indico/milestones{/number}","notifications_url":"https://api.github.com/repos/nop33/indico/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nop33/indico/labels{/name}","releases_url":"https://api.github.com/repos/nop33/indico/releases{/id}","created_at":"2014-08-06T14:02:24Z","updated_at":"2015-09-07T15:17:59Z","pushed_at":"2016-01-08T14:57:36Z","git_url":"git://github.com/nop33/indico.git","ssh_url":"git@github.com:nop33/indico.git","clone_url":"https://github.com/nop33/indico.git","svn_url":"https://github.com/nop33/indico","homepage":"http://indico-software.org","size":181659,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"indico:devel","ref":"devel","sha":"ba00aae7e4ceb8590a7a79a4fa3d3c2ec31f8336","user":{"login":"indico","id":715236,"avatar_url":"https://avatars.githubusercontent.com/u/715236?v=3","gravatar_id":"","url":"https://api.github.com/users/indico","html_url":"https://github.com/indico","followers_url":"https://api.github.com/users/indico/followers","following_url":"https://api.github.com/users/indico/following{/other_user}","gists_url":"https://api.github.com/users/indico/gists{/gist_id}","starred_url":"https://api.github.com/users/indico/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indico/subscriptions","organizations_url":"https://api.github.com/users/indico/orgs","repos_url":"https://api.github.com/users/indico/repos","events_url":"https://api.github.com/users/indico/events{/privacy}","received_events_url":"https://api.github.com/users/indico/received_events","type":"Organization","site_admin":false},"repo":{"id":2113067,"name":"indico","full_name":"indico/indico","owner":{"login":"indico","id":715236,"avatar_url":"https://avatars.githubusercontent.com/u/715236?v=3","gravatar_id":"","url":"https://api.github.com/users/indico","html_url":"https://github.com/indico","followers_url":"https://api.github.com/users/indico/followers","following_url":"https://api.github.com/users/indico/following{/other_user}","gists_url":"https://api.github.com/users/indico/gists{/gist_id}","starred_url":"https://api.github.com/users/indico/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indico/subscriptions","organizations_url":"https://api.github.com/users/indico/orgs","repos_url":"https://api.github.com/users/indico/repos","events_url":"https://api.github.com/users/indico/events{/privacy}","received_events_url":"https://api.github.com/users/indico/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/indico/indico","description":"The Indico Project","fork":false,"url":"https://api.github.com/repos/indico/indico","forks_url":"https://api.github.com/repos/indico/indico/forks","keys_url":"https://api.github.com/repos/indico/indico/keys{/key_id}","collaborators_url":"https://api.github.com/repos/indico/indico/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/indico/indico/teams","hooks_url":"https://api.github.com/repos/indico/indico/hooks","issue_events_url":"https://api.github.com/repos/indico/indico/issues/events{/number}","events_url":"https://api.github.com/repos/indico/indico/events","assignees_url":"https://api.github.com/repos/indico/indico/assignees{/user}","branches_url":"https://api.github.com/repos/indico/indico/branches{/branch}","tags_url":"https://api.github.com/repos/indico/indico/tags","blobs_url":"https://api.github.com/repos/indico/indico/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/indico/indico/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/indico/indico/git/refs{/sha}","trees_url":"https://api.github.com/repos/indico/indico/git/trees{/sha}","statuses_url":"https://api.github.com/repos/indico/indico/statuses/{sha}","languages_url":"https://api.github.com/repos/indico/indico/languages","stargazers_url":"https://api.github.com/repos/indico/indico/stargazers","contributors_url":"https://api.github.com/repos/indico/indico/contributors","subscribers_url":"https://api.github.com/repos/indico/indico/subscribers","subscription_url":"https://api.github.com/repos/indico/indico/subscription","commits_url":"https://api.github.com/repos/indico/indico/commits{/sha}","git_commits_url":"https://api.github.com/repos/indico/indico/git/commits{/sha}","comments_url":"https://api.github.com/repos/indico/indico/comments{/number}","issue_comment_url":"https://api.github.com/repos/indico/indico/issues/comments{/number}","contents_url":"https://api.github.com/repos/indico/indico/contents/{+path}","compare_url":"https://api.github.com/repos/indico/indico/compare/{base}...{head}","merges_url":"https://api.github.com/repos/indico/indico/merges","archive_url":"https://api.github.com/repos/indico/indico/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/indico/indico/downloads","issues_url":"https://api.github.com/repos/indico/indico/issues{/number}","pulls_url":"https://api.github.com/repos/indico/indico/pulls{/number}","milestones_url":"https://api.github.com/repos/indico/indico/milestones{/number}","notifications_url":"https://api.github.com/repos/indico/indico/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/indico/indico/labels{/name}","releases_url":"https://api.github.com/repos/indico/indico/releases{/id}","created_at":"2011-07-27T13:56:30Z","updated_at":"2016-01-06T22:56:57Z","pushed_at":"2016-01-08T15:04:45Z","git_url":"git://github.com/indico/indico.git","ssh_url":"git@github.com:indico/indico.git","clone_url":"https://github.com/indico/indico.git","svn_url":"https://github.com/indico/indico","homepage":"http://indico-software.org","size":192214,"stargazers_count":122,"watchers_count":122,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":66,"mirror_url":null,"open_issues_count":563,"forks":66,"open_issues":563,"watchers":122,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/indico/indico/pulls/2194"},"html":{"href":"https://github.com/indico/indico/pull/2194"},"issue":{"href":"https://api.github.com/repos/indico/indico/issues/2194"},"comments":{"href":"https://api.github.com/repos/indico/indico/issues/2194/comments"},"review_comments":{"href":"https://api.github.com/repos/indico/indico/pulls/2194/comments"},"review_comment":{"href":"https://api.github.com/repos/indico/indico/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/indico/indico/pulls/2194/commits"},"statuses":{"href":"https://api.github.com/repos/indico/indico/statuses/ceaf2cdb172384c0956528a7c7aece0c8c00e459"}}}}