{"action":"created","comment":{"url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/comments/32678669","id":32678669,"diff_hunk":"@@ -108,16 +108,23 @@ var ProjectModel = Backbone.Model.extend({\n         this.set('name', newName);\n     },\n \n+    // Flag to prevent double POSTing of a project.\n+    saveCalled: false,\n+\n     saveProjectAndScenarios: function() {\n         if (!App.user.loggedInUserMatch(this.get('user_id'))) {\n+            // Fail fast if the user can't save the project.\n             return;\n         }\n \n-        if (!this.get('id')) {\n+        if (!this.get('id') && this.saveCalled) {\n+            // Fail fast if we are in the middle of our first save.\n+            return;\n+        } else if (!this.get('id') && !this.saveCalled) {\n             // We haven't saved the project before, save the project and then\n-            // set the project ID on each scenario, then reattach the senarios\n-            // to the project.\n+            // set the project ID on each scenario.\n             var self = this;\n+            this.saveCalled = true;","path":"src/mmw/js/src/modeling/models.js","position":23,"original_position":23,"commit_id":"a88012933064aaf420c43b0af7568dde769c3810","original_commit_id":"a88012933064aaf420c43b0af7568dde769c3810","user":{"login":"caseypt","id":1042475,"avatar_url":"https://avatars.githubusercontent.com/u/1042475?v=3","gravatar_id":"","url":"https://api.github.com/users/caseypt","html_url":"https://github.com/caseypt","followers_url":"https://api.github.com/users/caseypt/followers","following_url":"https://api.github.com/users/caseypt/following{/other_user}","gists_url":"https://api.github.com/users/caseypt/gists{/gist_id}","starred_url":"https://api.github.com/users/caseypt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caseypt/subscriptions","organizations_url":"https://api.github.com/users/caseypt/orgs","repos_url":"https://api.github.com/users/caseypt/repos","events_url":"https://api.github.com/users/caseypt/events{/privacy}","received_events_url":"https://api.github.com/users/caseypt/received_events","type":"User","site_admin":false},"body":"Got it. I'm seeing the flow now. Thanks.","created_at":"2015-06-17T21:45:12Z","updated_at":"2015-06-17T21:45:12Z","html_url":"https://github.com/WikiWatershed/model-my-watershed/pull/448#discussion_r32678669","pull_request_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448","_links":{"self":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/comments/32678669"},"html":{"href":"https://github.com/WikiWatershed/model-my-watershed/pull/448#discussion_r32678669"},"pull_request":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448"}}},"pull_request":{"url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448","id":37943660,"html_url":"https://github.com/WikiWatershed/model-my-watershed/pull/448","diff_url":"https://github.com/WikiWatershed/model-my-watershed/pull/448.diff","patch_url":"https://github.com/WikiWatershed/model-my-watershed/pull/448.patch","issue_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/issues/448","number":448,"state":"open","locked":false,"title":"Prevent double saving projects on initialization.","user":{"login":"lliss","id":903219,"avatar_url":"https://avatars.githubusercontent.com/u/903219?v=3","gravatar_id":"","url":"https://api.github.com/users/lliss","html_url":"https://github.com/lliss","followers_url":"https://api.github.com/users/lliss/followers","following_url":"https://api.github.com/users/lliss/following{/other_user}","gists_url":"https://api.github.com/users/lliss/gists{/gist_id}","starred_url":"https://api.github.com/users/lliss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lliss/subscriptions","organizations_url":"https://api.github.com/users/lliss/orgs","repos_url":"https://api.github.com/users/lliss/repos","events_url":"https://api.github.com/users/lliss/events{/privacy}","received_events_url":"https://api.github.com/users/lliss/received_events","type":"User","site_admin":false},"body":"We were not able to restore saved projects because our initialization of the\r\nproject caused it to save not once but twice (when actually we did not want it\r\nto save at all). This was caused by adding two scenarios to the new project.\r\nAdding scenarios triggers an initial save. This is expected functionality however\r\nadding two simultaneously caused two saves on the yet unsaved project which\r\ncaused two POST events rather than a POST and PUT. The scenarios were then\r\ntaking the last returned result and in most cases were getting the wrong project\r\nid, which resulted in an error.\r\n\r\nThis prevents an initial save by adding the scenarios to the collection with the\r\nsilent option. Further, we introduce a flag on the project which is used to see\r\nif a save has been attempted on the project and prevents saving if it has been\r\nbut an id has not yet been returned.\r\n\r\nConnects #443 ","created_at":"2015-06-17T20:35:02Z","updated_at":"2015-06-17T21:45:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":"95e4643dbc26cd10fe19de473689921a9ce0e65b","assignee":{"login":"mmcfarland","id":1014341,"avatar_url":"https://avatars.githubusercontent.com/u/1014341?v=3","gravatar_id":"","url":"https://api.github.com/users/mmcfarland","html_url":"https://github.com/mmcfarland","followers_url":"https://api.github.com/users/mmcfarland/followers","following_url":"https://api.github.com/users/mmcfarland/following{/other_user}","gists_url":"https://api.github.com/users/mmcfarland/gists{/gist_id}","starred_url":"https://api.github.com/users/mmcfarland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mmcfarland/subscriptions","organizations_url":"https://api.github.com/users/mmcfarland/orgs","repos_url":"https://api.github.com/users/mmcfarland/repos","events_url":"https://api.github.com/users/mmcfarland/events{/privacy}","received_events_url":"https://api.github.com/users/mmcfarland/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448/commits","review_comments_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448/comments","review_comment_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/comments{/number}","comments_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/issues/448/comments","statuses_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/statuses/a88012933064aaf420c43b0af7568dde769c3810","head":{"label":"lliss:feature/lol/fix-save","ref":"feature/lol/fix-save","sha":"a88012933064aaf420c43b0af7568dde769c3810","user":{"login":"lliss","id":903219,"avatar_url":"https://avatars.githubusercontent.com/u/903219?v=3","gravatar_id":"","url":"https://api.github.com/users/lliss","html_url":"https://github.com/lliss","followers_url":"https://api.github.com/users/lliss/followers","following_url":"https://api.github.com/users/lliss/following{/other_user}","gists_url":"https://api.github.com/users/lliss/gists{/gist_id}","starred_url":"https://api.github.com/users/lliss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lliss/subscriptions","organizations_url":"https://api.github.com/users/lliss/orgs","repos_url":"https://api.github.com/users/lliss/repos","events_url":"https://api.github.com/users/lliss/events{/privacy}","received_events_url":"https://api.github.com/users/lliss/received_events","type":"User","site_admin":false},"repo":{"id":36316546,"name":"model-my-watershed","full_name":"lliss/model-my-watershed","owner":{"login":"lliss","id":903219,"avatar_url":"https://avatars.githubusercontent.com/u/903219?v=3","gravatar_id":"","url":"https://api.github.com/users/lliss","html_url":"https://github.com/lliss","followers_url":"https://api.github.com/users/lliss/followers","following_url":"https://api.github.com/users/lliss/following{/other_user}","gists_url":"https://api.github.com/users/lliss/gists{/gist_id}","starred_url":"https://api.github.com/users/lliss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lliss/subscriptions","organizations_url":"https://api.github.com/users/lliss/orgs","repos_url":"https://api.github.com/users/lliss/repos","events_url":"https://api.github.com/users/lliss/events{/privacy}","received_events_url":"https://api.github.com/users/lliss/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lliss/model-my-watershed","description":"The web application front end for Model My Watershed.","fork":true,"url":"https://api.github.com/repos/lliss/model-my-watershed","forks_url":"https://api.github.com/repos/lliss/model-my-watershed/forks","keys_url":"https://api.github.com/repos/lliss/model-my-watershed/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lliss/model-my-watershed/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lliss/model-my-watershed/teams","hooks_url":"https://api.github.com/repos/lliss/model-my-watershed/hooks","issue_events_url":"https://api.github.com/repos/lliss/model-my-watershed/issues/events{/number}","events_url":"https://api.github.com/repos/lliss/model-my-watershed/events","assignees_url":"https://api.github.com/repos/lliss/model-my-watershed/assignees{/user}","branches_url":"https://api.github.com/repos/lliss/model-my-watershed/branches{/branch}","tags_url":"https://api.github.com/repos/lliss/model-my-watershed/tags","blobs_url":"https://api.github.com/repos/lliss/model-my-watershed/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lliss/model-my-watershed/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lliss/model-my-watershed/git/refs{/sha}","trees_url":"https://api.github.com/repos/lliss/model-my-watershed/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lliss/model-my-watershed/statuses/{sha}","languages_url":"https://api.github.com/repos/lliss/model-my-watershed/languages","stargazers_url":"https://api.github.com/repos/lliss/model-my-watershed/stargazers","contributors_url":"https://api.github.com/repos/lliss/model-my-watershed/contributors","subscribers_url":"https://api.github.com/repos/lliss/model-my-watershed/subscribers","subscription_url":"https://api.github.com/repos/lliss/model-my-watershed/subscription","commits_url":"https://api.github.com/repos/lliss/model-my-watershed/commits{/sha}","git_commits_url":"https://api.github.com/repos/lliss/model-my-watershed/git/commits{/sha}","comments_url":"https://api.github.com/repos/lliss/model-my-watershed/comments{/number}","issue_comment_url":"https://api.github.com/repos/lliss/model-my-watershed/issues/comments{/number}","contents_url":"https://api.github.com/repos/lliss/model-my-watershed/contents/{+path}","compare_url":"https://api.github.com/repos/lliss/model-my-watershed/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lliss/model-my-watershed/merges","archive_url":"https://api.github.com/repos/lliss/model-my-watershed/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lliss/model-my-watershed/downloads","issues_url":"https://api.github.com/repos/lliss/model-my-watershed/issues{/number}","pulls_url":"https://api.github.com/repos/lliss/model-my-watershed/pulls{/number}","milestones_url":"https://api.github.com/repos/lliss/model-my-watershed/milestones{/number}","notifications_url":"https://api.github.com/repos/lliss/model-my-watershed/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lliss/model-my-watershed/labels{/name}","releases_url":"https://api.github.com/repos/lliss/model-my-watershed/releases{/id}","created_at":"2015-05-26T18:46:24Z","updated_at":"2015-06-11T19:50:01Z","pushed_at":"2015-06-17T20:35:54Z","git_url":"git://github.com/lliss/model-my-watershed.git","ssh_url":"git@github.com:lliss/model-my-watershed.git","clone_url":"https://github.com/lliss/model-my-watershed.git","svn_url":"https://github.com/lliss/model-my-watershed","homepage":null,"size":13911,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"WikiWatershed:develop","ref":"develop","sha":"b7a475d381583a48da8198558abb444fefa25503","user":{"login":"WikiWatershed","id":8520008,"avatar_url":"https://avatars.githubusercontent.com/u/8520008?v=3","gravatar_id":"","url":"https://api.github.com/users/WikiWatershed","html_url":"https://github.com/WikiWatershed","followers_url":"https://api.github.com/users/WikiWatershed/followers","following_url":"https://api.github.com/users/WikiWatershed/following{/other_user}","gists_url":"https://api.github.com/users/WikiWatershed/gists{/gist_id}","starred_url":"https://api.github.com/users/WikiWatershed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WikiWatershed/subscriptions","organizations_url":"https://api.github.com/users/WikiWatershed/orgs","repos_url":"https://api.github.com/users/WikiWatershed/repos","events_url":"https://api.github.com/users/WikiWatershed/events{/privacy}","received_events_url":"https://api.github.com/users/WikiWatershed/received_events","type":"Organization","site_admin":false},"repo":{"id":32742922,"name":"model-my-watershed","full_name":"WikiWatershed/model-my-watershed","owner":{"login":"WikiWatershed","id":8520008,"avatar_url":"https://avatars.githubusercontent.com/u/8520008?v=3","gravatar_id":"","url":"https://api.github.com/users/WikiWatershed","html_url":"https://github.com/WikiWatershed","followers_url":"https://api.github.com/users/WikiWatershed/followers","following_url":"https://api.github.com/users/WikiWatershed/following{/other_user}","gists_url":"https://api.github.com/users/WikiWatershed/gists{/gist_id}","starred_url":"https://api.github.com/users/WikiWatershed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WikiWatershed/subscriptions","organizations_url":"https://api.github.com/users/WikiWatershed/orgs","repos_url":"https://api.github.com/users/WikiWatershed/repos","events_url":"https://api.github.com/users/WikiWatershed/events{/privacy}","received_events_url":"https://api.github.com/users/WikiWatershed/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/WikiWatershed/model-my-watershed","description":"The web application front end for Model My Watershed.","fork":false,"url":"https://api.github.com/repos/WikiWatershed/model-my-watershed","forks_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/forks","keys_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/keys{/key_id}","collaborators_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/teams","hooks_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/hooks","issue_events_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/issues/events{/number}","events_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/events","assignees_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/assignees{/user}","branches_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/branches{/branch}","tags_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/tags","blobs_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/git/refs{/sha}","trees_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/git/trees{/sha}","statuses_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/statuses/{sha}","languages_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/languages","stargazers_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/stargazers","contributors_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/contributors","subscribers_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/subscribers","subscription_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/subscription","commits_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/commits{/sha}","git_commits_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/git/commits{/sha}","comments_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/comments{/number}","issue_comment_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/issues/comments{/number}","contents_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/contents/{+path}","compare_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/compare/{base}...{head}","merges_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/merges","archive_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/downloads","issues_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/issues{/number}","pulls_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls{/number}","milestones_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/milestones{/number}","notifications_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/labels{/name}","releases_url":"https://api.github.com/repos/WikiWatershed/model-my-watershed/releases{/id}","created_at":"2015-03-23T16:02:55Z","updated_at":"2015-06-11T19:29:19Z","pushed_at":"2015-06-17T21:26:00Z","git_url":"git://github.com/WikiWatershed/model-my-watershed.git","ssh_url":"git@github.com:WikiWatershed/model-my-watershed.git","clone_url":"https://github.com/WikiWatershed/model-my-watershed.git","svn_url":"https://github.com/WikiWatershed/model-my-watershed","homepage":null,"size":16754,"stargazers_count":2,"watchers_count":2,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":109,"forks":9,"open_issues":109,"watchers":2,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448"},"html":{"href":"https://github.com/WikiWatershed/model-my-watershed/pull/448"},"issue":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/issues/448"},"comments":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/issues/448/comments"},"review_comments":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448/comments"},"review_comment":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/pulls/448/commits"},"statuses":{"href":"https://api.github.com/repos/WikiWatershed/model-my-watershed/statuses/a88012933064aaf420c43b0af7568dde769c3810"}}}}