)]}'
{"doc/source/configuration/settings.rst":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"d3169fd3149782b7b3aff6873b47fbf2ebd5fc84","unresolved":false,"context_lines":[{"line_number":2343,"context_line":"SWIFT_STORAGE_POLICY_DISPLAY_NAMES"},{"line_number":2344,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":2345,"context_line":""},{"line_number":2346,"context_line":".. versionadded:: 17.2.0(Ussuri)"},{"line_number":2347,"context_line":""},{"line_number":2348,"context_line":"Default: ``{}``"},{"line_number":2349,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df33271e_12ba9a6c","line":2346,"range":{"start_line":2346,"start_character":17,"end_line":2346,"end_character":23},"updated":"2020-04-01 09:50:33.000000000","message":"It should be 18.3.0","commit_id":"7b431fddd1a7a32404e7936dcc11e63aa39a163b"},{"author":{"_account_id":30447,"name":"Simon Merrick","email":"simonmerrick@catalyst.net.nz","username":"iokiwi"},"change_message_id":"cc6a66b0d1a45679c35584ffe605210807de0e08","unresolved":false,"context_lines":[{"line_number":2343,"context_line":"SWIFT_STORAGE_POLICY_DISPLAY_NAMES"},{"line_number":2344,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":2345,"context_line":""},{"line_number":2346,"context_line":".. versionadded:: 17.2.0(Ussuri)"},{"line_number":2347,"context_line":""},{"line_number":2348,"context_line":"Default: ``{}``"},{"line_number":2349,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"df33271e_83b2c747","line":2346,"range":{"start_line":2346,"start_character":17,"end_line":2346,"end_character":23},"in_reply_to":"df33271e_12ba9a6c","updated":"2020-04-15 09:58:16.000000000","message":"Done","commit_id":"7b431fddd1a7a32404e7936dcc11e63aa39a163b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ed7b0941a5c358fc43ef66cfd4ea97ede947959e","unresolved":false,"context_lines":[{"line_number":2351,"context_line":"user friendly display name which will be rendered on the dashboard. If"},{"line_number":2352,"context_line":"no display is specified for a storage policy, the storage"},{"line_number":2353,"context_line":"policy name will be used verbatim."},{"line_number":2354,"context_line":""},{"line_number":2355,"context_line":"Django Settings"},{"line_number":2356,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2357,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"df33271e_5d6c8135","line":2354,"updated":"2020-04-14 06:25:04.000000000","message":"An example would be nice.","commit_id":"64f0a7240f5d7dd51cad1297a39e190891ef5221"}],"openstack_dashboard/api/rest/swift.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"197467d9ef4ff5f66d32d87fad17a3c249d08780","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"@urls.register"},{"line_number":44,"context_line":"class Policies(generic.View):"},{"line_number":45,"context_line":"    \"\"\"API for information about the Swift installation.\"\"\""},{"line_number":46,"context_line":"    url_regex \u003d r\u0027swift/policies/$\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @rest_utils.ajax()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6793fab1","line":45,"updated":"2020-02-21 08:38:48.000000000","message":"The description looks wrong.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"197467d9ef4ff5f66d32d87fad17a3c249d08780","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @rest_utils.ajax()"},{"line_number":49,"context_line":"    def get(self, request):"},{"line_number":50,"context_line":"        \"\"\"Get information about the Swift installation.\"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        capabilities \u003d api.swift.swift_get_capabilities(request)"},{"line_number":53,"context_line":"        policies \u003d capabilities[\u0027swift\u0027][\u0027policies\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_8796369f","line":50,"updated":"2020-02-21 08:38:48.000000000","message":"The description looks wrong.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"}],"openstack_dashboard/api/swift.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"197467d9ef4ff5f66d32d87fad17a3c249d08780","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    return objects"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"@memoized"},{"line_number":109,"context_line":"def load_storage_policy_display_names():"},{"line_number":110,"context_line":"    return getattr(settings, \"SWIFT_STORAGE_POLICY_DISPLAY_NAMES\", {})"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_47791e7f","line":108,"updated":"2020-02-21 08:38:48.000000000","message":"The function just picks up the variable, so the decorator is unnecessary.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":30447,"name":"Simon Merrick","email":"simonmerrick@catalyst.net.nz","username":"iokiwi"},"change_message_id":"97475d29410fb32f7fd8e0d50ead77031102219f","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    return objects"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"@memoized"},{"line_number":109,"context_line":"def load_storage_policy_display_names():"},{"line_number":110,"context_line":"    return getattr(settings, \"SWIFT_STORAGE_POLICY_DISPLAY_NAMES\", {})"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_a47a8e85","line":108,"in_reply_to":"3fa7e38b_47791e7f","updated":"2020-02-25 03:57:51.000000000","message":"Done","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"197467d9ef4ff5f66d32d87fad17a3c249d08780","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"@memoized"},{"line_number":109,"context_line":"def load_storage_policy_display_names():"},{"line_number":110,"context_line":"    return getattr(settings, \"SWIFT_STORAGE_POLICY_DISPLAY_NAMES\", {})"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"def get_storage_policy_display_name(name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_677c5a74","line":110,"updated":"2020-02-21 08:38:48.000000000","message":"Could you avoid using getattr(settings, ....)? Instead, the recommended way is to define the default value in openstack_dashboard/defaults.py.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":30447,"name":"Simon Merrick","email":"simonmerrick@catalyst.net.nz","username":"iokiwi"},"change_message_id":"97475d29410fb32f7fd8e0d50ead77031102219f","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"@memoized"},{"line_number":109,"context_line":"def load_storage_policy_display_names():"},{"line_number":110,"context_line":"    return getattr(settings, \"SWIFT_STORAGE_POLICY_DISPLAY_NAMES\", {})"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"def get_storage_policy_display_name(name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_8475129b","line":110,"in_reply_to":"3fa7e38b_677c5a74","updated":"2020-02-25 03:57:51.000000000","message":"Done","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"197467d9ef4ff5f66d32d87fad17a3c249d08780","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    \"\"\"Gets the user friendly display name for a storage policy\"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    display_names \u003d load_storage_policy_display_names()"},{"line_number":117,"context_line":"    return str(_(display_names.get(name, name)))"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def _metadata_to_header(metadata):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a789f270","line":117,"range":{"start_line":117,"start_character":15,"end_line":117,"end_character":16},"updated":"2020-02-21 08:38:48.000000000","message":"Why is it needed? Applying gettext to a variable is a tricky way and it is meaningless in most cases from POV of translators.\n\nI am also not sure str() is required.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":30447,"name":"Simon Merrick","email":"simonmerrick@catalyst.net.nz","username":"iokiwi"},"change_message_id":"97475d29410fb32f7fd8e0d50ead77031102219f","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    \"\"\"Gets the user friendly display name for a storage policy\"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    display_names \u003d load_storage_policy_display_names()"},{"line_number":117,"context_line":"    return str(_(display_names.get(name, name)))"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def _metadata_to_header(metadata):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_977f94aa","line":117,"range":{"start_line":117,"start_character":15,"end_line":117,"end_character":16},"in_reply_to":"3fa7e38b_a789f270","updated":"2020-02-25 03:57:51.000000000","message":"str() was required because gettext was exploding the gettext object into a python list which then had to be converted back to a string.\n\nSince its recommended that gettext is not useful or necessary, I can get rid of str() as well.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"197467d9ef4ff5f66d32d87fad17a3c249d08780","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    elif public is False:"},{"line_number":128,"context_line":"        headers[\u0027x-container-read\u0027] \u003d \"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    storage_policy \u003d metadata.get(\"storage_policy\", None)"},{"line_number":131,"context_line":"    if storage_policy:"},{"line_number":132,"context_line":"        headers[\"x-storage-policy\"] \u003d storage_policy"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c7842e5a","line":130,"range":{"start_line":130,"start_character":50,"end_line":130,"end_character":56},"updated":"2020-02-21 08:38:48.000000000","message":"None is the default vaule, so unnecessary.\n\n  metadata.get(\"storage_policy\")","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":30447,"name":"Simon Merrick","email":"simonmerrick@catalyst.net.nz","username":"iokiwi"},"change_message_id":"97475d29410fb32f7fd8e0d50ead77031102219f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    elif public is False:"},{"line_number":128,"context_line":"        headers[\u0027x-container-read\u0027] \u003d \"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    storage_policy \u003d metadata.get(\"storage_policy\", None)"},{"line_number":131,"context_line":"    if storage_policy:"},{"line_number":132,"context_line":"        headers[\"x-storage-policy\"] \u003d storage_policy"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_c449ca60","line":130,"range":{"start_line":130,"start_character":50,"end_line":130,"end_character":56},"in_reply_to":"3fa7e38b_c7842e5a","updated":"2020-02-25 03:57:51.000000000","message":"Done","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"197467d9ef4ff5f66d32d87fad17a3c249d08780","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u0027storage_policy\u0027: {"},{"line_number":217,"context_line":"            \"name\": storage_policy,"},{"line_number":218,"context_line":"            \"display_name\": get_storage_policy_display_name(storage_policy)"},{"line_number":219,"context_line":"        },"},{"line_number":220,"context_line":"        \u0027public_url\u0027: public_url,"},{"line_number":221,"context_line":"    }"},{"line_number":222,"context_line":"    return Container(container_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_67ca1aa4","line":219,"updated":"2020-02-21 08:38:48.000000000","message":"Is it okay to set storage_policy even when storage_policy is an empty string? Looking at L.195, it can be empty. I am not sure what happens when storage policy is empty.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":30447,"name":"Simon Merrick","email":"simonmerrick@catalyst.net.nz","username":"iokiwi"},"change_message_id":"97475d29410fb32f7fd8e0d50ead77031102219f","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u0027storage_policy\u0027: {"},{"line_number":217,"context_line":"            \"name\": storage_policy,"},{"line_number":218,"context_line":"            \"display_name\": get_storage_policy_display_name(storage_policy)"},{"line_number":219,"context_line":"        },"},{"line_number":220,"context_line":"        \u0027public_url\u0027: public_url,"},{"line_number":221,"context_line":"    }"},{"line_number":222,"context_line":"    return Container(container_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_d2cf5a55","line":219,"in_reply_to":"3fa7e38b_67ca1aa4","updated":"2020-02-25 03:57:51.000000000","message":"It\u0027s probably safe to assume the x-storage-policy header is set since storage policies have been supported in swift for a long time.\n\nPersonally I think its cleaner to set a default value rather than conditionally include a key in response data and have to check if the key is present on the front end.\n\nCould set a \"-\" instead of empty string.","commit_id":"8966c52d66bfb10e1f9c0845aa4f9976a34a29ed"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ed7b0941a5c358fc43ef66cfd4ea97ede947959e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    \"\"\"Gets the user friendly display name for a storage policy\"\"\""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    display_names \u003d settings.SWIFT_STORAGE_POLICY_DISPLAY_NAMES"},{"line_number":111,"context_line":"    return display_names.get(name)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def _metadata_to_header(metadata):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_1cfb4947","line":111,"range":{"start_line":111,"start_character":10,"end_line":111,"end_character":34},"updated":"2020-04-14 06:25:04.000000000","message":"If a specified name is not contained in \"display_names\", None will be returned. In the previous logic, the original \"name\" passed as an argument was returned. Which is what you need?","commit_id":"36e30b91ed38d3873c9b1d8eda27eaa86758d531"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ed7b0941a5c358fc43ef66cfd4ea97ede947959e","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    storage_policy \u003d metadata.get(\"storage_policy\")"},{"line_number":125,"context_line":"    if storage_policy:"},{"line_number":126,"context_line":"        headers[\"x-storage-policy\"] \u003d storage_policy"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    return headers"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_1c9029ed","line":126,"updated":"2020-04-14 06:25:04.000000000","message":"I think the following works:\n\n  if \"storage_policy\" in metadata:\n      headers[\"x-storage-policy\"] \u003d metadata[\"storage_policy\"]\n\nIn your logic, if \"storage_policy\" is included in the metadata and the policy is an empty string, the header will not be set.\nIn my proposal, the header will always be set if \"storage_policy\" is included in the metadata.\n\nI am not sure which is a better logic. Could you check it?","commit_id":"36e30b91ed38d3873c9b1d8eda27eaa86758d531"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ed7b0941a5c358fc43ef66cfd4ea97ede947959e","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    public_url \u003d None"},{"line_number":189,"context_line":"    storage_policy \u003d headers.get(\"x-storage-policy\")"},{"line_number":190,"context_line":"    storage_policy_display_name \u003d \\"},{"line_number":191,"context_line":"        get_storage_policy_display_name(storage_policy)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    try:"},{"line_number":194,"context_line":"        is_public \u003d GLOBAL_READ_ACL in headers.get(\u0027x-container-read\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_9cb5f980","line":191,"updated":"2020-04-14 06:25:04.000000000","message":"Can get_storage_policy_display_name() handle storage_policy\u003dNone?","commit_id":"36e30b91ed38d3873c9b1d8eda27eaa86758d531"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ed7b0941a5c358fc43ef66cfd4ea97ede947959e","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if storage_policy_display_name:"},{"line_number":219,"context_line":"        container_info[\u0027storage_policy\u0027][\u0027display_name\u0027] \u003d \\"},{"line_number":220,"context_line":"            get_storage_policy_display_name(storage_policy)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    return Container(container_info)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_bc6f95fa","line":220,"updated":"2020-04-14 06:25:04.000000000","message":"Can\u0027t we always set \"display_name\"?\n\nI think if no display name is configured we can use \"name\" as \"display_name\". If so, no if clause is needed.","commit_id":"36e30b91ed38d3873c9b1d8eda27eaa86758d531"}],"openstack_dashboard/dashboards/project/static/dashboard/project/containers/_containers.scss":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ed7b0941a5c358fc43ef66cfd4ea97ede947959e","unresolved":false,"context_lines":[{"line_number":113,"context_line":"      padding-left: 0;"},{"line_number":114,"context_line":"    }"},{"line_number":115,"context_line":"    .hz-fall-down-val {"},{"line_number":116,"context_line":"      margin-left: 58%;"},{"line_number":117,"context_line":"    }"},{"line_number":118,"context_line":"  }"},{"line_number":119,"context_line":"}"}],"source_content_type":"text/x-scss","patch_set":9,"id":"df33271e_081abe7b","line":116,"range":{"start_line":116,"start_character":19,"end_line":116,"end_character":22},"updated":"2020-04-14 06:25:04.000000000","message":"question: How is this value chosen? Does it work for various screen sizes? why 58? why not 60 for example?","commit_id":"64f0a7240f5d7dd51cad1297a39e190891ef5221"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0cd63d479cab1f146f3a0144c0d95745960c4384","unresolved":false,"context_lines":[{"line_number":113,"context_line":"      padding-left: 0;"},{"line_number":114,"context_line":"    }"},{"line_number":115,"context_line":"    .hz-fall-down-val {"},{"line_number":116,"context_line":"      margin-left: 58%;"},{"line_number":117,"context_line":"    }"},{"line_number":118,"context_line":"  }"},{"line_number":119,"context_line":"}"}],"source_content_type":"text/x-scss","patch_set":9,"id":"3f4c43b2_a873fbb0","line":116,"range":{"start_line":116,"start_character":19,"end_line":116,"end_character":22},"in_reply_to":"3f4c43b2_54793491","updated":"2020-04-15 15:20:33.000000000","message":"col-lg-7 from bootstrap is used for dynamic views with different screen resolution. We should not just copy this \"magic number\" to your code","commit_id":"64f0a7240f5d7dd51cad1297a39e190891ef5221"},{"author":{"_account_id":30447,"name":"Simon Merrick","email":"simonmerrick@catalyst.net.nz","username":"iokiwi"},"change_message_id":"87760bef07e2b2d582a2645676c792de59ef8362","unresolved":false,"context_lines":[{"line_number":113,"context_line":"      padding-left: 0;"},{"line_number":114,"context_line":"    }"},{"line_number":115,"context_line":"    .hz-fall-down-val {"},{"line_number":116,"context_line":"      margin-left: 58%;"},{"line_number":117,"context_line":"    }"},{"line_number":118,"context_line":"  }"},{"line_number":119,"context_line":"}"}],"source_content_type":"text/x-scss","patch_set":9,"id":"3f4c43b2_54793491","line":116,"range":{"start_line":116,"start_character":19,"end_line":116,"end_character":22},"in_reply_to":"df33271e_081abe7b","updated":"2020-04-15 12:13:47.000000000","message":"Unsure as we seconded the front end stuff to a FE dev from another team but it looks like its derived from:\n\n.col-lg-7 {\n    width: 58.33333%;\n}\n\nIt should align the span on L#61 of containers.html[1] 58% (or ~7 columns) from the left on large screens. \n\n[1] https://review.opendev.org/#/c/709025/9/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers.html\n\nThese styles and the accompanying markup (as above) are added to try and coerce linebreaks in between the display name and the policy name to avoid introducing extraneous line breaks in the middle of either names - for readability.\n\nThis was tested at multiple screen sizes with and with policy names and display names close to our production values and with just policy names. It does offer an improvement over allowing the text to flow and break freely across lines.\n\nI agree this can be improved in several ways. At the very least replacing the magic number with a descriptive variable. I suspect we can reuse a variable or mixin from the bundled horizon styles.","commit_id":"64f0a7240f5d7dd51cad1297a39e190891ef5221"}],"openstack_dashboard/test/unit/api/rest/test_swift.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ed7b0941a5c358fc43ef66cfd4ea97ede947959e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                        \"aliases\": \"nz--o1--mr-r3\","},{"line_number":48,"context_line":"                        \"default\": True,"},{"line_number":49,"context_line":"                        \"name\": \"nz--o1--mr-r3\""},{"line_number":50,"context_line":"                    }, {"},{"line_number":51,"context_line":"                        \"aliases\": \"another-policy\","},{"line_number":52,"context_line":"                        \"name\": \"some-other-policy\""},{"line_number":53,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_5d276113","line":50,"range":{"start_line":50,"start_character":20,"end_line":50,"end_character":24},"updated":"2020-04-14 06:25:04.000000000","message":"nit: inconsistent style. The style in L.66-67 looks better.","commit_id":"64f0a7240f5d7dd51cad1297a39e190891ef5221"}]}
