diff --git a/run_tests.py b/run_tests.py index a20f1db..ba22151 100644 --- a/run_tests.py +++ b/run_tests.py @@ -51,7 +51,7 @@ if __name__ == '__main__': sender_suite = unittest.makeSuite(Sender_TestCase, "test") jcl_suite = unittest.TestSuite() # jcl_suite.addTest(FeederComponent_TestCase('test_handle_tick')) -# jcl_suite.addTest(FeederComponent_TestCase('test_handle_set_register_new_field_mandatory')) +# jcl_suite.addTest(FeederComponent_TestCase('test_handle_get_register_new')) # jcl_suite = unittest.TestSuite((feeder_component_suite)) # jcl_suite = unittest.TestSuite((component_suite)) jcl_suite = unittest.TestSuite((component_suite, diff --git a/src/jcl/jabber/component.py b/src/jcl/jabber/component.py index 9477bbc..dcfb177 100644 --- a/src/jcl/jabber/component.py +++ b/src/jcl/jabber/component.py @@ -618,7 +618,8 @@ class JCLComponent(Component, object): # "name" field is mandatory reg_form.add_field(field_type = "text-single", \ label = lang_class.account_name, \ - var = "name") + var = "name", \ + required = True) for (field, field_type, post_func, default_func) in \ self.account_class.get_register_fields(): @@ -628,9 +629,11 @@ class JCLComponent(Component, object): label = getattr(lang_class, lang_label_attr) else: label = field - reg_form.add_field(field_type = field_type, \ - label = label, \ - var = field) + field = reg_form.add_field(field_type = field_type, \ + label = label, \ + var = field) + if default_func == account.mandatory_field: + field.required = True ## TODO : Add page when empty tuple given ## TODO : get default value if any return reg_form diff --git a/src/jcl/jabber/x.py b/src/jcl/jabber/x.py index 71cdabb..45f5ce9 100644 --- a/src/jcl/jabber/x.py +++ b/src/jcl/jabber/x.py @@ -100,10 +100,11 @@ class DataForm(object): field_type = "fixed", \ label = None, \ var = None, \ - value = ""): + value = "", \ + required = False): """Add a Field to this Xdata form """ - field = Field(field_type, label, var, value) + field = Field(field_type, label, var, value, required) self.fields[var] = field # fields_tab exist to keep added fields order self.fields_tab.append(field) diff --git a/tests/jcl/jabber/test_component.py b/tests/jcl/jabber/test_component.py index 1af43dc..5c0abe1 100644 --- a/tests/jcl/jabber/test_component.py +++ b/tests/jcl/jabber/test_component.py @@ -387,6 +387,7 @@ class JCLComponent_TestCase(unittest.TestCase): self.assertEquals(fields[0].prop("type"), "text-single") self.assertEquals(fields[0].prop("var"), "name") self.assertEquals(fields[0].prop("label"), Lang.en.account_name) + self.assertEquals(fields[0].children.name, "required") def test_handle_get_register_new_complex(self): self.comp.account_class = AccountExample @@ -417,10 +418,12 @@ class JCLComponent_TestCase(unittest.TestCase): self.assertEquals(fields[0].prop("type"), "text-single") self.assertEquals(fields[0].prop("var"), "name") self.assertEquals(fields[0].prop("label"), Lang.en.account_name) + self.assertEquals(fields[0].children.name, "required") self.assertEquals(fields[1].prop("type"), "text-single") self.assertEquals(fields[1].prop("var"), "login") self.assertEquals(fields[1].prop("label"), "login") + self.assertEquals(fields[0].children.name, "required") self.assertEquals(fields[2].prop("type"), "text-private") self.assertEquals(fields[2].prop("var"), "password") @@ -468,13 +471,10 @@ class JCLComponent_TestCase(unittest.TestCase): {"jir" : "jabber:iq:register", \ "jxd" : "jabber:x:data"}) self.assertEquals(len(fields), 1) - self.assertEquals(len([field - for field in fields \ - if field.prop("type") == "hidden" \ - and field.prop("var") == "name" \ - and field.prop("label") == \ - Lang.en.account_name]), \ - 1) + self.assertEquals(fields[0].prop("type"), "hidden") + self.assertEquals(fields[0].prop("var"), "name") + self.assertEquals(fields[0].prop("label"), Lang.en.account_name) + self.assertEquals(fields[0].children.next.name, "required") value = iq_sent.xpath_eval("jir:query/jxd:x/jxd:field/jxd:value", \ {"jir" : "jabber:iq:register", \ "jxd" : "jabber:x:data"}) @@ -523,12 +523,14 @@ class JCLComponent_TestCase(unittest.TestCase): self.assertEquals(field.prop("label"), Lang.en.account_name) self.assertEquals(field.children.name, "value") self.assertEquals(field.children.content, "account1") + self.assertEquals(field.children.next.name, "required") field = fields[1] self.assertEquals(field.prop("type"), "text-single") self.assertEquals(field.prop("var"), "login") self.assertEquals(field.prop("label"), "login") self.assertEquals(field.children.name, "value") self.assertEquals(field.children.content, "mylogin") + self.assertEquals(field.children.next.name, "required") field = fields[2] self.assertEquals(field.prop("type"), "text-private") self.assertEquals(field.prop("var"), "password")