diff options
| author | Thomas Mangin <thomas.mangin@exa.net.uk> | 2020-06-25 10:49:53 +0100 | 
|---|---|---|
| committer | Thomas Mangin <thomas.mangin@exa.net.uk> | 2020-06-25 10:49:53 +0100 | 
| commit | 786fefe821e821cfdba896b5584fff49074be6ca (patch) | |
| tree | ac37c2cafed33c87a9c371399a5e51ef4f8c6742 | |
| parent | 9fc8158f98ba7154da9867d9a28f00e39f76d0e0 (diff) | |
| download | vyos-1x-786fefe821e821cfdba896b5584fff49074be6ca.tar.gz vyos-1x-786fefe821e821cfdba896b5584fff49074be6ca.zip | |
xml: T2528: fix to work with named tags (edit mode)
| -rw-r--r-- | python/vyos/xml/definition.py | 13 | 
1 files changed, 9 insertions, 4 deletions
| diff --git a/python/vyos/xml/definition.py b/python/vyos/xml/definition.py index c5f6b0fc7..52cbbaf97 100644 --- a/python/vyos/xml/definition.py +++ b/python/vyos/xml/definition.py @@ -228,8 +228,9 @@ class XML(dict):              inner = self.tree[option]              prefix = '+> ' if inner.get(kw.node, '') != kw.leafNode else '   '              if kw.help in inner: -                h = inner[kw.help] -                yield (prefix + option, h.get(kw.summary), '') +                yield (prefix + option, inner[kw.help].get(kw.summary), '') +            else: +                yield (prefix + option, '(no help available)', '')      def debug(self):          print('------') @@ -260,7 +261,7 @@ class XML(dict):                  if isinstance(d[k],dict):                      _flatten(level, index, d[k], r)                      continue -                if self.is_multi(level): +                if self.is_multi(level, with_tag=False):                      r[under] = [_.strip() for _ in d[k].split(',')]                      continue                  r[under] = d[k] @@ -272,9 +273,11 @@ class XML(dict):      # @lru_cache(maxsize=100)      # XXX: need to use cachetool instead - for later -    def _tree(self, lpath): +    def _tree(self, lpath, with_tag=True):          """          returns the part of the tree searched or None if it does not exists +        if with_tag is set, this is a configuration path (with tagNode names) +        and tag name will be removed from the path when traversing the tree          """          tree = self[kw.tree]          spath = lpath.copy() @@ -283,6 +286,8 @@ class XML(dict):              if p not in tree:                  return None              tree = tree[p] +            if with_tag and spath and tree[kw.node] == kw.tagNode: +                spath.pop(0)          return tree      def _get(self, lpath, tag): | 
