[CORD-1630] Adding description and verbose_name to models in xproto

Change-Id: I24db1aded7263c7433e00bc33cb272916cb0ce73
diff --git a/lib/xos-genx/tests/translator_test.py b/lib/xos-genx/tests/translator_test.py
index f936113..48c1a81 100644
--- a/lib/xos-genx/tests/translator_test.py
+++ b/lib/xos-genx/tests/translator_test.py
@@ -133,7 +133,7 @@
 option app_label = "test";
 
 message Foo {
-    option gui_hidden = "True";
+    option gui_hidden = True;
     required string name = 1 [ null = "False", blank="False"];
 }
 
@@ -271,6 +271,50 @@
         self.assertIn('{model: ServiceDependency, type: onetomany, on_field: provider_service}', output)
         self.assertIn('{model: ServiceDependency, type: onetomany, on_field: provider_service}', output)
 
+    def test_model_description(self):
+        xproto = \
+"""
+option app_label = "test";
+
+message Foo {
+    option description="This is the Foo model";
+    required string name = 1 [ null = "False", blank="False"];
+    required string isolation = 14 [default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'), ('container_vm', 'Container In VM'))", max_length = 30, blank = False, null = False, db_index = False];
+}
+
+message Bar {
+    required string name = 1;
+}
+"""
+
+        args = FakeArgs()
+        args.inputs = xproto
+        args.target = 'modeldefs.xtarget'
+        output = XOSGenerator.generate(args)
+        self.assertIn('description: "This is the Foo model"', output)
+
+    def test_model_verbose_name(self):
+        xproto = \
+"""
+option app_label = "test";
+
+message Foo {
+    option verbose_name="Verbose Foo Name";
+    required string name = 1 [ null = "False", blank="False"];
+    required string isolation = 14 [default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'), ('container_vm', 'Container In VM'))", max_length = 30, blank = False, null = False, db_index = False];
+}
+
+message Bar {
+    required string name = 1;
+}
+"""
+
+        args = FakeArgs()
+        args.inputs = xproto
+        args.target = 'modeldefs.xtarget'
+        output = XOSGenerator.generate(args)
+        self.assertIn('verbose_name: "Verbose Foo Name"', output)
+
 if __name__ == '__main__':
     unittest.main()
 
diff --git a/lib/xos-genx/xosgenx/targets/modeldefs.xtarget b/lib/xos-genx/xosgenx/targets/modeldefs.xtarget
index ec8df1c..3b0790a 100644
--- a/lib/xos-genx/xosgenx/targets/modeldefs.xtarget
+++ b/lib/xos-genx/xosgenx/targets/modeldefs.xtarget
@@ -2,6 +2,12 @@
 {%- for m in proto.messages | sort(attribute='name') %}
 {%- if m.name != 'XOSBase'  and xproto_unquote(xproto_first_non_empty([m.options.gui_hidden, 'False'])) != 'True' %}
 - app: {{ xproto_unquote(xproto_first_non_empty([m.options.name, m.options.app_label, options.name, context.app_label])) }}
+  {%- if m.options.description %}
+  description: "{{ xproto_unquote(m.options.description) }}"
+  {%- endif %}
+  {%- if m.options.verbose_name %}
+  verbose_name: "{{ xproto_unquote(m.options.verbose_name) }}"
+  {%- endif %}
   fields: 
   {%- set id_field = {'type':'int32', 'name':'id', 'options':{}} %}
   {% for f in (xproto_base_fields(m, proto.message_table) + m.fields + [id_field]) | sort(attribute='name') -%}
diff --git a/lib/xos-genx/xosgenx/targets/service.xtarget b/lib/xos-genx/xosgenx/targets/service.xtarget
index bf14b83..7b90aea 100644
--- a/lib/xos-genx/xosgenx/targets/service.xtarget
+++ b/lib/xos-genx/xosgenx/targets/service.xtarget
@@ -41,7 +41,7 @@
   class Meta:
       app_label = {{ xproto_first_non_empty([m.options.app_label, options.app_label, options.name, "Set an app label in your xproto!"]) | lower}}
       # name = {{ xproto_first_non_empty([m.options.name, options.name, "Set a name in your xproto!"]) }}
-      verbose_name = {{ xproto_first_non_empty([m.options.verbose_name, options.verbose_name, "Set a verbose name in your xproto!"]) }}
+      verbose_name = "{{ xproto_unquote(xproto_first_non_empty([m.options.verbose_name, m.name])) }}"
 
   # Primitive Fields (Not Relations)
   {% for f in m.fields %}