示例#1
0
    def processing(self, req):
        response = OODict()
        response._id = req._id

        try:
            result = self.handle_req(req)  # Must set req._status
            if result is None:
                return None  # Request not done, need to queue back
            # For complicated calls, read for example, should return a tuple: value, payload
            if isinstance(result, tuple):
                response.value, response.payload = result
            else:
                response.value = result
        except RequestHandleError, err:
            response.error = str(err)
示例#2
0
    def _parse_node(self, node):
        tree = OODict()
        # Save value
        value = node.text
        if isinstance(value, str):
            value = value.strip() # Only strip strings 
        tree.value = value

        # Save attributes
        attrs = {}
        for k,v in node.attrib.items():
            attrs.update(self._make_dict(k, v))
        if attrs:
            tree['attrs'] = attrs

        #Save childrens
        for child in node.getchildren():
            ctag = child.tag
            ctree = self._parse_node(child)
            cdict = self._make_dict(ctag, ctree)

            if ctag not in tree: # First time found
                tree.update(cdict)
                continue

            old = tree[ctag]
            if not isinstance(old, list):
                tree[ctag] = [old] # Multi entries, change to list       
            tree[ctag].append(ctree) # Add new entry

        return  tree
示例#3
0
 def _make_dict(self, tag, value):
     """Generate a new dict with tag and value
     
     If tag is like '{http://cs.sfsu.edu/csc867/myscheduler}patients',
     split it first to: http://cs.sfsu.edu/csc867/myscheduler, patients
     """
     tmp = value
     result = re.compile("\{(.*)\}(.*)").search(tag)
     if result:
         tmp = OODict()
         tmp.xmlns, tag = result.groups() # We have a namespace!
         tmp.value = value
     return OODict({tag: tmp})