{"action":"closed","number":87,"pull_request":{"url":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/87","id":85125970,"html_url":"https://github.com/Applied-GeoSolutions/gips/pull/87","diff_url":"https://github.com/Applied-GeoSolutions/gips/pull/87.diff","patch_url":"https://github.com/Applied-GeoSolutions/gips/pull/87.patch","issue_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/87","number":87,"state":"closed","locked":false,"title":"don't merge - #56 assets & products DB + infrastructure for DB","user":{"login":"ags-tolson","id":19152606,"avatar_url":"https://avatars.githubusercontent.com/u/19152606?v=3","gravatar_id":"","url":"https://api.github.com/users/ags-tolson","html_url":"https://github.com/ags-tolson","followers_url":"https://api.github.com/users/ags-tolson/followers","following_url":"https://api.github.com/users/ags-tolson/following{/other_user}","gists_url":"https://api.github.com/users/ags-tolson/gists{/gist_id}","starred_url":"https://api.github.com/users/ags-tolson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ags-tolson/subscriptions","organizations_url":"https://api.github.com/users/ags-tolson/orgs","repos_url":"https://api.github.com/users/ags-tolson/repos","events_url":"https://api.github.com/users/ags-tolson/events{/privacy}","received_events_url":"https://api.github.com/users/ags-tolson/received_events","type":"User","site_admin":false},"body":"This PR has the full implementation of GIPS Asset inventories in a database via the Django ORM.  It includes Django boilerplate necessary for migrations and configuration, and two models, Asset and Product, that have six fields each (driver, tile, date, etc).  An API sits between this model and GIPS proper.  An environment variable, GIPS_ORM, controls whether GIPS uses the DB or the filesystem for this purpose (defaults to using the DB).  This is to fix issue #56.\r\n\r\nThe major structural changes are:\r\n* `mkdir gips/inventory/ && mv inventory.py inventory/__init__.py`\r\n* Add django project & app to `gips/inventory/`\r\n* Put the API under `gips/inventory/dbinv/api.py` and available via `gips.inventory.dbinv`; note weird inline imports due to weirdness in Django.\r\n* Initializing the system & detecting if DB inventory is desired is done in `gips/inventory/orm/__init__.py` by calls.\r\n* Alter DataInventory so it constructs everything under (Tiles, Data, Asset) by querying the DB then building the hierarchy and assigning things as it iterates through the query results.\r\n* Some parts of the underlying classes (Tiles, Data, Asset) had to be altered to accomodate this.  In some cases they could be simplified.\r\n\r\nOther notable info:\r\n* The way tests are selected has changed; see `gips/test/README.md`.\r\n* Refactored `VerboseOut` into `verbose_out`, leaving the original as an alias, and added an option to print to stderr.\r\n* System tests for `gips_archive` are now in place, as are unit tests for the new inventory code.\r\n* `--update` is not fully supported due to #86, but it should work no worse than the FS code does.\r\n* `gips_inventory $DRIVER --rectify` is the way the inventory database does initial memorization of the contents of the filesystem; it can also be used when the filesystem has changed without GIPS knowing about it to update the database.\r\n* Several drivers could not be conveniently made to be compatible with this feature, namely SAR, SAR-Annual, AOD, and MERRA.\r\n* Configure the database inventory with `DATABASES['inventory']` which is read by the Django ORM as if it were a Django project setting.  See the settings template file for a useful default.\r\n\r\nThis is ready to be code-reviewed.  \"Don't merge\" == \"don't merge unless this has been reviewed\".  :shipit: \r\n\r\nFinally note that lots of the Django boilerplate under `gips/inventory/` may be dead code; for speed I left it in place but I could clean it out if desired.  In case we want to turn on the rest of django to be a full web framework it may be handy to have it in place.","created_at":"2016-09-13T21:09:59Z","updated_at":"2016-10-28T18:49:42Z","closed_at":"2016-10-28T18:49:42Z","merged_at":"2016-10-28T18:49:42Z","merge_commit_sha":"c2db29217a87f1477928f8725759b1f1ce637cfc","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/87/commits","review_comments_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/87/comments","review_comment_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/87/comments","statuses_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/statuses/c2db29217a87f1477928f8725759b1f1ce637cfc","head":{"label":"Applied-GeoSolutions:56-assets-and-products","ref":"56-assets-and-products","sha":"c2db29217a87f1477928f8725759b1f1ce637cfc","user":{"login":"Applied-GeoSolutions","id":1416905,"avatar_url":"https://avatars.githubusercontent.com/u/1416905?v=3","gravatar_id":"","url":"https://api.github.com/users/Applied-GeoSolutions","html_url":"https://github.com/Applied-GeoSolutions","followers_url":"https://api.github.com/users/Applied-GeoSolutions/followers","following_url":"https://api.github.com/users/Applied-GeoSolutions/following{/other_user}","gists_url":"https://api.github.com/users/Applied-GeoSolutions/gists{/gist_id}","starred_url":"https://api.github.com/users/Applied-GeoSolutions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Applied-GeoSolutions/subscriptions","organizations_url":"https://api.github.com/users/Applied-GeoSolutions/orgs","repos_url":"https://api.github.com/users/Applied-GeoSolutions/repos","events_url":"https://api.github.com/users/Applied-GeoSolutions/events{/privacy}","received_events_url":"https://api.github.com/users/Applied-GeoSolutions/received_events","type":"Organization","site_admin":false},"repo":{"id":41678315,"name":"gips","full_name":"Applied-GeoSolutions/gips","owner":{"login":"Applied-GeoSolutions","id":1416905,"avatar_url":"https://avatars.githubusercontent.com/u/1416905?v=3","gravatar_id":"","url":"https://api.github.com/users/Applied-GeoSolutions","html_url":"https://github.com/Applied-GeoSolutions","followers_url":"https://api.github.com/users/Applied-GeoSolutions/followers","following_url":"https://api.github.com/users/Applied-GeoSolutions/following{/other_user}","gists_url":"https://api.github.com/users/Applied-GeoSolutions/gists{/gist_id}","starred_url":"https://api.github.com/users/Applied-GeoSolutions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Applied-GeoSolutions/subscriptions","organizations_url":"https://api.github.com/users/Applied-GeoSolutions/orgs","repos_url":"https://api.github.com/users/Applied-GeoSolutions/repos","events_url":"https://api.github.com/users/Applied-GeoSolutions/events{/privacy}","received_events_url":"https://api.github.com/users/Applied-GeoSolutions/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Applied-GeoSolutions/gips","description":"Geospatial Image Processing System","fork":true,"url":"https://api.github.com/repos/Applied-GeoSolutions/gips","forks_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/forks","keys_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/teams","hooks_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/hooks","issue_events_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/events{/number}","events_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/events","assignees_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/assignees{/user}","branches_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/branches{/branch}","tags_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/tags","blobs_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/refs{/sha}","trees_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/statuses/{sha}","languages_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/languages","stargazers_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/stargazers","contributors_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/contributors","subscribers_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/subscribers","subscription_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/subscription","commits_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/commits{/sha}","git_commits_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/commits{/sha}","comments_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/comments{/number}","issue_comment_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/comments{/number}","contents_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/contents/{+path}","compare_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/merges","archive_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/downloads","issues_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues{/number}","pulls_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls{/number}","milestones_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/milestones{/number}","notifications_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/labels{/name}","releases_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/releases{/id}","deployments_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/deployments","created_at":"2015-08-31T13:56:39Z","updated_at":"2016-10-27T18:34:50Z","pushed_at":"2016-10-28T18:49:41Z","git_url":"git://github.com/Applied-GeoSolutions/gips.git","ssh_url":"git@github.com:Applied-GeoSolutions/gips.git","clone_url":"https://github.com/Applied-GeoSolutions/gips.git","svn_url":"https://github.com/Applied-GeoSolutions/gips","homepage":null,"size":29397,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":53,"forks":1,"open_issues":53,"watchers":1,"default_branch":"dev"}},"base":{"label":"Applied-GeoSolutions:dev","ref":"dev","sha":"26bba3876cb7ec3a499752c9c8d8ed00e89e8db8","user":{"login":"Applied-GeoSolutions","id":1416905,"avatar_url":"https://avatars.githubusercontent.com/u/1416905?v=3","gravatar_id":"","url":"https://api.github.com/users/Applied-GeoSolutions","html_url":"https://github.com/Applied-GeoSolutions","followers_url":"https://api.github.com/users/Applied-GeoSolutions/followers","following_url":"https://api.github.com/users/Applied-GeoSolutions/following{/other_user}","gists_url":"https://api.github.com/users/Applied-GeoSolutions/gists{/gist_id}","starred_url":"https://api.github.com/users/Applied-GeoSolutions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Applied-GeoSolutions/subscriptions","organizations_url":"https://api.github.com/users/Applied-GeoSolutions/orgs","repos_url":"https://api.github.com/users/Applied-GeoSolutions/repos","events_url":"https://api.github.com/users/Applied-GeoSolutions/events{/privacy}","received_events_url":"https://api.github.com/users/Applied-GeoSolutions/received_events","type":"Organization","site_admin":false},"repo":{"id":41678315,"name":"gips","full_name":"Applied-GeoSolutions/gips","owner":{"login":"Applied-GeoSolutions","id":1416905,"avatar_url":"https://avatars.githubusercontent.com/u/1416905?v=3","gravatar_id":"","url":"https://api.github.com/users/Applied-GeoSolutions","html_url":"https://github.com/Applied-GeoSolutions","followers_url":"https://api.github.com/users/Applied-GeoSolutions/followers","following_url":"https://api.github.com/users/Applied-GeoSolutions/following{/other_user}","gists_url":"https://api.github.com/users/Applied-GeoSolutions/gists{/gist_id}","starred_url":"https://api.github.com/users/Applied-GeoSolutions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Applied-GeoSolutions/subscriptions","organizations_url":"https://api.github.com/users/Applied-GeoSolutions/orgs","repos_url":"https://api.github.com/users/Applied-GeoSolutions/repos","events_url":"https://api.github.com/users/Applied-GeoSolutions/events{/privacy}","received_events_url":"https://api.github.com/users/Applied-GeoSolutions/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Applied-GeoSolutions/gips","description":"Geospatial Image Processing System","fork":true,"url":"https://api.github.com/repos/Applied-GeoSolutions/gips","forks_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/forks","keys_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/teams","hooks_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/hooks","issue_events_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/events{/number}","events_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/events","assignees_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/assignees{/user}","branches_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/branches{/branch}","tags_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/tags","blobs_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/refs{/sha}","trees_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/statuses/{sha}","languages_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/languages","stargazers_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/stargazers","contributors_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/contributors","subscribers_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/subscribers","subscription_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/subscription","commits_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/commits{/sha}","git_commits_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/git/commits{/sha}","comments_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/comments{/number}","issue_comment_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/comments{/number}","contents_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/contents/{+path}","compare_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/merges","archive_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/downloads","issues_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues{/number}","pulls_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls{/number}","milestones_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/milestones{/number}","notifications_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/labels{/name}","releases_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/releases{/id}","deployments_url":"https://api.github.com/repos/Applied-GeoSolutions/gips/deployments","created_at":"2015-08-31T13:56:39Z","updated_at":"2016-10-27T18:34:50Z","pushed_at":"2016-10-28T18:49:41Z","git_url":"git://github.com/Applied-GeoSolutions/gips.git","ssh_url":"git@github.com:Applied-GeoSolutions/gips.git","clone_url":"https://github.com/Applied-GeoSolutions/gips.git","svn_url":"https://github.com/Applied-GeoSolutions/gips","homepage":null,"size":29397,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":53,"forks":1,"open_issues":53,"watchers":1,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/87"},"html":{"href":"https://github.com/Applied-GeoSolutions/gips/pull/87"},"issue":{"href":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/87"},"comments":{"href":"https://api.github.com/repos/Applied-GeoSolutions/gips/issues/87/comments"},"review_comments":{"href":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/87/comments"},"review_comment":{"href":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Applied-GeoSolutions/gips/pulls/87/commits"},"statuses":{"href":"https://api.github.com/repos/Applied-GeoSolutions/gips/statuses/c2db29217a87f1477928f8725759b1f1ce637cfc"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"ircwaves","id":9936909,"avatar_url":"https://avatars.githubusercontent.com/u/9936909?v=3","gravatar_id":"","url":"https://api.github.com/users/ircwaves","html_url":"https://github.com/ircwaves","followers_url":"https://api.github.com/users/ircwaves/followers","following_url":"https://api.github.com/users/ircwaves/following{/other_user}","gists_url":"https://api.github.com/users/ircwaves/gists{/gist_id}","starred_url":"https://api.github.com/users/ircwaves/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ircwaves/subscriptions","organizations_url":"https://api.github.com/users/ircwaves/orgs","repos_url":"https://api.github.com/users/ircwaves/repos","events_url":"https://api.github.com/users/ircwaves/events{/privacy}","received_events_url":"https://api.github.com/users/ircwaves/received_events","type":"User","site_admin":false},"comments":2,"review_comments":10,"commits":63,"additions":2048,"deletions":223,"changed_files":55}}
{"actor":{"display_login":"ircwaves"}}