{"action":"opened","number":1759,"pull_request":{"url":"https://api.github.com/repos/tablexi/nucore-open/pulls/1759","id":228498410,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI4NDk4NDEw","html_url":"https://github.com/tablexi/nucore-open/pull/1759","diff_url":"https://github.com/tablexi/nucore-open/pull/1759.diff","patch_url":"https://github.com/tablexi/nucore-open/pull/1759.patch","issue_url":"https://api.github.com/repos/tablexi/nucore-open/issues/1759","number":1759,"state":"open","locked":false,"title":"[#136546] Allow account membership changes after expiration","user":{"login":"jhanggi","id":1099111,"node_id":"MDQ6VXNlcjEwOTkxMTE=","avatar_url":"https://avatars2.githubusercontent.com/u/1099111?v=4","gravatar_id":"","url":"https://api.github.com/users/jhanggi","html_url":"https://github.com/jhanggi","followers_url":"https://api.github.com/users/jhanggi/followers","following_url":"https://api.github.com/users/jhanggi/following{/other_user}","gists_url":"https://api.github.com/users/jhanggi/gists{/gist_id}","starred_url":"https://api.github.com/users/jhanggi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jhanggi/subscriptions","organizations_url":"https://api.github.com/users/jhanggi/orgs","repos_url":"https://api.github.com/users/jhanggi/repos","events_url":"https://api.github.com/users/jhanggi/events{/privacy}","received_events_url":"https://api.github.com/users/jhanggi/received_events","type":"User","site_admin":false},"body":"# Release Notes\r\n\r\nAllow changes to account membership even if the chartstring becomes invalid.\r\n\r\n# Screenshot\r\n\r\nBefore:\r\n\r\n![](https://pm.tablexi.com/attachments/download/86702/Screen%20Shot%202017-06-05%20at%2012.10.01%20PM.png)\r\n\r\n# Additional Context\r\n\r\nThe major issue was that `NufsAccount` runs the `ValidatorFactory`'s validations on `update`. The way this was being done before was triggering those validations, and if the validator raised a validation error, we couldn't add another user to the payment source.\r\n\r\nThis sidesteps that issue by doing the work from the `AccountUser` model and doing an ownership check on the `Account` just to make sure.\r\n\r\nI also tried to standardize `AccountUser` creation so it's always going through the `grant` method. That accounts for a chunk of noise in the specs.","created_at":"2018-11-05T21:32:16Z","updated_at":"2018-11-05T21:32:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":552635076,"node_id":"MDU6TGFiZWw1NTI2MzUwNzY=","url":"https://api.github.com/repos/tablexi/nucore-open/labels/NU","name":"NU","color":"571963","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/tablexi/nucore-open/pulls/1759/commits","review_comments_url":"https://api.github.com/repos/tablexi/nucore-open/pulls/1759/comments","review_comment_url":"https://api.github.com/repos/tablexi/nucore-open/pulls/comments{/number}","comments_url":"https://api.github.com/repos/tablexi/nucore-open/issues/1759/comments","statuses_url":"https://api.github.com/repos/tablexi/nucore-open/statuses/0b5b07abde91e35f59ba4260ca79ee406d15eb86","head":{"label":"tablexi:add_account_member_when_account_invalid_136546","ref":"add_account_member_when_account_invalid_136546","sha":"0b5b07abde91e35f59ba4260ca79ee406d15eb86","user":{"login":"tablexi","id":229702,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyOTcwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/229702?v=4","gravatar_id":"","url":"https://api.github.com/users/tablexi","html_url":"https://github.com/tablexi","followers_url":"https://api.github.com/users/tablexi/followers","following_url":"https://api.github.com/users/tablexi/following{/other_user}","gists_url":"https://api.github.com/users/tablexi/gists{/gist_id}","starred_url":"https://api.github.com/users/tablexi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tablexi/subscriptions","organizations_url":"https://api.github.com/users/tablexi/orgs","repos_url":"https://api.github.com/users/tablexi/repos","events_url":"https://api.github.com/users/tablexi/events{/privacy}","received_events_url":"https://api.github.com/users/tablexi/received_events","type":"Organization","site_admin":false},"repo":{"id":1439473,"node_id":"MDEwOlJlcG9zaXRvcnkxNDM5NDcz","name":"nucore-open","full_name":"tablexi/nucore-open","private":false,"owner":{"login":"tablexi","id":229702,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyOTcwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/229702?v=4","gravatar_id":"","url":"https://api.github.com/users/tablexi","html_url":"https://github.com/tablexi","followers_url":"https://api.github.com/users/tablexi/followers","following_url":"https://api.github.com/users/tablexi/following{/other_user}","gists_url":"https://api.github.com/users/tablexi/gists{/gist_id}","starred_url":"https://api.github.com/users/tablexi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tablexi/subscriptions","organizations_url":"https://api.github.com/users/tablexi/orgs","repos_url":"https://api.github.com/users/tablexi/repos","events_url":"https://api.github.com/users/tablexi/events{/privacy}","received_events_url":"https://api.github.com/users/tablexi/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/tablexi/nucore-open","description":"Northwestern University Core Facility Management Software (NUCore)","fork":false,"url":"https://api.github.com/repos/tablexi/nucore-open","forks_url":"https://api.github.com/repos/tablexi/nucore-open/forks","keys_url":"https://api.github.com/repos/tablexi/nucore-open/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tablexi/nucore-open/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tablexi/nucore-open/teams","hooks_url":"https://api.github.com/repos/tablexi/nucore-open/hooks","issue_events_url":"https://api.github.com/repos/tablexi/nucore-open/issues/events{/number}","events_url":"https://api.github.com/repos/tablexi/nucore-open/events","assignees_url":"https://api.github.com/repos/tablexi/nucore-open/assignees{/user}","branches_url":"https://api.github.com/repos/tablexi/nucore-open/branches{/branch}","tags_url":"https://api.github.com/repos/tablexi/nucore-open/tags","blobs_url":"https://api.github.com/repos/tablexi/nucore-open/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tablexi/nucore-open/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tablexi/nucore-open/git/refs{/sha}","trees_url":"https://api.github.com/repos/tablexi/nucore-open/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tablexi/nucore-open/statuses/{sha}","languages_url":"https://api.github.com/repos/tablexi/nucore-open/languages","stargazers_url":"https://api.github.com/repos/tablexi/nucore-open/stargazers","contributors_url":"https://api.github.com/repos/tablexi/nucore-open/contributors","subscribers_url":"https://api.github.com/repos/tablexi/nucore-open/subscribers","subscription_url":"https://api.github.com/repos/tablexi/nucore-open/subscription","commits_url":"https://api.github.com/repos/tablexi/nucore-open/commits{/sha}","git_commits_url":"https://api.github.com/repos/tablexi/nucore-open/git/commits{/sha}","comments_url":"https://api.github.com/repos/tablexi/nucore-open/comments{/number}","issue_comment_url":"https://api.github.com/repos/tablexi/nucore-open/issues/comments{/number}","contents_url":"https://api.github.com/repos/tablexi/nucore-open/contents/{+path}","compare_url":"https://api.github.com/repos/tablexi/nucore-open/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tablexi/nucore-open/merges","archive_url":"https://api.github.com/repos/tablexi/nucore-open/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tablexi/nucore-open/downloads","issues_url":"https://api.github.com/repos/tablexi/nucore-open/issues{/number}","pulls_url":"https://api.github.com/repos/tablexi/nucore-open/pulls{/number}","milestones_url":"https://api.github.com/repos/tablexi/nucore-open/milestones{/number}","notifications_url":"https://api.github.com/repos/tablexi/nucore-open/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tablexi/nucore-open/labels{/name}","releases_url":"https://api.github.com/repos/tablexi/nucore-open/releases{/id}","deployments_url":"https://api.github.com/repos/tablexi/nucore-open/deployments","created_at":"2011-03-04T13:45:37Z","updated_at":"2018-11-05T20:11:11Z","pushed_at":"2018-11-05T21:20:45Z","git_url":"git://github.com/tablexi/nucore-open.git","ssh_url":"git@github.com:tablexi/nucore-open.git","clone_url":"https://github.com/tablexi/nucore-open.git","svn_url":"https://github.com/tablexi/nucore-open","homepage":"","size":74325,"stargazers_count":12,"watchers_count":12,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"archived":false,"open_issues_count":6,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11,"open_issues":6,"watchers":12,"default_branch":"master"}},"base":{"label":"tablexi:master","ref":"master","sha":"b9df8dc8ca11cbcde836c883c4ac6d3ae39139cd","user":{"login":"tablexi","id":229702,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyOTcwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/229702?v=4","gravatar_id":"","url":"https://api.github.com/users/tablexi","html_url":"https://github.com/tablexi","followers_url":"https://api.github.com/users/tablexi/followers","following_url":"https://api.github.com/users/tablexi/following{/other_user}","gists_url":"https://api.github.com/users/tablexi/gists{/gist_id}","starred_url":"https://api.github.com/users/tablexi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tablexi/subscriptions","organizations_url":"https://api.github.com/users/tablexi/orgs","repos_url":"https://api.github.com/users/tablexi/repos","events_url":"https://api.github.com/users/tablexi/events{/privacy}","received_events_url":"https://api.github.com/users/tablexi/received_events","type":"Organization","site_admin":false},"repo":{"id":1439473,"node_id":"MDEwOlJlcG9zaXRvcnkxNDM5NDcz","name":"nucore-open","full_name":"tablexi/nucore-open","private":false,"owner":{"login":"tablexi","id":229702,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyOTcwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/229702?v=4","gravatar_id":"","url":"https://api.github.com/users/tablexi","html_url":"https://github.com/tablexi","followers_url":"https://api.github.com/users/tablexi/followers","following_url":"https://api.github.com/users/tablexi/following{/other_user}","gists_url":"https://api.github.com/users/tablexi/gists{/gist_id}","starred_url":"https://api.github.com/users/tablexi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tablexi/subscriptions","organizations_url":"https://api.github.com/users/tablexi/orgs","repos_url":"https://api.github.com/users/tablexi/repos","events_url":"https://api.github.com/users/tablexi/events{/privacy}","received_events_url":"https://api.github.com/users/tablexi/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/tablexi/nucore-open","description":"Northwestern University Core Facility Management Software (NUCore)","fork":false,"url":"https://api.github.com/repos/tablexi/nucore-open","forks_url":"https://api.github.com/repos/tablexi/nucore-open/forks","keys_url":"https://api.github.com/repos/tablexi/nucore-open/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tablexi/nucore-open/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tablexi/nucore-open/teams","hooks_url":"https://api.github.com/repos/tablexi/nucore-open/hooks","issue_events_url":"https://api.github.com/repos/tablexi/nucore-open/issues/events{/number}","events_url":"https://api.github.com/repos/tablexi/nucore-open/events","assignees_url":"https://api.github.com/repos/tablexi/nucore-open/assignees{/user}","branches_url":"https://api.github.com/repos/tablexi/nucore-open/branches{/branch}","tags_url":"https://api.github.com/repos/tablexi/nucore-open/tags","blobs_url":"https://api.github.com/repos/tablexi/nucore-open/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tablexi/nucore-open/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tablexi/nucore-open/git/refs{/sha}","trees_url":"https://api.github.com/repos/tablexi/nucore-open/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tablexi/nucore-open/statuses/{sha}","languages_url":"https://api.github.com/repos/tablexi/nucore-open/languages","stargazers_url":"https://api.github.com/repos/tablexi/nucore-open/stargazers","contributors_url":"https://api.github.com/repos/tablexi/nucore-open/contributors","subscribers_url":"https://api.github.com/repos/tablexi/nucore-open/subscribers","subscription_url":"https://api.github.com/repos/tablexi/nucore-open/subscription","commits_url":"https://api.github.com/repos/tablexi/nucore-open/commits{/sha}","git_commits_url":"https://api.github.com/repos/tablexi/nucore-open/git/commits{/sha}","comments_url":"https://api.github.com/repos/tablexi/nucore-open/comments{/number}","issue_comment_url":"https://api.github.com/repos/tablexi/nucore-open/issues/comments{/number}","contents_url":"https://api.github.com/repos/tablexi/nucore-open/contents/{+path}","compare_url":"https://api.github.com/repos/tablexi/nucore-open/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tablexi/nucore-open/merges","archive_url":"https://api.github.com/repos/tablexi/nucore-open/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tablexi/nucore-open/downloads","issues_url":"https://api.github.com/repos/tablexi/nucore-open/issues{/number}","pulls_url":"https://api.github.com/repos/tablexi/nucore-open/pulls{/number}","milestones_url":"https://api.github.com/repos/tablexi/nucore-open/milestones{/number}","notifications_url":"https://api.github.com/repos/tablexi/nucore-open/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tablexi/nucore-open/labels{/name}","releases_url":"https://api.github.com/repos/tablexi/nucore-open/releases{/id}","deployments_url":"https://api.github.com/repos/tablexi/nucore-open/deployments","created_at":"2011-03-04T13:45:37Z","updated_at":"2018-11-05T20:11:11Z","pushed_at":"2018-11-05T21:20:45Z","git_url":"git://github.com/tablexi/nucore-open.git","ssh_url":"git@github.com:tablexi/nucore-open.git","clone_url":"https://github.com/tablexi/nucore-open.git","svn_url":"https://github.com/tablexi/nucore-open","homepage":"","size":74325,"stargazers_count":12,"watchers_count":12,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"archived":false,"open_issues_count":6,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11,"open_issues":6,"watchers":12,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/tablexi/nucore-open/pulls/1759"},"html":{"href":"https://github.com/tablexi/nucore-open/pull/1759"},"issue":{"href":"https://api.github.com/repos/tablexi/nucore-open/issues/1759"},"comments":{"href":"https://api.github.com/repos/tablexi/nucore-open/issues/1759/comments"},"review_comments":{"href":"https://api.github.com/repos/tablexi/nucore-open/pulls/1759/comments"},"review_comment":{"href":"https://api.github.com/repos/tablexi/nucore-open/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/tablexi/nucore-open/pulls/1759/commits"},"statuses":{"href":"https://api.github.com/repos/tablexi/nucore-open/statuses/0b5b07abde91e35f59ba4260ca79ee406d15eb86"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":4,"additions":251,"deletions":101,"changed_files":15}}
{"actor":{"display_login":"jhanggi"}}