{"action":"created","issue":{"url":"https://api.github.com/repos/DirectEmployers/MyJobs/issues/2006","labels_url":"https://api.github.com/repos/DirectEmployers/MyJobs/issues/2006/labels{/name}","comments_url":"https://api.github.com/repos/DirectEmployers/MyJobs/issues/2006/comments","events_url":"https://api.github.com/repos/DirectEmployers/MyJobs/issues/2006/events","html_url":"https://github.com/DirectEmployers/MyJobs/pull/2006","id":125252993,"number":2006,"title":"[PD-1383] New Datasources","user":{"login":"darrint","id":108186,"avatar_url":"https://avatars.githubusercontent.com/u/108186?v=3","gravatar_id":"","url":"https://api.github.com/users/darrint","html_url":"https://github.com/darrint","followers_url":"https://api.github.com/users/darrint/followers","following_url":"https://api.github.com/users/darrint/following{/other_user}","gists_url":"https://api.github.com/users/darrint/gists{/gist_id}","starred_url":"https://api.github.com/users/darrint/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darrint/subscriptions","organizations_url":"https://api.github.com/users/darrint/orgs","repos_url":"https://api.github.com/users/darrint/repos","events_url":"https://api.github.com/users/darrint/events{/privacy}","received_events_url":"https://api.github.com/users/darrint/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2016-01-06T20:11:07Z","updated_at":"2016-01-19T20:15:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/DirectEmployers/MyJobs/pulls/2006","html_url":"https://github.com/DirectEmployers/MyJobs/pull/2006","diff_url":"https://github.com/DirectEmployers/MyJobs/pull/2006.diff","patch_url":"https://github.com/DirectEmployers/MyJobs/pull/2006.patch"},"body":"This PR creates working reports for the Partners and Communication Types report types.\r\n\r\nTo test:\r\n\r\n    manage.py reset_dynamic_data\r\n    cd gulp/\r\n    npm install\r\n    gulp watch-tasks\r\n\r\nGo to http://.../reports/view/dynamicoverview\r\n\r\nWorking:\r\n\r\n* There should be one reporting type: PRM\r\n* All three report types: Comm Records, Contacts, and Partners should work.\r\n* All filter fields in the report types should work and provide meaningful help.\r\n\r\nNot working:\r\n\r\n* The report pages are still hideous and do not conform with our standards.\r\n\r\nReview Guide:\r\n\r\n* The bulk of this PR is the addition of the new partners and communication records report types.\r\n* Moved the datasources to their own directory since each one is fairly large.\r\n* There is some duplication between the datasource classes but the methods are subtly different between them. (IMHO further factoring would lead to very abstract code and inflexibility when creating a datasource for data that is not a Django model.)\r\n* I did factor out a common DataSourceJsonDriver. It is responsible for adapting the datasources to the api views and was extremely similar.\r\n\r\n- [x] Forward \"Usability Nits\" to @fezick for new tickets.\r\n- [x] Replace `get_datasource_json_driver` with a plain old dictionary.\r\n- [x] Use `abc` or otherwise document the datasource protocol.\r\n- [x] Don't shadow `filter`.\r\n- [x] Rename `$abbrev_qs` vars to be more descriptive.\r\n- [x] Eliminate need for `'pass'` in `filter_key_types`.\r\n- [x] Include `filter_key_types` in documentation.\r\n- [x] Consider `unicodecsv` over `csv`.\r\n- [x] pep8\r\n- [x] download report: 'NoneType' object has no attribute 'strftime''\r\n- [x] Clarify unit test docs.\r\n- [x] Detect unicode in JoinFormatter fallback.\r\n- [x] Expose tag `hex_color` for formatting later."},"comment":{"url":"https://api.github.com/repos/DirectEmployers/MyJobs/issues/comments/172973016","html_url":"https://github.com/DirectEmployers/MyJobs/pull/2006#issuecomment-172973016","issue_url":"https://api.github.com/repos/DirectEmployers/MyJobs/issues/2006","id":172973016,"user":{"login":"aspidites","id":93686,"avatar_url":"https://avatars.githubusercontent.com/u/93686?v=3","gravatar_id":"","url":"https://api.github.com/users/aspidites","html_url":"https://github.com/aspidites","followers_url":"https://api.github.com/users/aspidites/followers","following_url":"https://api.github.com/users/aspidites/following{/other_user}","gists_url":"https://api.github.com/users/aspidites/gists{/gist_id}","starred_url":"https://api.github.com/users/aspidites/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspidites/subscriptions","organizations_url":"https://api.github.com/users/aspidites/orgs","repos_url":"https://api.github.com/users/aspidites/repos","events_url":"https://api.github.com/users/aspidites/events{/privacy}","received_events_url":"https://api.github.com/users/aspidites/received_events","type":"User","site_admin":false},"created_at":"2016-01-19T20:15:51Z","updated_at":"2016-01-19T20:15:51Z","body":"Thanks for updating the documentation."}}