)]}'
{"barbican/objects/base.py":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"09f57f624a28afa32a79fb68cdff3854306a06e9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \u0027updated_at\u0027: fields.DateTimeField(nullable\u003dTrue, tzinfo_aware\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deleted_at\u0027: fields.DateTimeField(nullable\u003dTrue, tzinfo_aware\u003dFalse),"},{"line_number":39,"context_line":"        \u0027deleted\u0027: fields.BooleanField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027status\u0027: fields.StringField(nullable\u003dTrue, default\u003dStates.PENDING)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_d65d5d47","line":40,"updated":"2018-05-14 17:55:40.000000000","message":"Just trying to understand the differences here.  \n\nI see that these fields were originally defined in ModelBase and some of them have nullable\u003dFalse and defaults - like generating a uuid for id.  Why the differences?\n\n    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue,\n                   default\u003dutils.generate_uuid)\n\n    created_at \u003d sa.Column(sa.DateTime,            \n                           default\u003dtimeutils.utcnow,\n                           nullable\u003dFalse)\n    updated_at \u003d sa.Column(sa.DateTime, \n                           default\u003dtimeutils.utcnow,\n                           nullable\u003dFalse,\n                           onupdate\u003dtimeutils.utcnow)\n    deleted_at \u003d sa.Column(sa.DateTime)\n    deleted \u003d sa.Column(sa.Boolean, \n                        nullable\u003dFalse,\n                        default\u003dFalse)\n\n    status \u003d sa.Column(sa.String(20), \n                       nullable\u003dFalse, \n                       default\u003dStates.PENDING)\n\nWhat does tzinfo_aware mean, and should it be set to true?","commit_id":"1c6481ade389a6e96ff0e14a109208d400d826e1"},{"author":{"_account_id":19554,"name":"Nam","email":"namnh68@fsoft.com.vn","username":"namnh"},"change_message_id":"cca1b0e4d152cc33ae7795d0ea206f0129fcc5cb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \u0027updated_at\u0027: fields.DateTimeField(nullable\u003dTrue, tzinfo_aware\u003dFalse),"},{"line_number":38,"context_line":"        \u0027deleted_at\u0027: fields.DateTimeField(nullable\u003dTrue, tzinfo_aware\u003dFalse),"},{"line_number":39,"context_line":"        \u0027deleted\u0027: fields.BooleanField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027status\u0027: fields.StringField(nullable\u003dTrue, default\u003dStates.PENDING)"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_ac36d3b3","line":40,"in_reply_to":"5f7c97a3_d65d5d47","updated":"2018-05-21 04:12:23.000000000","message":"1. For OVO objects, these fields in OVO will be None first, when we initialize a new object like Secret. And these ones will be loaded when creating and getting a secret by \"_from_db_object\" function. \n\n2. \"tzinfo_aware\u003dFalse\" is to set the value of tzinfo is None. Because the value loaded from models has tzinfo in created_at, updated_at, deleted_at, deleted is None, but for OVO then it is iso8601.UTC. So it needs to be set tzinfo_aware \u003d False","commit_id":"1c6481ade389a6e96ff0e14a109208d400d826e1"}],"barbican/objects/fields.py":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"09f57f624a28afa32a79fb68cdff3854306a06e9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Import field errors from oslo.versionedobjects"},{"line_number":20,"context_line":"KeyTypeError \u003d fields.KeyTypeError"},{"line_number":21,"context_line":"ElementTypeError \u003d fields.ElementTypeError"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Import fields from oslo.versionedobjects"},{"line_number":24,"context_line":"BooleanField \u003d fields.BooleanField"},{"line_number":25,"context_line":"UnspecifiedDefault \u003d fields.UnspecifiedDefault"},{"line_number":26,"context_line":"IntegerField \u003d fields.IntegerField"},{"line_number":27,"context_line":"NonNegativeIntegerField \u003d fields.NonNegativeIntegerField"},{"line_number":28,"context_line":"UUIDField \u003d fields.UUIDField"},{"line_number":29,"context_line":"FloatField \u003d fields.FloatField"},{"line_number":30,"context_line":"NonNegativeFloatField \u003d fields.NonNegativeFloatField"},{"line_number":31,"context_line":"StringField \u003d fields.StringField"},{"line_number":32,"context_line":"SensitiveStringField \u003d fields.SensitiveStringField"},{"line_number":33,"context_line":"EnumField \u003d fields.EnumField"},{"line_number":34,"context_line":"DateTimeField \u003d fields.DateTimeField"},{"line_number":35,"context_line":"DictOfStringsField \u003d fields.DictOfStringsField"},{"line_number":36,"context_line":"DictOfNullableStringsField \u003d fields.DictOfNullableStringsField"},{"line_number":37,"context_line":"DictOfIntegersField \u003d fields.DictOfIntegersField"},{"line_number":38,"context_line":"ListOfStringsField \u003d fields.ListOfStringsField"},{"line_number":39,"context_line":"SetOfIntegersField \u003d fields.SetOfIntegersField"},{"line_number":40,"context_line":"ListOfSetsOfIntegersField \u003d fields.ListOfSetsOfIntegersField"},{"line_number":41,"context_line":"ListOfDictOfNullableStringsField \u003d fields.ListOfDictOfNullableStringsField"},{"line_number":42,"context_line":"DictProxyField \u003d fields.DictProxyField"},{"line_number":43,"context_line":"ObjectField \u003d fields.ObjectField"},{"line_number":44,"context_line":"ListOfObjectsField \u003d fields.ListOfObjectsField"},{"line_number":45,"context_line":"VersionPredicateField \u003d fields.VersionPredicateField"},{"line_number":46,"context_line":"FlexibleBooleanField \u003d fields.FlexibleBooleanField"},{"line_number":47,"context_line":"DictOfListOfStringsField \u003d fields.DictOfListOfStringsField"},{"line_number":48,"context_line":"IPAddressField \u003d fields.IPAddressField"},{"line_number":49,"context_line":"IPV4AddressField \u003d fields.IPV4AddressField"},{"line_number":50,"context_line":"IPV6AddressField \u003d fields.IPV6AddressField"},{"line_number":51,"context_line":"IPV4AndV6AddressField \u003d fields.IPV4AndV6AddressField"},{"line_number":52,"context_line":"IPNetworkField \u003d fields.IPNetworkField"},{"line_number":53,"context_line":"IPV4NetworkField \u003d fields.IPV4NetworkField"},{"line_number":54,"context_line":"IPV6NetworkField \u003d fields.IPV6NetworkField"},{"line_number":55,"context_line":"AutoTypedField \u003d fields.AutoTypedField"},{"line_number":56,"context_line":"BaseEnumField \u003d fields.BaseEnumField"},{"line_number":57,"context_line":"MACAddressField \u003d fields.MACAddressField"},{"line_number":58,"context_line":"ListOfIntegersField \u003d fields.ListOfIntegersField"},{"line_number":59,"context_line":"PCIAddressField \u003d fields.PCIAddressField"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Enum \u003d fields.Enum"},{"line_number":62,"context_line":"Field \u003d fields.Field"},{"line_number":63,"context_line":"FieldType \u003d fields.FieldType"},{"line_number":64,"context_line":"Set \u003d fields.Set"},{"line_number":65,"context_line":"Dict \u003d fields.Dict"},{"line_number":66,"context_line":"List \u003d fields.List"},{"line_number":67,"context_line":"Object \u003d fields.Object"},{"line_number":68,"context_line":"IPAddress \u003d fields.IPAddress"},{"line_number":69,"context_line":"IPV4Address \u003d fields.IPV4Address"},{"line_number":70,"context_line":"IPV6Address \u003d fields.IPV6Address"},{"line_number":71,"context_line":"IPNetwork \u003d fields.IPNetwork"},{"line_number":72,"context_line":"IPV4Network \u003d fields.IPV4Network"},{"line_number":73,"context_line":"IPV6Network \u003d fields.IPV6Network"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class Json(FieldType):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_56a70dbe","line":73,"range":{"start_line":20,"start_character":0,"end_line":73,"end_character":32},"updated":"2018-05-14 17:55:40.000000000","message":"Why are we doing this?  What not just use oslo_versionedobjects directly?","commit_id":"1c6481ade389a6e96ff0e14a109208d400d826e1"},{"author":{"_account_id":19554,"name":"Nam","email":"namnh68@fsoft.com.vn","username":"namnh"},"change_message_id":"cca1b0e4d152cc33ae7795d0ea206f0129fcc5cb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Import field errors from oslo.versionedobjects"},{"line_number":20,"context_line":"KeyTypeError \u003d fields.KeyTypeError"},{"line_number":21,"context_line":"ElementTypeError \u003d fields.ElementTypeError"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Import fields from oslo.versionedobjects"},{"line_number":24,"context_line":"BooleanField \u003d fields.BooleanField"},{"line_number":25,"context_line":"UnspecifiedDefault \u003d fields.UnspecifiedDefault"},{"line_number":26,"context_line":"IntegerField \u003d fields.IntegerField"},{"line_number":27,"context_line":"NonNegativeIntegerField \u003d fields.NonNegativeIntegerField"},{"line_number":28,"context_line":"UUIDField \u003d fields.UUIDField"},{"line_number":29,"context_line":"FloatField \u003d fields.FloatField"},{"line_number":30,"context_line":"NonNegativeFloatField \u003d fields.NonNegativeFloatField"},{"line_number":31,"context_line":"StringField \u003d fields.StringField"},{"line_number":32,"context_line":"SensitiveStringField \u003d fields.SensitiveStringField"},{"line_number":33,"context_line":"EnumField \u003d fields.EnumField"},{"line_number":34,"context_line":"DateTimeField \u003d fields.DateTimeField"},{"line_number":35,"context_line":"DictOfStringsField \u003d fields.DictOfStringsField"},{"line_number":36,"context_line":"DictOfNullableStringsField \u003d fields.DictOfNullableStringsField"},{"line_number":37,"context_line":"DictOfIntegersField \u003d fields.DictOfIntegersField"},{"line_number":38,"context_line":"ListOfStringsField \u003d fields.ListOfStringsField"},{"line_number":39,"context_line":"SetOfIntegersField \u003d fields.SetOfIntegersField"},{"line_number":40,"context_line":"ListOfSetsOfIntegersField \u003d fields.ListOfSetsOfIntegersField"},{"line_number":41,"context_line":"ListOfDictOfNullableStringsField \u003d fields.ListOfDictOfNullableStringsField"},{"line_number":42,"context_line":"DictProxyField \u003d fields.DictProxyField"},{"line_number":43,"context_line":"ObjectField \u003d fields.ObjectField"},{"line_number":44,"context_line":"ListOfObjectsField \u003d fields.ListOfObjectsField"},{"line_number":45,"context_line":"VersionPredicateField \u003d fields.VersionPredicateField"},{"line_number":46,"context_line":"FlexibleBooleanField \u003d fields.FlexibleBooleanField"},{"line_number":47,"context_line":"DictOfListOfStringsField \u003d fields.DictOfListOfStringsField"},{"line_number":48,"context_line":"IPAddressField \u003d fields.IPAddressField"},{"line_number":49,"context_line":"IPV4AddressField \u003d fields.IPV4AddressField"},{"line_number":50,"context_line":"IPV6AddressField \u003d fields.IPV6AddressField"},{"line_number":51,"context_line":"IPV4AndV6AddressField \u003d fields.IPV4AndV6AddressField"},{"line_number":52,"context_line":"IPNetworkField \u003d fields.IPNetworkField"},{"line_number":53,"context_line":"IPV4NetworkField \u003d fields.IPV4NetworkField"},{"line_number":54,"context_line":"IPV6NetworkField \u003d fields.IPV6NetworkField"},{"line_number":55,"context_line":"AutoTypedField \u003d fields.AutoTypedField"},{"line_number":56,"context_line":"BaseEnumField \u003d fields.BaseEnumField"},{"line_number":57,"context_line":"MACAddressField \u003d fields.MACAddressField"},{"line_number":58,"context_line":"ListOfIntegersField \u003d fields.ListOfIntegersField"},{"line_number":59,"context_line":"PCIAddressField \u003d fields.PCIAddressField"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Enum \u003d fields.Enum"},{"line_number":62,"context_line":"Field \u003d fields.Field"},{"line_number":63,"context_line":"FieldType \u003d fields.FieldType"},{"line_number":64,"context_line":"Set \u003d fields.Set"},{"line_number":65,"context_line":"Dict \u003d fields.Dict"},{"line_number":66,"context_line":"List \u003d fields.List"},{"line_number":67,"context_line":"Object \u003d fields.Object"},{"line_number":68,"context_line":"IPAddress \u003d fields.IPAddress"},{"line_number":69,"context_line":"IPV4Address \u003d fields.IPV4Address"},{"line_number":70,"context_line":"IPV6Address \u003d fields.IPV6Address"},{"line_number":71,"context_line":"IPNetwork \u003d fields.IPNetwork"},{"line_number":72,"context_line":"IPV4Network \u003d fields.IPV4Network"},{"line_number":73,"context_line":"IPV6Network \u003d fields.IPV6Network"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class Json(FieldType):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_6c599bfc","line":73,"range":{"start_line":20,"start_character":0,"end_line":73,"end_character":32},"in_reply_to":"5f7c97a3_56a70dbe","updated":"2018-05-21 04:12:23.000000000","message":"Because I have to declare a new type named DictOfObjectsField, so I do this to have consistency of import.","commit_id":"1c6481ade389a6e96ff0e14a109208d400d826e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"09f57f624a28afa32a79fb68cdff3854306a06e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5f7c97a3_f9b08adf","line":99,"updated":"2018-05-14 17:55:40.000000000","message":"Is the logic in the above classes not in oslo_versionedobjects or elsewhere?","commit_id":"1c6481ade389a6e96ff0e14a109208d400d826e1"},{"author":{"_account_id":19554,"name":"Nam","email":"namnh68@fsoft.com.vn","username":"namnh"},"change_message_id":"cca1b0e4d152cc33ae7795d0ea206f0129fcc5cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5f7c97a3_ccd54f1d","line":99,"in_reply_to":"5f7c97a3_f9b08adf","updated":"2018-05-21 04:12:23.000000000","message":"That is a method to create new types of OVO which I learned from other projects like Heat [1]\n\n[1] https://github.com/openstack/heat/blob/master/heat/objects/fields.py","commit_id":"1c6481ade389a6e96ff0e14a109208d400d826e1"}]}
