)]}'
{"nova/api/openstack/compute/plugins/v3/simple_tenant_usage.py":[{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"f8011b21c620a91c4be5fec00c267477dc56998d","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            try:"},{"line_number":219,"context_line":"                return timeutils.parse_strtime(dtstr, VALID_DATETIME_FORMAT[1])"},{"line_number":220,"context_line":"            except Exception:"},{"line_number":221,"context_line":"                return timeutils.parse_strtime(dtstr, VALID_DATETIME_FORMAT[2])"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _get_datetime_range(self, req):"},{"line_number":224,"context_line":"        qs \u003d req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FngU%3D","line":221,"updated":"2013-07-26 13:02:15.000000000","message":"Is there not a more elegant way to do this in a loop now:\n\nfor x, val in enumerate(VAILD_DATETTIME_FORMAT):\n        try:\n            result\u003dtimeutils.parse_strtime(dtstr, val)\n        except Exception as  e:\n           if x \u003d\u003d len(VAILD_DATETTIME_FORMAT):\n              raise e\n        else:\n            return result","commit_id":"f5d6f0cda92b83b7189ddb3c9c82f8c819d23848"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"483cb319dbbe763e7528e59eba54936b389677c4","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            try:"},{"line_number":219,"context_line":"                return timeutils.parse_strtime(dtstr, VALID_DATETIME_FORMAT[1])"},{"line_number":220,"context_line":"            except Exception:"},{"line_number":221,"context_line":"                return timeutils.parse_strtime(dtstr, VALID_DATETIME_FORMAT[2])"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _get_datetime_range(self, req):"},{"line_number":224,"context_line":"        qs \u003d req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FkN8%3D","line":221,"in_reply_to":"AAAAQn%2F%2FngU%3D","updated":"2013-07-29 01:25:38.000000000","message":"Thanks, let\u0027s make it better","commit_id":"f5d6f0cda92b83b7189ddb3c9c82f8c819d23848"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"f8011b21c620a91c4be5fec00c267477dc56998d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            period_start \u003d self._parse_datetime(env.get(\u0027start\u0027, [None])[0])"},{"line_number":229,"context_line":"            period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":230,"context_line":"        except ValueError as e:"},{"line_number":231,"context_line":"            msg \u003d _(\"Invalid datetime format, valid datetime \""},{"line_number":232,"context_line":"                    \"format was %s\") % VALID_DATETIME_FORMAT"},{"line_number":233,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":234,"context_line":"        if not period_start \u003c period_stop:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2Fnfg%3D","line":231,"updated":"2013-07-26 13:02:15.000000000","message":"Would be cleaner to do this as seperate try blocks so the error rmessage can be specific to the parameter that is wrong","commit_id":"f5d6f0cda92b83b7189ddb3c9c82f8c819d23848"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"483cb319dbbe763e7528e59eba54936b389677c4","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            period_start \u003d self._parse_datetime(env.get(\u0027start\u0027, [None])[0])"},{"line_number":229,"context_line":"            period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":230,"context_line":"        except ValueError as e:"},{"line_number":231,"context_line":"            msg \u003d _(\"Invalid datetime format, valid datetime \""},{"line_number":232,"context_line":"                    \"format was %s\") % VALID_DATETIME_FORMAT"},{"line_number":233,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":234,"context_line":"        if not period_start \u003c period_stop:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FkN4%3D","line":231,"in_reply_to":"AAAAQn%2F%2Fnfg%3D","updated":"2013-07-29 01:25:38.000000000","message":"Done","commit_id":"f5d6f0cda92b83b7189ddb3c9c82f8c819d23848"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"13fc8260fb25c69247652934950802b8040b93d5","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        period_start \u003d self._parse_datetime(env.get(\u0027start\u0027, [None])[0])"},{"line_number":226,"context_line":"        if not period_start:"},{"line_number":227,"context_line":"            msg \u003d _(\"Start time is invalid format, valid \""},{"line_number":228,"context_line":"                    \"format was %s\") % VALID_DATETIME_FORMAT"},{"line_number":229,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":230,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":231,"context_line":"        if not period_stop:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FO7g%3D","line":228,"updated":"2013-08-05 02:38:22.000000000","message":"maybe better as \"Start time is invalid format, valid formats are %s\"","commit_id":"ce2444e911e2539dd67bcba2e29d35f3cd3ca887"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"40a04f5a95493ac2a3436ef1751e5373b0057f68","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        period_start \u003d self._parse_datetime(env.get(\u0027start\u0027, [None])[0])"},{"line_number":226,"context_line":"        if not period_start:"},{"line_number":227,"context_line":"            msg \u003d _(\"Start time is invalid format, valid \""},{"line_number":228,"context_line":"                    \"format was %s\") % VALID_DATETIME_FORMAT"},{"line_number":229,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":230,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":231,"context_line":"        if not period_stop:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FO5M%3D","line":228,"in_reply_to":"AAAAQn%2F%2FO7g%3D","updated":"2013-08-05 03:14:12.000000000","message":"Done","commit_id":"ce2444e911e2539dd67bcba2e29d35f3cd3ca887"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"13fc8260fb25c69247652934950802b8040b93d5","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":231,"context_line":"        if not period_stop:"},{"line_number":232,"context_line":"            msg \u003d _(\"Stop time is invalid format, valid \""},{"line_number":233,"context_line":"                    \"format was %s\") % VALID_DATETIME_FORMAT"},{"line_number":234,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":235,"context_line":"        if not period_start \u003c period_stop:"},{"line_number":236,"context_line":"            msg \u003d _(\"Invalid start time. The start time cannot occur after \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FO7Y%3D","line":233,"updated":"2013-08-05 02:38:22.000000000","message":"ditto","commit_id":"ce2444e911e2539dd67bcba2e29d35f3cd3ca887"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"40a04f5a95493ac2a3436ef1751e5373b0057f68","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":231,"context_line":"        if not period_stop:"},{"line_number":232,"context_line":"            msg \u003d _(\"Stop time is invalid format, valid \""},{"line_number":233,"context_line":"                    \"format was %s\") % VALID_DATETIME_FORMAT"},{"line_number":234,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":235,"context_line":"        if not period_start \u003c period_stop:"},{"line_number":236,"context_line":"            msg \u003d _(\"Invalid start time. The start time cannot occur after \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FO5I%3D","line":233,"in_reply_to":"AAAAQn%2F%2FO7Y%3D","updated":"2013-08-05 03:14:12.000000000","message":"Done","commit_id":"ce2444e911e2539dd67bcba2e29d35f3cd3ca887"}]}
