{"action":"created","issue":{"url":"https://api.github.com/repos/getsentry/sentry/issues/3836","repository_url":"https://api.github.com/repos/getsentry/sentry","labels_url":"https://api.github.com/repos/getsentry/sentry/issues/3836/labels{/name}","comments_url":"https://api.github.com/repos/getsentry/sentry/issues/3836/comments","events_url":"https://api.github.com/repos/getsentry/sentry/issues/3836/events","html_url":"https://github.com/getsentry/sentry/pull/3836","id":168224431,"number":3836,"title":"Basic report implementation.","user":{"login":"tkaemming","id":65315,"avatar_url":"https://avatars.githubusercontent.com/u/65315?v=3","gravatar_id":"","url":"https://api.github.com/users/tkaemming","html_url":"https://github.com/tkaemming","followers_url":"https://api.github.com/users/tkaemming/followers","following_url":"https://api.github.com/users/tkaemming/following{/other_user}","gists_url":"https://api.github.com/users/tkaemming/gists{/gist_id}","starred_url":"https://api.github.com/users/tkaemming/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkaemming/subscriptions","organizations_url":"https://api.github.com/users/tkaemming/orgs","repos_url":"https://api.github.com/users/tkaemming/repos","events_url":"https://api.github.com/users/tkaemming/events{/privacy}","received_events_url":"https://api.github.com/users/tkaemming/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2016-07-29T00:09:11Z","updated_at":"2016-08-05T20:37:39Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/getsentry/sentry/pulls/3836","html_url":"https://github.com/getsentry/sentry/pull/3836","diff_url":"https://github.com/getsentry/sentry/pull/3836.diff","patch_url":"https://github.com/getsentry/sentry/pull/3836.patch"},"body":"So, here it is.\r\n\r\nThis has gone through a few different revisions (one of which included PEP 484 type hints), and out of exasperation I ended up reverting the majority of those changes back to an earlier version which contains a lot less moving pieces but unfortunately is also whole lot harder to test in any meaningful way. (Also, as part of those revisions, this has also gone through a few different rebase cycles and in the midst of one of them I flattened everything into one commit out of frustration. So… sorry @ckj for your lack of attribution on some of the CSS and image assets.)\r\n\r\nThere are a few things that need to happen still (out of scope of this patch) before this is in any way production ready:\r\n\r\n- Each project report needs to be generated and cached as part of `prepare_organization_report`, and then fetched from cache for each user as part of `deliver_organization_user_report`. I didn't implement this yet, since it's unnecessary for our testing purposes, but we'll want this before we open it up to everybody.\r\n- This wasn't added to the celerybeat schedule yet. In the meantime, you can trigger your own personal report via the console by calling `deliver_organization_user_report`.\r\n- The report needs a plain text body. This also will require that the text display of groups support event types. (See GH-3666.)\r\n- This needs to able to be opted out on a per-user basis (and have the unsubscribe link wired up.)\r\n- There are a few parts where it's obviously possible to have at least some minimal test coverage, but I haven't added it (or brought it back into this branch) yet.\r\n\r\n@getsentry/infrastructure\r\n\r\n<!-- Reviewable:start -->\r\n---\r\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/getsentry/sentry/3836)\r\n<!-- Reviewable:end -->\r\n"},"comment":{"url":"https://api.github.com/repos/getsentry/sentry/issues/comments/237958046","html_url":"https://github.com/getsentry/sentry/pull/3836#issuecomment-237958046","issue_url":"https://api.github.com/repos/getsentry/sentry/issues/3836","id":237958046,"user":{"login":"tkaemming","id":65315,"avatar_url":"https://avatars.githubusercontent.com/u/65315?v=3","gravatar_id":"","url":"https://api.github.com/users/tkaemming","html_url":"https://github.com/tkaemming","followers_url":"https://api.github.com/users/tkaemming/followers","following_url":"https://api.github.com/users/tkaemming/following{/other_user}","gists_url":"https://api.github.com/users/tkaemming/gists{/gist_id}","starred_url":"https://api.github.com/users/tkaemming/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkaemming/subscriptions","organizations_url":"https://api.github.com/users/tkaemming/orgs","repos_url":"https://api.github.com/users/tkaemming/repos","events_url":"https://api.github.com/users/tkaemming/events{/privacy}","received_events_url":"https://api.github.com/users/tkaemming/received_events","type":"User","site_admin":false},"created_at":"2016-08-05T20:37:39Z","updated_at":"2016-08-05T20:37:39Z","body":"\n\n\n\nReview status: 14 of 17 files reviewed at latest revision, 4 unresolved discussions, some commit checks failed.\n\n---\n\n*[src/sentry/web/frontend/debug/mail.py, line 374 \\[r2\\]](https://reviewable.io:443/reviews/getsentry/sentry/3836#-KNnywlJNjte_R1jC2FD-r2-374:-KORPWo91kBeh6Iwe56n:b-nfpiuz) ([raw file](https://github.com/getsentry/sentry/blob/07c05a56bd6067854d2247f2971e492e0daa0270/src/sentry/web/frontend/debug/mail.py#L374)):*\n<details><summary><i>Previously, dcramer (David Cramer) wrote…</i></summary>\n> nitpick: it'd be nice to avoid adding more code to this giant file (e.g. move the view to its own file like all the other newer code does)\n</details>\nI'm fine with doing this, but would prefer to do it in a follow up patch since this shares the mock object generation with digests and I'd rather move all that out separately.\n\n---\n\n\n*Comments from [Reviewable](https://reviewable.io:443/reviews/getsentry/sentry/3836)*\n<!-- Sent from Reviewable.io -->\n"}}
{"actor":{"display_login":"tkaemming"}}