Add message to error for required fields
darcs-hash:20061130215228-86b55-c7de52faee384cbca2da64ace83780afee0789a4.gz
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ 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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user