)]}'
{"nova/api/openstack/wsgi.py":[{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"209f5c578188a050cc9d5f12b3560da2726540b2","unresolved":false,"context_lines":[{"line_number":940,"context_line":"        project_id \u003d action_args.pop(\"project_id\", None)"},{"line_number":941,"context_line":"        context \u003d request.environ.get(\u0027nova.context\u0027)"},{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FuOs%3D","line":943,"updated":"2013-05-24 13:45:55.000000000","message":"This is a customer-facing message, right?  I don\u0027t imagine they should know or care what a \u0027Context\u0027 is.","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"9a7252b5268c85b79b9bc66ee40fb4bbb2933f26","unresolved":false,"context_lines":[{"line_number":940,"context_line":"        project_id \u003d action_args.pop(\"project_id\", None)"},{"line_number":941,"context_line":"        context \u003d request.environ.get(\u0027nova.context\u0027)"},{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FtzQ%3D","line":943,"in_reply_to":"AAAAPH%2F%2Ft4k%3D","updated":"2013-05-24 16:34:50.000000000","message":"Yeah, I guess it\u0027s a two-sides of the same coin kind of issue.\n\nOne hand, you can think of it as screwing up the URL in which case maybe a HTTPNotFound (404) is called for.\n\nOn the other hand, the X-Tenant-Name is screwed up, in which case it\u0027s a HttpUnauthorized (401).\n\nI guess the BadRequest (400) is just splitting the difference and saying something went wrong, you figure it out! :-)\n\nI\u0027m fine w/ any of the above, just as long as, in dev-mode at least, we include a helpful error message.\n\n(I could understand perhaps turning off the helpful msg in prod for security reasons that Brian mentioned on an earlier patch).","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2eb5c90ab281ec2fe2be85efc328fafc04e85267","unresolved":false,"context_lines":[{"line_number":940,"context_line":"        project_id \u003d action_args.pop(\"project_id\", None)"},{"line_number":941,"context_line":"        context \u003d request.environ.get(\u0027nova.context\u0027)"},{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Ft4k%3D","line":943,"in_reply_to":"AAAAPH%2F%2FuEI%3D","updated":"2013-05-24 16:01:50.000000000","message":"Hmm, in that case, if it\u0027s an auth issue, is a better solution to raise HTTPUnauthorized rather than HTTPBadRequest?","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"21ccc0e475e758c82b4675a33916a9f7634a2879","unresolved":false,"context_lines":[{"line_number":940,"context_line":"        project_id \u003d action_args.pop(\"project_id\", None)"},{"line_number":941,"context_line":"        context \u003d request.environ.get(\u0027nova.context\u0027)"},{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FuEI%3D","line":943,"in_reply_to":"AAAAPH%2F%2FuOs%3D","updated":"2013-05-24 15:06:25.000000000","message":"Yeah I can see it both ways. It\u0027s not as user friendly, but the message contains a bit more info, and it\u0027s certainly more \u0027google-able\u0027, so they can figure out what \u0027Context\u0027 means.\n\nI\u0027m def not opposed to refining the wording even more, just as long as it hints at the real problem so devs aren\u0027t red-herringed into thinking it\u0027s a URL problem and not an auth-problem.","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"20ea5594c6a4c965bd71d750b5ceffce5f6ba185","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        context \u003d request.environ.get(\u0027nova.context\u0027)"},{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"},{"line_number":947,"context_line":"                     \u0027context_project_id\u0027: context.project_id}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fwfk%3D","line":944,"updated":"2013-05-23 18:35:07.000000000","message":"From experience, I wouldn\u0027t use doesn\u0027t in a translatable string, use \"does not\".  Apostrophes don\u0027t carry over well in other translations.","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"995c752a630ebad1b30fc9f811cd9cf696d431ea","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        context \u003d request.environ.get(\u0027nova.context\u0027)"},{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"},{"line_number":947,"context_line":"                     \u0027context_project_id\u0027: context.project_id}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FwcM%3D","line":944,"in_reply_to":"AAAAPH%2F%2FweU%3D","updated":"2013-05-23 18:53:03.000000000","message":"Hmm, you are probably right, I think I\u0027m biased from years of working on a project with a tool that would check for things like this in English resource bundles and how they would need to escape them with unicode characters for translation.  I\u0027ll drop the -1.","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"f1871c8230c18b2fe8267a2ffc99cfe75ee82a07","unresolved":false,"context_lines":[{"line_number":941,"context_line":"        context \u003d request.environ.get(\u0027nova.context\u0027)"},{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"},{"line_number":947,"context_line":"                     \u0027context_project_id\u0027: context.project_id}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FweU%3D","line":944,"in_reply_to":"AAAAPH%2F%2Fwfk%3D","updated":"2013-05-23 18:43:01.000000000","message":"Interesting.\n\nStupid question: but won\u0027t translators, in the `po` files, get a chance to put anything they want in the the `msgstr` field?\n\nIn other words, why would an apostrophe, whether used in a contraction or as a possessive, matter?","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a368a2ce6923cd308e44a89e5260b4abcdce3fcb","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        if (context and project_id and (project_id !\u003d context.project_id)):"},{"line_number":943,"context_line":"            msg \u003d _(\"Malformed request URL: URL\u0027s project_id \u0027%(project_id)s\u0027\""},{"line_number":944,"context_line":"                    \" doesn\u0027t match Context\u0027s project_id\""},{"line_number":945,"context_line":"                    \" \u0027%(context_project_id)s\u0027\") % \\"},{"line_number":946,"context_line":"                    {\u0027project_id\u0027: project_id,"},{"line_number":947,"context_line":"                     \u0027context_project_id\u0027: context.project_id}"},{"line_number":948,"context_line":"            return Fault(webob.exc.HTTPBadRequest(explanation\u003dmsg))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FwX0%3D","line":945,"updated":"2013-05-23 19:18:59.000000000","message":"Any chance we could use parentheses to eliminate the backslash continuation?  :)","commit_id":"16af39326a81cd545e1235da9c6c9db45b708560"}]}
