)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"95ad3d2666898bf0354f42fd6992ee6cace5c12e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Supports extra properties in project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This challenge is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"},{"line_number":12,"context_line":"by this patch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a122d0e_d68a95be","line":9,"updated":"2016-04-26 14:30:09.000000000","message":"Did you meant \u0027change\u0027?","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6c89ab7b67e72a1b7a1320301a7997e374c52b71","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Supports extra properties in project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This challenge is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"},{"line_number":12,"context_line":"by this patch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a122d0e_ec6a1d80","line":9,"in_reply_to":"1a122d0e_d68a95be","updated":"2016-04-28 16:34:18.000000000","message":"Done","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},"change_message_id":"2b2b5218ff20e22c2a6da6878a08379406960073","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Supports extra properties in project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"},{"line_number":12,"context_line":"by this patch."},{"line_number":13,"context_line":"http://docs.openstack.org/developer/horizon/topics/customizing.html#horizon-customization-module-overrides"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3ac371cc_4a55d71b","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":9},"updated":"2016-08-14 00:34:59.000000000","message":"an","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},"change_message_id":"2b2b5218ff20e22c2a6da6878a08379406960073","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"},{"line_number":12,"context_line":"by this patch."},{"line_number":13,"context_line":"http://docs.openstack.org/developer/horizon/topics/customizing.html#horizon-customization-module-overrides"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3ac371cc_ca3f07d5","line":11,"range":{"start_line":11,"start_character":43,"end_line":11,"end_character":44},"updated":"2016-08-14 00:34:59.000000000","message":"an","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17130,"name":"melissaml","email":"ma.lei@99cloud.net","username":"malei"},"change_message_id":"2b2b5218ff20e22c2a6da6878a08379406960073","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"},{"line_number":12,"context_line":"by this patch."},{"line_number":13,"context_line":"http://docs.openstack.org/developer/horizon/topics/customizing.html#horizon-customization-module-overrides"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3ac371cc_0a22bfb9","line":11,"range":{"start_line":11,"start_character":11,"end_line":11,"end_character":21},"updated":"2016-08-14 00:34:59.000000000","message":"explanation","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b5ef94695665cd018e9327c7644604334cce3732","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-08-14 18:29:29 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Supports extra properties in project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"3ac371cc_19797730","line":8,"updated":"2016-08-14 09:59:25.000000000","message":"There is minor comments in patch set 17. Could you address them?","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"081962a8aa26f4e20cea7061e23698a0ed1a5b19","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-08-14 18:29:29 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Supports extra properties in project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"3ac371cc_597e4faf","line":8,"in_reply_to":"3ac371cc_19797730","updated":"2016-08-14 11:52:46.000000000","message":"I addressed in patch 18.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0a47290ec4b34d6b022f8ed6c7d8195e55cfe31e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-08-14 18:29:29 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Supports extra properties in project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is to support extra properties in project and user."},{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"3ac371cc_6beff2b0","line":8,"in_reply_to":"3ac371cc_597e4faf","updated":"2016-08-14 12:06:10.000000000","message":"Looks address in patch set 19 not in 18. thanks.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b5ef94695665cd018e9327c7644604334cce3732","unresolved":false,"context_lines":[{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"},{"line_number":12,"context_line":"by this patch."},{"line_number":13,"context_line":"http://docs.openstack.org/developer/horizon/topics/customizing.html#horizon-customization-module-overrides"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In addition, when you do a create or update user, you can specify a"},{"line_number":16,"context_line":"value of extra property by setting in local_settings.py"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"3ac371cc_b9878311","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":106},"updated":"2016-08-14 09:59:25.000000000","message":"Unnecessary.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"081962a8aa26f4e20cea7061e23698a0ed1a5b19","unresolved":false,"context_lines":[{"line_number":10,"context_line":"To show a extra property in project/user table, you can see the site"},{"line_number":11,"context_line":"below. The explnation of the method to add a extra property is added"},{"line_number":12,"context_line":"by this patch."},{"line_number":13,"context_line":"http://docs.openstack.org/developer/horizon/topics/customizing.html#horizon-customization-module-overrides"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In addition, when you do a create or update user, you can specify a"},{"line_number":16,"context_line":"value of extra property by setting in local_settings.py"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"3ac371cc_b9494391","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":106},"in_reply_to":"3ac371cc_b9878311","updated":"2016-08-14 11:52:46.000000000","message":"Done","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"}],"doc/source/topics/customizing.rst":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"95ad3d2666898bf0354f42fd6992ee6cace5c12e","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        WSGIDaemonProcess [... existing options ...] python-path\u003d/opt/python"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Costomize the project and user table column"},{"line_number":525,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_11d9b722","line":524,"updated":"2016-04-26 14:30:09.000000000","message":"-\u003e cUstomize?","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6c89ab7b67e72a1b7a1320301a7997e374c52b71","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        WSGIDaemonProcess [... existing options ...] python-path\u003d/opt/python"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Costomize the project and user table column"},{"line_number":525,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_e8e52009","line":524,"in_reply_to":"1a122d0e_11d9b722","updated":"2016-04-28 16:34:18.000000000","message":"Done","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":20316,"name":"Marcellin Fom Tchassem","email":"mf6510@att.com","username":"ciello89"},"change_message_id":"fa52542ab257b75178a2bc288a321e0db5cca7d6","unresolved":false,"context_lines":[{"line_number":526,"context_line":""},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"Keystone has a place to store extra information regarding project and user."},{"line_number":529,"context_line":"Using the override mechanism wttirten by preceding section, Horizon is able to"},{"line_number":530,"context_line":"show these extra information as a custom column."},{"line_number":531,"context_line":"For example, if a user in Keystone has a attribute ``tel``, you could define"},{"line_number":532,"context_line":"new column::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_69bbdfe5","line":529,"range":{"start_line":529,"start_character":29,"end_line":529,"end_character":37},"updated":"2016-04-26 16:03:04.000000000","message":"written?","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6c89ab7b67e72a1b7a1320301a7997e374c52b71","unresolved":false,"context_lines":[{"line_number":526,"context_line":""},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"Keystone has a place to store extra information regarding project and user."},{"line_number":529,"context_line":"Using the override mechanism wttirten by preceding section, Horizon is able to"},{"line_number":530,"context_line":"show these extra information as a custom column."},{"line_number":531,"context_line":"For example, if a user in Keystone has a attribute ``tel``, you could define"},{"line_number":532,"context_line":"new column::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_48eff4e8","line":529,"range":{"start_line":529,"start_character":29,"end_line":529,"end_character":37},"in_reply_to":"1a122d0e_69bbdfe5","updated":"2016-04-28 16:34:18.000000000","message":"Done","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"d6aad4000ed41c2e60ec269c28504339bb1f92bd","unresolved":false,"context_lines":[{"line_number":519,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has a attribute ``phone_num``, you could"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_6bdbdded","line":522,"updated":"2016-06-17 21:13:47.000000000","message":"should specify it\u0027s for v3 only","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"d54babb2e8135a515d99f4263f27a3df915b08c3","unresolved":false,"context_lines":[{"line_number":519,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has a attribute ``phone_num``, you could"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a9d85d2_195bf32f","line":522,"in_reply_to":"7aa08908_6bdbdded","updated":"2016-06-21 08:51:04.000000000","message":"Done","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"d6aad4000ed41c2e60ec269c28504339bb1f92bd","unresolved":false,"context_lines":[{"line_number":536,"context_line":"    class MyUsersTable(user_tables.UsersTable):"},{"line_number":537,"context_line":"        phone_num \u003d tables.Column(\u0027phone_num\u0027,"},{"line_number":538,"context_line":"                                  verbose_name\u003d_(\u0027Phone Number\u0027),"},{"line_number":539,"context_line":"                                  form_field\u003dforms.CharField(),)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        class Meta(user_tables.UsersTable.Meta):"},{"line_number":542,"context_line":"            columns \u003d (\u0027name\u0027, \u0027description\u0027, \u0027phone_num\u0027)"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_0bd219d1","line":539,"updated":"2016-06-17 21:13:47.000000000","message":"nit: keep it consistent with the local_settings.example\n\nphone_num vs telephone","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"d54babb2e8135a515d99f4263f27a3df915b08c3","unresolved":false,"context_lines":[{"line_number":536,"context_line":"    class MyUsersTable(user_tables.UsersTable):"},{"line_number":537,"context_line":"        phone_num \u003d tables.Column(\u0027phone_num\u0027,"},{"line_number":538,"context_line":"                                  verbose_name\u003d_(\u0027Phone Number\u0027),"},{"line_number":539,"context_line":"                                  form_field\u003dforms.CharField(),)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        class Meta(user_tables.UsersTable.Meta):"},{"line_number":542,"context_line":"            columns \u003d (\u0027name\u0027, \u0027description\u0027, \u0027phone_num\u0027)"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a9d85d2_7942f73f","line":539,"in_reply_to":"7aa08908_0bd219d1","updated":"2016-06-21 08:51:04.000000000","message":"Done","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has a attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9ad45d7e_f9b8d5ea","line":523,"range":{"start_line":523,"start_character":40,"end_line":523,"end_character":49},"updated":"2016-08-12 17:44:51.000000000","message":"the preceding section","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has a attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":17,"id":"3ac371cc_5e52b5de","line":523,"range":{"start_line":523,"start_character":40,"end_line":523,"end_character":49},"in_reply_to":"9ad45d7e_f9b8d5ea","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has a attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    from django.utils.translation import ugettext_lazy as _"}],"source_content_type":"text/x-rst","patch_set":17,"id":"bacf61ea_952738c9","line":525,"range":{"start_line":525,"start_character":39,"end_line":525,"end_character":40},"updated":"2016-08-12 17:44:51.000000000","message":"an","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has a attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    from django.utils.translation import ugettext_lazy as _"}],"source_content_type":"text/x-rst","patch_set":17,"id":"3ac371cc_be5da9ee","line":525,"range":{"start_line":525,"start_character":39,"end_line":525,"end_character":40},"in_reply_to":"bacf61ea_952738c9","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b5ef94695665cd018e9327c7644604334cce3732","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by the preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3ac371cc_f9b3bb08","line":523,"range":{"start_line":523,"start_character":40,"end_line":523,"end_character":61},"updated":"2016-08-14 09:59:25.000000000","message":"Which is the preceding section? I am not sure what section is meant by \u0027the preceding section\u0027?","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"081962a8aa26f4e20cea7061e23698a0ed1a5b19","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by the preceding section, Horizon is able to"},{"line_number":524,"context_line":"show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3ac371cc_d9487f8a","line":523,"range":{"start_line":523,"start_character":40,"end_line":523,"end_character":61},"in_reply_to":"3ac371cc_f9b3bb08","updated":"2016-08-14 11:52:46.000000000","message":"It indicates the \u0027Horizon customization module\u0027 section. I added this section name.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":19896,"name":"yejiawei","email":"ye.jiawei@99cloud.net","username":"yejiawei"},"change_message_id":"6f2ade8ec0055e501ef3878830fc5f93e27fcbbc","unresolved":false,"context_lines":[{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by the preceding section(Horizon customization"},{"line_number":524,"context_line":"module), Horizon is able to show these extra information as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_aeba98be","line":524,"range":{"start_line":524,"start_character":45,"end_line":524,"end_character":56},"updated":"2016-08-14 14:01:31.000000000","message":"informations?","commit_id":"903a4ef6ef6b6c30fcee1904e6174df30af8e177"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9aaabc7aaaa1cd3effcfe3e974e1cb9a5bcf1efd","unresolved":false,"context_lines":[{"line_number":401,"context_line":".example suffix added.  Developers and deployers should strive to use this method of"},{"line_number":402,"context_line":"customization as much as possible, and support for this is given preference over more"},{"line_number":403,"context_line":"exotic methods such as monkey patching and overrides files."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"Horizon customization module (overrides)"},{"line_number":406,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3ac371cc_b9901997","line":404,"updated":"2016-08-15 05:09:49.000000000","message":"Add the following here:\n\n  .. _horizon-customization-module:","commit_id":"c9f334d5551eddba92b1eddf05c207c3c8f56f37"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"00921695b37aa11b8445f600e2ae77e516eaae6e","unresolved":false,"context_lines":[{"line_number":401,"context_line":".example suffix added.  Developers and deployers should strive to use this method of"},{"line_number":402,"context_line":"customization as much as possible, and support for this is given preference over more"},{"line_number":403,"context_line":"exotic methods such as monkey patching and overrides files."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"Horizon customization module (overrides)"},{"line_number":406,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3ac371cc_e698fa1d","line":404,"in_reply_to":"3ac371cc_b9901997","updated":"2016-08-16 02:22:15.000000000","message":"Done","commit_id":"c9f334d5551eddba92b1eddf05c207c3c8f56f37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9aaabc7aaaa1cd3effcfe3e974e1cb9a5bcf1efd","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by the preceding section(Horizon customization"},{"line_number":524,"context_line":"module), Horizon is able to show these extra informations as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3ac371cc_7996a195","line":524,"range":{"start_line":523,"start_character":29,"end_line":524,"end_character":7},"updated":"2016-08-15 05:09:49.000000000","message":"In this case, it is recommended to use a reference. It is the sphinx way.\n\n described in :ref:`horizon-customization-module`,","commit_id":"c9f334d5551eddba92b1eddf05c207c3c8f56f37"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"00921695b37aa11b8445f600e2ae77e516eaae6e","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":523,"context_line":"Using the override mechanism written by the preceding section(Horizon customization"},{"line_number":524,"context_line":"module), Horizon is able to show these extra informations as a custom column."},{"line_number":525,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":526,"context_line":"define new column::"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"3ac371cc_868ae6bd","line":524,"range":{"start_line":523,"start_character":29,"end_line":524,"end_character":7},"in_reply_to":"3ac371cc_7996a195","updated":"2016-08-16 02:22:15.000000000","message":"Done, thank you for your information!","commit_id":"c9f334d5551eddba92b1eddf05c207c3c8f56f37"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"7905c8299bc8d62b9aec5120b8b9b032d3334f7d","unresolved":false,"context_lines":[{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":525,"context_line":"Using the override mechanism written by the preceding section :ref:`horizon-customization-module`."},{"line_number":526,"context_line":"Horizon is able to show these extra informations as a custom column."},{"line_number":527,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":528,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"1ac06dbe_4f6840bb","line":525,"range":{"start_line":525,"start_character":97,"end_line":525,"end_character":98},"updated":"2016-08-19 12:31:23.000000000","message":"period -\u003e comma","commit_id":"dd61e001ecd12891fa7d5df942dcb774602c245b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"7905c8299bc8d62b9aec5120b8b9b032d3334f7d","unresolved":false,"context_lines":[{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":525,"context_line":"Using the override mechanism written by the preceding section :ref:`horizon-customization-module`."},{"line_number":526,"context_line":"Horizon is able to show these extra informations as a custom column."},{"line_number":527,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":528,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"1ac06dbe_0ff3e80b","line":525,"range":{"start_line":525,"start_character":29,"end_line":525,"end_character":61},"updated":"2016-08-19 12:31:23.000000000","message":"written by the preceding section -\u003e decribed in","commit_id":"dd61e001ecd12891fa7d5df942dcb774602c245b"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"04c321b13177c22b99beed1762a5d5e7bceb4e46","unresolved":false,"context_lines":[{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":525,"context_line":"Using the override mechanism written by the preceding section :ref:`horizon-customization-module`."},{"line_number":526,"context_line":"Horizon is able to show these extra informations as a custom column."},{"line_number":527,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":528,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"1ac06dbe_2099936f","line":525,"range":{"start_line":525,"start_character":29,"end_line":525,"end_character":61},"in_reply_to":"1ac06dbe_0ff3e80b","updated":"2016-08-19 13:11:33.000000000","message":"Done","commit_id":"dd61e001ecd12891fa7d5df942dcb774602c245b"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"04c321b13177c22b99beed1762a5d5e7bceb4e46","unresolved":false,"context_lines":[{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":525,"context_line":"Using the override mechanism written by the preceding section :ref:`horizon-customization-module`."},{"line_number":526,"context_line":"Horizon is able to show these extra informations as a custom column."},{"line_number":527,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":528,"context_line":"define new column::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"1ac06dbe_c0935f4e","line":525,"range":{"start_line":525,"start_character":97,"end_line":525,"end_character":98},"in_reply_to":"1ac06dbe_4f6840bb","updated":"2016-08-19 13:11:33.000000000","message":"Done","commit_id":"dd61e001ecd12891fa7d5df942dcb774602c245b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"7905c8299bc8d62b9aec5120b8b9b032d3334f7d","unresolved":false,"context_lines":[{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":525,"context_line":"Using the override mechanism written by the preceding section :ref:`horizon-customization-module`."},{"line_number":526,"context_line":"Horizon is able to show these extra informations as a custom column."},{"line_number":527,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":528,"context_line":"define new column::"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3ac371cc_062501c0","line":526,"range":{"start_line":526,"start_character":36,"end_line":526,"end_character":48},"updated":"2016-08-19 12:31:23.000000000","message":"Hmm... information is generally uncountable.","commit_id":"dd61e001ecd12891fa7d5df942dcb774602c245b"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"04c321b13177c22b99beed1762a5d5e7bceb4e46","unresolved":false,"context_lines":[{"line_number":523,"context_line":""},{"line_number":524,"context_line":"Keystone V3 has a place to store extra information regarding project and user."},{"line_number":525,"context_line":"Using the override mechanism written by the preceding section :ref:`horizon-customization-module`."},{"line_number":526,"context_line":"Horizon is able to show these extra informations as a custom column."},{"line_number":527,"context_line":"For example, if a user in Keystone has an attribute ``phone_num``, you could"},{"line_number":528,"context_line":"define new column::"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"1ac06dbe_8073274d","line":526,"range":{"start_line":526,"start_character":36,"end_line":526,"end_character":48},"in_reply_to":"3ac371cc_062501c0","updated":"2016-08-19 13:11:33.000000000","message":"Done","commit_id":"dd61e001ecd12891fa7d5df942dcb774602c245b"},{"author":{"_account_id":20509,"name":"Daniel Castellanos","email":"luis.daniel.castellanos@intel.com","username":"lcastell"},"change_message_id":"d205b897f45be50e7762070cce68c4e01279e00f","unresolved":false,"context_lines":[{"line_number":517,"context_line":"        WSGIDaemonProcess [... existing options ...] python-path\u003d/opt/python"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"Customize the project and user table column"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ac06dbe_fcc1c92f","line":520,"range":{"start_line":520,"start_character":0,"end_line":520,"end_character":43},"updated":"2016-08-19 20:31:36.000000000","message":"does this setting allows you to only configure a single column in each one of the tables? I think if by using this setting you can configure more than one extra attribute the title needs to specify this. just add an \u0027s\u0027 at the end of the line :)","commit_id":"b6f4a3098db8fc2ba906988e5b04acad987a6cde"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"49fff4c7f9b50820737745134e75178fb9d7d4fa","unresolved":false,"context_lines":[{"line_number":517,"context_line":"        WSGIDaemonProcess [... existing options ...] python-path\u003d/opt/python"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"Customize the project and user table column"},{"line_number":521,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ac06dbe_b373f2b0","line":520,"range":{"start_line":520,"start_character":0,"end_line":520,"end_character":43},"in_reply_to":"1ac06dbe_fcc1c92f","updated":"2016-08-20 07:19:00.000000000","message":"Done","commit_id":"b6f4a3098db8fc2ba906988e5b04acad987a6cde"},{"author":{"_account_id":23302,"name":"黄振","email":"huangzhen@awcloud.com","username":"huangzhen"},"change_message_id":"1eb753ee3cbcb2a961791f81bffdb6e144028457","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"1ac06dbe_ee690127","line":665,"updated":"2016-08-25 03:52:29.000000000","message":"msgid\"\"\n\"Similarly to adding custom styling (see above), it is possible\" \"to include custom javascript files.\"\nmsgstr\"\"\n\"同样以添加自定义样式（往上看），它可能包括自定义的JavaScript\"\n\"文件。\"\nmsgid\"\"\n\"All Horizon\u0027s javascript files are listed in the\"\n\"\"openstack_dashboard/templates/horizon/_scripts.html\"\"\n\"partial template, which is included in Horizon\u0027s base\"\n\"template in \"block js\".\"\nmsgstr\"\"\n\"所有Horizon的javascript文件被列在\"\n\"“openstack_dashboard/templates/horizon/_scripts.html”\"\n\"的局部模板里面，这是包含在“block js”的Horizon的基本模板里面。\"","commit_id":"ab11eef92a51894eaf61b7da249543026d08fca1"}],"doc/source/topics/settings.rst":[{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"d6aad4000ed41c2e60ec269c28504339bb1f92bd","unresolved":false,"context_lines":[{"line_number":1602,"context_line":"  * %(param)s"},{"line_number":1603,"context_line":""},{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"``PROJECT_EXTRA_INFO``"},{"line_number":1606,"context_line":"----------------------"},{"line_number":1607,"context_line":""},{"line_number":1608,"context_line":".. versionadded:: 10.0.0(Newton)"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_eb36adb2","line":1605,"updated":"2016-06-17 21:13:47.000000000","message":"maybe call it PROJECT_TABLE_EXTRA_INFO","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"d54babb2e8135a515d99f4263f27a3df915b08c3","unresolved":false,"context_lines":[{"line_number":1602,"context_line":"  * %(param)s"},{"line_number":1603,"context_line":""},{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"``PROJECT_EXTRA_INFO``"},{"line_number":1606,"context_line":"----------------------"},{"line_number":1607,"context_line":""},{"line_number":1608,"context_line":".. versionadded:: 10.0.0(Newton)"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a9d85d2_39a6af10","line":1605,"in_reply_to":"7aa08908_eb36adb2","updated":"2016-06-21 08:51:04.000000000","message":"Done","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"d6aad4000ed41c2e60ec269c28504339bb1f92bd","unresolved":false,"context_lines":[{"line_number":1607,"context_line":""},{"line_number":1608,"context_line":".. versionadded:: 10.0.0(Newton)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"Default: ``{}``"},{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"Add additional information for project as a extra attribute."},{"line_number":1613,"context_line":"Project and user can have any attributes by keystone mechanism."}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_4bc1c17f","line":1610,"updated":"2016-06-17 21:13:47.000000000","message":"can you show an example of how to populate it?","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"d54babb2e8135a515d99f4263f27a3df915b08c3","unresolved":false,"context_lines":[{"line_number":1607,"context_line":""},{"line_number":1608,"context_line":".. versionadded:: 10.0.0(Newton)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"Default: ``{}``"},{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"Add additional information for project as a extra attribute."},{"line_number":1613,"context_line":"Project and user can have any attributes by keystone mechanism."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a9d85d2_59f57bc9","line":1610,"in_reply_to":"7aa08908_4bc1c17f","updated":"2016-06-21 08:51:04.000000000","message":"Done","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"d6aad4000ed41c2e60ec269c28504339bb1f92bd","unresolved":false,"context_lines":[{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"Add additional information for project as a extra attribute."},{"line_number":1613,"context_line":"Project and user can have any attributes by keystone mechanism."},{"line_number":1614,"context_line":"This setting can treat these attributes on Horizon."},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"``USER_EXTRA_INFO``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_abe1459d","line":1614,"updated":"2016-06-17 21:13:47.000000000","message":"specify for v3 only","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"d54babb2e8135a515d99f4263f27a3df915b08c3","unresolved":false,"context_lines":[{"line_number":1611,"context_line":""},{"line_number":1612,"context_line":"Add additional information for project as a extra attribute."},{"line_number":1613,"context_line":"Project and user can have any attributes by keystone mechanism."},{"line_number":1614,"context_line":"This setting can treat these attributes on Horizon."},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"``USER_EXTRA_INFO``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a9d85d2_9951a3db","line":1614,"in_reply_to":"7aa08908_abe1459d","updated":"2016-06-21 08:51:04.000000000","message":"Done","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":20509,"name":"Daniel Castellanos","email":"luis.daniel.castellanos@intel.com","username":"lcastell"},"change_message_id":"d205b897f45be50e7762070cce68c4e01279e00f","unresolved":false,"context_lines":[{"line_number":1630,"context_line":""},{"line_number":1631,"context_line":"Default: ``{}``"},{"line_number":1632,"context_line":""},{"line_number":1633,"context_line":"Add additional information for project as a extra attribute."},{"line_number":1634,"context_line":"Project and user can have any attributes by keystone mechanism."},{"line_number":1635,"context_line":"This setting can treat these attributes on Horizon when only"},{"line_number":1636,"context_line":"using Keystone v3."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ac06dbe_3ceec122","line":1633,"range":{"start_line":1633,"start_character":42,"end_line":1633,"end_character":49},"updated":"2016-08-19 20:31:36.000000000","message":"\u0027an extra\u0027","commit_id":"b6f4a3098db8fc2ba906988e5b04acad987a6cde"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"49fff4c7f9b50820737745134e75178fb9d7d4fa","unresolved":false,"context_lines":[{"line_number":1630,"context_line":""},{"line_number":1631,"context_line":"Default: ``{}``"},{"line_number":1632,"context_line":""},{"line_number":1633,"context_line":"Add additional information for project as a extra attribute."},{"line_number":1634,"context_line":"Project and user can have any attributes by keystone mechanism."},{"line_number":1635,"context_line":"This setting can treat these attributes on Horizon when only"},{"line_number":1636,"context_line":"using Keystone v3."}],"source_content_type":"text/x-rst","patch_set":23,"id":"1ac06dbe_136926bf","line":1633,"range":{"start_line":1633,"start_character":42,"end_line":1633,"end_character":49},"in_reply_to":"1ac06dbe_3ceec122","updated":"2016-08-20 07:19:00.000000000","message":"Done","commit_id":"b6f4a3098db8fc2ba906988e5b04acad987a6cde"}],"horizon/utils/filters.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    return mark_safe(\"\u003cspan data-seconds\u003d\\\"%d\\\"\u003e%s\u003c/span\u003e\" %"},{"line_number":63,"context_line":"                     (seconds, timesince(dt)))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@register.filter"},{"line_number":67,"context_line":"def get_value_from_key(object, key, default\u003dNone):"},{"line_number":68,"context_line":"    if isinstance(object, dict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_36ba6f6f","line":65,"updated":"2016-08-12 17:44:51.000000000","message":"Do we really need this filter? If you can use a class which inherits APIDictWrapper, I think you don\u0027t need this filter.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    return mark_safe(\"\u003cspan data-seconds\u003d\\\"%d\\\"\u003e%s\u003c/span\u003e\" %"},{"line_number":63,"context_line":"                     (seconds, timesince(dt)))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@register.filter"},{"line_number":67,"context_line":"def get_value_from_key(object, key, default\u003dNone):"},{"line_number":68,"context_line":"    if isinstance(object, dict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_1ece7d5a","line":65,"in_reply_to":"9ad45d7e_36ba6f6f","updated":"2016-08-14 09:36:20.000000000","message":"In this case, the key I want to access is variable. So in order to get the value in django template, I have to use the custom filter.\nBut if I prepare values for display before processing django template, we don\u0027t need to create this filter.\nI changed to the latter way.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@register.filter"},{"line_number":67,"context_line":"def get_value_from_key(object, key, default\u003dNone):"},{"line_number":68,"context_line":"    if isinstance(object, dict):"},{"line_number":69,"context_line":"        return object.get(key, default)"},{"line_number":70,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_5542e068","line":67,"range":{"start_line":67,"start_character":23,"end_line":67,"end_character":29},"updated":"2016-08-12 17:44:51.000000000","message":"\u0027object\u0027 is a reserved word in Python. It is recommended to use a reserved word. Could you reconsider the naming?","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@register.filter"},{"line_number":67,"context_line":"def get_value_from_key(object, key, default\u003dNone):"},{"line_number":68,"context_line":"    if isinstance(object, dict):"},{"line_number":69,"context_line":"        return object.get(key, default)"},{"line_number":70,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_5e7475fc","line":67,"range":{"start_line":67,"start_character":23,"end_line":67,"end_character":29},"in_reply_to":"bacf61ea_5542e068","updated":"2016-08-14 09:36:20.000000000","message":"Thanks for good comment. As above comment, I delete this filter.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"}],"openstack_dashboard/dashboards/identity/projects/templates/projects/_detail_overview.html":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"95ad3d2666898bf0354f42fd6992ee6cace5c12e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        \u003cdt\u003e{{ extras|get_extra_name:key }}\u003c/dt\u003e"},{"line_number":16,"context_line":"        \u003cdd\u003e{{ project|get_extra_property:key }}\u003c/dd\u003e"},{"line_number":17,"context_line":"      {% endfor %}"},{"line_number":18,"context_line":"    {% endif %}"},{"line_number":19,"context_line":"  \u003c/dl\u003e"},{"line_number":20,"context_line":"\u003c/div\u003e"},{"line_number":21,"context_line":""}],"source_content_type":"text/html","patch_set":3,"id":"1a122d0e_b5e42ee0","line":18,"updated":"2016-04-26 14:30:09.000000000","message":"Am I right that we are not going to translate extas here?","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6c89ab7b67e72a1b7a1320301a7997e374c52b71","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        \u003cdt\u003e{{ extras|get_extra_name:key }}\u003c/dt\u003e"},{"line_number":16,"context_line":"        \u003cdd\u003e{{ project|get_extra_property:key }}\u003c/dd\u003e"},{"line_number":17,"context_line":"      {% endfor %}"},{"line_number":18,"context_line":"    {% endif %}"},{"line_number":19,"context_line":"  \u003c/dl\u003e"},{"line_number":20,"context_line":"\u003c/div\u003e"},{"line_number":21,"context_line":""}],"source_content_type":"text/html","patch_set":3,"id":"1a122d0e_88bbcce4","line":18,"in_reply_to":"1a122d0e_b5e42ee0","updated":"2016-04-28 16:34:18.000000000","message":"Yes, extra_name is set the value which is already translated.","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b5ef94695665cd018e9327c7644604334cce3732","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    \u003cdd\u003e{{ project.description|default:_(\"None\") }}\u003c/dd\u003e"},{"line_number":13,"context_line":"    {% if extras %}"},{"line_number":14,"context_line":"      {% for key, val in extras.items %}"},{"line_number":15,"context_line":"        \u003cdt\u003e{{ key }}\u003c/dt\u003e"},{"line_number":16,"context_line":"        \u003cdd\u003e{{ val }}\u003c/dd\u003e"},{"line_number":17,"context_line":"      {% endfor %}"},{"line_number":18,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":18,"id":"3ac371cc_f9aa9b84","line":15,"range":{"start_line":15,"start_character":8,"end_line":15,"end_character":26},"updated":"2016-08-14 09:59:25.000000000","message":"when I display a project, I see a key itself (phone_num). A translated string (Phone Number) is not displayed.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fc480c95e3d682cef3947eb937dbbe9625fcd750","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    \u003cdd\u003e{{ project.description|default:_(\"None\") }}\u003c/dd\u003e"},{"line_number":13,"context_line":"    {% if extras %}"},{"line_number":14,"context_line":"      {% for key, val in extras.items %}"},{"line_number":15,"context_line":"        \u003cdt\u003e{{ key }}\u003c/dt\u003e"},{"line_number":16,"context_line":"        \u003cdd\u003e{{ val }}\u003c/dd\u003e"},{"line_number":17,"context_line":"      {% endfor %}"},{"line_number":18,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":18,"id":"3ac371cc_ebd5a2b9","line":15,"range":{"start_line":15,"start_character":8,"end_line":15,"end_character":26},"in_reply_to":"3ac371cc_6b73724e","updated":"2016-08-14 12:30:58.000000000","message":"See my comment on projects/views.py. I still think there is no need for the filter.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"081962a8aa26f4e20cea7061e23698a0ed1a5b19","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    \u003cdd\u003e{{ project.description|default:_(\"None\") }}\u003c/dd\u003e"},{"line_number":13,"context_line":"    {% if extras %}"},{"line_number":14,"context_line":"      {% for key, val in extras.items %}"},{"line_number":15,"context_line":"        \u003cdt\u003e{{ key }}\u003c/dt\u003e"},{"line_number":16,"context_line":"        \u003cdd\u003e{{ val }}\u003c/dd\u003e"},{"line_number":17,"context_line":"      {% endfor %}"},{"line_number":18,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":18,"id":"3ac371cc_6b73724e","line":15,"range":{"start_line":15,"start_character":8,"end_line":15,"end_character":26},"in_reply_to":"3ac371cc_f9aa9b84","updated":"2016-08-14 11:52:46.000000000","message":"I\u0027m sorry, I had forgotten about a display name..\nI re-considered and I reverted the filter because of the comment I wrote  in patch  17. In order to get the value from a key defined as a variable, we need to use this filter.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"}],"openstack_dashboard/dashboards/identity/projects/views.py":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"95ad3d2666898bf0354f42fd6992ee6cace5c12e","unresolved":false,"context_lines":[{"line_number":270,"context_line":"    @register.filter"},{"line_number":271,"context_line":"    def get_extra_name(extras, key):"},{"line_number":272,"context_line":"        # get display name from settings"},{"line_number":273,"context_line":"        return extras[key][0]"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    @register.filter"},{"line_number":276,"context_line":"    def get_extra_property(object, key):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_757a96f2","line":273,"updated":"2016-04-26 14:30:09.000000000","message":"Are you sure that there is no need to move these filters into horizon (or openstack_dashboard)/utils/filters.py?","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6c89ab7b67e72a1b7a1320301a7997e374c52b71","unresolved":false,"context_lines":[{"line_number":270,"context_line":"    @register.filter"},{"line_number":271,"context_line":"    def get_extra_name(extras, key):"},{"line_number":272,"context_line":"        # get display name from settings"},{"line_number":273,"context_line":"        return extras[key][0]"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    @register.filter"},{"line_number":276,"context_line":"    def get_extra_property(object, key):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_de10ac5b","line":273,"in_reply_to":"1a122d0e_757a96f2","updated":"2016-04-28 16:34:18.000000000","message":"These filters are used only for the case which having extra attribute.  So it is not common. So, I think it is proper to implement here. How about my opinion? If I should move these methods into another place from another aspect, please let me know. Thanks!","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"49039cfb49e713ac7212a9baf0f3b350695eee92","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    @register.filter"},{"line_number":276,"context_line":"    def get_extra_name(extras, key):"},{"line_number":277,"context_line":"        # get display name from settings"},{"line_number":278,"context_line":"        return extras[key]"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @register.filter"},{"line_number":281,"context_line":"    def get_extra_property(object, key):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_4169e7bd","line":278,"updated":"2016-06-21 14:36:02.000000000","message":"Is there a case when this extras[key] does not exist? Should we use here gettatr like it is done below?","commit_id":"4b15fa4442c1d4f8ac7b095f9ce1390c71b95f50"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"a8a4a0696e66f43fd99e71d10aecfe2149feb204","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    @register.filter"},{"line_number":276,"context_line":"    def get_extra_name(extras, key):"},{"line_number":277,"context_line":"        # get display name from settings"},{"line_number":278,"context_line":"        return extras[key]"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @register.filter"},{"line_number":281,"context_line":"    def get_extra_property(object, key):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_88cb3a72","line":278,"in_reply_to":"5a9d85d2_4169e7bd","updated":"2016-06-22 05:49:58.000000000","message":"Done","commit_id":"4b15fa4442c1d4f8ac7b095f9ce1390c71b95f50"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"5bd83f5a486b87a2edd2ade60109a88b5e290e6e","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"@register.filter"},{"line_number":277,"context_line":"def get_extra_name(extras, key):"},{"line_number":278,"context_line":"    # get display name from settings"},{"line_number":279,"context_line":"    return extras.get(key, None)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dada55a8_97e407ad","line":277,"updated":"2016-07-22 11:46:26.000000000","message":"What do you think about moving these filters into horizon/utils/filters.py? I searched \u0027register.filter\u0027 in the Horizon code and looks like we keep filters there.","commit_id":"0229a12bf59482a5d0f430d760d1de8e2818ec6c"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"753663bbd2b4c0da163ab28beb14c4a735fa044b","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"@register.filter"},{"line_number":277,"context_line":"def get_extra_name(extras, key):"},{"line_number":278,"context_line":"    # get display name from settings"},{"line_number":279,"context_line":"    return extras.get(key, None)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dada55a8_300c093b","line":277,"in_reply_to":"dada55a8_97e407ad","updated":"2016-07-25 03:05:10.000000000","message":"Done. I moved into horizon/utils/filters.py","commit_id":"0229a12bf59482a5d0f430d760d1de8e2818ec6c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        context[\"actions\"] \u003d table.render_row_actions(project)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":258,"context_line":"            ex_info \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":259,"context_line":"            context[\"extras\"] \u003d ex_info"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        return context"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_110495c4","line":259,"range":{"start_line":258,"start_character":11,"end_line":259,"end_character":39},"updated":"2016-08-12 17:44:51.000000000","message":"do we need to assign ex_info only to avoid line wrap?","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        context[\"actions\"] \u003d table.render_row_actions(project)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":258,"context_line":"            ex_info \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":259,"context_line":"            context[\"extras\"] \u003d ex_info"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        return context"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_1e3cbd2e","line":259,"range":{"start_line":258,"start_character":11,"end_line":259,"end_character":39},"in_reply_to":"9ad45d7e_110495c4","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"739796b0e4e12cf632b750055ed55010037715fc","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        context[\"actions\"] \u003d table.render_row_actions(project)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":257,"context_line":"            ex_info \u003d {}"},{"line_number":258,"context_line":"            for key in getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {}):"},{"line_number":259,"context_line":"                ex_info[key] \u003d getattr(project, key, \u0027\u0027)"},{"line_number":260,"context_line":"            context[\"extras\"] \u003d ex_info"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        return context"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3ac371cc_4b54b653","line":260,"range":{"start_line":257,"start_character":12,"end_line":260,"end_character":39},"updated":"2016-08-14 12:29:58.000000000","message":"How about the following to show a display name rather than key itself?\n\n  extra_info \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})\n      context[\u0027extras\u0027] \u003d dict((display_key, getattr(project, key, \u0027\u0027))\n                               for key, display_key in extra_info.items())","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"694a38906135173568d9248db5822743ce1650b8","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        context[\"actions\"] \u003d table.render_row_actions(project)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":257,"context_line":"            ex_info \u003d {}"},{"line_number":258,"context_line":"            for key in getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {}):"},{"line_number":259,"context_line":"                ex_info[key] \u003d getattr(project, key, \u0027\u0027)"},{"line_number":260,"context_line":"            context[\"extras\"] \u003d ex_info"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        return context"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3ac371cc_6b55321c","line":260,"range":{"start_line":257,"start_character":12,"end_line":260,"end_character":39},"in_reply_to":"3ac371cc_4b54b653","updated":"2016-08-14 13:02:24.000000000","message":"If so, how do we get a real value which user object have in django template ?\nI tried not using this filter, but I couldn\u0027t find the way to get a real value from user object.\nI think we can write like \u0027user.name\u0027 but we cannot write like \u0027getattr(user, key, \u0027\u0027)\u0027 in template.\nIn this case, a key is variable so we need to use latter case.","commit_id":"4fcd9e5c5a485a55bf916bd52eb1c4197e32ed5c"}],"openstack_dashboard/dashboards/identity/projects/workflows.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            kwargs \u003d {}"},{"line_number":462,"context_line":"            if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":463,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_112bf534","line":464,"range":{"start_line":464,"start_character":37,"end_line":464,"end_character":44},"updated":"2016-08-12 17:44:51.000000000","message":"unnecessary","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            kwargs \u003d {}"},{"line_number":462,"context_line":"            if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":463,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_5e4bd5b0","line":464,"range":{"start_line":464,"start_character":37,"end_line":464,"end_character":44},"in_reply_to":"9ad45d7e_112bf534","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":463,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"            desc \u003d data[\u0027description\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_71ca3170","line":465,"range":{"start_line":465,"start_character":20,"end_line":465,"end_character":35},"updated":"2016-08-12 17:44:51.000000000","message":"You use data.get(), so this if statement is unnecessary.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            if keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":463,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"            desc \u003d data[\u0027description\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_ded505ba","line":465,"range":{"start_line":465,"start_character":20,"end_line":465,"end_character":35},"in_reply_to":"9ad45d7e_71ca3170","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"            desc \u003d data[\u0027description\u0027]"},{"line_number":469,"context_line":"            self.object \u003d api.keystone.tenant_create(request,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_b19b0972","line":466,"updated":"2016-08-12 17:44:51.000000000","message":"None is unnecessary as this is the default value.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"            desc \u003d data[\u0027description\u0027]"},{"line_number":469,"context_line":"            self.object \u003d api.keystone.tenant_create(request,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_9ecb8d1e","line":466,"in_reply_to":"9ad45d7e_b19b0972","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"            desc \u003d data[\u0027description\u0027]"},{"line_number":469,"context_line":"            self.object \u003d api.keystone.tenant_create(request,"},{"line_number":470,"context_line":"                                                     name\u003ddata[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_9125250c","line":467,"updated":"2016-08-12 17:44:51.000000000","message":"As a result, L.461-466 can be:\n\n  if keystone.VERSIONS.active \u003e\u003d 3:\n      kwargs \u003d dict((key, data.get(key)) for key in EXTRA_INFO))\n  else:\n      kwargs \u003d {}","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":464,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":465,"context_line":"                    if key in data:"},{"line_number":466,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"            desc \u003d data[\u0027description\u0027]"},{"line_number":469,"context_line":"            self.object \u003d api.keystone.tenant_create(request,"},{"line_number":470,"context_line":"                                                     name\u003ddata[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_3e02593f","line":467,"in_reply_to":"9ad45d7e_9125250c","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":678,"context_line":"            project_id \u003d data[\u0027project_id\u0027]"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"            # add extra information"},{"line_number":681,"context_line":"            kwargs \u003d {}"},{"line_number":682,"context_line":"            EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":683,"context_line":"            for key in EXTRA_INFO.keys():"},{"line_number":684,"context_line":"                if key in data:"},{"line_number":685,"context_line":"                    kwargs[key] \u003d data.get(key, None)"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"            return api.keystone.tenant_update("},{"line_number":688,"context_line":"                request,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_31d559b9","line":685,"range":{"start_line":681,"start_character":12,"end_line":685,"end_character":53},"updated":"2016-08-12 17:44:51.000000000","message":"See my comment at L.467.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":678,"context_line":"            project_id \u003d data[\u0027project_id\u0027]"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"            # add extra information"},{"line_number":681,"context_line":"            kwargs \u003d {}"},{"line_number":682,"context_line":"            EXTRA_INFO \u003d getattr(settings, \u0027PROJECT_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":683,"context_line":"            for key in EXTRA_INFO.keys():"},{"line_number":684,"context_line":"                if key in data:"},{"line_number":685,"context_line":"                    kwargs[key] \u003d data.get(key, None)"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"            return api.keystone.tenant_update("},{"line_number":688,"context_line":"                request,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_5ef9154d","line":685,"range":{"start_line":681,"start_character":12,"end_line":685,"end_character":53},"in_reply_to":"9ad45d7e_31d559b9","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"}],"openstack_dashboard/dashboards/identity/users/forms.py":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"95ad3d2666898bf0354f42fd6992ee6cace5c12e","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"            # add extra information"},{"line_number":170,"context_line":"            kwargs \u003d {}"},{"line_number":171,"context_line":"            for key in getattr(settings, \u0027USER_EXTRA_INFO\u0027, []):"},{"line_number":172,"context_line":"                if data[key]:"},{"line_number":173,"context_line":"                    kwargs[key] \u003d data[key]"},{"line_number":174,"context_line":"            new_user \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_55c2fae9","line":171,"updated":"2016-04-26 14:30:09.000000000","message":"Should we add description ov this const to the docs?","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"a293bb53227e9894f779ead939e9ca29db2ad214","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":173,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":174,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":175,"context_line":"                    if data[key]:"},{"line_number":176,"context_line":"                        kwargs[key] \u003d data[key]"},{"line_number":177,"context_line":"            new_user \u003d \\"},{"line_number":178,"context_line":"                api.keystone.user_create(request,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_ae14be9f","line":175,"updated":"2016-06-24 00:01:52.000000000","message":"Is this check needed?","commit_id":"6dd2979c741f8f3ddb1808e7d71ccfe57a9c65e3"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"cfc43b57bb1e949468b9da10ee83eef86723977b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":173,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":174,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":175,"context_line":"                    if data[key]:"},{"line_number":176,"context_line":"                        kwargs[key] \u003d data[key]"},{"line_number":177,"context_line":"            new_user \u003d \\"},{"line_number":178,"context_line":"                api.keystone.user_create(request,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_ba44f41a","line":175,"in_reply_to":"3aaa91ec_ae14be9f","updated":"2016-06-24 01:30:06.000000000","message":"Done","commit_id":"6dd2979c741f8f3ddb1808e7d71ccfe57a9c65e3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            # add extra column defined by setting"},{"line_number":100,"context_line":"            EXTRA_INFO \u003d getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":101,"context_line":"            for key, value in EXTRA_INFO.items():"},{"line_number":102,"context_line":"                form \u003d forms.CharField(label\u003dvalue, required\u003dFalse)"},{"line_number":103,"context_line":"                self.fields[key] \u003d form"},{"line_number":104,"context_line":"                if ordering:"},{"line_number":105,"context_line":"                    ordering.append(key)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_d12e7da4","line":102,"range":{"start_line":102,"start_character":16,"end_line":102,"end_character":20},"updated":"2016-08-12 17:44:51.000000000","message":"You don\u0027t need to assign \u0027form\u0027. consider merging L.102-103.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            # add extra column defined by setting"},{"line_number":100,"context_line":"            EXTRA_INFO \u003d getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":101,"context_line":"            for key, value in EXTRA_INFO.items():"},{"line_number":102,"context_line":"                form \u003d forms.CharField(label\u003dvalue, required\u003dFalse)"},{"line_number":103,"context_line":"                self.fields[key] \u003d form"},{"line_number":104,"context_line":"                if ordering:"},{"line_number":105,"context_line":"                    ordering.append(key)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_1e867db9","line":102,"range":{"start_line":102,"start_character":16,"end_line":102,"end_character":20},"in_reply_to":"9ad45d7e_d12e7da4","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                data[\u0027email\u0027] \u003d data[\u0027email\u0027] or None"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"            # add extra information"},{"line_number":171,"context_line":"            kwargs \u003d {}"},{"line_number":172,"context_line":"            if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":173,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":174,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":175,"context_line":"                    if key in data:"},{"line_number":176,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":177,"context_line":"            new_user \u003d \\"},{"line_number":178,"context_line":"                api.keystone.user_create(request,"},{"line_number":179,"context_line":"                                         name\u003ddata[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_d192fdf5","line":176,"range":{"start_line":171,"start_character":12,"end_line":176,"end_character":57},"updated":"2016-08-12 17:44:51.000000000","message":"See my comment in project/workflow.py.","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                data[\u0027email\u0027] \u003d data[\u0027email\u0027] or None"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"            # add extra information"},{"line_number":171,"context_line":"            kwargs \u003d {}"},{"line_number":172,"context_line":"            if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":173,"context_line":"                EXTRA_INFO \u003d getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {})"},{"line_number":174,"context_line":"                for key in EXTRA_INFO.keys():"},{"line_number":175,"context_line":"                    if key in data:"},{"line_number":176,"context_line":"                        kwargs[key] \u003d data.get(key, None)"},{"line_number":177,"context_line":"            new_user \u003d \\"},{"line_number":178,"context_line":"                api.keystone.user_create(request,"},{"line_number":179,"context_line":"                                         name\u003ddata[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_bebbe974","line":176,"range":{"start_line":171,"start_character":12,"end_line":176,"end_character":57},"in_reply_to":"9ad45d7e_d192fdf5","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"}],"openstack_dashboard/dashboards/identity/users/views.py":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"49039cfb49e713ac7212a9baf0f3b350695eee92","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    def get_extra_name(extras, key):"},{"line_number":250,"context_line":"        # get display name from settings"},{"line_number":251,"context_line":"        return extras[key]"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    @register.filter"},{"line_number":254,"context_line":"    def get_extra_property(object, key):"},{"line_number":255,"context_line":"        return getattr(object, key, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_0fb26594","line":252,"updated":"2016-06-21 14:36:02.000000000","message":"So, we defining two similar filters twice here and in projects views??","commit_id":"4b15fa4442c1d4f8ac7b095f9ce1390c71b95f50"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"a8a4a0696e66f43fd99e71d10aecfe2149feb204","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    def get_extra_name(extras, key):"},{"line_number":250,"context_line":"        # get display name from settings"},{"line_number":251,"context_line":"        return extras[key]"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    @register.filter"},{"line_number":254,"context_line":"    def get_extra_property(object, key):"},{"line_number":255,"context_line":"        return getattr(object, key, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_d6f8387f","line":252,"in_reply_to":"5a9d85d2_0fb26594","updated":"2016-06-22 05:49:58.000000000","message":"Done, as you say we don\u0027t need to define twice.","commit_id":"4b15fa4442c1d4f8ac7b095f9ce1390c71b95f50"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            except Exception:"},{"line_number":131,"context_line":"                exceptions.handle(self.request,"},{"line_number":132,"context_line":"                                  _(\u0027Unable to retrieve project domain.\u0027))"},{"line_number":133,"context_line":"        data \u003d {}"},{"line_number":134,"context_line":"        data[\u0027domain_id\u0027] \u003d domain_id"},{"line_number":135,"context_line":"        data[\u0027domain_name\u0027] \u003d domain_name"},{"line_number":136,"context_line":"        data[\u0027id\u0027] \u003d user.id"},{"line_number":137,"context_line":"        data[\u0027name\u0027] \u003d user.name"},{"line_number":138,"context_line":"        data[\u0027project\u0027] \u003d user.project_id"},{"line_number":139,"context_line":"        data[\u0027email\u0027] \u003d getattr(user, \u0027email\u0027, None)"},{"line_number":140,"context_line":"        data[\u0027description\u0027] \u003d getattr(user, \u0027description\u0027, None)"},{"line_number":141,"context_line":"        if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":142,"context_line":"            for key in getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {}).keys():"},{"line_number":143,"context_line":"                data[key] \u003d getattr(user, key, None)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_f615779b","line":140,"range":{"start_line":133,"start_character":8,"end_line":140,"end_character":64},"updated":"2016-08-12 17:44:51.000000000","message":"Consider using:\n\n  data \u003d {\u0027domain_id\u0027: domain_id,\n          ....\n         \u0027description\u0027: getattr(user, \u0027description\u0027, None),\n  }","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            except Exception:"},{"line_number":131,"context_line":"                exceptions.handle(self.request,"},{"line_number":132,"context_line":"                                  _(\u0027Unable to retrieve project domain.\u0027))"},{"line_number":133,"context_line":"        data \u003d {}"},{"line_number":134,"context_line":"        data[\u0027domain_id\u0027] \u003d domain_id"},{"line_number":135,"context_line":"        data[\u0027domain_name\u0027] \u003d domain_name"},{"line_number":136,"context_line":"        data[\u0027id\u0027] \u003d user.id"},{"line_number":137,"context_line":"        data[\u0027name\u0027] \u003d user.name"},{"line_number":138,"context_line":"        data[\u0027project\u0027] \u003d user.project_id"},{"line_number":139,"context_line":"        data[\u0027email\u0027] \u003d getattr(user, \u0027email\u0027, None)"},{"line_number":140,"context_line":"        data[\u0027description\u0027] \u003d getattr(user, \u0027description\u0027, None)"},{"line_number":141,"context_line":"        if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":142,"context_line":"            for key in getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {}).keys():"},{"line_number":143,"context_line":"                data[key] \u003d getattr(user, key, None)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_9ec0ade2","line":140,"range":{"start_line":133,"start_character":8,"end_line":140,"end_character":64},"in_reply_to":"9ad45d7e_f615779b","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"06e7fb4c642b45eb715876b30e8cbc02320a538c","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        data[\u0027email\u0027] \u003d getattr(user, \u0027email\u0027, None)"},{"line_number":140,"context_line":"        data[\u0027description\u0027] \u003d getattr(user, \u0027description\u0027, None)"},{"line_number":141,"context_line":"        if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":142,"context_line":"            for key in getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {}).keys():"},{"line_number":143,"context_line":"                data[key] \u003d getattr(user, key, None)"},{"line_number":144,"context_line":"        return data"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_b673ff14","line":142,"range":{"start_line":142,"start_character":69,"end_line":142,"end_character":76},"updated":"2016-08-12 17:44:51.000000000","message":"unnecessary","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"fe3563c01a6e020a52796f3f2f28a2652478f3f3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        data[\u0027email\u0027] \u003d getattr(user, \u0027email\u0027, None)"},{"line_number":140,"context_line":"        data[\u0027description\u0027] \u003d getattr(user, \u0027description\u0027, None)"},{"line_number":141,"context_line":"        if api.keystone.VERSIONS.active \u003e\u003d 3:"},{"line_number":142,"context_line":"            for key in getattr(settings, \u0027USER_TABLE_EXTRA_INFO\u0027, {}).keys():"},{"line_number":143,"context_line":"                data[key] \u003d getattr(user, key, None)"},{"line_number":144,"context_line":"        return data"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_feb5617e","line":142,"range":{"start_line":142,"start_character":69,"end_line":142,"end_character":76},"in_reply_to":"9ad45d7e_b673ff14","updated":"2016-08-14 09:36:20.000000000","message":"Done","commit_id":"e822f1abdb3b172d0c1eaa04762cead4ccfc849f"}],"openstack_dashboard/local/local_settings.py.example":[{"author":{"_account_id":20316,"name":"Marcellin Fom Tchassem","email":"mf6510@att.com","username":"ciello89"},"change_message_id":"fa52542ab257b75178a2bc288a321e0db5cca7d6","unresolved":false,"context_lines":[{"line_number":738,"context_line":"# http://tinyurl.com/anticlickjack"},{"line_number":739,"context_line":"#DISALLOW_IFRAME_EMBED \u003d True"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"# Project and user can have any attributes by keystone mechanisum."},{"line_number":742,"context_line":"# This settings can treat these attributes on Horizon."},{"line_number":743,"context_line":"# It means, when you show Create/Update modal, attribtue below is"},{"line_number":744,"context_line":"# shown and you can specify any value."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"1a122d0e_e9408fa7","line":741,"range":{"start_line":741,"start_character":55,"end_line":741,"end_character":65},"updated":"2016-04-26 16:03:04.000000000","message":"mechanism","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"6c89ab7b67e72a1b7a1320301a7997e374c52b71","unresolved":false,"context_lines":[{"line_number":738,"context_line":"# http://tinyurl.com/anticlickjack"},{"line_number":739,"context_line":"#DISALLOW_IFRAME_EMBED \u003d True"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"# Project and user can have any attributes by keystone mechanisum."},{"line_number":742,"context_line":"# This settings can treat these attributes on Horizon."},{"line_number":743,"context_line":"# It means, when you show Create/Update modal, attribtue below is"},{"line_number":744,"context_line":"# shown and you can specify any value."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"1a122d0e_59f036c9","line":741,"range":{"start_line":741,"start_character":55,"end_line":741,"end_character":65},"in_reply_to":"1a122d0e_e9408fa7","updated":"2016-04-28 16:34:18.000000000","message":"Done","commit_id":"f21ee0fde494bd3e0b4ba4fb63d267bbb854864f"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"d6aad4000ed41c2e60ec269c28504339bb1f92bd","unresolved":false,"context_lines":[{"line_number":773,"context_line":""},{"line_number":774,"context_line":"# Project and user can have any attributes by keystone mechanism."},{"line_number":775,"context_line":"# This settings can treat these attributes on Horizon."},{"line_number":776,"context_line":"# It means, when you show Create/Update modal, attribtue below is"},{"line_number":777,"context_line":"# shown and you can specify any value."},{"line_number":778,"context_line":"# If you\u0027d like to display these extra data in project or user index table,"},{"line_number":779,"context_line":"# you can do it by customization below."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"7aa08908_0bde993d","line":776,"updated":"2016-06-17 21:13:47.000000000","message":"attribute*","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"d54babb2e8135a515d99f4263f27a3df915b08c3","unresolved":false,"context_lines":[{"line_number":773,"context_line":""},{"line_number":774,"context_line":"# Project and user can have any attributes by keystone mechanism."},{"line_number":775,"context_line":"# This settings can treat these attributes on Horizon."},{"line_number":776,"context_line":"# It means, when you show Create/Update modal, attribtue below is"},{"line_number":777,"context_line":"# shown and you can specify any value."},{"line_number":778,"context_line":"# If you\u0027d like to display these extra data in project or user index table,"},{"line_number":779,"context_line":"# you can do it by customization below."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"5a9d85d2_5991fb51","line":776,"in_reply_to":"7aa08908_0bde993d","updated":"2016-06-21 08:51:04.000000000","message":"Done","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"d6aad4000ed41c2e60ec269c28504339bb1f92bd","unresolved":false,"context_lines":[{"line_number":776,"context_line":"# It means, when you show Create/Update modal, attribtue below is"},{"line_number":777,"context_line":"# shown and you can specify any value."},{"line_number":778,"context_line":"# If you\u0027d like to display these extra data in project or user index table,"},{"line_number":779,"context_line":"# you can do it by customization below."},{"line_number":780,"context_line":"# http://docs.openstack.org/developer/horizon/topics/customizing.html#horizon-customization-module-overrides"},{"line_number":781,"context_line":"# Key is extra key name in Keystone and value is display name on page."},{"line_number":782,"context_line":"#PROJECT_EXTRA_INFO \u003d {"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"7aa08908_2b7f15e0","line":779,"updated":"2016-06-17 21:13:47.000000000","message":"The description block can be restated:\n\nKeystone v3 allows you to add extra properties to Project and Users. Horizon\u0027s customization (\u003c\u003c link \u003e\u003e) allows you to display this extra information in the Create/Update modal and the corresponding tables.","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"d54babb2e8135a515d99f4263f27a3df915b08c3","unresolved":false,"context_lines":[{"line_number":776,"context_line":"# It means, when you show Create/Update modal, attribtue below is"},{"line_number":777,"context_line":"# shown and you can specify any value."},{"line_number":778,"context_line":"# If you\u0027d like to display these extra data in project or user index table,"},{"line_number":779,"context_line":"# you can do it by customization below."},{"line_number":780,"context_line":"# http://docs.openstack.org/developer/horizon/topics/customizing.html#horizon-customization-module-overrides"},{"line_number":781,"context_line":"# Key is extra key name in Keystone and value is display name on page."},{"line_number":782,"context_line":"#PROJECT_EXTRA_INFO \u003d {"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"5a9d85d2_399a2f64","line":779,"in_reply_to":"7aa08908_2b7f15e0","updated":"2016-06-21 08:51:04.000000000","message":"Done","commit_id":"9b79dd87211b61ca20d49c45a35b7eb720f178eb"}],"releasenotes/notes/bp-support-extra-prop-for-project-and-user-e8a4578c395a8ade.yaml":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9aaabc7aaaa1cd3effcfe3e974e1cb9a5bcf1efd","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - \u003e"},{"line_number":4,"context_line":"    [`blueprint Supports extra properties in project and user \u003chttps://blueprints.launchpad.net/horizon/+spec/support-extra-prop-for-project-and-user\u003e`_]"},{"line_number":5,"context_line":"    Support an ability to treat additional information for"},{"line_number":6,"context_line":"    project and user as a extra attribute."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3ac371cc_d99fd5b2","line":6,"range":{"start_line":6,"start_character":24,"end_line":6,"end_character":25},"updated":"2016-08-15 05:09:49.000000000","message":"-\u003e an","commit_id":"c9f334d5551eddba92b1eddf05c207c3c8f56f37"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"00921695b37aa11b8445f600e2ae77e516eaae6e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - \u003e"},{"line_number":4,"context_line":"    [`blueprint Supports extra properties in project and user \u003chttps://blueprints.launchpad.net/horizon/+spec/support-extra-prop-for-project-and-user\u003e`_]"},{"line_number":5,"context_line":"    Support an ability to treat additional information for"},{"line_number":6,"context_line":"    project and user as a extra attribute."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3ac371cc_5baba7d6","line":6,"range":{"start_line":6,"start_character":24,"end_line":6,"end_character":25},"in_reply_to":"3ac371cc_d99fd5b2","updated":"2016-08-16 02:22:15.000000000","message":"Done","commit_id":"c9f334d5551eddba92b1eddf05c207c3c8f56f37"}]}
