Exemplo n.º 1
0
 def validate(self, node=None):
     #print repr(node)
     #re-validate all constraints, not just this one (interlocking constraints will likely be coming in future)
     if node:
         #Check all constraints
         for constraint in self.constraints:
             constraint.validate(node)
         #Make sure all known element types have corresponding properties on the node class
         for (ns, local), (pname, default) in self.element_types.iteritems():
             if not hasattr(node, pname):
                 from amara.bindery.nodes import node
                 setattr(node.__class__, pname, bound_element(ns, local))
     else:
         for d in self.entities:
             subtree = element_subtree_iter(d, include_root=True)
             for e in subtree:
                 if e.xml_model == self:
                     self.validate(e)
     return
Exemplo n.º 2
0
 def validate(self, node=None):
     #print repr(node)
     #re-validate all constraints, not just this one (interlocking constraints will likely be coming in future)
     if node:
         #Check all constraints
         for constraint in self.constraints:
             constraint.validate(node)
         #Make sure all known element types have corresponding properties on the node class
         for (ns, local), (pname,
                           default) in self.element_types.iteritems():
             if not hasattr(node, pname):
                 from amara.bindery.nodes import node
                 setattr(node.__class__, pname, bound_element(ns, local))
     else:
         for d in self.entities:
             subtree = element_subtree_iter(d, include_root=True)
             for e in subtree:
                 if e.xml_model == self:
                     self.validate(e)
     return
Exemplo n.º 3
0
        
        #Note: Moin for somereason seems to give 403 errors on some URLs in response to Curl's UA
        if e.code == 403 or e.code == 404:
            raise MoinMustAuthenticateError(url=request.get_full_url(),target=wiki_id)
        else:
            raise UnexpectedResponseError(url=request.get_full_url(),code=e.code,error=str(e))

    try:
        form = doc.html.body.xml_select(u'.//*[@id="editor"]')[0]
    except Exception as ex:
        #XXX There seems to be a crazy XPath bug that only manifests here
        #Use non-XPath as a hack-around :(
        #open('/tmp/foo.html', 'w').write(x)
        logger.debug('Stupid XPath bug.  Working around... ' + repr(ex))
        from amara.lib.util import element_subtree_iter
        form = [ e for e in element_subtree_iter(doc.html.body) if e.xml_attributes.get(u'id') == u'editor' ][0]
        #logger.debug('GRIPPO ' + repr(doc.html.body.xml_select(u'.//form')))
        #logger.debug('GRIPPO ' + repr((form.xml_namespace, form.xml_local, form.xml_qname, form.xml_name, dict(form.xml_attributes))))
        form_vars = {}
        #form / fieldset / input
        form_vars["action"] = [ e for e in element_subtree_iter(form) if e.xml_attributes.get(u'name') == u'action' ][0].xml_attributes[u'value']
        form_vars["rev"] = [ e for e in element_subtree_iter(form) if e.xml_attributes.get(u'name') == u'rev' ][0].xml_attributes[u'value']
        form_vars["ticket"] = [ e for e in element_subtree_iter(form) if e.xml_attributes.get(u'name') == u'ticket' ][0].xml_attributes[u'value']
        form_vars["editor"] = [ e for e in element_subtree_iter(form) if e.xml_attributes.get(u'name') == u'editor' ][0].xml_attributes[u'value']
        #logger.debug('Edit form vars ' + repr(form_vars))
        return form_vars
    form_vars = {}
    #form / fieldset / input
    form_vars["action"] = unicode(form.xml_select(u'string(*/*[@name="action"]/@value)'))
    form_vars["rev"] = unicode(form.xml_select(u'string(*/*[@name="rev"]/@value)'))
    form_vars["ticket"] = unicode(form.xml_select(u'string(*/*[@name="ticket"]/@value)'))
Exemplo n.º 4
0
                                            target=wiki_id)
        else:
            raise UnexpectedResponseError(url=request.get_full_url(),
                                          code=e.code,
                                          error=str(e))

    try:
        form = doc.html.body.xml_select(u'.//*[@id="editor"]')[0]
    except Exception as ex:
        #XXX There seems to be a crazy XPath bug that only manifests here
        #Use non-XPath as a hack-around :(
        #open('/tmp/foo.html', 'w').write(x)
        logger.debug('Stupid XPath bug.  Working around... ' + repr(ex))
        from amara.lib.util import element_subtree_iter
        form = [
            e for e in element_subtree_iter(doc.html.body)
            if e.xml_attributes.get(u'id') == u'editor'
        ][0]
        #logger.debug('GRIPPO ' + repr(doc.html.body.xml_select(u'.//form')))
        #logger.debug('GRIPPO ' + repr((form.xml_namespace, form.xml_local, form.xml_qname, form.xml_name, dict(form.xml_attributes))))
        form_vars = {}
        #form / fieldset / input
        form_vars["action"] = [
            e for e in element_subtree_iter(form)
            if e.xml_attributes.get(u'name') == u'action'
        ][0].xml_attributes[u'value']
        form_vars["rev"] = [
            e for e in element_subtree_iter(form)
            if e.xml_attributes.get(u'name') == u'rev'
        ][0].xml_attributes[u'value']
        form_vars["ticket"] = [