{"action":"created","comment":{"url":"https://api.github.com/repos/hydroshare/hydroshare/pulls/comments/236892539","pull_request_review_id":179065955,"id":236892539,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNjg5MjUzOQ==","diff_hunk":"@@ -346,7 +346,7 @@ def test_copy_composite_resource(self):\n         # add some key value metadata\n         orig_geo_raster_lfo.metadata.extra_metadata = {'key-1': 'value-1', 'key-2': 'value-2'}\n \n-        # create a copy fo the composite resource\n+        # create a copy of the composite resource","path":"hs_core/tests/api/native/test_copy_resource.py","position":5,"original_position":5,"commit_id":"7f2ac08febd24550e33559cbe056fe2b010b94fe","original_commit_id":"7f2ac08febd24550e33559cbe056fe2b010b94fe","user":{"login":"sblack-usu","id":35820390,"node_id":"MDQ6VXNlcjM1ODIwMzkw","avatar_url":"https://avatars1.githubusercontent.com/u/35820390?v=4","gravatar_id":"","url":"https://api.github.com/users/sblack-usu","html_url":"https://github.com/sblack-usu","followers_url":"https://api.github.com/users/sblack-usu/followers","following_url":"https://api.github.com/users/sblack-usu/following{/other_user}","gists_url":"https://api.github.com/users/sblack-usu/gists{/gist_id}","starred_url":"https://api.github.com/users/sblack-usu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sblack-usu/subscriptions","organizations_url":"https://api.github.com/users/sblack-usu/orgs","repos_url":"https://api.github.com/users/sblack-usu/repos","events_url":"https://api.github.com/users/sblack-usu/events{/privacy}","received_events_url":"https://api.github.com/users/sblack-usu/received_events","type":"User","site_admin":false},"body":"this is the important work","created_at":"2018-11-27T23:47:36Z","updated_at":"2018-11-27T23:47:36Z","html_url":"https://github.com/hydroshare/hydroshare/pull/2958#discussion_r236892539","pull_request_url":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/hydroshare/hydroshare/pulls/comments/236892539"},"html":{"href":"https://github.com/hydroshare/hydroshare/pull/2958#discussion_r236892539"},"pull_request":{"href":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958"}}},"pull_request":{"url":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958","id":225237746,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI1MjM3NzQ2","html_url":"https://github.com/hydroshare/hydroshare/pull/2958","diff_url":"https://github.com/hydroshare/hydroshare/pull/2958.diff","patch_url":"https://github.com/hydroshare/hydroshare/pull/2958.patch","issue_url":"https://api.github.com/repos/hydroshare/hydroshare/issues/2958","number":2958,"state":"open","locked":false,"title":"2808 file set aggregation","user":{"login":"pkdash","id":2523434,"node_id":"MDQ6VXNlcjI1MjM0MzQ=","avatar_url":"https://avatars2.githubusercontent.com/u/2523434?v=4","gravatar_id":"","url":"https://api.github.com/users/pkdash","html_url":"https://github.com/pkdash","followers_url":"https://api.github.com/users/pkdash/followers","following_url":"https://api.github.com/users/pkdash/following{/other_user}","gists_url":"https://api.github.com/users/pkdash/gists{/gist_id}","starred_url":"https://api.github.com/users/pkdash/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pkdash/subscriptions","organizations_url":"https://api.github.com/users/pkdash/orgs","repos_url":"https://api.github.com/users/pkdash/repos","events_url":"https://api.github.com/users/pkdash/events{/privacy}","received_events_url":"https://api.github.com/users/pkdash/received_events","type":"User","site_admin":false},"body":"<!--\r\n\r\nPlease read, and add your text at the bottom of this message.\r\n\r\nThanks for contributing code to HydroShare. In order to maintain code quality and expedite this process, please assist the development team by making sure the following is present in this pull request.\r\n\r\nFor more information, see https://docs.google.com/document/d/1dzxqlZW5fKNEyQSeKiSFq-SmS-VOPCva95XXkBjPExs\r\n\r\n-->\r\n\r\n### Pull Request Checklist: \r\n- [x] Positive Test Case Written by Dev\r\n\r\n<!-- Enter steps that a QA engineer, stakeholder, or user documentation writer would follow to test the positive or \"successful\" case of the functionality your code provides or fixes -->\r\n\r\n- [x] Automated Testing\r\n\r\n<!-- Our Jenkins Instance is set up to automatically test every commit from a pull request. Code coverage must not decrease so new functionality or code paths added during a bug fix must have appropriate tests written. Every test must pass, including PEP8 code formatting tests. -->\r\n\r\n- [ ] Sufficient User and Developer Documentation\r\n\r\n<!-- Please email your positive test case lbrazil@cuahsi.org, who will make the decision regarding user documentation. -->\r\n\r\n- [x] Passing Jenkins Build\r\n\r\n<!-- Our Jenkins Instance is set up to automatically test every commit from a pull request. Every test must pass, including PEP8 code formatting tests. -->\r\n\r\n- [ ] Peer Code review and approval\r\n\r\n<!-- This is the process by which a peer developer on the HydroShare team will read the changeset, provide feedback, and ultimately give a formal approval to the code before it passes PR status. -->\r\n\r\n### Positive Test Case (Use testservices.hydroshare.org for testing)\r\n1. **File set aggregation**: This aggregation type allows adding metadata to a folder. File set aggregation is always set by the user. A folder must contain one ore more resource files or other aggregation(s) before metadata can be added to that folder. The file set metadata is same as that of the single file aggregation metadata (title, keywords, key/value metadata, temporal coverage and spatial coverage).\r\n2. **Creating a file set aggregation from a folder that contains one ore more resource files**: Create a folder in a composite resource. Upload any text file to that folder. Right click on the folder and select the option \"Add metadata to folder\". The folder should be set to file set aggregation - folder icon will be replaced with the file set icon (green folder). Click the file set folder, and select the \"Content Metadata' tab. You should see the 'title' metadata for the aggregation has been set to the folder name.  If you open the file set aggregation folder you should see the files that are part of this aggregation.\r\n3. **Creating a file set aggregation from a folder that contains other aggregations**: Create a folder in a composite resource. Upload any file to that folder. Make sure not to upload files that are suitable for auto aggregation generation.  Then upload a netcdf file or a raster file to that folder. System should generate an appropriate aggregation from the netcdf or raster file. At this point the folder that you created should contain a netcdf or raster aggregation. Right click on the folder and select option 'Add metadata to folder'. Folder should be set to file set aggregation. If you open the file set aggregation folder you should see the files that you uploaded to this folder as well as the netcdf or raster aggregation.\r\n4. **Creating folders inside a file set aggregation**: Create a file set aggregation (follow test case#2). Open the file set aggregation folder. Now create a folder inside the file set aggregation. Upload any file (file that's not suitable for auto aggregation creation) into this new folder. This uploaded file should be part of the file set aggregation. This can be verified by hovering over the file to see the tooltip.\r\n5. **Creating nested file set aggregations**: Assuming you have completed the test case#4, right click on the folder that you created in test case#4, and select the option 'Add metadata to folder'. The folder should be set to file set aggregation. You now have a file set aggregation inside another file set aggregation.\r\n6. **Uploading a file to a folder that represents a file set aggregation**: Follow test case#2 to create a file set aggregation. Upload any file (file that's not suitable for auto aggregation creation) into the file set aggregation folder. The uploaded file will be part of the file set aggregation.\r\n7. **Auto aggregation creation inside a file set aggregation**: Follow test case#2 to create a file set aggregation. Upload a file that's suitable for auto aggregation creation into the file set aggregation folder. Verify that a new aggregation has been created inside the file set aggregation folder.\r\n8. **Move a file into a file set aggregation folder**: Upload a file (file that's not suitable for auto aggregation creation) to the root folder. Then move this file into a file set aggregation folder. The moved file should become part of the file set aggregation. \r\n9. **Move a file out of the file set aggregation folder**: Assuming test case#8 has been completed, move the file from the file set aggregation folder to the root folder. Once move out of the file set aggregation, this file should not be part of the file set aggregation. \r\n10. **Move an aggregation into the file set aggregation**: Upload any file that is suitable for auto aggregation creation into the root folder. Once a new aggregation has been created, move that aggregation to a file set aggregation. Verify that the aggregation now exists inside the file set aggregation.\r\n11. **Move an aggregation out of file set aggregation**: Assuming test case#10 has been completed, move the aggregation out of the file set aggregation to the root folder or another folder.\r\n12. **Rename file set aggregation**: Follow test case#2 to create a file set aggregation. Right click on file set aggregation/folder and select option to 'Rename'. Enter a new name for the aggregation. Verify that the aggregation name got changed. Follow test case#5 to create nested file set aggregations. Verify that you can change aggregation name for both parent file set aggregation and child file set aggregation.\r\n13. **Download file set aggregation**: Follow test case#2 to create a file set aggregation. Right click on file set aggregation and select option 'Download zipped'. Verify that the downloaded zip file contains the aggregation content files as well as two additional xml files. Try downloading a nested file set aggregation - do two separate downloads. One for the parent aggregation and the other for the child aggregation. Verify the contents of the downloaded zip files. The downloaded zip file of the parent aggregation should have content files both for the parent aggregation as well as the child aggregation. It should also contain the aggregation level xml files both for the parent aggregation and the child aggregation. \r\n14. **Using map interface for editing aggregation level spatial coverage**: Aggregation for which editing of spatial coverage is allowed (e.g., file set, single file, netcdf etc), you can now use google map interface (similar to resource level spatial coverage map) to define the extent of the coverage. When you click the button with map icon (that appears to the right of each of the text fields for coverage data entry), you should see a popup map dialog box where you can select the coverage area. Once the coverage is selected in this dialog box, select the \"Confirm' button. This should close the dialog box and fill the appropriate coverage data fields with data for the coverage extent. Select the 'Save changes' button to save the new coverage data for the aggregation.\r\n15. **File set aggregation level coverage auto update**: If a file set aggregation doesn't have data for either for the temporal coverage or spatial coverage, then the system will set coverage data for the file set any time one of its contained aggregations found to have the coverage data.  Create a file set aggregation as per test case#2. Verify that the fie set aggregation does not have temporal or spatial coverage. Create a single file aggregation at the root level. Move the single file aggregation into the file set aggregation folder. Verify the file set aggregation still does not have coverage data. Edit metadata for the single file aggregation (which exists inside the file set folder) and create temporal coverage. After you save temporal coverage for the file set aggregation, verify that the file set aggregation now has temporal coverage - which should be same as that of the contained single file aggregation. Similarly you can test for file set spatial coverage auto update. If you now change either the temporal coverage or spatial coverage of the single file aggregation, it won't change coverage data of the file set aggregation. \r\n16. **Updating file set coverage from contained aggregations**: As it relates to updating coverage for a file set from its contained aggregations any nested aggregations are excluded from computing the coverage for the file set. Create a single file aggregation at the root level. Edit the metadata for the single file aggregation to set spatial coverage and temporal coverage. Create a file set aggregation. At this point the file set aggregation should not have spatial or temporal coverage. Move the single file aggregation into this file set aggregation folder. Go to file set metadata edit mode. You should now see options to update file set spatial coverage and temporal coverage from folder contents. (Note: These options to update coverage from the folder contents will be available only if any of the contained aggregations has the corresponding coverage data). Select these coverage update options and verify that the spatial coverage and temporal coverage of file set become same as that of the contained single file aggregation.  Edit the file set coverage to some different values and save the changes. Again use the update options to update file set coverage from contained aggregations. Verify the updated values are correct. Make changes to the single file aggregation coverage. Then try to update the coverage for the file set aggregation that contains the single file aggregation.\r\n     - **Updating coverage of file set aggregation for nested file set aggregations**: Create a nested file set aggregation. Make sure the parent file set aggregation contains one more aggregation in addition to the child file set aggregation. Also the child file set aggregation needs to contain one more other type of aggregations.  Try updating the coverage for the child file set aggregation using the options \"Set spatial coverage from folder contents' and \"Set temporal coverage from folder contents\".  Similarly try updating the coverage for the parent file set.  Now change the coverage for any aggregations contained within the child file set aggregation. Now if you try to update the coverage for the parent file set aggregation, the coverage should remain unchanged. Update the coverage for the child file set. You should see new coverage values for the child file set. If you now update the coverage for the parent file set, you should see new coverage values. \r\n17. **Updating resource coverage from content files**: Here content files refer to aggregations that exist in the resource. When you use the options to update coverage from the content files, the coverage for the resource is computed from aggregations excluding any nested aggregations - that means only the aggregation that exist at the root folder level (/data/contents/). Assuming nested aggregations have been created as per test case#16, try updating resource level coverage after each time you change coverage for a root level aggregation or a nested aggregation.\r\n18. **Deleting coverage for single file aggregation**: Create a single file aggregation by uploading any file that is not suitable for auto aggregation creation (e.g., text file) at the root level. In edit mode, right click on the file and select the option \"Add metadata to file'. This should create a single file aggregation. Edit metadata for this aggregation and add temporal and spatial coverage to this aggregation. Once you have added temporal or spatial coverage, you should see a delete option (trash can) for each of the coverage types. Click the delete button for the specific coverage type and verify that the coverage data got deleted. \r\n19. **Deleting coverage for file set aggregation**: The functionality for deleting coverage for a file set aggregation is same as described for single file aggregation in test case#18. \r\n20. **Deleting coverage for the composite resource**: In resource edit mode if you see there is temporal coverage and/or spatial coverage data for the resource, you should see an option to delete (trash can) that coverage. Use the coverage delete option to delete coverage data for the resource and verify that coverage got deleted.\r\n21. **Deleting contents of a file set aggregation**: Create folder at the root level. Upload two files (e.g., text files) that are not suitable for auto aggregation creation into this folder. Set this folder to file set aggregation. Open this folder and you should see the two files you uploaded. Delete one of the files. Verify that the file set aggregation now has one file. Delete the other file of the file set and verify that file set aggregation has no files.  Deleting aggregations that are part of a file set has the same results as that of deleting files of a file set.  \r\n22. **Remove file set aggregation**: Create a file set aggregation containing one or more text files. In edit mode, right click on the file set aggregation folder and select option 'Remove content type'. You will be prompted to confirm removal of content type. Selecting 'Remove' at this prompt should remove file set aggregation and the folder will be displayed as a normal folder. The folder should still contain the text files that you uploaded to the folder. **Note:** When you remove content type, any metadata associated with that aggregation will be lost. To test removal of content type for a nested file set aggregation, create a sub-folder inside the file set folder. Upload one or more text files to this sub folder. Make the sub-folder a file set aggregation. Then make the parent folder a file set aggregation. Navigate to the sub-folder, right click on the sub-folder and select option 'Remove content type' - sub-folder should become a normal folder. The files in the sub-folder should now be part of the file set aggregation - that is the parent folder. \r\n23. **Delete file set aggregation**: You should be able to delete any file set aggregation that you have created in any of the above test cases. Right click on a file set aggregation that you want to delete and select the option 'Delete'. \r\n24. **Creating single file aggregation inside a file set aggregation**: You can create a single file aggregation using any file that's part of a file set aggregation. Create a file set aggregation from a folder that contains one text file. In resource edit mode, open the file set folder and you should see the text file that's part of the file set aggregation. Right click on this text file and select option \"Add metadata to file\". The selected text file will become part of a new single file aggregation. You should be able to enter metadata for this file.","created_at":"2018-10-24T01:33:56Z","updated_at":"2018-11-27T23:47:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"76d9b23b95af3920f6a7425053a6ab1f4b2b55c3","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":{"url":"https://api.github.com/repos/hydroshare/hydroshare/milestones/58","html_url":"https://github.com/hydroshare/hydroshare/milestone/58","labels_url":"https://api.github.com/repos/hydroshare/hydroshare/milestones/58/labels","id":3778770,"node_id":"MDk6TWlsZXN0b25lMzc3ODc3MA==","number":58,"title":"Release 1.18","description":"Irods upgrade","creator":{"login":"dtarb","id":3456833,"node_id":"MDQ6VXNlcjM0NTY4MzM=","avatar_url":"https://avatars1.githubusercontent.com/u/3456833?v=4","gravatar_id":"","url":"https://api.github.com/users/dtarb","html_url":"https://github.com/dtarb","followers_url":"https://api.github.com/users/dtarb/followers","following_url":"https://api.github.com/users/dtarb/following{/other_user}","gists_url":"https://api.github.com/users/dtarb/gists{/gist_id}","starred_url":"https://api.github.com/users/dtarb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dtarb/subscriptions","organizations_url":"https://api.github.com/users/dtarb/orgs","repos_url":"https://api.github.com/users/dtarb/repos","events_url":"https://api.github.com/users/dtarb/events{/privacy}","received_events_url":"https://api.github.com/users/dtarb/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":0,"state":"open","created_at":"2018-10-29T20:07:08Z","updated_at":"2018-11-26T22:46:40Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958/commits","review_comments_url":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958/comments","review_comment_url":"https://api.github.com/repos/hydroshare/hydroshare/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hydroshare/hydroshare/issues/2958/comments","statuses_url":"https://api.github.com/repos/hydroshare/hydroshare/statuses/7f2ac08febd24550e33559cbe056fe2b010b94fe","head":{"label":"hydroshare:2808-file-set-aggregation","ref":"2808-file-set-aggregation","sha":"7f2ac08febd24550e33559cbe056fe2b010b94fe","user":{"login":"hydroshare","id":3444493,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NDQ0OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/3444493?v=4","gravatar_id":"","url":"https://api.github.com/users/hydroshare","html_url":"https://github.com/hydroshare","followers_url":"https://api.github.com/users/hydroshare/followers","following_url":"https://api.github.com/users/hydroshare/following{/other_user}","gists_url":"https://api.github.com/users/hydroshare/gists{/gist_id}","starred_url":"https://api.github.com/users/hydroshare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hydroshare/subscriptions","organizations_url":"https://api.github.com/users/hydroshare/orgs","repos_url":"https://api.github.com/users/hydroshare/repos","events_url":"https://api.github.com/users/hydroshare/events{/privacy}","received_events_url":"https://api.github.com/users/hydroshare/received_events","type":"Organization","site_admin":false},"repo":{"id":24703136,"node_id":"MDEwOlJlcG9zaXRvcnkyNDcwMzEzNg==","name":"hydroshare","full_name":"hydroshare/hydroshare","private":false,"owner":{"login":"hydroshare","id":3444493,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NDQ0OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/3444493?v=4","gravatar_id":"","url":"https://api.github.com/users/hydroshare","html_url":"https://github.com/hydroshare","followers_url":"https://api.github.com/users/hydroshare/followers","following_url":"https://api.github.com/users/hydroshare/following{/other_user}","gists_url":"https://api.github.com/users/hydroshare/gists{/gist_id}","starred_url":"https://api.github.com/users/hydroshare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hydroshare/subscriptions","organizations_url":"https://api.github.com/users/hydroshare/orgs","repos_url":"https://api.github.com/users/hydroshare/repos","events_url":"https://api.github.com/users/hydroshare/events{/privacy}","received_events_url":"https://api.github.com/users/hydroshare/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/hydroshare/hydroshare","description":"HydroShare is a collaborative website for better access to data and models in the hydrologic sciences. ","fork":false,"url":"https://api.github.com/repos/hydroshare/hydroshare","forks_url":"https://api.github.com/repos/hydroshare/hydroshare/forks","keys_url":"https://api.github.com/repos/hydroshare/hydroshare/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hydroshare/hydroshare/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hydroshare/hydroshare/teams","hooks_url":"https://api.github.com/repos/hydroshare/hydroshare/hooks","issue_events_url":"https://api.github.com/repos/hydroshare/hydroshare/issues/events{/number}","events_url":"https://api.github.com/repos/hydroshare/hydroshare/events","assignees_url":"https://api.github.com/repos/hydroshare/hydroshare/assignees{/user}","branches_url":"https://api.github.com/repos/hydroshare/hydroshare/branches{/branch}","tags_url":"https://api.github.com/repos/hydroshare/hydroshare/tags","blobs_url":"https://api.github.com/repos/hydroshare/hydroshare/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hydroshare/hydroshare/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hydroshare/hydroshare/git/refs{/sha}","trees_url":"https://api.github.com/repos/hydroshare/hydroshare/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hydroshare/hydroshare/statuses/{sha}","languages_url":"https://api.github.com/repos/hydroshare/hydroshare/languages","stargazers_url":"https://api.github.com/repos/hydroshare/hydroshare/stargazers","contributors_url":"https://api.github.com/repos/hydroshare/hydroshare/contributors","subscribers_url":"https://api.github.com/repos/hydroshare/hydroshare/subscribers","subscription_url":"https://api.github.com/repos/hydroshare/hydroshare/subscription","commits_url":"https://api.github.com/repos/hydroshare/hydroshare/commits{/sha}","git_commits_url":"https://api.github.com/repos/hydroshare/hydroshare/git/commits{/sha}","comments_url":"https://api.github.com/repos/hydroshare/hydroshare/comments{/number}","issue_comment_url":"https://api.github.com/repos/hydroshare/hydroshare/issues/comments{/number}","contents_url":"https://api.github.com/repos/hydroshare/hydroshare/contents/{+path}","compare_url":"https://api.github.com/repos/hydroshare/hydroshare/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hydroshare/hydroshare/merges","archive_url":"https://api.github.com/repos/hydroshare/hydroshare/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hydroshare/hydroshare/downloads","issues_url":"https://api.github.com/repos/hydroshare/hydroshare/issues{/number}","pulls_url":"https://api.github.com/repos/hydroshare/hydroshare/pulls{/number}","milestones_url":"https://api.github.com/repos/hydroshare/hydroshare/milestones{/number}","notifications_url":"https://api.github.com/repos/hydroshare/hydroshare/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hydroshare/hydroshare/labels{/name}","releases_url":"https://api.github.com/repos/hydroshare/hydroshare/releases{/id}","deployments_url":"https://api.github.com/repos/hydroshare/hydroshare/deployments","created_at":"2014-10-02T02:19:41Z","updated_at":"2018-11-27T19:15:19Z","pushed_at":"2018-11-27T20:14:26Z","git_url":"git://github.com/hydroshare/hydroshare.git","ssh_url":"git@github.com:hydroshare/hydroshare.git","clone_url":"https://github.com/hydroshare/hydroshare.git","svn_url":"https://github.com/hydroshare/hydroshare","homepage":"https://www.hydroshare.org","size":228016,"stargazers_count":63,"watchers_count":63,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":13,"mirror_url":null,"archived":false,"open_issues_count":459,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":13,"open_issues":459,"watchers":63,"default_branch":"develop"}},"base":{"label":"hydroshare:develop","ref":"develop","sha":"a781c91b81f380d82c25b9309e5f5637121ac97f","user":{"login":"hydroshare","id":3444493,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NDQ0OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/3444493?v=4","gravatar_id":"","url":"https://api.github.com/users/hydroshare","html_url":"https://github.com/hydroshare","followers_url":"https://api.github.com/users/hydroshare/followers","following_url":"https://api.github.com/users/hydroshare/following{/other_user}","gists_url":"https://api.github.com/users/hydroshare/gists{/gist_id}","starred_url":"https://api.github.com/users/hydroshare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hydroshare/subscriptions","organizations_url":"https://api.github.com/users/hydroshare/orgs","repos_url":"https://api.github.com/users/hydroshare/repos","events_url":"https://api.github.com/users/hydroshare/events{/privacy}","received_events_url":"https://api.github.com/users/hydroshare/received_events","type":"Organization","site_admin":false},"repo":{"id":24703136,"node_id":"MDEwOlJlcG9zaXRvcnkyNDcwMzEzNg==","name":"hydroshare","full_name":"hydroshare/hydroshare","private":false,"owner":{"login":"hydroshare","id":3444493,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NDQ0OTM=","avatar_url":"https://avatars1.githubusercontent.com/u/3444493?v=4","gravatar_id":"","url":"https://api.github.com/users/hydroshare","html_url":"https://github.com/hydroshare","followers_url":"https://api.github.com/users/hydroshare/followers","following_url":"https://api.github.com/users/hydroshare/following{/other_user}","gists_url":"https://api.github.com/users/hydroshare/gists{/gist_id}","starred_url":"https://api.github.com/users/hydroshare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hydroshare/subscriptions","organizations_url":"https://api.github.com/users/hydroshare/orgs","repos_url":"https://api.github.com/users/hydroshare/repos","events_url":"https://api.github.com/users/hydroshare/events{/privacy}","received_events_url":"https://api.github.com/users/hydroshare/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/hydroshare/hydroshare","description":"HydroShare is a collaborative website for better access to data and models in the hydrologic sciences. ","fork":false,"url":"https://api.github.com/repos/hydroshare/hydroshare","forks_url":"https://api.github.com/repos/hydroshare/hydroshare/forks","keys_url":"https://api.github.com/repos/hydroshare/hydroshare/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hydroshare/hydroshare/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hydroshare/hydroshare/teams","hooks_url":"https://api.github.com/repos/hydroshare/hydroshare/hooks","issue_events_url":"https://api.github.com/repos/hydroshare/hydroshare/issues/events{/number}","events_url":"https://api.github.com/repos/hydroshare/hydroshare/events","assignees_url":"https://api.github.com/repos/hydroshare/hydroshare/assignees{/user}","branches_url":"https://api.github.com/repos/hydroshare/hydroshare/branches{/branch}","tags_url":"https://api.github.com/repos/hydroshare/hydroshare/tags","blobs_url":"https://api.github.com/repos/hydroshare/hydroshare/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hydroshare/hydroshare/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hydroshare/hydroshare/git/refs{/sha}","trees_url":"https://api.github.com/repos/hydroshare/hydroshare/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hydroshare/hydroshare/statuses/{sha}","languages_url":"https://api.github.com/repos/hydroshare/hydroshare/languages","stargazers_url":"https://api.github.com/repos/hydroshare/hydroshare/stargazers","contributors_url":"https://api.github.com/repos/hydroshare/hydroshare/contributors","subscribers_url":"https://api.github.com/repos/hydroshare/hydroshare/subscribers","subscription_url":"https://api.github.com/repos/hydroshare/hydroshare/subscription","commits_url":"https://api.github.com/repos/hydroshare/hydroshare/commits{/sha}","git_commits_url":"https://api.github.com/repos/hydroshare/hydroshare/git/commits{/sha}","comments_url":"https://api.github.com/repos/hydroshare/hydroshare/comments{/number}","issue_comment_url":"https://api.github.com/repos/hydroshare/hydroshare/issues/comments{/number}","contents_url":"https://api.github.com/repos/hydroshare/hydroshare/contents/{+path}","compare_url":"https://api.github.com/repos/hydroshare/hydroshare/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hydroshare/hydroshare/merges","archive_url":"https://api.github.com/repos/hydroshare/hydroshare/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hydroshare/hydroshare/downloads","issues_url":"https://api.github.com/repos/hydroshare/hydroshare/issues{/number}","pulls_url":"https://api.github.com/repos/hydroshare/hydroshare/pulls{/number}","milestones_url":"https://api.github.com/repos/hydroshare/hydroshare/milestones{/number}","notifications_url":"https://api.github.com/repos/hydroshare/hydroshare/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hydroshare/hydroshare/labels{/name}","releases_url":"https://api.github.com/repos/hydroshare/hydroshare/releases{/id}","deployments_url":"https://api.github.com/repos/hydroshare/hydroshare/deployments","created_at":"2014-10-02T02:19:41Z","updated_at":"2018-11-27T19:15:19Z","pushed_at":"2018-11-27T20:14:26Z","git_url":"git://github.com/hydroshare/hydroshare.git","ssh_url":"git@github.com:hydroshare/hydroshare.git","clone_url":"https://github.com/hydroshare/hydroshare.git","svn_url":"https://github.com/hydroshare/hydroshare","homepage":"https://www.hydroshare.org","size":228016,"stargazers_count":63,"watchers_count":63,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":13,"mirror_url":null,"archived":false,"open_issues_count":459,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":13,"open_issues":459,"watchers":63,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958"},"html":{"href":"https://github.com/hydroshare/hydroshare/pull/2958"},"issue":{"href":"https://api.github.com/repos/hydroshare/hydroshare/issues/2958"},"comments":{"href":"https://api.github.com/repos/hydroshare/hydroshare/issues/2958/comments"},"review_comments":{"href":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958/comments"},"review_comment":{"href":"https://api.github.com/repos/hydroshare/hydroshare/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hydroshare/hydroshare/pulls/2958/commits"},"statuses":{"href":"https://api.github.com/repos/hydroshare/hydroshare/statuses/7f2ac08febd24550e33559cbe056fe2b010b94fe"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"sblack-usu"}}