Add message to error for required fields

darcs-hash:20061130215228-86b55-c7de52faee384cbca2da64ace83780afee0789a4.gz
This commit is contained in:
David Rousselie
2006-11-30 22:52:28 +01:00
parent 285a2584a8
commit a1bc88b535
3 changed files with 29 additions and 11 deletions

View File

@@ -39,6 +39,7 @@ from Queue import Queue
from sqlobject.sqlbuilder import AND from sqlobject.sqlbuilder import AND
from sqlobject.dbconnection import connectionForURI from sqlobject.dbconnection import connectionForURI
import pyxmpp.error as error
from pyxmpp.jid import JID from pyxmpp.jid import JID
from pyxmpp.jabberd.component import Component from pyxmpp.jabberd.component import Component
from pyxmpp.jabber.disco import DiscoInfo, DiscoItems, DiscoItem from pyxmpp.jabber.disco import DiscoInfo, DiscoItems, DiscoItem
@@ -359,10 +360,14 @@ class JCLComponent(Component, object):
x_data.from_xml(query.children) x_data.from_xml(query.children)
name = x_data.get_field_value("name") name = x_data.get_field_value("name")
if name is None: self.__logger.debug("Account name received = " + str(name))
info_query = info_query.make_error_response(\ if name is None or name == "":
"not-acceptable") iq_error = info_query.make_error_response("not-acceptable")
self.stream.send(info_query) text = iq_error.get_error().xmlnode.newTextChild(None, \
"text", \
lang_class.mandatory_field % ("name"))
text.setNs(text.newNs(error.STANZA_ERROR_NS, None))
self.stream.send(iq_error)
return return
self.db_connect() self.db_connect()
accounts = self.account_class.select(\ accounts = self.account_class.select(\
@@ -382,6 +387,7 @@ class JCLComponent(Component, object):
_account = self.account_class(user_jid = base_from_jid, \ _account = self.account_class(user_jid = base_from_jid, \
name = name, \ name = name, \
jid = name + u"@"+unicode(self.jid)) jid = name + u"@"+unicode(self.jid))
field = None
try: try:
for (field, field_type, field_post_func, field_default_func) in \ for (field, field_type, field_post_func, field_default_func) in \
self.account_class.get_register_fields(): self.account_class.get_register_fields():
@@ -391,8 +397,12 @@ class JCLComponent(Component, object):
field_default_func)) field_default_func))
except FieldError, exception: except FieldError, exception:
_account.destroySelf() _account.destroySelf()
info_query = info_query.make_error_response("not-acceptable") iq_error = info_query.make_error_response("not-acceptable")
self.stream.send(info_query) text = iq_error.get_error().xmlnode.newTextChild(None, \
"text", \
lang_class.mandatory_field % (field))
text.setNs(text.newNs(error.STANZA_ERROR_NS, None))
self.stream.send(iq_error)
self.db_disconnect() self.db_disconnect()
return return
info_query = info_query.make_result_response() info_query = info_query.make_result_response()

View File

@@ -78,7 +78,8 @@ class Lang:
"for account %s\n" "for account %s\n"
new_account_message_subject = u"New account '%s' created" new_account_message_subject = u"New account '%s' created"
new_account_message_body = u"New account created" new_account_message_body = u"New account created"
mandatory_field = u"%s is required"
# account_login = u"Login" # account_login = u"Login"
# account_password = u"Password" # account_password = u"Password"
# account_password_store = u"Store password on Jabber server?" # account_password_store = u"Store password on Jabber server?"

View File

@@ -32,6 +32,7 @@ import os
from sqlobject import * from sqlobject import *
from sqlobject.dbconnection import TheURIOpener from sqlobject.dbconnection import TheURIOpener
import pyxmpp.error as error
from pyxmpp.iq import Iq from pyxmpp.iq import Iq
from pyxmpp.stanza import Stanza from pyxmpp.stanza import Stanza
from pyxmpp.presence import Presence from pyxmpp.presence import Presence
@@ -776,8 +777,11 @@ class JCLComponent_TestCase(unittest.TestCase):
self.assertEquals(len(stanza_sent), 1) self.assertEquals(len(stanza_sent), 1)
self.assertTrue(isinstance(stanza_sent[0], Iq)) self.assertTrue(isinstance(stanza_sent[0], Iq))
self.assertEquals(stanza_sent[0].get_node().prop("type"), "error") self.assertEquals(stanza_sent[0].get_node().prop("type"), "error")
error = stanza_sent[0].get_error() stanza_error = stanza_sent[0].get_error()
self.assertEquals(error.get_condition().name, "not-acceptable") self.assertEquals(stanza_error.get_condition().name, \
"not-acceptable")
self.assertEquals(stanza_error.get_text(), \
Lang.en.mandatory_field % ("name"))
def test_handle_set_register_new_field_mandatory(self): def test_handle_set_register_new_field_mandatory(self):
self.comp.account_class = AccountExample self.comp.account_class = AccountExample
@@ -807,8 +811,11 @@ class JCLComponent_TestCase(unittest.TestCase):
self.assertEquals(len(stanza_sent), 1) self.assertEquals(len(stanza_sent), 1)
self.assertTrue(isinstance(stanza_sent[0], Iq)) self.assertTrue(isinstance(stanza_sent[0], Iq))
self.assertEquals(stanza_sent[0].get_node().prop("type"), "error") self.assertEquals(stanza_sent[0].get_node().prop("type"), "error")
error = stanza_sent[0].get_error() stanza_error = stanza_sent[0].get_error()
self.assertEquals(error.get_condition().name, "not-acceptable") self.assertEquals(stanza_error.get_condition().name, \
"not-acceptable")
self.assertEquals(stanza_error.get_text(), \
Lang.en.mandatory_field % ("login"))
def test_handle_set_register_update_complex(self): def test_handle_set_register_update_complex(self):
self.comp.account_class = AccountExample self.comp.account_class = AccountExample