)]}'
{"openstack_dashboard/api/glance.py":[{"author":{"_account_id":2455,"name":"Tihomir Trifonov","email":"t.trifonov@gmail.com","username":"ttrifonov"},"change_message_id":"aac2872d9b51061ef3210c9fec92b180fda514f1","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    client \u003d glanceclient(request).http_client"},{"line_number":143,"context_line":"    url \u003d \u0027/v2/images/%s\u0027 % image_id"},{"line_number":144,"context_line":"    headers \u003d {\u0027Content-Type\u0027: \u0027application/openstack-images-v2.0-json-patch\u0027}"},{"line_number":145,"context_line":"    return client.raw_request(\u0027PATCH\u0027, url, headers\u003dheaders, body\u003dbody)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def image_create_property(request, image_id, key, value):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9X9o%3D","line":145,"updated":"2014-02-07 11:09:47.000000000","message":"As I see from the glanceclient code, it has .update() method that performs the PATCH request. Isn\u0027t it applicable here?","commit_id":"b47685ec61936adfd957c7b7fbe7a5fdeab35032"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"1e453fccff0e7b0e97b3cc533c66382d7cea6afb","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    client \u003d glanceclient(request).http_client"},{"line_number":143,"context_line":"    url \u003d \u0027/v2/images/%s\u0027 % image_id"},{"line_number":144,"context_line":"    headers \u003d {\u0027Content-Type\u0027: \u0027application/openstack-images-v2.0-json-patch\u0027}"},{"line_number":145,"context_line":"    return client.raw_request(\u0027PATCH\u0027, url, headers\u003dheaders, body\u003dbody)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def image_create_property(request, image_id, key, value):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9Vkk%3D","line":145,"in_reply_to":"AAAAUH%2F9X9o%3D","updated":"2014-02-07 17:18:42.000000000","message":"Yes, turns out that will work. I tried using that method the first time around and must have been doing something wrong. This will be fixed in patch set 4.","commit_id":"b47685ec61936adfd957c7b7fbe7a5fdeab35032"},{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"edbb8b6c73960887db34c79a1b95072601e4c6c6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# The properties used by glance that we don\u0027t want to show up in the table"},{"line_number":41,"context_line":"# of custom properties."},{"line_number":42,"context_line":"RESERVED_PROPERTIES \u003d ["},{"line_number":43,"context_line":"    \u0027checksum\u0027,"},{"line_number":44,"context_line":"    \u0027container_format\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_9b4fd591","line":41,"updated":"2014-06-19 14:31:13.000000000","message":"Is there a specific list you used as a source for this list? If so it may be worthwhile linking to it so we can sync them from time to time.\n\nI suspect \"architecture\" should be in there as well. If I try to create the attribute I get \"Unable to create image custom property. Property \"architecture\" already exists.\" even though it doesn\u0027t show in the list.","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"38cb3cf057d6ff629d61ce8d802537836c7e349a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# The properties used by glance that we don\u0027t want to show up in the table"},{"line_number":41,"context_line":"# of custom properties."},{"line_number":42,"context_line":"RESERVED_PROPERTIES \u003d ["},{"line_number":43,"context_line":"    \u0027checksum\u0027,"},{"line_number":44,"context_line":"    \u0027container_format\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_49ed998d","line":41,"in_reply_to":"1ae5cdf2_83f94284","updated":"2014-06-26 19:24:17.000000000","message":"Yeah ok. I\u0027m going to remove this. Let the user see all properties! However, I am going to leave the IMAGE_RESERVED_CUSTOM_PROPERTIES setting so that it\u0027s still possible to hide properties.","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"e349303bd4962ed5d15053c5d3a73e09081fdd54","unresolved":false,"context_lines":[{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# The properties used by glance that we don\u0027t want to show up in the table"},{"line_number":41,"context_line":"# of custom properties."},{"line_number":42,"context_line":"RESERVED_PROPERTIES \u003d ["},{"line_number":43,"context_line":"    \u0027checksum\u0027,"},{"line_number":44,"context_line":"    \u0027container_format\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_9bba47be","line":41,"in_reply_to":"1ae5cdf2_9b4fd591","updated":"2014-06-20 17:19:52.000000000","message":"I don\u0027t think I found a nice convenient list anywhere. Most of these might have come from properties of the RequestDeserializer class found in the glance project at glance/api/v2/images.py. Others such as \"description\" I added to the reserved list because it can already be updated from the Update Image panel so does not need to be included here.\n\nAs for the \"architecture\" property, I think there is something strange going on since the glance client returns 409 Conflict even if the property does not previously exist.  I will have to try to figure out what\u0027s going on there.  That is one property I would like to be able to update since there is no other place in the UI to do that.","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":10247,"name":"Santiago Baldassin","email":"santiago.b.baldassin@intel.com","username":"santibaldassin"},"change_message_id":"cacf9fd85430b52767f1349aa2c68fe83a522bdc","unresolved":false,"context_lines":[{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# The properties used by glance that we don\u0027t want to show up in the table"},{"line_number":41,"context_line":"# of custom properties."},{"line_number":42,"context_line":"RESERVED_PROPERTIES \u003d ["},{"line_number":43,"context_line":"    \u0027checksum\u0027,"},{"line_number":44,"context_line":"    \u0027container_format\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_83f94284","line":41,"in_reply_to":"1ae5cdf2_9bba47be","updated":"2014-06-26 17:48:47.000000000","message":"I\u0027m not sure if having \"reserved properties\" is a good idea. The concept of reserved properties does not exist in glance, you could actually use whatever key/value pair you want :)\nFrom what I saw, Image properties work exactly the same as extra specs for flavors or metadata for aggregates. The are no \"reserved\" keys\nThe problem that I see is that, for example, you could use the glance client to create a property \"owner\" but you can\u0027t use horizon to do the same.","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"}],"openstack_dashboard/dashboards/admin/images/properties/forms.py":[{"author":{"_account_id":9981,"name":"Doug Fish","email":"drfish@us.ibm.com","username":"doug-fish"},"change_message_id":"a322533d761a2bb108afcd1fb050690e0055e6cb","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from openstack_dashboard import api"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"error_messages \u003d {"},{"line_number":31,"context_line":"    \u0027key_chars\u0027: _(\u0027This key contains invalid characters.\u0027),"},{"line_number":32,"context_line":"    \u0027key_reserved\u0027: _(\u0027This key is reserved.\u0027)"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BBHU%3D","line":31,"updated":"2014-01-30 23:18:16.000000000","message":"Your error message should say what the valid character are.  Maybe something like \"This key contains characters that are not valid.  Valid characters are upper and lower case letters A to Z and digits 0 to 9.\"  Same thought on the reserved key message, although I don\u0027t know if its viable to list out the reserved keys.","commit_id":"1468d23980b11fa25b2d69ba0c83957750565871"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"76e82833af7e3b256274b8b3577028082e9e7cd6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from openstack_dashboard import api"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"error_messages \u003d {"},{"line_number":31,"context_line":"    \u0027key_chars\u0027: _(\u0027This key contains invalid characters.\u0027),"},{"line_number":32,"context_line":"    \u0027key_reserved\u0027: _(\u0027This key is reserved.\u0027)"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2BAiI%3D","line":31,"in_reply_to":"AAAAUH%2F%2BBHU%3D","updated":"2014-01-31 01:31:46.000000000","message":"I\u0027m going to try improving these messages, although I agree we probably should not list out the keys that have been reserved.","commit_id":"1468d23980b11fa25b2d69ba0c83957750565871"},{"author":{"_account_id":6966,"name":"Jeffrey J. Walls","email":"jeff.walls@hpe.com","username":"ftcjeff"},"change_message_id":"e51a8f1cb03524d747615254bf0594ba8e5bbbf4","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateProperty(forms.SelfHandlingForm):"},{"line_number":47,"context_line":"    key_regex \u003d re.compile(\u0027^[A-Za-z0-9_-]{0,255}$\u0027)"},{"line_number":48,"context_line":"    char_validator \u003d validators.RegexValidator(key_regex, \u0027\u0027, \u0027key_chars\u0027)"},{"line_number":49,"context_line":"    key \u003d forms.CharField(max_length\u003d\"255\","},{"line_number":50,"context_line":"                          label\u003d_(\"Key\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9WWo%3D","line":47,"updated":"2014-02-07 15:16:52.000000000","message":"Are non-English keys/values invalid?  I see from this that they are, but are they invalid in glance?  I tried to find out, but I wasn\u0027t able to find it quickly enough so I figured you may know already and that I\u0027d ask.","commit_id":"b47685ec61936adfd957c7b7fbe7a5fdeab35032"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"1e453fccff0e7b0e97b3cc533c66382d7cea6afb","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class CreateProperty(forms.SelfHandlingForm):"},{"line_number":47,"context_line":"    key_regex \u003d re.compile(\u0027^[A-Za-z0-9_-]{0,255}$\u0027)"},{"line_number":48,"context_line":"    char_validator \u003d validators.RegexValidator(key_regex, \u0027\u0027, \u0027key_chars\u0027)"},{"line_number":49,"context_line":"    key \u003d forms.CharField(max_length\u003d\"255\","},{"line_number":50,"context_line":"                          label\u003d_(\"Key\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9VlY%3D","line":47,"in_reply_to":"AAAAUH%2F9WWo%3D","updated":"2014-02-07 17:18:42.000000000","message":"I don\u0027t know exactly what characters glance will allow for the keys, but I did some experimentation and turns out upper case chars don\u0027t seem to work. I may be wrong but I expect most people would be using only lower case a-z and underscores, like all the glance image properties. I\u0027m hoping for now we can just keep this simple and then expand it in the future if a need arises and glance supports it. I will remove upper case chars in patch set 4.","commit_id":"b47685ec61936adfd957c7b7fbe7a5fdeab35032"},{"author":{"_account_id":2455,"name":"Tihomir Trifonov","email":"t.trifonov@gmail.com","username":"ttrifonov"},"change_message_id":"21a6517cfdbbf6cf3c9472117cb114e16aac4f32","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class CreateProperty(forms.SelfHandlingForm):"},{"line_number":50,"context_line":"    key_regex \u003d re.compile(PROPERTY_REGEX)"},{"line_number":51,"context_line":"    char_validator \u003d validators.RegexValidator(key_regex, \u0027\u0027, \u0027key_chars\u0027)"},{"line_number":52,"context_line":"    key \u003d forms.CharField(max_length\u003d\"255\","},{"line_number":53,"context_line":"                          label\u003d_(\"Key\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FtME%3D","line":50,"updated":"2014-02-11 10:41:32.000000000","message":"Why not leaving the key validation to Glance? It seems like here  we can limit some functionality that otherwise might be useful. I am not familiar what happens if a *wrong* key is passed - if Glance returns an error - that\u0027s fine. If something gets messed with the image - then probably a bug should be filed in Glance. My assumption is that Horizon should be \u0027transparent\u0027 - to pass values to the underlying APIs, and they to perform validation on their end unless there is a clear rule how to validate fields(like IPs for example).","commit_id":"2f394762177651e66de5220ffb26b125696201e7"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"805000df3227419820fb7d4a0762f294b56e42e0","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class CreateProperty(forms.SelfHandlingForm):"},{"line_number":50,"context_line":"    key_regex \u003d re.compile(PROPERTY_REGEX)"},{"line_number":51,"context_line":"    char_validator \u003d validators.RegexValidator(key_regex, \u0027\u0027, \u0027key_chars\u0027)"},{"line_number":52,"context_line":"    key \u003d forms.CharField(max_length\u003d\"255\","},{"line_number":53,"context_line":"                          label\u003d_(\"Key\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FqUA%3D","line":50,"in_reply_to":"AAAAUX%2F%2FtME%3D","updated":"2014-02-11 17:17:00.000000000","message":"The idea here is to provide a better user experience. If we can stop the user from making a mistake then I think we probably should. But either way there are certain characters that will cause problems in horizon so I don\u0027t think we can just let anything go here. See the review below for how keys will be validated for flavor extra specs. In patch set 5 I will update this key validation to work the same.\nhttps://review.openstack.org/#/c/68200","commit_id":"2f394762177651e66de5220ffb26b125696201e7"},{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"edbb8b6c73960887db34c79a1b95072601e4c6c6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2014 IBM Corp."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_35a6d254","line":3,"updated":"2014-06-19 14:31:13.000000000","message":"Note that as a project we\u0027re trying to go toward using only licence headers without the copyright information, since the copyright is already implied by the git metadata and CLAs and these copyright stanzas are not well-maintained and tend to become outdated fairly quickly.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-May/009189.html\nhttps://wiki.openstack.org/wiki/LegalIssuesFAQ#Copyright_Headers\n\nThis comment applies to all the new files.\nAlso I think we\u0027re getting rid of the \"#vim\" notices too (bug 1229324).","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"e349303bd4962ed5d15053c5d3a73e09081fdd54","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2014 IBM Corp."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_9b088792","line":3,"in_reply_to":"1ae5cdf2_35a6d254","updated":"2014-06-20 17:19:52.000000000","message":"Done","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":10247,"name":"Santiago Baldassin","email":"santiago.b.baldassin@intel.com","username":"santibaldassin"},"change_message_id":"cacf9fd85430b52767f1349aa2c68fe83a522bdc","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    key \u003d forms.CharField(max_length\u003d\"255\","},{"line_number":30,"context_line":"                          label\u003d_(\"Key\"))"},{"line_number":31,"context_line":"    value \u003d forms.CharField(label\u003d_(\"Value\"))"},{"line_number":32,"context_line":"    image_id \u003d forms.CharField(widget\u003dforms.widgets.HiddenInput)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def handle(self, request, data):"},{"line_number":35,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_387899f7","line":32,"updated":"2014-06-26 17:48:47.000000000","message":"You shouldn\u0027t need the id as a hidden input since you are already returning the image id in initials","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"38cb3cf057d6ff629d61ce8d802537836c7e349a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    key \u003d forms.CharField(max_length\u003d\"255\","},{"line_number":30,"context_line":"                          label\u003d_(\"Key\"))"},{"line_number":31,"context_line":"    value \u003d forms.CharField(label\u003d_(\"Value\"))"},{"line_number":32,"context_line":"    image_id \u003d forms.CharField(widget\u003dforms.widgets.HiddenInput)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def handle(self, request, data):"},{"line_number":35,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_84a6a8be","line":32,"in_reply_to":"1ae5cdf2_387899f7","updated":"2014-06-26 19:24:17.000000000","message":"Done","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":10247,"name":"Santiago Baldassin","email":"santiago.b.baldassin@intel.com","username":"santibaldassin"},"change_message_id":"cacf9fd85430b52767f1349aa2c68fe83a522bdc","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def handle(self, request, data):"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            api.glance.image_update_properties(request, data[\u0027image_id\u0027],"},{"line_number":37,"context_line":"                                               **{data[\u0027key\u0027]: data[\u0027value\u0027]})"},{"line_number":38,"context_line":"            msg \u003d _(\u0027Created custom property \"%s\".\u0027) % data[\u0027key\u0027]"},{"line_number":39,"context_line":"            messages.success(request, msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_b86bc91d","line":36,"updated":"2014-06-26 17:48:47.000000000","message":"self.initial should contain the image_id","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"38cb3cf057d6ff629d61ce8d802537836c7e349a","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def handle(self, request, data):"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            api.glance.image_update_properties(request, data[\u0027image_id\u0027],"},{"line_number":37,"context_line":"                                               **{data[\u0027key\u0027]: data[\u0027value\u0027]})"},{"line_number":38,"context_line":"            msg \u003d _(\u0027Created custom property \"%s\".\u0027) % data[\u0027key\u0027]"},{"line_number":39,"context_line":"            messages.success(request, msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_a4aba486","line":36,"in_reply_to":"1ae5cdf2_b86bc91d","updated":"2014-06-26 19:24:17.000000000","message":"Done","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":10247,"name":"Santiago Baldassin","email":"santiago.b.baldassin@intel.com","username":"santibaldassin"},"change_message_id":"cacf9fd85430b52767f1349aa2c68fe83a522bdc","unresolved":false,"context_lines":[{"line_number":55,"context_line":"class EditProperty(forms.SelfHandlingForm):"},{"line_number":56,"context_line":"    key \u003d forms.CharField(widget\u003dforms.widgets.HiddenInput)"},{"line_number":57,"context_line":"    value \u003d forms.CharField(label\u003d_(\"Value\"))"},{"line_number":58,"context_line":"    image_id \u003d forms.CharField(widget\u003dforms.widgets.HiddenInput)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def handle(self, request, data):"},{"line_number":61,"context_line":"        image_id \u003d data[\u0027image_id\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_b8d909f6","line":58,"updated":"2014-06-26 17:48:47.000000000","message":"same comment than in CreateProperty","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"38cb3cf057d6ff629d61ce8d802537836c7e349a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"class EditProperty(forms.SelfHandlingForm):"},{"line_number":56,"context_line":"    key \u003d forms.CharField(widget\u003dforms.widgets.HiddenInput)"},{"line_number":57,"context_line":"    value \u003d forms.CharField(label\u003d_(\"Value\"))"},{"line_number":58,"context_line":"    image_id \u003d forms.CharField(widget\u003dforms.widgets.HiddenInput)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def handle(self, request, data):"},{"line_number":61,"context_line":"        image_id \u003d data[\u0027image_id\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_c493505a","line":58,"in_reply_to":"1ae5cdf2_b8d909f6","updated":"2014-06-26 19:24:17.000000000","message":"Done","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"}],"openstack_dashboard/local/local_settings.py.example":[{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"edbb8b6c73960887db34c79a1b95072601e4c6c6","unresolved":false,"context_lines":[{"line_number":210,"context_line":"# The IMAGE_RESERVED_CUSTOM_PROPERTIES setting is used to specify which image"},{"line_number":211,"context_line":"# custom properties should not be displayed in the Image Custom Properties"},{"line_number":212,"context_line":"# table."},{"line_number":213,"context_line":"IMAGE_RESERVED_CUSTOM_PROPERTIES \u003d []"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"# OPENSTACK_ENDPOINT_TYPE specifies the endpoint type to use for the endpoints"},{"line_number":216,"context_line":"# in the Keystone service catalog. Use this setting when Horizon is running"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"1ae5cdf2_d5ff6e64","line":213,"updated":"2014-06-19 14:31:13.000000000","message":"Could you also document this in settings.rst for http://docs.openstack.org/developer/horizon/topics/settings.html ?","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"e349303bd4962ed5d15053c5d3a73e09081fdd54","unresolved":false,"context_lines":[{"line_number":210,"context_line":"# The IMAGE_RESERVED_CUSTOM_PROPERTIES setting is used to specify which image"},{"line_number":211,"context_line":"# custom properties should not be displayed in the Image Custom Properties"},{"line_number":212,"context_line":"# table."},{"line_number":213,"context_line":"IMAGE_RESERVED_CUSTOM_PROPERTIES \u003d []"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"# OPENSTACK_ENDPOINT_TYPE specifies the endpoint type to use for the endpoints"},{"line_number":216,"context_line":"# in the Keystone service catalog. Use this setting when Horizon is running"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"1ae5cdf2_7b2c9b02","line":213,"in_reply_to":"1ae5cdf2_d5ff6e64","updated":"2014-06-20 17:19:52.000000000","message":"Done","commit_id":"f5ee0bdd8f1ae026ef89d055e085e1c3ae250ec4"}]}
