{"action":"created","issue":{"url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3397","labels_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3397/labels{/name}","comments_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3397/comments","events_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3397/events","html_url":"https://github.com/CenterForOpenScience/osf.io/pull/3397","id":92187162,"number":3397,"title":"[feature] publicly editable wiki","user":{"login":"geeksnglitter","id":7839433,"avatar_url":"https://avatars.githubusercontent.com/u/7839433?v=3","gravatar_id":"","url":"https://api.github.com/users/geeksnglitter","html_url":"https://github.com/geeksnglitter","followers_url":"https://api.github.com/users/geeksnglitter/followers","following_url":"https://api.github.com/users/geeksnglitter/following{/other_user}","gists_url":"https://api.github.com/users/geeksnglitter/gists{/gist_id}","starred_url":"https://api.github.com/users/geeksnglitter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geeksnglitter/subscriptions","organizations_url":"https://api.github.com/users/geeksnglitter/orgs","repos_url":"https://api.github.com/users/geeksnglitter/repos","events_url":"https://api.github.com/users/geeksnglitter/events{/privacy}","received_events_url":"https://api.github.com/users/geeksnglitter/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-06-30T20:07:35Z","updated_at":"2015-07-08T14:50:17Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/CenterForOpenScience/osf.io/pulls/3397","html_url":"https://github.com/CenterForOpenScience/osf.io/pull/3397","diff_url":"https://github.com/CenterForOpenScience/osf.io/pull/3397.diff","patch_url":"https://github.com/CenterForOpenScience/osf.io/pull/3397.patch"},"body":"Purpose\r\n-------------------\r\nThis feature adds the ability to make wikis for nodes to be made publicly editable. This allows any logged in user to edit said wiki. This allows admins to make their wikis accessible to users of whom they may not know the contact information.\r\n\r\nChanges\r\n--------------------\r\nA flag was added to the wiki_settings stored object (similar to the is_public for projects) to keep track of wiki edit-ability. A wiki settings panel was added to the project settings page. This panel was modeled closely after Saman's comment notifications model.\r\nA slight change was made to the must_have_permission decorator. It does not affect its other uses, but allows for easy checking of wiki permissions with little code repetition.\r\n\r\nTODO\r\n-------------------\r\n- [x] Add tests\r\n- [x] Add confirmation modal\r\n\r\n\r\n*Notes:*\r\nThere were some parts of implementation of which I was unsure.\r\nWhen reviewing, one might want to pay special attention to:\r\n- I added a 'wiki' flag to the must_have_permission decorator. This does not affect the functionality of the decorator, but there may be a better-suited place for this functionality. \r\n- I am unsure of some of my exception usage. Which exceptions to use and how they should be handled, is not as clear as it should be. Exception usage in the definitions of set_editing, get_wiki_permission,  and edit_wiki_permissions are my main concerns.\r\n- On a related note, if logging fails due to the node not being passed to set_editing, an exception is raised and the processes is stopped. Theoretically the permissions should be able to be changed even if logging fails, but there should never be a time when one asks for logging but does not pass a node object. Should this exception be handled differently?.\r\n- In set_editing, I was also unsure about when to save my node and my wiki_settings object.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/comments/119610007","html_url":"https://github.com/CenterForOpenScience/osf.io/pull/3397#issuecomment-119610007","issue_url":"https://api.github.com/repos/CenterForOpenScience/osf.io/issues/3397","id":119610007,"user":{"login":"GaryKriebel","id":9437946,"avatar_url":"https://avatars.githubusercontent.com/u/9437946?v=3","gravatar_id":"","url":"https://api.github.com/users/GaryKriebel","html_url":"https://github.com/GaryKriebel","followers_url":"https://api.github.com/users/GaryKriebel/followers","following_url":"https://api.github.com/users/GaryKriebel/following{/other_user}","gists_url":"https://api.github.com/users/GaryKriebel/gists{/gist_id}","starred_url":"https://api.github.com/users/GaryKriebel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GaryKriebel/subscriptions","organizations_url":"https://api.github.com/users/GaryKriebel/orgs","repos_url":"https://api.github.com/users/GaryKriebel/repos","events_url":"https://api.github.com/users/GaryKriebel/events{/privacy}","received_events_url":"https://api.github.com/users/GaryKriebel/received_events","type":"User","site_admin":false},"created_at":"2015-07-08T14:50:17Z","updated_at":"2015-07-08T14:50:17Z","body":"@lyndsysimon ... this is good to review"}}