get_register_new implementation

darcs-hash:20061025182846-86b55-54ee4fb3315f3155b32864018ab636895e8d2eb9.gz
This commit is contained in:
David Rousselie
2006-10-25 20:28:46 +02:00
parent 02108f2a34
commit fb554c7217
4 changed files with 53 additions and 10 deletions

View File

@@ -50,7 +50,7 @@ if __name__ == '__main__':
feeder_suite = unittest.makeSuite(Feeder_TestCase, "test")
sender_suite = unittest.makeSuite(Sender_TestCase, "test")
jcl_suite = unittest.TestSuite()
# jcl_suite.addTest(FeederComponent_TestCase('test_handle_get_version'))
# jcl_suite.addTest(FeederComponent_TestCase('test_handle_get_register_new'))
# jcl_suite.addTest(FeederComponent_TestCase('test_handle_presence_available_to_account_live_password'))
# jcl_suite = unittest.TestSuite((feeder_component_suite))
# jcl_suite = unittest.TestSuite((component_suite))

View File

@@ -277,7 +277,6 @@ class JCLComponent(Component):
base_from_jid = unicode(info_query.get_from().bare())
disco_items = DiscoItems()
if not node:
## TODO : list accounts
self.db_connect()
for account in self.account_class.select(Account.q.user_jid == \
base_from_jid):
@@ -304,9 +303,8 @@ class JCLComponent(Component):
"""
self.__logger.debug("GET_REGISTER")
## TODO Lang
## lang_class = self.__lang.get_lang_class_from_node(info_query.get_node())
lang_class = None
## base_from_jid = unicode(info_query.get_from().bare())
lang_class = self.__lang.get_lang_class_from_node(info_query.get_node())
base_from_jid = unicode(info_query.get_from().bare())
to_jid = info_query.get_to()
info_query = info_query.make_result_response()
query = info_query.new_query("jabber:iq:register")
@@ -545,8 +543,28 @@ class JCLComponent(Component):
def get_reg_form(self, lang_class):
"""Return register form based on language and account class
"""
# TODO
return X()
# TODO : handle text-private for password
# TODO : handle list-single
reg_form = X()
reg_form.xmlns = "jabber:x:data"
reg_form.title = lang_class.register_title
reg_form.instructions = lang_class.register_instructions
reg_form.type = "form"
for (field, field_type) in \
self.account_class.get_register_fields():
lang_label_attr = self.account_class.__name__.lower() \
+ "_" + field
if hasattr(lang_class, lang_label_attr):
label = getattr(lang_class, lang_label_attr)
else:
label = field
reg_form.add_field(field_type = field_type, \
label = label, \
var = field)
## TODO : Add page when empty tuple given
## TODO : get default value if any
return reg_form
def get_reg_form_init(self, lang_class, account):
"""Return register form for an existing account (update)

View File

@@ -89,3 +89,8 @@ class Account(SQLObject):
status = property(get_status, set_status)
def get_register_fields(cls):
return [('name', "text-single")]
get_register_fields = classmethod(get_register_fields)

View File

@@ -317,10 +317,30 @@ class JCLComponent_TestCase(unittest.TestCase):
to_jid = "jcl.test.com"))
self.assertEquals(len(self.comp.stream.sent), 1)
iq_sent = self.comp.stream.sent[0]
# print str(iq_sent.get_node())
self.assertEquals(iq_sent.get_to(), "user1@test.com")
# self.assertEquals(len(iq_sent.xpath_eval("*/*")), 1)
# TODO
titles = iq_sent.xpath_eval("jir:query/jxd:x/jxd:title", \
{"jir" : "jabber:iq:register", \
"jxd" : "jabber:x:data"})
self.assertEquals(len(titles), 1)
self.assertEquals(titles[0].content, \
Lang.en.register_title)
instructions = iq_sent.xpath_eval("jir:query/jxd:x/jxd:instructions", \
{"jir" : "jabber:iq:register", \
"jxd" : "jabber:x:data"})
self.assertEquals(len(instructions), 1)
self.assertEquals(instructions[0].content, \
Lang.en.register_instructions)
fields = iq_sent.xpath_eval("jir:query/jxd:x/jxd:field", \
{"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") == "text-single" \
and field.prop("var") == "name" \
and field.prop("label") == \
Lang.en.account_name]), \
1)
def test_handle_get_register_exist(self):