{"action":"created","comment":{"url":"https://api.github.com/repos/golemfactory/concent/pulls/comments/190940378","pull_request_review_id":123429579,"id":190940378,"diff_hunk":"@@ -39,3 +49,62 @@ def __call__(self, request):\n         response = self.get_response(request)\n         response['Concent-Version'] = self._concent_version\n         return response\n+\n+\n+def determine_return_type(request_meta):\n+    try:\n+        preffered_types = ['application/json', 'text/html']\n+        if \"HTTP_ACCEPT\" in request_meta:\n+            return best_match(preffered_types, request_meta['HTTP_ACCEPT'])\n+        return \"application/json\"\n+    except Exception:  # pylint: disable=broad-except\n+        return \"\"","path":"concent_api/concent_api/middleware.py","position":null,"original_position":32,"commit_id":"d06d3c51de172c83b13e43c3ba91b358d4cbf51a","original_commit_id":"999e1ec03c23502225c2849ee65c895292beee5e","user":{"login":"cameel","id":137030,"avatar_url":"https://avatars3.githubusercontent.com/u/137030?v=4","gravatar_id":"","url":"https://api.github.com/users/cameel","html_url":"https://github.com/cameel","followers_url":"https://api.github.com/users/cameel/followers","following_url":"https://api.github.com/users/cameel/following{/other_user}","gists_url":"https://api.github.com/users/cameel/gists{/gist_id}","starred_url":"https://api.github.com/users/cameel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cameel/subscriptions","organizations_url":"https://api.github.com/users/cameel/orgs","repos_url":"https://api.github.com/users/cameel/repos","events_url":"https://api.github.com/users/cameel/events{/privacy}","received_events_url":"https://api.github.com/users/cameel/received_events","type":"User","site_admin":false},"body":"So we'll have to talk about it because I unfortunately cannot fully agree.\r\n\r\nI think it's safer to err on the side of crashing too much. From the code I've seen in various projects I think people have a tendency to catch too much and to treat bugs like failures rather than the other way around.\r\n\r\n> but in my opinion there is some middle ground. An example from our world: we are trying to to get Subtask out of DB at point of the flow when it should be there. Biut for whatever reason it is not. Is it a bug? Might be. Or maybe some has been tinkering with the DB (and that caused a failure)?\r\n\r\nDefinitely a bug as long as the database is under the control of our app. I would agree if there was another client indepently accessing the database but in Django apps that's pretty clear cut for me. They're so tightly tied to their database structure that I consider it fully under their control.\r\n\r\nThere is some middle ground and that's why there are rare cases where a handler for `Exception` is appropriate. But they are really rare. Like, there might be one or two cases in our whole application (probably in error handling decorators).\r\n\r\n> My approach is to deliver the best service to the customers. If we cannot do anything sensible with some unexpected situation, we should fail. But if we can, why should we? \r\n\r\nBecause if you catch `Exception` you don't know what you're dealing with. In many situations the safest thing to do is actually to fail and terminate rather than go on and do something wrong. That's my approach - try to make the best of the situation when you can. But don't try to guess when you don't have a clue what's happening.\r\n\r\nSimply, it's fine to catch specific exceptions from `best_match()`. Not `Exception`. ","created_at":"2018-05-25T16:05:11Z","updated_at":"2018-05-25T16:05:11Z","html_url":"https://github.com/golemfactory/concent/pull/364#discussion_r190940378","pull_request_url":"https://api.github.com/repos/golemfactory/concent/pulls/364","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/comments/190940378"},"html":{"href":"https://github.com/golemfactory/concent/pull/364#discussion_r190940378"},"pull_request":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/364"}},"in_reply_to_id":190649833},"pull_request":{"url":"https://api.github.com/repos/golemfactory/concent/pulls/364","id":187418402,"html_url":"https://github.com/golemfactory/concent/pull/364","diff_url":"https://github.com/golemfactory/concent/pull/364.diff","patch_url":"https://github.com/golemfactory/concent/pull/364.patch","issue_url":"https://api.github.com/repos/golemfactory/concent/issues/364","number":364,"state":"open","locked":false,"title":"Chore return json on http 5xx errors (second time ;))","user":{"login":"dybi","id":36961162,"avatar_url":"https://avatars0.githubusercontent.com/u/36961162?v=4","gravatar_id":"","url":"https://api.github.com/users/dybi","html_url":"https://github.com/dybi","followers_url":"https://api.github.com/users/dybi/followers","following_url":"https://api.github.com/users/dybi/following{/other_user}","gists_url":"https://api.github.com/users/dybi/gists{/gist_id}","starred_url":"https://api.github.com/users/dybi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dybi/subscriptions","organizations_url":"https://api.github.com/users/dybi/orgs","repos_url":"https://api.github.com/users/dybi/repos","events_url":"https://api.github.com/users/dybi/events{/privacy}","received_events_url":"https://api.github.com/users/dybi/received_events","type":"User","site_admin":false},"body":"resolves: https://github.com/golemfactory/concent/issues/57","created_at":"2018-05-11T09:55:58Z","updated_at":"2018-05-25T16:05:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"48e7d62f501284161fe2c7b71ce153bcb52e88cc","assignee":null,"assignees":[],"requested_reviewers":[{"login":"pawelkisielewicz","id":36702174,"avatar_url":"https://avatars3.githubusercontent.com/u/36702174?v=4","gravatar_id":"","url":"https://api.github.com/users/pawelkisielewicz","html_url":"https://github.com/pawelkisielewicz","followers_url":"https://api.github.com/users/pawelkisielewicz/followers","following_url":"https://api.github.com/users/pawelkisielewicz/following{/other_user}","gists_url":"https://api.github.com/users/pawelkisielewicz/gists{/gist_id}","starred_url":"https://api.github.com/users/pawelkisielewicz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawelkisielewicz/subscriptions","organizations_url":"https://api.github.com/users/pawelkisielewicz/orgs","repos_url":"https://api.github.com/users/pawelkisielewicz/repos","events_url":"https://api.github.com/users/pawelkisielewicz/events{/privacy}","received_events_url":"https://api.github.com/users/pawelkisielewicz/received_events","type":"User","site_admin":false},{"login":"MichalW-CP","id":36954871,"avatar_url":"https://avatars3.githubusercontent.com/u/36954871?v=4","gravatar_id":"","url":"https://api.github.com/users/MichalW-CP","html_url":"https://github.com/MichalW-CP","followers_url":"https://api.github.com/users/MichalW-CP/followers","following_url":"https://api.github.com/users/MichalW-CP/following{/other_user}","gists_url":"https://api.github.com/users/MichalW-CP/gists{/gist_id}","starred_url":"https://api.github.com/users/MichalW-CP/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichalW-CP/subscriptions","organizations_url":"https://api.github.com/users/MichalW-CP/orgs","repos_url":"https://api.github.com/users/MichalW-CP/repos","events_url":"https://api.github.com/users/MichalW-CP/events{/privacy}","received_events_url":"https://api.github.com/users/MichalW-CP/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":895466964,"url":"https://api.github.com/repos/golemfactory/concent/labels/urgent","name":"urgent","color":"000000","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/golemfactory/concent/pulls/364/commits","review_comments_url":"https://api.github.com/repos/golemfactory/concent/pulls/364/comments","review_comment_url":"https://api.github.com/repos/golemfactory/concent/pulls/comments{/number}","comments_url":"https://api.github.com/repos/golemfactory/concent/issues/364/comments","statuses_url":"https://api.github.com/repos/golemfactory/concent/statuses/d06d3c51de172c83b13e43c3ba91b358d4cbf51a","head":{"label":"golemfactory:chore-return-json-on-http-5xx-errors2","ref":"chore-return-json-on-http-5xx-errors2","sha":"d06d3c51de172c83b13e43c3ba91b358d4cbf51a","user":{"login":"golemfactory","id":23193179,"avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"repo":{"id":108836885,"name":"concent","full_name":"golemfactory/concent","owner":{"login":"golemfactory","id":23193179,"avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/golemfactory/concent","description":"Repository for Concent Service sources","fork":false,"url":"https://api.github.com/repos/golemfactory/concent","forks_url":"https://api.github.com/repos/golemfactory/concent/forks","keys_url":"https://api.github.com/repos/golemfactory/concent/keys{/key_id}","collaborators_url":"https://api.github.com/repos/golemfactory/concent/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/golemfactory/concent/teams","hooks_url":"https://api.github.com/repos/golemfactory/concent/hooks","issue_events_url":"https://api.github.com/repos/golemfactory/concent/issues/events{/number}","events_url":"https://api.github.com/repos/golemfactory/concent/events","assignees_url":"https://api.github.com/repos/golemfactory/concent/assignees{/user}","branches_url":"https://api.github.com/repos/golemfactory/concent/branches{/branch}","tags_url":"https://api.github.com/repos/golemfactory/concent/tags","blobs_url":"https://api.github.com/repos/golemfactory/concent/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/golemfactory/concent/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/golemfactory/concent/git/refs{/sha}","trees_url":"https://api.github.com/repos/golemfactory/concent/git/trees{/sha}","statuses_url":"https://api.github.com/repos/golemfactory/concent/statuses/{sha}","languages_url":"https://api.github.com/repos/golemfactory/concent/languages","stargazers_url":"https://api.github.com/repos/golemfactory/concent/stargazers","contributors_url":"https://api.github.com/repos/golemfactory/concent/contributors","subscribers_url":"https://api.github.com/repos/golemfactory/concent/subscribers","subscription_url":"https://api.github.com/repos/golemfactory/concent/subscription","commits_url":"https://api.github.com/repos/golemfactory/concent/commits{/sha}","git_commits_url":"https://api.github.com/repos/golemfactory/concent/git/commits{/sha}","comments_url":"https://api.github.com/repos/golemfactory/concent/comments{/number}","issue_comment_url":"https://api.github.com/repos/golemfactory/concent/issues/comments{/number}","contents_url":"https://api.github.com/repos/golemfactory/concent/contents/{+path}","compare_url":"https://api.github.com/repos/golemfactory/concent/compare/{base}...{head}","merges_url":"https://api.github.com/repos/golemfactory/concent/merges","archive_url":"https://api.github.com/repos/golemfactory/concent/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/golemfactory/concent/downloads","issues_url":"https://api.github.com/repos/golemfactory/concent/issues{/number}","pulls_url":"https://api.github.com/repos/golemfactory/concent/pulls{/number}","milestones_url":"https://api.github.com/repos/golemfactory/concent/milestones{/number}","notifications_url":"https://api.github.com/repos/golemfactory/concent/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/golemfactory/concent/labels{/name}","releases_url":"https://api.github.com/repos/golemfactory/concent/releases{/id}","deployments_url":"https://api.github.com/repos/golemfactory/concent/deployments","created_at":"2017-10-30T10:41:44Z","updated_at":"2018-05-25T12:04:55Z","pushed_at":"2018-05-25T15:45:12Z","git_url":"git://github.com/golemfactory/concent.git","ssh_url":"git@github.com:golemfactory/concent.git","clone_url":"https://github.com/golemfactory/concent.git","svn_url":"https://github.com/golemfactory/concent","homepage":null,"size":1399,"stargazers_count":2,"watchers_count":2,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":63,"license":null,"forks":0,"open_issues":63,"watchers":2,"default_branch":"master"}},"base":{"label":"golemfactory:master","ref":"master","sha":"ce9bd76db40f0222f35c0316ef6ee3df8432f621","user":{"login":"golemfactory","id":23193179,"avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"repo":{"id":108836885,"name":"concent","full_name":"golemfactory/concent","owner":{"login":"golemfactory","id":23193179,"avatar_url":"https://avatars1.githubusercontent.com/u/23193179?v=4","gravatar_id":"","url":"https://api.github.com/users/golemfactory","html_url":"https://github.com/golemfactory","followers_url":"https://api.github.com/users/golemfactory/followers","following_url":"https://api.github.com/users/golemfactory/following{/other_user}","gists_url":"https://api.github.com/users/golemfactory/gists{/gist_id}","starred_url":"https://api.github.com/users/golemfactory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/golemfactory/subscriptions","organizations_url":"https://api.github.com/users/golemfactory/orgs","repos_url":"https://api.github.com/users/golemfactory/repos","events_url":"https://api.github.com/users/golemfactory/events{/privacy}","received_events_url":"https://api.github.com/users/golemfactory/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/golemfactory/concent","description":"Repository for Concent Service sources","fork":false,"url":"https://api.github.com/repos/golemfactory/concent","forks_url":"https://api.github.com/repos/golemfactory/concent/forks","keys_url":"https://api.github.com/repos/golemfactory/concent/keys{/key_id}","collaborators_url":"https://api.github.com/repos/golemfactory/concent/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/golemfactory/concent/teams","hooks_url":"https://api.github.com/repos/golemfactory/concent/hooks","issue_events_url":"https://api.github.com/repos/golemfactory/concent/issues/events{/number}","events_url":"https://api.github.com/repos/golemfactory/concent/events","assignees_url":"https://api.github.com/repos/golemfactory/concent/assignees{/user}","branches_url":"https://api.github.com/repos/golemfactory/concent/branches{/branch}","tags_url":"https://api.github.com/repos/golemfactory/concent/tags","blobs_url":"https://api.github.com/repos/golemfactory/concent/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/golemfactory/concent/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/golemfactory/concent/git/refs{/sha}","trees_url":"https://api.github.com/repos/golemfactory/concent/git/trees{/sha}","statuses_url":"https://api.github.com/repos/golemfactory/concent/statuses/{sha}","languages_url":"https://api.github.com/repos/golemfactory/concent/languages","stargazers_url":"https://api.github.com/repos/golemfactory/concent/stargazers","contributors_url":"https://api.github.com/repos/golemfactory/concent/contributors","subscribers_url":"https://api.github.com/repos/golemfactory/concent/subscribers","subscription_url":"https://api.github.com/repos/golemfactory/concent/subscription","commits_url":"https://api.github.com/repos/golemfactory/concent/commits{/sha}","git_commits_url":"https://api.github.com/repos/golemfactory/concent/git/commits{/sha}","comments_url":"https://api.github.com/repos/golemfactory/concent/comments{/number}","issue_comment_url":"https://api.github.com/repos/golemfactory/concent/issues/comments{/number}","contents_url":"https://api.github.com/repos/golemfactory/concent/contents/{+path}","compare_url":"https://api.github.com/repos/golemfactory/concent/compare/{base}...{head}","merges_url":"https://api.github.com/repos/golemfactory/concent/merges","archive_url":"https://api.github.com/repos/golemfactory/concent/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/golemfactory/concent/downloads","issues_url":"https://api.github.com/repos/golemfactory/concent/issues{/number}","pulls_url":"https://api.github.com/repos/golemfactory/concent/pulls{/number}","milestones_url":"https://api.github.com/repos/golemfactory/concent/milestones{/number}","notifications_url":"https://api.github.com/repos/golemfactory/concent/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/golemfactory/concent/labels{/name}","releases_url":"https://api.github.com/repos/golemfactory/concent/releases{/id}","deployments_url":"https://api.github.com/repos/golemfactory/concent/deployments","created_at":"2017-10-30T10:41:44Z","updated_at":"2018-05-25T12:04:55Z","pushed_at":"2018-05-25T15:45:12Z","git_url":"git://github.com/golemfactory/concent.git","ssh_url":"git@github.com:golemfactory/concent.git","clone_url":"https://github.com/golemfactory/concent.git","svn_url":"https://github.com/golemfactory/concent","homepage":null,"size":1399,"stargazers_count":2,"watchers_count":2,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":63,"license":null,"forks":0,"open_issues":63,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/364"},"html":{"href":"https://github.com/golemfactory/concent/pull/364"},"issue":{"href":"https://api.github.com/repos/golemfactory/concent/issues/364"},"comments":{"href":"https://api.github.com/repos/golemfactory/concent/issues/364/comments"},"review_comments":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/364/comments"},"review_comment":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/golemfactory/concent/pulls/364/commits"},"statuses":{"href":"https://api.github.com/repos/golemfactory/concent/statuses/d06d3c51de172c83b13e43c3ba91b358d4cbf51a"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"cameel"}}