diff -r 031a0ad83156 -r fda6b92d81a1 wokkel/data_form.py --- a/wokkel/data_form.py Wed Dec 30 21:37:33 2009 +0100 +++ b/wokkel/data_form.py Wed Dec 30 21:39:55 2009 +0100 @@ -616,3 +616,24 @@ for field in filtered: self.removeField(field) + + +def findForm(element, formNamespace): + """ + Find a Data Form. + + Look for an element that represents a Data Form with the specified + form namespace as a child element of the given element. + """ + if not element: + return None + + for child in element.elements(): + if (child.uri, child.name) == ((NS_X_DATA, 'x')): + form = Form.fromElement(child) + + if (form.formNamespace == formNamespace or + not form.formNamespace and form.formType=='cancel'): + return form + + return None diff -r 031a0ad83156 -r fda6b92d81a1 wokkel/pubsub.py --- a/wokkel/pubsub.py Wed Dec 30 21:37:33 2009 +0100 +++ b/wokkel/pubsub.py Wed Dec 30 21:39:55 2009 +0100 @@ -252,30 +252,6 @@ self.verb = verb - @staticmethod - def _findForm(element, formNamespace): - """ - Find a Data Form. - - Look for an element that represents a Data Form with the specified - form namespace as a child element of the given element. - """ - if not element: - return None - - form = None - for child in element.elements(): - try: - form = data_form.Form.fromElement(child) - except data_form.Error: - continue - - if form.formNamespace != NS_PUBSUB_NODE_CONFIG: - continue - - return form - - def _parse_node(self, verbElement): """ Parse the required node identifier out of the verbElement. @@ -366,7 +342,7 @@ """ Parse node type out of a request for the default node configuration. """ - form = PubSubRequest._findForm(verbElement, NS_PUBSUB_NODE_CONFIG) + form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) if form and form.formType == 'submit': values = form.getValues() self.nodeType = values.get('pubsub#node_type', 'leaf') @@ -378,7 +354,7 @@ """ Parse options out of a request for setting the node configuration. """ - form = PubSubRequest._findForm(verbElement, NS_PUBSUB_NODE_CONFIG) + form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) if form: if form.formType in ('submit', 'cancel'): self.options = form @@ -435,7 +411,7 @@ def _parse_options(self, verbElement): - form = PubSubRequest._findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS) + form = data_form.findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS) if form: if form.formType not in ('submit', 'cancel'): raise BadRequest(text="Unexpected form type %r" % form.formType)