{"action":"created","comment":{"url":"https://api.github.com/repos/edx/edx-platform/pulls/comments/27205995","id":27205995,"diff_hunk":"@@ -0,0 +1,554 @@\n+;(function (define, undefined) {\n+    'use strict';\n+    define([\n+        'gettext', 'jquery', 'underscore', 'backbone', 'js/mustache', 'js/vendor/backbone-super'\n+    ], function (gettext, $, _, Backbone, RequireMustache) {\n+\n+        var Mustache = window.Mustache || RequireMustache;\n+\n+        var messageRevertDelay = 4000;\n+        var AccountSettingsFieldViews = {};\n+\n+        AccountSettingsFieldViews.FieldView = Backbone.View.extend({\n+\n+            fieldType: 'generic',\n+\n+            className: function () {\n+                return 'u-field' + ' u-field-' + this.fieldType + ' u-field-' + this.options.valueAttribute;\n+            },\n+\n+            tagName: 'div',\n+\n+            indicators: {\n+                'canEdit': '<i class=\"icon fa fa-pencil message-can-edit\"></i>',\n+                'error': '<i class=\"fa fa-exclamation-triangle message-error\"></i>',\n+                'validationError': '<i class=\"fa fa-exclamation-triangle message-validation-error\"></i>',\n+                'inProgress': '<i class=\"fa fa-spinner fa-pulse message-in-progress\"></i>',\n+                'success': '<i class=\"fa fa-check message-success\"></i>'\n+            },\n+\n+            messages: {\n+                'canEdit': '',\n+                'error': gettext('An error occurred. Please try again.'),\n+                'validationError': '',\n+                'inProgress': gettext('Saving'),\n+                'success': gettext('Your changes have been saved.')\n+            },\n+\n+            initialize: function (options) {\n+\n+                this.template = _.template($(this.templateSelector).text());\n+\n+                this.helpMessage = this.options.helpMessage || '';\n+                this.showMessages = _.isUndefined(this.options.showMessages) ? true : this.options.showMessages;\n+\n+                _.bindAll(this, 'modelValue', 'modelValueIsSet', 'message', 'getMessage',\n+                          'showHelpMessage', 'showInProgressMessage', 'showSuccessMessage', 'showErrorMessage');\n+            },\n+\n+            modelValue: function () {\n+                return this.model.get(this.options.valueAttribute);\n+            },\n+\n+            modelValueIsSet: function() {\n+                return (this.modelValue() == true);\n+            },\n+\n+            message: function (message) {\n+                return this.$('.u-field-message').html(message);\n+            },\n+\n+            getMessage: function(message_status) {\n+                if ((message_status + 'Message') in this) {\n+                    return this[message_status + 'Message'].call(this);\n+                } else if (this.showMessages) {\n+                    return this.indicators[message_status] + this.messages[message_status];\n+                }\n+                return this.indicators[message_status];\n+            },\n+\n+            showCanEditMessage: function(show) {\n+                if (!_.isUndefined(show) && show) {\n+                    this.message(this.getMessage('canEdit'));\n+                } else {\n+                    this.message('');\n+                }\n+            },\n+\n+            showHelpMessage: function () {\n+                this.message(this.helpMessage);\n+            },\n+\n+            showInProgressMessage: function () {\n+                this.message(this.getMessage('inProgress'));\n+            },\n+\n+            showSuccessMessage: function () {\n+                var successMessage = this.getMessage('success');\n+                this.message(successMessage);\n+\n+                if (this.options.refreshPageOnSave) {\n+                    document.location.reload();\n+                }\n+\n+                var view = this;\n+\n+                var context = Date.now();\n+                this.lastSuccessMessageContext = context;\n+\n+                setTimeout(function () {\n+                    if ((context === view.lastSuccessMessageContext) && (view.message().html() == successMessage)) {\n+                        view.showHelpMessage();\n+                    }\n+                }, messageRevertDelay);\n+            },\n+\n+            showErrorMessage: function (xhr) {\n+                if (xhr.status === 400) {\n+                    try {\n+                        var errors = JSON.parse(xhr.responseText);\n+                        var validationErrorMessage = Mustache.escapeHtml(errors['field_errors'][this.options.valueAttribute]['user_message']);\n+                        var message = this.indicators['validationError'] + validationErrorMessage;\n+                        this.message(message);\n+                    } catch (error) {\n+                        this.message(this.getMessage('error'));\n+                    }\n+                } else {\n+                    this.message(this.getMessage('error'));\n+                }\n+            }\n+        });\n+\n+        AccountSettingsFieldViews.EditableFieldView = AccountSettingsFieldViews.FieldView.extend({\n+\n+            initialize: function (options) {\n+                _.bindAll(this, 'saveAttributes', 'showDisplayMode', 'showEditMode', 'startEditing', 'finishEditing');\n+                this._super(options);\n+\n+                this.editable = _.isUndefined(this.options.editable) ? 'always': this.options.editable;\n+                this.$el.addClass('editable-' + this.editable);\n+\n+                if (this.editable === 'always') {\n+                    this.showEditMode(false);\n+                } else {\n+                    this.showDisplayMode(false);\n+                }\n+            },\n+\n+            saveAttributes: function (attributes, options) {\n+                var view = this;\n+                var defaultOptions = {\n+                    contentType: 'application/merge-patch+json',\n+                    patch: true,\n+                    wait: true,\n+                    success: function (model, response, options) {\n+                        view.showSuccessMessage()\n+                    },\n+                    error: function (model, xhr, options) {\n+                        view.showErrorMessage(xhr)\n+                    },\n+                };\n+                this.showInProgressMessage();\n+                this.model.save(attributes, _.extend(defaultOptions, options));\n+            },\n+\n+            showDisplayMode: function(render) {\n+                this.mode = 'display';\n+                if (render) { this.render(); }\n+\n+                this.$el.removeClass('mode-edit');\n+\n+                this.$el.toggleClass('mode-hidden', (this.editable === 'never' && !this.modelValueIsSet()));\n+                this.$el.toggleClass('mode-placeholder', (this.editable === 'toggle' && !this.modelValueIsSet()));\n+                this.$el.toggleClass('mode-display', (this.modelValueIsSet()));\n+            },\n+\n+            showEditMode: function(render) {\n+                this.mode = 'edit';\n+                if (render) { this.render(); }\n+\n+                this.$el.removeClass('mode-hidden');\n+                this.$el.removeClass('mode-placeholder');\n+                this.$el.removeClass('mode-display');\n+\n+                this.$el.addClass('mode-edit');\n+            },\n+\n+            startEditing: function (event) {\n+                if (this.editable === 'toggle' && this.mode !== 'edit') {\n+                    this.showEditMode(true);\n+                }\n+            },\n+\n+            finishEditing: function(event) {\n+                if (this.fieldValue() !== this.modelValue()) {\n+                    this.saveValue();\n+                } else {\n+                    if (this.editable === 'always') {\n+                        this.showEditMode(true);\n+                    } else {\n+                        this.showDisplayMode(true);\n+                    }\n+                }\n+            },\n+        });\n+\n+        AccountSettingsFieldViews.ReadonlyFieldView = AccountSettingsFieldViews.FieldView.extend({\n+\n+            fieldType: 'readonly',\n+\n+            templateSelector: '#field_readonly-tpl',\n+\n+            initialize: function (options) {\n+                this._super(options);\n+                _.bindAll(this, 'render', 'fieldValue', 'updateValueInField');\n+                this.listenTo(this.model, \"change:\" + this.options.valueAttribute, this.updateValueInField);\n+            },\n+\n+            render: function () {\n+                this.$el.html(this.template({\n+                    id: this.options.valueAttribute,\n+                    title: this.options.title,\n+                    value: this.modelValue(),\n+                    message: this.helpMessage\n+                }));\n+                return this;\n+            },\n+\n+            fieldValue: function () {\n+                return this.$('.u-field-value input').val();\n+            },\n+\n+            updateValueInField: function () {\n+                this.$('.u-field-value input').val(Mustache.escapeHtml(this.modelValue()));\n+            }\n+        });\n+\n+        AccountSettingsFieldViews.TextFieldView = AccountSettingsFieldViews.EditableFieldView.extend({\n+\n+            fieldType: 'text',\n+\n+            templateSelector: '#field_text-tpl',\n+\n+            events: {\n+                'change input': 'saveValue'\n+            },\n+\n+            initialize: function (options) {\n+                this._super(options);\n+                _.bindAll(this, 'render', 'fieldValue', 'updateValueInField', 'saveValue');\n+                this.listenTo(this.model, \"change:\" + this.options.valueAttribute, this.updateValueInField);\n+            },\n+\n+            render: function () {\n+                this.$el.html(this.template({\n+                    id: this.options.valueAttribute,\n+                    title: this.options.title,\n+                    value: this.modelValue(),\n+                    message: this.helpMessage\n+                }));\n+                return this;\n+            },\n+\n+            fieldValue: function () {\n+                return this.$('.u-field-value input').val();\n+            },\n+\n+            updateValueInField: function () {\n+                var value = (_.isUndefined(this.modelValue()) || _.isNull(this.modelValue())) ? '' : this.modelValue();\n+                this.$('.u-field-value input').val(Mustache.escapeHtml(value));\n+            },\n+\n+            saveValue: function (event) {\n+                var attributes = {};\n+                attributes[this.options.valueAttribute] = this.fieldValue();\n+                this.saveAttributes(attributes);\n+            }\n+        });\n+\n+        AccountSettingsFieldViews.EmailFieldView = AccountSettingsFieldViews.TextFieldView.extend({\n+\n+            successMessage: function() {\n+                return this.indicators['success'] + interpolate_text(\n+                    gettext('We\\'ve sent a confirmation message to {new_email_address}. Click the link in the message to update your email address.'),\n+                    {'new_email_address': this.fieldValue()}\n+                );\n+            }\n+        });\n+\n+        AccountSettingsFieldViews.DropdownFieldView = AccountSettingsFieldViews.EditableFieldView.extend({\n+\n+            fieldType: 'dropdown',\n+\n+            templateSelector: '#field_dropdown-tpl',\n+\n+            events: {\n+                'click': 'startEditing',\n+                'change select': 'finishEditing',\n+                'focusout select': 'finishEditing'\n+            },\n+\n+            initialize: function (options) {\n+                _.bindAll(this, 'render', 'optionForValue', 'fieldValue', 'displayValue', 'updateValueInField', 'saveValue');\n+                this._super(options);\n+\n+                this.listenTo(this.model, \"change:\" + this.options.valueAttribute, this.updateValueInField);\n+            },\n+\n+            render: function () {\n+                this.$el.html(this.template({\n+                    id: this.options.valueAttribute,\n+                    mode: this.mode,\n+                    title: this.options.title,\n+                    iconName: this.options.iconName,\n+                    required: this.options.required,\n+                    selectOptions: this.options.options,\n+                    message: this.helpMessage\n+                }));\n+\n+                this.updateValueInField();\n+\n+                if (this.editable === 'toggle') {\n+                    this.showCanEditMessage(this.mode === 'display');\n+                }\n+                return this;\n+            },\n+\n+            modelValueIsSet: function() {\n+                var value = this.modelValue();\n+                if (_.isUndefined(value) || _.isNull(value) || value == '') {\n+                    return false;\n+                } else {\n+                    return !(_.isUndefined(this.optionForValue(value)))\n+                }\n+            },\n+\n+            optionForValue: function(value) {\n+                return _.find(this.options.options, function(option) { return option[0] == value; })\n+            },\n+\n+            fieldValue: function () {\n+                return this.$('.u-field-value select').val();\n+            },\n+\n+            displayValue: function (value) {\n+                if (value) {\n+                    var option = this.optionForValue(value);\n+                    return (option ? option[1] : '');\n+                } else {\n+                    return '';\n+                }\n+            },\n+\n+            updateValueInField: function () {\n+                var value = this.modelValue();\n+                if (this.mode === 'display') {\n+                    if (_.isUndefined(value) || _.isNull(value)) {\n+                        value = this.options.placeholderValue || '';\n+                    }\n+                    this.$('.u-field-value').html(Mustache.escapeHtml(this.displayValue(value)));\n+                    this.showDisplayMode(false);\n+                } else {\n+                    if (_.isUndefined(value) || _.isNull(value)) {\n+                        value = '';\n+                    }\n+                    this.$('.u-field-value select').val(Mustache.escapeHtml(value));\n+                }\n+            },\n+\n+            saveValue: function () {\n+                var attributes = {};\n+                attributes[this.options.valueAttribute] = this.fieldValue();\n+                this.saveAttributes(attributes);\n+            },\n+\n+            showEditMode: function(render) {\n+                this._super(render);\n+            },\n+\n+            showSuccessMessage: function() {\n+                this._super();\n+                if (this.editable === 'toggle') {\n+                    this.showDisplayMode(true);\n+                }\n+            }\n+        });\n+\n+        AccountSettingsFieldViews.AccountPrivacyFieldView = AccountSettingsFieldViews.DropdownFieldView.extend({\n+\n+            render: function () {\n+                this._super();\n+                this.message();\n+                return this;\n+            },\n+\n+            message: function (message) {\n+                if (this.profileIsPrivate) {\n+                    this._super(interpolate_text(\n+                        gettext('Your profile is set to limited because you have not set your birth year yet. Set it on the {account_settings_page_link}.'),","path":"lms/static/js/student_account/views/account_settings_fields.js","position":393,"original_position":388,"commit_id":"33710f2b8449cddd8a39df7e0c02582e7e7e3f6c","original_commit_id":"131fdf9aae2319453139f41835641c6447764e62","user":{"login":"muzaffaryousaf","id":2994509,"avatar_url":"https://avatars.githubusercontent.com/u/2994509?v=3","gravatar_id":"","url":"https://api.github.com/users/muzaffaryousaf","html_url":"https://github.com/muzaffaryousaf","followers_url":"https://api.github.com/users/muzaffaryousaf/followers","following_url":"https://api.github.com/users/muzaffaryousaf/following{/other_user}","gists_url":"https://api.github.com/users/muzaffaryousaf/gists{/gist_id}","starred_url":"https://api.github.com/users/muzaffaryousaf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muzaffaryousaf/subscriptions","organizations_url":"https://api.github.com/users/muzaffaryousaf/orgs","repos_url":"https://api.github.com/users/muzaffaryousaf/repos","events_url":"https://api.github.com/users/muzaffaryousaf/events{/privacy}","received_events_url":"https://api.github.com/users/muzaffaryousaf/received_events","type":"User","site_admin":false},"body":"@explorerleslie should we add the age limit message here in this PR, because right now, there is no such limit.\r\n","created_at":"2015-03-26T11:47:31Z","updated_at":"2015-03-26T11:47:31Z","html_url":"https://github.com/edx/edx-platform/pull/7442#discussion_r27205995","pull_request_url":"https://api.github.com/repos/edx/edx-platform/pulls/7442","_links":{"self":{"href":"https://api.github.com/repos/edx/edx-platform/pulls/comments/27205995"},"html":{"href":"https://github.com/edx/edx-platform/pull/7442#discussion_r27205995"},"pull_request":{"href":"https://api.github.com/repos/edx/edx-platform/pulls/7442"}}},"pull_request":{"url":"https://api.github.com/repos/edx/edx-platform/pulls/7442","id":31708811,"html_url":"https://github.com/edx/edx-platform/pull/7442","diff_url":"https://github.com/edx/edx-platform/pull/7442.diff","patch_url":"https://github.com/edx/edx-platform/pull/7442.patch","issue_url":"https://api.github.com/repos/edx/edx-platform/issues/7442","number":7442,"state":"open","locked":false,"title":"Learner profile page.","user":{"login":"muzaffaryousaf","id":2994509,"avatar_url":"https://avatars.githubusercontent.com/u/2994509?v=3","gravatar_id":"","url":"https://api.github.com/users/muzaffaryousaf","html_url":"https://github.com/muzaffaryousaf","followers_url":"https://api.github.com/users/muzaffaryousaf/followers","following_url":"https://api.github.com/users/muzaffaryousaf/following{/other_user}","gists_url":"https://api.github.com/users/muzaffaryousaf/gists{/gist_id}","starred_url":"https://api.github.com/users/muzaffaryousaf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muzaffaryousaf/subscriptions","organizations_url":"https://api.github.com/users/muzaffaryousaf/orgs","repos_url":"https://api.github.com/users/muzaffaryousaf/repos","events_url":"https://api.github.com/users/muzaffaryousaf/events{/privacy}","received_events_url":"https://api.github.com/users/muzaffaryousaf/received_events","type":"User","site_admin":false},"body":"This PR includes leaner profile page with all the views(read-only, edit, limited) that are mentioned in the acceptance criteria.\r\n\r\nThe jira tickets are:\r\nhttps://openedx.atlassian.net/browse/TNL-1501\r\nhttps://openedx.atlassian.net/browse/TNL-1502\r\n\r\nThe sandbox is available here: http://mzfr-profile-page.m.sandbox.edx.org/\r\n","created_at":"2015-03-23T07:02:06Z","updated_at":"2015-03-26T11:47:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ec94487b8173625b2cf167cf475256cd0bc07b5d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/edx/edx-platform/pulls/7442/commits","review_comments_url":"https://api.github.com/repos/edx/edx-platform/pulls/7442/comments","review_comment_url":"https://api.github.com/repos/edx/edx-platform/pulls/comments{/number}","comments_url":"https://api.github.com/repos/edx/edx-platform/issues/7442/comments","statuses_url":"https://api.github.com/repos/edx/edx-platform/statuses/33710f2b8449cddd8a39df7e0c02582e7e7e3f6c","head":{"label":"edx:ammar/learner-profile-view-tnl1502","ref":"ammar/learner-profile-view-tnl1502","sha":"33710f2b8449cddd8a39df7e0c02582e7e7e3f6c","user":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"repo":{"id":10391073,"name":"edx-platform","full_name":"edx/edx-platform","owner":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/edx/edx-platform","description":"Open edX, the edX platform that powers http://edx.org","fork":false,"url":"https://api.github.com/repos/edx/edx-platform","forks_url":"https://api.github.com/repos/edx/edx-platform/forks","keys_url":"https://api.github.com/repos/edx/edx-platform/keys{/key_id}","collaborators_url":"https://api.github.com/repos/edx/edx-platform/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/edx/edx-platform/teams","hooks_url":"https://api.github.com/repos/edx/edx-platform/hooks","issue_events_url":"https://api.github.com/repos/edx/edx-platform/issues/events{/number}","events_url":"https://api.github.com/repos/edx/edx-platform/events","assignees_url":"https://api.github.com/repos/edx/edx-platform/assignees{/user}","branches_url":"https://api.github.com/repos/edx/edx-platform/branches{/branch}","tags_url":"https://api.github.com/repos/edx/edx-platform/tags","blobs_url":"https://api.github.com/repos/edx/edx-platform/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/edx/edx-platform/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/edx/edx-platform/git/refs{/sha}","trees_url":"https://api.github.com/repos/edx/edx-platform/git/trees{/sha}","statuses_url":"https://api.github.com/repos/edx/edx-platform/statuses/{sha}","languages_url":"https://api.github.com/repos/edx/edx-platform/languages","stargazers_url":"https://api.github.com/repos/edx/edx-platform/stargazers","contributors_url":"https://api.github.com/repos/edx/edx-platform/contributors","subscribers_url":"https://api.github.com/repos/edx/edx-platform/subscribers","subscription_url":"https://api.github.com/repos/edx/edx-platform/subscription","commits_url":"https://api.github.com/repos/edx/edx-platform/commits{/sha}","git_commits_url":"https://api.github.com/repos/edx/edx-platform/git/commits{/sha}","comments_url":"https://api.github.com/repos/edx/edx-platform/comments{/number}","issue_comment_url":"https://api.github.com/repos/edx/edx-platform/issues/comments{/number}","contents_url":"https://api.github.com/repos/edx/edx-platform/contents/{+path}","compare_url":"https://api.github.com/repos/edx/edx-platform/compare/{base}...{head}","merges_url":"https://api.github.com/repos/edx/edx-platform/merges","archive_url":"https://api.github.com/repos/edx/edx-platform/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/edx/edx-platform/downloads","issues_url":"https://api.github.com/repos/edx/edx-platform/issues{/number}","pulls_url":"https://api.github.com/repos/edx/edx-platform/pulls{/number}","milestones_url":"https://api.github.com/repos/edx/edx-platform/milestones{/number}","notifications_url":"https://api.github.com/repos/edx/edx-platform/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/edx/edx-platform/labels{/name}","releases_url":"https://api.github.com/repos/edx/edx-platform/releases{/id}","created_at":"2013-05-30T20:20:38Z","updated_at":"2015-03-26T06:03:02Z","pushed_at":"2015-03-26T11:38:04Z","git_url":"git://github.com/edx/edx-platform.git","ssh_url":"git@github.com:edx/edx-platform.git","clone_url":"https://github.com/edx/edx-platform.git","svn_url":"https://github.com/edx/edx-platform","homepage":"http://openedx.org/","size":1837180,"stargazers_count":1818,"watchers_count":1818,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1032,"mirror_url":null,"open_issues_count":138,"forks":1032,"open_issues":138,"watchers":1818,"default_branch":"master"}},"base":{"label":"edx:usman/tnl1499-account-settings","ref":"usman/tnl1499-account-settings","sha":"15ec3fe8bd40e8cc122ca41e6e78fd1a479548ba","user":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"repo":{"id":10391073,"name":"edx-platform","full_name":"edx/edx-platform","owner":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/edx/edx-platform","description":"Open edX, the edX platform that powers http://edx.org","fork":false,"url":"https://api.github.com/repos/edx/edx-platform","forks_url":"https://api.github.com/repos/edx/edx-platform/forks","keys_url":"https://api.github.com/repos/edx/edx-platform/keys{/key_id}","collaborators_url":"https://api.github.com/repos/edx/edx-platform/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/edx/edx-platform/teams","hooks_url":"https://api.github.com/repos/edx/edx-platform/hooks","issue_events_url":"https://api.github.com/repos/edx/edx-platform/issues/events{/number}","events_url":"https://api.github.com/repos/edx/edx-platform/events","assignees_url":"https://api.github.com/repos/edx/edx-platform/assignees{/user}","branches_url":"https://api.github.com/repos/edx/edx-platform/branches{/branch}","tags_url":"https://api.github.com/repos/edx/edx-platform/tags","blobs_url":"https://api.github.com/repos/edx/edx-platform/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/edx/edx-platform/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/edx/edx-platform/git/refs{/sha}","trees_url":"https://api.github.com/repos/edx/edx-platform/git/trees{/sha}","statuses_url":"https://api.github.com/repos/edx/edx-platform/statuses/{sha}","languages_url":"https://api.github.com/repos/edx/edx-platform/languages","stargazers_url":"https://api.github.com/repos/edx/edx-platform/stargazers","contributors_url":"https://api.github.com/repos/edx/edx-platform/contributors","subscribers_url":"https://api.github.com/repos/edx/edx-platform/subscribers","subscription_url":"https://api.github.com/repos/edx/edx-platform/subscription","commits_url":"https://api.github.com/repos/edx/edx-platform/commits{/sha}","git_commits_url":"https://api.github.com/repos/edx/edx-platform/git/commits{/sha}","comments_url":"https://api.github.com/repos/edx/edx-platform/comments{/number}","issue_comment_url":"https://api.github.com/repos/edx/edx-platform/issues/comments{/number}","contents_url":"https://api.github.com/repos/edx/edx-platform/contents/{+path}","compare_url":"https://api.github.com/repos/edx/edx-platform/compare/{base}...{head}","merges_url":"https://api.github.com/repos/edx/edx-platform/merges","archive_url":"https://api.github.com/repos/edx/edx-platform/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/edx/edx-platform/downloads","issues_url":"https://api.github.com/repos/edx/edx-platform/issues{/number}","pulls_url":"https://api.github.com/repos/edx/edx-platform/pulls{/number}","milestones_url":"https://api.github.com/repos/edx/edx-platform/milestones{/number}","notifications_url":"https://api.github.com/repos/edx/edx-platform/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/edx/edx-platform/labels{/name}","releases_url":"https://api.github.com/repos/edx/edx-platform/releases{/id}","created_at":"2013-05-30T20:20:38Z","updated_at":"2015-03-26T06:03:02Z","pushed_at":"2015-03-26T11:38:04Z","git_url":"git://github.com/edx/edx-platform.git","ssh_url":"git@github.com:edx/edx-platform.git","clone_url":"https://github.com/edx/edx-platform.git","svn_url":"https://github.com/edx/edx-platform","homepage":"http://openedx.org/","size":1837180,"stargazers_count":1818,"watchers_count":1818,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1032,"mirror_url":null,"open_issues_count":138,"forks":1032,"open_issues":138,"watchers":1818,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/edx/edx-platform/pulls/7442"},"html":{"href":"https://github.com/edx/edx-platform/pull/7442"},"issue":{"href":"https://api.github.com/repos/edx/edx-platform/issues/7442"},"comments":{"href":"https://api.github.com/repos/edx/edx-platform/issues/7442/comments"},"review_comments":{"href":"https://api.github.com/repos/edx/edx-platform/pulls/7442/comments"},"review_comment":{"href":"https://api.github.com/repos/edx/edx-platform/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/edx/edx-platform/pulls/7442/commits"},"statuses":{"href":"https://api.github.com/repos/edx/edx-platform/statuses/33710f2b8449cddd8a39df7e0c02582e7e7e3f6c"}}}}