)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"ecb3314fd91f4b3fa698686e8126300399c28488","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d25675e3_c77df28d","updated":"2025-02-20 13:21:49.000000000","message":"I have a few questions from the user point of view.\nWhen I open user (upper right corner) -\u003e Settings then there is a User Settings (for current user), Change Password (for current user) and then there is a Credentials where I can see all the users (when I am logged in with admin rights). Is it the right place for this panel/tab? When I need to go to the settings by clicking on \"currently logged user name\" in the upper right corner and then there are all the other things specifically related to the currently logged user, it looks a little suspicious for me that I can manipulate there with credentials for all the other users too. I would expect there visible credentials only for currently logged user (the same as I am able to change password there only for currently logged user) and then I would expect this whole panel/tab for Credentials (for users with admin right) visible under the Identity panel. With credentials for all users (the same as I am there able to edit all the other users and change their passwords as a admin).\nIt is just a suggestion, I think it will make more sense. But if we agree on the current implementation then I am ok with that, of course.\n\n\nAs a non admin user I can not manipulate with a credentials at all (no matter if the credentials are for me as a currently logged user). I can only see it in settings and I can see only mine (for currently logged user) but in the first column of the line in the tab is a User name which do not make a sense for me to show user name there. When I am logged as an user1, I go into the settings through clicking on my name in upper right corner, I can change the settings and the password only for me so I would expect it shows me Credentials only for currently logged user (so there is no reason to show my name as the first word on the line - first column) - It is probably the side effect of the thing I mentioned in previous paragraph.\nAnd in the Identity -\u003e Users panel where I can see in Users only myself, I can not see at all that the user have some credentials created.\n\n\nWhat exactly is the purpose of the \"project\" in Credentials? Project is not required during Credentials create, also Credentials are not visible in the Identity -\u003e Projects tab. I do not see any connection between project and Credentials at all. It looks for me it is connected only to User. Am I missing something? I thought maybe it is needed somehow for some of the keystone api calls but when It is not required to set it then I am really not sure.\nAdditionally in Settings -\u003e Credentials, although the Project is not defined during create, the dash \" - \" in the Project column is still clickable (which redirect to Projects tab and then shows error \" Error: Unable to retrieve project details. Details\". Are we able to make this dash \" - \" in Project column non-clickable?\n\nLast thing is that Confirm Delete Credential popup shows:\n\"You have selected: . Please confirm your selection. This action cannot be undone.\"\nSo I guess it missing some variable/text linked in after the \" : \"?","commit_id":"978ed36bae50e426460b9c57161fa907400953ff"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"132aba9a583fcad03a3f1c094e5a006c61e12be4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"413b1496_8c5461e6","in_reply_to":"4f2acdc2_aa849163","updated":"2025-03-11 00:53:19.000000000","message":"Done","commit_id":"978ed36bae50e426460b9c57161fa907400953ff"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"265e85fdf9be1b0dae2d96439d927b211894231f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4f2acdc2_aa849163","in_reply_to":"d25675e3_c77df28d","updated":"2025-02-25 16:55:30.000000000","message":"Thank you for your review! \nFrom a non-admin user perspective the credentials are displayed along with other settings, and that feels logical. A user with corresponding rights will be able to create/update/delete credentials from there as well. A non-admin user cannot see groups and role assignments tabs for user details as well, so settings seem to be the only logical place for that.\nNow admin user can indeed create/update/delete credentials for any user. It\u0027s convenient to manage all the credentials for all the user in the same place. We can discuss it during our weekly meeting, may be there\u0027s more logical place to display the credentials, say, under identity, visible for admin only.\nProject parameter limits the scope of the credential, it is optional for TOTP type, but mandatory for ec2.","commit_id":"978ed36bae50e426460b9c57161fa907400953ff"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"fb11f88dffe900c570865d2752166d6a58eec97e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"33d09d89_56b2eb00","updated":"2025-02-25 15:13:23.000000000","message":"recheck, unrelated failure","commit_id":"9f70903a294fdd4fef38ec3964e3792772757e99"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"9fbaedb18464895e03e7d40d228c027986104a77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7266475a_4969eb11","in_reply_to":"33d09d89_56b2eb00","updated":"2025-02-25 17:16:19.000000000","message":"\u003e recheck, unrelated failure\n\nHello, yes, mass problem\nhttps://review.opendev.org/c/openstack/horizon/+/942523","commit_id":"9f70903a294fdd4fef38ec3964e3792772757e99"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"4e1c58d3396a197b97f45501fa78032548f895d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"62507fc8_ef157a69","updated":"2025-02-26 15:54:13.000000000","message":"recheck, integration tests fix is merged","commit_id":"445dbbde09c5e7ecff2372192bddc9f8913e87b2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"716b9b1bd4587bb5afe1cc120a6471ef04028755","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2b187ce6_c43f5d29","updated":"2025-02-26 15:31:38.000000000","message":"recheck, unsupported media type issue should be fixed","commit_id":"445dbbde09c5e7ecff2372192bddc9f8913e87b2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"ae02a7222308c2d3adf21eca5ffec4e989b83dbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a0973b46_0a14f94c","updated":"2025-02-26 15:34:50.000000000","message":"recheck, unsupported media type issue should be fixed","commit_id":"445dbbde09c5e7ecff2372192bddc9f8913e87b2"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"6421d5fed3863354ba379bb4e906c40a891b7073","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"90101821_6f50bcef","updated":"2025-03-12 20:29:06.000000000","message":"Few little visual issues that can be fixed in upcoming patches.\n\nThe required format for EC2 is {\"access\": \u003caccess\u003e, \"secret\": \u003csecret\u003e} but when the required format is used then during deleting it has a problem to read it (probably because of multiple double quotes I guess), so deleting window looks like this:\nYou have selected: \"{\u0026quot;access\u0026quot;: \u0026quot;sss\u0026quot;, \u0026quot;secret\u0026quot;: \u0026quot;ooo\u0026quot;}\". Please confirm your selection. Deleted user credentials are not recoverable.","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"79bafb05055ba5dd6c92430f566ab353e9f535bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ff295334_e9e380ce","updated":"2025-03-13 17:40:10.000000000","message":"Please also see Jan\u0027s comments.","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"e464bc644428b84a8f9b75834f079f8dec87ce2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6704e16e_59f09964","updated":"2025-03-13 14:22:36.000000000","message":"Thanks!","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"e464bc644428b84a8f9b75834f079f8dec87ce2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"e41555af_8a29ba1b","in_reply_to":"90101821_6f50bcef","updated":"2025-03-13 14:22:36.000000000","message":"Yes, this needs to be fixed. I can do it the follow up patch.","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"3e1f852f9bee15dd47a97de3fa9a6a38f843953b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fabdf673_011e3b97","updated":"2025-03-17 14:20:21.000000000","message":"Thanks!","commit_id":"e1a2b3dea9dc16b6288b617132560bc9b648124b"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"7c15849a3bee4ef1784f69a5d0d88c4a2491d1e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fa3374e3_cc0b4000","updated":"2025-03-17 07:30:31.000000000","message":"Thanks, just one more small problem.","commit_id":"e1a2b3dea9dc16b6288b617132560bc9b648124b"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"fa577434698607f5245b4967d1c646930479002b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"143c2e97_02a72f52","updated":"2025-03-17 16:26:47.000000000","message":"LGTM, thank you Tatiana!\nJust please in upcoming patch, fix the visual issue \"{\u0026quot;access\u0026quot;: \u0026quot;xxx\u0026quot... during ec2 credential deleting.","commit_id":"edad0dbfc40e7aa87722e4ef10c84eb56e60644d"}],"openstack_dashboard/dashboards/identity/credentials/forms.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"79bafb05055ba5dd6c92430f566ab353e9f535bf","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        projects, __ \u003d keystone.tenant_list(request)"},{"line_number":46,"context_line":"        for project in projects:"},{"line_number":47,"context_line":"            if project.enabled:"},{"line_number":48,"context_line":"                project_choices.append((project.id, project.name))"},{"line_number":49,"context_line":"        self.fields[\u0027project\u0027].choices \u003d project_choices"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def handle(self, request, data):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ef518259_19482092","line":48,"updated":"2025-03-13 17:40:10.000000000","message":"do we need a limit or some kind of pagination here for when there are lots of projects?","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ae26df0da011952cc8230d603d6213a3d33f2e27","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        projects, __ \u003d keystone.tenant_list(request)"},{"line_number":46,"context_line":"        for project in projects:"},{"line_number":47,"context_line":"            if project.enabled:"},{"line_number":48,"context_line":"                project_choices.append((project.id, project.name))"},{"line_number":49,"context_line":"        self.fields[\u0027project\u0027].choices \u003d project_choices"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def handle(self, request, data):"}],"source_content_type":"text/x-python","patch_set":11,"id":"f0fd2b77_186fc468","line":48,"in_reply_to":"ef518259_19482092","updated":"2025-03-14 20:40:20.000000000","message":"I was thinking of adding scrolling at least. But it looks like a separate task that could be done in a follow-up patch.","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"}],"openstack_dashboard/dashboards/identity/credentials/tables.py":[{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"6421d5fed3863354ba379bb4e906c40a891b7073","unresolved":true,"context_lines":[{"line_number":35,"context_line":"    url \u003d \u0027horizon:identity:credentials:update\u0027"},{"line_number":36,"context_line":"    classes \u003d (\"ajax-modal\",)"},{"line_number":37,"context_line":"    policy_rules \u003d ((\"identity\", \"identity:update_credential\"),)"},{"line_number":38,"context_line":"    icon \u003d \"pencil\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class DeleteCredentialAction(tables.DeleteAction):"}],"source_content_type":"text/x-python","patch_set":11,"id":"38238a9b_a64c853a","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":19},"updated":"2025-03-12 20:29:06.000000000","message":"Missing pencil icon. Can not see it either in HTML.","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"e464bc644428b84a8f9b75834f079f8dec87ce2c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    url \u003d \u0027horizon:identity:credentials:update\u0027"},{"line_number":36,"context_line":"    classes \u003d (\"ajax-modal\",)"},{"line_number":37,"context_line":"    policy_rules \u003d ((\"identity\", \"identity:update_credential\"),)"},{"line_number":38,"context_line":"    icon \u003d \"pencil\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class DeleteCredentialAction(tables.DeleteAction):"}],"source_content_type":"text/x-python","patch_set":11,"id":"2290a3a3_e3e4bd1b","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":19},"in_reply_to":"38238a9b_a64c853a","updated":"2025-03-13 14:22:36.000000000","message":"It can be the part of CSS bug in devstack (the patch was merged: https://review.opendev.org/c/openstack/devstack/+/943108). I can see the icon on Ubuntu 20.04 env.","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"79bafb05055ba5dd6c92430f566ab353e9f535bf","unresolved":true,"context_lines":[{"line_number":91,"context_line":"        return datum.id"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def get_object_display(self, datum):"},{"line_number":94,"context_line":"        \"\"\"Display name of the credential.\"\"\""},{"line_number":95,"context_line":"        return datum.blob"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    class Meta(object):"}],"source_content_type":"text/x-python","patch_set":11,"id":"d3bd55d6_856ea7cf","line":94,"updated":"2025-03-13 17:40:10.000000000","message":"should be data, not name?","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ae26df0da011952cc8230d603d6213a3d33f2e27","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return datum.id"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def get_object_display(self, datum):"},{"line_number":94,"context_line":"        \"\"\"Display name of the credential.\"\"\""},{"line_number":95,"context_line":"        return datum.blob"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    class Meta(object):"}],"source_content_type":"text/x-python","patch_set":11,"id":"c4f71251_e017c849","line":94,"in_reply_to":"d3bd55d6_856ea7cf","updated":"2025-03-14 20:40:20.000000000","message":"Done","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"}],"openstack_dashboard/dashboards/identity/credentials/views.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"79bafb05055ba5dd6c92430f566ab353e9f535bf","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            for cred in credentials:"},{"line_number":39,"context_line":"                if cred.project_id is not None:"},{"line_number":40,"context_line":"                    project \u003d keystone.tenant_get("},{"line_number":41,"context_line":"                        self.request, cred.project_id, admin\u003dFalse)"},{"line_number":42,"context_line":"                    cred.project_name \u003d project.name"},{"line_number":43,"context_line":"                else:"},{"line_number":44,"context_line":"                    cred.project_name \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"32b708d5_4addf474","line":41,"updated":"2025-03-13 17:40:10.000000000","message":"this is going to be slow when displaying credentials for all the users, I wonder if we could at least move it to a function and use @memoize so that we don\u0027t repeatedly get the same project id","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ae26df0da011952cc8230d603d6213a3d33f2e27","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            for cred in credentials:"},{"line_number":39,"context_line":"                if cred.project_id is not None:"},{"line_number":40,"context_line":"                    project \u003d keystone.tenant_get("},{"line_number":41,"context_line":"                        self.request, cred.project_id, admin\u003dFalse)"},{"line_number":42,"context_line":"                    cred.project_name \u003d project.name"},{"line_number":43,"context_line":"                else:"},{"line_number":44,"context_line":"                    cred.project_name \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"6e228dac_412771b2","line":41,"in_reply_to":"32b708d5_4addf474","updated":"2025-03-14 20:40:20.000000000","message":"Done","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"7c15849a3bee4ef1784f69a5d0d88c4a2491d1e2","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    import tables as credential_tables"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@memoized.memoized_method"},{"line_number":30,"context_line":"def get_project_name(request, project_id):"},{"line_number":31,"context_line":"    if project_id is not None:"},{"line_number":32,"context_line":"        project \u003d keystone.tenant_get("}],"source_content_type":"text/x-python","patch_set":13,"id":"9258fde7_e3745ba9","line":29,"updated":"2025-03-17 07:30:31.000000000","message":"those are not methods, should use just plain memoize for functions","commit_id":"e1a2b3dea9dc16b6288b617132560bc9b648124b"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"3e1f852f9bee15dd47a97de3fa9a6a38f843953b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    import tables as credential_tables"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@memoized.memoized_method"},{"line_number":30,"context_line":"def get_project_name(request, project_id):"},{"line_number":31,"context_line":"    if project_id is not None:"},{"line_number":32,"context_line":"        project \u003d keystone.tenant_get("}],"source_content_type":"text/x-python","patch_set":13,"id":"0a645eef_1aea0cb5","line":29,"in_reply_to":"9258fde7_e3745ba9","updated":"2025-03-17 14:20:21.000000000","message":"Done","commit_id":"e1a2b3dea9dc16b6288b617132560bc9b648124b"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"7c15849a3bee4ef1784f69a5d0d88c4a2491d1e2","unresolved":true,"context_lines":[{"line_number":35,"context_line":"    return None"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@memoized.memoized_method"},{"line_number":39,"context_line":"def get_user_name(request, user_id):"},{"line_number":40,"context_line":"    if user_id is not None:"},{"line_number":41,"context_line":"        user \u003d keystone.user_get(request, user_id, admin\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":13,"id":"38c21c74_ce2a089d","line":38,"updated":"2025-03-17 07:30:31.000000000","message":"ditto","commit_id":"e1a2b3dea9dc16b6288b617132560bc9b648124b"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"3e1f852f9bee15dd47a97de3fa9a6a38f843953b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    return None"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@memoized.memoized_method"},{"line_number":39,"context_line":"def get_user_name(request, user_id):"},{"line_number":40,"context_line":"    if user_id is not None:"},{"line_number":41,"context_line":"        user \u003d keystone.user_get(request, user_id, admin\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":13,"id":"309e6baf_ccb781e0","line":38,"in_reply_to":"38c21c74_ce2a089d","updated":"2025-03-17 14:20:21.000000000","message":"Done","commit_id":"e1a2b3dea9dc16b6288b617132560bc9b648124b"}],"openstack_dashboard/dashboards/identity/users/credentials/__init__.py":[{"author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"change_message_id":"5711c34d607caa5d787f3be11808a161b3206b65","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7df9b375_3a7611e1","updated":"2025-02-18 22:49:27.000000000","message":"not sure if this was intentially left blank?","commit_id":"978ed36bae50e426460b9c57161fa907400953ff"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"132aba9a583fcad03a3f1c094e5a006c61e12be4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"26923441_b5e9bf9a","in_reply_to":"7df9b375_3a7611e1","updated":"2025-03-11 00:53:19.000000000","message":"The only time you want it to not be blank is if you want to import only specific files. If you keep it empty you can import from everything.","commit_id":"978ed36bae50e426460b9c57161fa907400953ff"}],"openstack_dashboard/dashboards/identity/users/tabs.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"79bafb05055ba5dd6c92430f566ab353e9f535bf","unresolved":true,"context_lines":[{"line_number":179,"context_line":"        except Exception:"},{"line_number":180,"context_line":"            exceptions.handle("},{"line_number":181,"context_line":"                self.request,"},{"line_number":182,"context_line":"                _(\"Unable to display the credentials of this user.\"))"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        return user_credentials"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"0078eb5d_010ad706","line":182,"updated":"2025-03-13 17:40:10.000000000","message":"I feel like this piece of code is repeated at least three times, maybe we could put it in a function?","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ae26df0da011952cc8230d603d6213a3d33f2e27","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        except Exception:"},{"line_number":180,"context_line":"            exceptions.handle("},{"line_number":181,"context_line":"                self.request,"},{"line_number":182,"context_line":"                _(\"Unable to display the credentials of this user.\"))"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        return user_credentials"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"b85706da_d41e19cb","line":182,"in_reply_to":"0078eb5d_010ad706","updated":"2025-03-14 20:40:20.000000000","message":"Done","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"}],"openstack_dashboard/dashboards/settings/credentials/forms.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"79bafb05055ba5dd6c92430f566ab353e9f535bf","unresolved":true,"context_lines":[{"line_number":26,"context_line":")"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class CreateCredentialForm(forms.SelfHandlingForm):"},{"line_number":30,"context_line":"    user_name \u003d forms.CharField("},{"line_number":31,"context_line":"        label\u003d_(\"User\"),"},{"line_number":32,"context_line":"        widget\u003dforms.TextInput(attrs\u003d{\"readonly\": \"readonly\"}))"}],"source_content_type":"text/x-python","patch_set":11,"id":"27478770_dca03cab","line":29,"updated":"2025-03-13 17:40:10.000000000","message":"can we import those classes from the other file, instead of duplicating them?","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ae26df0da011952cc8230d603d6213a3d33f2e27","unresolved":false,"context_lines":[{"line_number":26,"context_line":")"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class CreateCredentialForm(forms.SelfHandlingForm):"},{"line_number":30,"context_line":"    user_name \u003d forms.CharField("},{"line_number":31,"context_line":"        label\u003d_(\"User\"),"},{"line_number":32,"context_line":"        widget\u003dforms.TextInput(attrs\u003d{\"readonly\": \"readonly\"}))"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f092d5b_6ed86efc","line":29,"in_reply_to":"27478770_dca03cab","updated":"2025-03-14 20:40:20.000000000","message":"Done","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"6421d5fed3863354ba379bb4e906c40a891b7073","unresolved":true,"context_lines":[{"line_number":96,"context_line":"    def handle(self, request, data):"},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            params \u003d {"},{"line_number":99,"context_line":"                \u0027user\u0027: data[\u0027user_name\u0027],"},{"line_number":100,"context_line":"                \u0027type\u0027: data[\"cred_type\"],"},{"line_number":101,"context_line":"                \u0027blob\u0027: data[\"data\"],"},{"line_number":102,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":11,"id":"995b50e1_2d7c944c","line":99,"range":{"start_line":99,"start_character":16,"end_line":99,"end_character":42},"updated":"2025-03-12 20:29:06.000000000","message":"Is there any reason why not to use the same way as you use on line 54?\n\u0027user\u0027: request.user.id,","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"e464bc644428b84a8f9b75834f079f8dec87ce2c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def handle(self, request, data):"},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            params \u003d {"},{"line_number":99,"context_line":"                \u0027user\u0027: data[\u0027user_name\u0027],"},{"line_number":100,"context_line":"                \u0027type\u0027: data[\"cred_type\"],"},{"line_number":101,"context_line":"                \u0027blob\u0027: data[\"data\"],"},{"line_number":102,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":11,"id":"f950622e_e8f22cde","line":99,"range":{"start_line":99,"start_character":16,"end_line":99,"end_character":42},"in_reply_to":"995b50e1_2d7c944c","updated":"2025-03-13 14:22:36.000000000","message":"We do not display it here, so no need to bother with human friendly display user name instead of user id. So the hidden field user_name in this form contains, in fact, user id. In Create form we display user name but handle user id.","commit_id":"1572a96a371e84081c8e2c6ea7f49a02415edf4a"}],"openstack_dashboard/dashboards/settings/credentials/tables.py":[{"author":{"_account_id":32432,"name":"Owen McGonagle","email":"omcgonag@redhat.com","username":"omcgonag"},"change_message_id":"5711c34d607caa5d787f3be11808a161b3206b65","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class CreateCredentialAction(tables.LinkAction):"},{"line_number":24,"context_line":"    name \u003d \"create\""},{"line_number":25,"context_line":"    verbose_name \u003d _(\"Create Credential\")"},{"line_number":26,"context_line":"    url \u003d \u0027horizon:settings:credentials:create\u0027"},{"line_number":27,"context_line":"    classes \u003d (\"ajax-modal\",)"}],"source_content_type":"text/x-python","patch_set":4,"id":"6e1d974c_2845c33c","line":24,"updated":"2025-02-18 22:49:27.000000000","message":"Not sure where the Settings -\u003e Credentials -\u003e Create Credential form gets created/exposed - in my test env I see \"Create Role\" in upper right corner instead of \"Create Credential\"","commit_id":"978ed36bae50e426460b9c57161fa907400953ff"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"c3715919931cd81083120644df033aab82c9d267","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class CreateCredentialAction(tables.LinkAction):"},{"line_number":24,"context_line":"    name \u003d \"create\""},{"line_number":25,"context_line":"    verbose_name \u003d _(\"Create Credential\")"},{"line_number":26,"context_line":"    url \u003d \u0027horizon:settings:credentials:create\u0027"},{"line_number":27,"context_line":"    classes \u003d (\"ajax-modal\",)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5004eb2a_25e1c0f9","line":24,"in_reply_to":"6e1d974c_2845c33c","updated":"2025-02-24 18:42:34.000000000","message":"Done","commit_id":"978ed36bae50e426460b9c57161fa907400953ff"}]}
