)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"555adfdc25b177fbd48e857714660935ff478d67","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add printer for PlantUML syntax"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added command line argument (--uml) that prints the output to a PlantUML"},{"line_number":10,"context_line":"syntax. both stdout and file are still supported"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifa367af8879e302c225246231c215fb181c4020c"},{"line_number":13,"context_line":"Partial-Bug: #1734146"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"df87a7cf_31732518","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":48},"updated":"2017-12-03 11:01:48.000000000","message":"Not sure if this should be part of this commit message","commit_id":"d250c90cb78a986857a2ef6f2829c4fc95f825a8"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"f9f5dd64ea16085cea851c6efecf5e98a12dd12f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add printer for PlantUML syntax"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added command line argument (--uml) that prints the output to a PlantUML"},{"line_number":10,"context_line":"syntax. both stdout and file are still supported"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifa367af8879e302c225246231c215fb181c4020c"},{"line_number":13,"context_line":"Partial-Bug: #1734146"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"df87a7cf_0cacc48a","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":48},"in_reply_to":"df87a7cf_31732518","updated":"2017-12-03 14:04:37.000000000","message":"Done","commit_id":"d250c90cb78a986857a2ef6f2829c4fc95f825a8"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"225c420ecf99641316af320e3c1cd8ba05e0ed53","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add printer for PlantUML syntax"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added command line argument (--uml) that prints the output to a PlantUML"},{"line_number":10,"context_line":"syntax. both stdout and file are still supported"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifa367af8879e302c225246231c215fb181c4020c"},{"line_number":13,"context_line":"Partial-Bug: #1734146"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"df87a7cf_0c54c4c9","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":48},"in_reply_to":"df87a7cf_31732518","updated":"2017-12-03 13:26:21.000000000","message":"I somehow agree that it is not required, if you will insist I will remove it.","commit_id":"d250c90cb78a986857a2ef6f2829c4fc95f825a8"}],"dragonflow/cli/df_model.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d9555cabe5648b519e00999b49fb699b75371894","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        for (dst, src, name, to_many) in self._dependencies:"},{"line_number":93,"context_line":"            if src in self._processed:"},{"line_number":94,"context_line":"                many_str \u003d \u0027+ \u0027 if to_many else \u0027\u0027"},{"line_number":95,"context_line":"                print(\u0027{} --{} {} : \u003c {}\u0027.format(dst, many_str, src, name),"},{"line_number":96,"context_line":"                      file\u003dself._output)"},{"line_number":97,"context_line":"                print(\u0027@enduml\u0027, file\u003dself._output)"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_6b2f91a7","line":95,"range":{"start_line":95,"start_character":26,"end_line":95,"end_character":30},"updated":"2017-11-30 12:25:27.000000000","message":"Maybe also a mark as for the direction of the relation? Otherwise for 1-to-1, you can\u0027t tell who references whom.\n\n(Or is this solved in https://review.openstack.org/#/c/522946 ?)","commit_id":"6090830184a50bb6ee1979b42eb03a269de9f7d5"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"75f19efdbc62fce61c8a3fe273c9a473d82db20c","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        for (dst, src, name, to_many) in self._dependencies:"},{"line_number":93,"context_line":"            if src in self._processed:"},{"line_number":94,"context_line":"                many_str \u003d \u0027+ \u0027 if to_many else \u0027\u0027"},{"line_number":95,"context_line":"                print(\u0027{} --{} {} : \u003c {}\u0027.format(dst, many_str, src, name),"},{"line_number":96,"context_line":"                      file\u003dself._output)"},{"line_number":97,"context_line":"                print(\u0027@enduml\u0027, file\u003dself._output)"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_96923c4b","line":95,"range":{"start_line":95,"start_character":26,"end_line":95,"end_character":30},"in_reply_to":"ff82abbf_6b2f91a7","updated":"2017-11-30 12:52:25.000000000","message":"Indeed","commit_id":"6090830184a50bb6ee1979b42eb03a269de9f7d5"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d9555cabe5648b519e00999b49fb699b75371894","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                many_str \u003d \u0027+ \u0027 if to_many else \u0027\u0027"},{"line_number":95,"context_line":"                print(\u0027{} --{} {} : \u003c {}\u0027.format(dst, many_str, src, name),"},{"line_number":96,"context_line":"                      file\u003dself._output)"},{"line_number":97,"context_line":"                print(\u0027@enduml\u0027, file\u003dself._output)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def output_model(self, model_):"},{"line_number":100,"context_line":"        print(\u0027Object {}\u0027.format(model_.name), file\u003dself._output)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_4b496d89","line":97,"range":{"start_line":97,"start_character":0,"end_line":97,"end_character":51},"updated":"2017-11-30 12:25:27.000000000","message":"This should be outside of the loop","commit_id":"6090830184a50bb6ee1979b42eb03a269de9f7d5"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"75f19efdbc62fce61c8a3fe273c9a473d82db20c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                many_str \u003d \u0027+ \u0027 if to_many else \u0027\u0027"},{"line_number":95,"context_line":"                print(\u0027{} --{} {} : \u003c {}\u0027.format(dst, many_str, src, name),"},{"line_number":96,"context_line":"                      file\u003dself._output)"},{"line_number":97,"context_line":"                print(\u0027@enduml\u0027, file\u003dself._output)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def output_model(self, model_):"},{"line_number":100,"context_line":"        print(\u0027Object {}\u0027.format(model_.name), file\u003dself._output)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_f6a06894","line":97,"range":{"start_line":97,"start_character":0,"end_line":97,"end_character":51},"in_reply_to":"ff82abbf_4b496d89","updated":"2017-11-30 12:52:25.000000000","message":"Fixed.\nGot ruined between merges.. :(","commit_id":"6090830184a50bb6ee1979b42eb03a269de9f7d5"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"3e2d40fa5e04ff370dc7661294e6f12363a43e3f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def _output_relations(self):"},{"line_number":116,"context_line":"        for (dst, src, name, is_single) in self._dependencies:"},{"line_number":117,"context_line":"            if src in self._processed:"},{"line_number":118,"context_line":"                connector_str \u003d \u0027 *-- \u0027 if is_single else \u0027\"1\" *-- \"*\"\u0027"},{"line_number":119,"context_line":"                print(\u0027{dest} {connector} {src} : {field_name}\u0027.format("},{"line_number":120,"context_line":"                    dest\u003ddst, connector\u003dconnector_str, src\u003dsrc,"},{"line_number":121,"context_line":"                    field_name\u003dname),"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_5e9a716e","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":71},"updated":"2017-12-01 08:11:54.000000000","message":"A minor issue with the format: For references (Reference or ReferenceList), the connector should be \u0027o--\u0027 instead of \u0027*--\u0027.\n\nNote that for references, you also don\u0027t know that there\u0027s only one reference i.e. \u0027\"1\" o-- \"*\"\u0027 will become \u0027o-- \"*\"\u0027.","commit_id":"5ee2bb6d50e37c8c0d081151f7c7386b5734c5cc"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"32c831f3ca849fb16ba5eb68fcb2ebce8778d94e","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def _output_relations(self):"},{"line_number":116,"context_line":"        for (dst, src, name, is_single) in self._dependencies:"},{"line_number":117,"context_line":"            if src in self._processed:"},{"line_number":118,"context_line":"                connector_str \u003d \u0027 *-- \u0027 if is_single else \u0027\"1\" *-- \"*\"\u0027"},{"line_number":119,"context_line":"                print(\u0027{dest} {connector} {src} : {field_name}\u0027.format("},{"line_number":120,"context_line":"                    dest\u003ddst, connector\u003dconnector_str, src\u003dsrc,"},{"line_number":121,"context_line":"                    field_name\u003dname),"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_ed039572","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":71},"in_reply_to":"ff82abbf_5e9a716e","updated":"2017-12-01 11:25:10.000000000","message":"Done","commit_id":"5ee2bb6d50e37c8c0d081151f7c7386b5734c5cc"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"3e2d40fa5e04ff370dc7661294e6f12363a43e3f","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        self._model \u003d \u0027\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def handle_field(self, name_, type_, is_single\u003dTrue, restrictions\u003dNone):"},{"line_number":138,"context_line":"        restriction_str \u003d \\"},{"line_number":139,"context_line":"            \u0027 {}\u0027.format(restrictions) if restrictions else \u0027\u0027"},{"line_number":140,"context_line":"        print(\u0027  +{name} : {type} {restriction}\u0027.format("},{"line_number":141,"context_line":"              name\u003dname_, type\u003dtype_, restriction\u003drestriction_str),"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_1e9f09b5","line":138,"range":{"start_line":138,"start_character":26,"end_line":138,"end_character":27},"updated":"2017-12-01 08:11:54.000000000","message":"Newline not necessary. (This only bothers me because of the \u0027\\\u0027. Openstack coding standard prefers to wrap in brackets, and then newline doesn\u0027t need to be escaped.)","commit_id":"5ee2bb6d50e37c8c0d081151f7c7386b5734c5cc"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"32c831f3ca849fb16ba5eb68fcb2ebce8778d94e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        self._model \u003d \u0027\u0027"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def handle_field(self, name_, type_, is_single\u003dTrue, restrictions\u003dNone):"},{"line_number":138,"context_line":"        restriction_str \u003d \\"},{"line_number":139,"context_line":"            \u0027 {}\u0027.format(restrictions) if restrictions else \u0027\u0027"},{"line_number":140,"context_line":"        print(\u0027  +{name} : {type} {restriction}\u0027.format("},{"line_number":141,"context_line":"              name\u003dname_, type\u003dtype_, restriction\u003drestriction_str),"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_adf58d85","line":138,"range":{"start_line":138,"start_character":26,"end_line":138,"end_character":27},"in_reply_to":"ff82abbf_1e9f09b5","updated":"2017-12-01 11:25:10.000000000","message":"Done","commit_id":"5ee2bb6d50e37c8c0d081151f7c7386b5734c5cc"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"33acc576b406df0d8925e14aa7107b250ed25753","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def _output_relations(self):"},{"line_number":116,"context_line":"        for (dst, src, name, is_single) in self._dependencies:"},{"line_number":117,"context_line":"            if src in self._processed:"},{"line_number":118,"context_line":"                connector_str \u003d \u0027 o-- \u0027 if is_single else \u0027 o-- \"*\"\u0027"},{"line_number":119,"context_line":"                print(\u0027{dest} {connector} {src} : {field_name}\u0027.format("},{"line_number":120,"context_line":"                    dest\u003ddst, connector\u003dconnector_str, src\u003dsrc,"},{"line_number":121,"context_line":"                    field_name\u003dname),"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_580121af","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":68},"updated":"2017-12-01 12:01:27.000000000","message":"Sorry, I wasn\u0027t clear.\n\nIt should be o-- for references, and *-- for embedded. So ReferenceField, ReferenceListField should have \u0027o--\u0027, and EmbeddedField, ListOfField, should have \u0027*--\u0027. For embedded you know it\u0027s always 1 *-- 1 or 1 *-- *. For references, you don\u0027t know how many parents point to the child.","commit_id":"719fc22bac9aa47cc3902c19c6455ffb55817350"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"af6587ead6bd7ecdc319295e6b30768f8450c879","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def _output_relations(self):"},{"line_number":116,"context_line":"        for (dst, src, name, is_single) in self._dependencies:"},{"line_number":117,"context_line":"            if src in self._processed:"},{"line_number":118,"context_line":"                connector_str \u003d \u0027 o-- \u0027 if is_single else \u0027 o-- \"*\"\u0027"},{"line_number":119,"context_line":"                print(\u0027{dest} {connector} {src} : {field_name}\u0027.format("},{"line_number":120,"context_line":"                    dest\u003ddst, connector\u003dconnector_str, src\u003dsrc,"},{"line_number":121,"context_line":"                    field_name\u003dname),"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_3318fed1","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":68},"in_reply_to":"ff82abbf_580121af","updated":"2017-12-01 12:54:13.000000000","message":"Done","commit_id":"719fc22bac9aa47cc3902c19c6455ffb55817350"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"08b856712f7c13c4e52b30461b468d4fb44edb4e","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        for key, field in df_model.iterate_over_fields():"},{"line_number":181,"context_line":"            if isinstance(field, field_types.ListOfField):"},{"line_number":182,"context_line":"                is_single \u003d False"},{"line_number":183,"context_line":"                is_embedded \u003d True"},{"line_number":184,"context_line":"                field_type, restrictions \u003d self._stringify_field_type("},{"line_number":185,"context_line":"                    field.field)"},{"line_number":186,"context_line":"            elif isinstance(field, fields.ListField):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df87a7cf_2121aea0","line":183,"updated":"2017-12-01 13:50:14.000000000","message":"field_types.ReferenceField reaches here, and it shouldn\u0027t. (It is implemented as a ListOfField of ReferenceField).","commit_id":"93971f5cb4fe1753ec9bdb7451c51ffab6501a8a"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"c0f46b6afef47d4936c6bbca2ddf99f8ec233f9d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        for key, field in df_model.iterate_over_fields():"},{"line_number":181,"context_line":"            if isinstance(field, field_types.ListOfField):"},{"line_number":182,"context_line":"                is_single \u003d False"},{"line_number":183,"context_line":"                is_embedded \u003d True"},{"line_number":184,"context_line":"                field_type, restrictions \u003d self._stringify_field_type("},{"line_number":185,"context_line":"                    field.field)"},{"line_number":186,"context_line":"            elif isinstance(field, fields.ListField):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df87a7cf_be7aa785","line":183,"in_reply_to":"df87a7cf_2121aea0","updated":"2017-12-02 14:41:09.000000000","message":"Handled","commit_id":"93971f5cb4fe1753ec9bdb7451c51ffab6501a8a"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"f6d7a3cbc03e5e0b2a0900de1bc913d566882885","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        for key, field in df_model.iterate_over_fields():"},{"line_number":181,"context_line":"            if isinstance(field, field_types.ListOfField):"},{"line_number":182,"context_line":"                is_single \u003d False"},{"line_number":183,"context_line":"                is_embedded \u003d True"},{"line_number":184,"context_line":"                field_type, restrictions \u003d self._stringify_field_type("},{"line_number":185,"context_line":"                    field.field)"},{"line_number":186,"context_line":"            elif isinstance(field, fields.ListField):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df87a7cf_3e3d37bb","line":183,"in_reply_to":"df87a7cf_2121aea0","updated":"2017-12-02 14:35:30.000000000","message":"You must mean ReferenceListField, and there is no problem if it gets here, as long as the \"is_embedded\" is handled correctly.","commit_id":"93971f5cb4fe1753ec9bdb7451c51ffab6501a8a"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5e1af74a6228e3524bcd05078b258c60585058c5","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        for key, field in df_model.iterate_over_fields():"},{"line_number":181,"context_line":"            if isinstance(field, field_types.ListOfField):"},{"line_number":182,"context_line":"                is_single \u003d False"},{"line_number":183,"context_line":"                is_embedded \u003d True"},{"line_number":184,"context_line":"                field_type, restrictions \u003d self._stringify_field_type("},{"line_number":185,"context_line":"                    field.field)"},{"line_number":186,"context_line":"            elif isinstance(field, fields.ListField):"}],"source_content_type":"text/x-python","patch_set":10,"id":"df87a7cf_64980e6a","line":183,"in_reply_to":"df87a7cf_be7aa785","updated":"2017-12-02 19:11:02.000000000","message":"Yes I did :)\nThanks!","commit_id":"93971f5cb4fe1753ec9bdb7451c51ffab6501a8a"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"149c853f8f7288d20d57ea1d451a21b897dc3778","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def model_start(self, model_name):"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        Called once for every model, before any field."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_51aca08b","line":50,"range":{"start_line":50,"start_character":7,"end_line":50,"end_character":54},"updated":"2017-12-04 06:34:34.000000000","message":"what is expected to be done here?","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d70a8c0dca76f99ea04c4be54440f3d44a97d6b4","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def model_start(self, model_name):"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        Called once for every model, before any field."},{"line_number":51,"context_line":"        \"\"\""},{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_ecd5d7ba","line":50,"range":{"start_line":50,"start_character":7,"end_line":50,"end_character":54},"in_reply_to":"df87a7cf_51aca08b","updated":"2017-12-04 07:35:22.000000000","message":"As agreed, all descriptions were added in patch https://review.openstack.org/#/c/523848/","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"149c853f8f7288d20d57ea1d451a21b897dc3778","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def model_end(self, model_name):"},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        Called once for every model, after all model processing is done."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        pass"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_31bd5cb7","line":56,"updated":"2017-12-04 06:34:34.000000000","message":"ditto","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d70a8c0dca76f99ea04c4be54440f3d44a97d6b4","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def model_end(self, model_name):"},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        Called once for every model, after all model processing is done."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        pass"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_acd7cfbf","line":56,"in_reply_to":"df87a7cf_31bd5cb7","updated":"2017-12-04 07:35:22.000000000","message":"ditto","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"149c853f8f7288d20d57ea1d451a21b897dc3778","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def fields_start(self):"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        Called once for every model, before all fields."},{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        pass"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_118ff823","line":62,"range":{"start_line":62,"start_character":29,"end_line":62,"end_character":35},"updated":"2017-12-04 06:34:34.000000000","message":"field?","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d70a8c0dca76f99ea04c4be54440f3d44a97d6b4","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def fields_start(self):"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        Called once for every model, before all fields."},{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        pass"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_6ce1c79a","line":62,"range":{"start_line":62,"start_character":29,"end_line":62,"end_character":35},"in_reply_to":"df87a7cf_118ff823","updated":"2017-12-04 07:35:22.000000000","message":"no, model. before any field is processed. see above","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"149c853f8f7288d20d57ea1d451a21b897dc3778","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def fields_end(self):"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        Called once for every model, after all fields."},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        pass"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_f19db459","line":68,"range":{"start_line":68,"start_character":30,"end_line":68,"end_character":35},"updated":"2017-12-04 06:34:34.000000000","message":"field? What kind of processing is expected to be done here?","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d70a8c0dca76f99ea04c4be54440f3d44a97d6b4","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def fields_end(self):"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        Called once for every model, after all fields."},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        pass"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_cce9f380","line":68,"range":{"start_line":68,"start_character":30,"end_line":68,"end_character":35},"in_reply_to":"df87a7cf_f19db459","updated":"2017-12-04 07:35:22.000000000","message":"ditto","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"149c853f8f7288d20d57ea1d451a21b897dc3778","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def handle_field(self, name_, type_, is_embedded, is_single, restrictions):"},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        Called once for every field in a model."},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":"        pass"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_f1b614da","line":76,"updated":"2017-12-04 06:34:34.000000000","message":"please add docstring for the parameters and what kind of processing is expected to be done here","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"d70a8c0dca76f99ea04c4be54440f3d44a97d6b4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def handle_field(self, name_, type_, is_embedded, is_single, restrictions):"},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        Called once for every field in a model."},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":"        pass"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_8c03eb42","line":76,"in_reply_to":"df87a7cf_f1b614da","updated":"2017-12-04 07:35:22.000000000","message":"added to the above-mentioned patch","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"f180dba3465d12a1be787f97fa2226ab671b895b","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def fields_start(self):"},{"line_number":93,"context_line":"        print(\u0027Fields\u0027, file\u003dself._output)"},{"line_number":94,"context_line":"        print(\u0027------\u0027, file\u003dself._output)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def handle_field(self, name_, type_, is_embedded, is_single, restrictions):"},{"line_number":97,"context_line":"        restriction_str \u003d \u0027 {}\u0027.format(restrictions) if restrictions else \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_ffed7625","line":94,"updated":"2017-12-04 11:37:02.000000000","message":"nit , not need to be part of the plaintest commit ?","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"63437e94f2d01b2b6b8cfd5aefb8ea6396a4cc4a","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def fields_start(self):"},{"line_number":93,"context_line":"        print(\u0027Fields\u0027, file\u003dself._output)"},{"line_number":94,"context_line":"        print(\u0027------\u0027, file\u003dself._output)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def handle_field(self, name_, type_, is_embedded, is_single, restrictions):"},{"line_number":97,"context_line":"        restriction_str \u003d \u0027 {}\u0027.format(restrictions) if restrictions else \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_a84d5b73","line":94,"in_reply_to":"df87a7cf_ffed7625","updated":"2017-12-05 06:46:33.000000000","message":"I agree, but it was already merged...","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"f180dba3465d12a1be787f97fa2226ab671b895b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            file\u003dself._output)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class UMLPrinter(ModelsPrinter):"},{"line_number":106,"context_line":"    def __init__(self, fh):"},{"line_number":107,"context_line":"        super(UMLPrinter, self).__init__(fh)"},{"line_number":108,"context_line":"        self._model \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_9f59caff","line":105,"updated":"2017-12-04 11:37:02.000000000","message":"can you add a docstring that say this class uses PlantUML  , or at list call the class plantUMLPrinter","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"63437e94f2d01b2b6b8cfd5aefb8ea6396a4cc4a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            file\u003dself._output)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class UMLPrinter(ModelsPrinter):"},{"line_number":106,"context_line":"    def __init__(self, fh):"},{"line_number":107,"context_line":"        super(UMLPrinter, self).__init__(fh)"},{"line_number":108,"context_line":"        self._model \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"df87a7cf_4837efe4","line":105,"in_reply_to":"df87a7cf_9f59caff","updated":"2017-12-05 06:46:33.000000000","message":"Done. Please review the docstrings at https://review.openstack.org/#/c/523848/","commit_id":"ec74920413825754cd73c59191b035de684d5e0e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"42fde875fa0649a1426a34e48dff736282f15f58","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            model \u003d field._model"},{"line_number":162,"context_line":"            return model.__name__, None"},{"line_number":163,"context_line":"        elif isinstance(field, fields.StringField):"},{"line_number":164,"context_line":"            return \u0027string\u0027, None"},{"line_number":165,"context_line":"        elif isinstance(field, fields.IntField):"},{"line_number":166,"context_line":"            return \u0027number\u0027, None"},{"line_number":167,"context_line":"        elif isinstance(field, fields.FloatField):"},{"line_number":168,"context_line":"            return \u0027float\u0027, None"},{"line_number":169,"context_line":"        elif isinstance(field, fields.BoolField):"},{"line_number":170,"context_line":"            return \u0027boolean\u0027, None"},{"line_number":171,"context_line":"        elif isinstance(field, fields.BaseField):"},{"line_number":172,"context_line":"            return type(field).__name__, None"},{"line_number":173,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_f22612b8","line":170,"range":{"start_line":164,"start_character":19,"end_line":170,"end_character":27},"updated":"2017-12-04 08:34:05.000000000","message":"constants?","commit_id":"d292aeaf6626c6c258d708f5f9fa013fa09cb057"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"f761b3c9010a2f9523cda896fe04f3c5cec572c6","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            model \u003d field._model"},{"line_number":162,"context_line":"            return model.__name__, None"},{"line_number":163,"context_line":"        elif isinstance(field, fields.StringField):"},{"line_number":164,"context_line":"            return \u0027string\u0027, None"},{"line_number":165,"context_line":"        elif isinstance(field, fields.IntField):"},{"line_number":166,"context_line":"            return \u0027number\u0027, None"},{"line_number":167,"context_line":"        elif isinstance(field, fields.FloatField):"},{"line_number":168,"context_line":"            return \u0027float\u0027, None"},{"line_number":169,"context_line":"        elif isinstance(field, fields.BoolField):"},{"line_number":170,"context_line":"            return \u0027boolean\u0027, None"},{"line_number":171,"context_line":"        elif isinstance(field, fields.BaseField):"},{"line_number":172,"context_line":"            return type(field).__name__, None"},{"line_number":173,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"df87a7cf_ffbc96bc","line":170,"range":{"start_line":164,"start_character":19,"end_line":170,"end_character":27},"in_reply_to":"df87a7cf_f22612b8","updated":"2017-12-04 11:40:05.000000000","message":"Interesting idea. I will add it as constants in a later patch where they are used more massively","commit_id":"d292aeaf6626c6c258d708f5f9fa013fa09cb057"}]}
