From a8158a55279a7ae4ad43d6aaf8855c0f3711d5c2 Mon Sep 17 00:00:00 2001
From: Sebastian Koslowski <koslowski@kit.edu>
Date: Wed, 22 Mar 2017 14:19:20 +0100
Subject: grc: fix refactored handling of <base_key> tags

---
 grc/core/Block.py | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

(limited to 'grc/core/Block.py')

diff --git a/grc/core/Block.py b/grc/core/Block.py
index f707175551..8350828092 100644
--- a/grc/core/Block.py
+++ b/grc/core/Block.py
@@ -133,18 +133,17 @@ class Block(Element):
             add_param(key='maxoutbuf', name='Max Output Buffer', type='int',
                       hide='part', value='0', tab=ADVANCED_PARAM_TAB)
 
-        base_params_n = {n['key']: n for n in params_n}
+        base_params_n = {}
         for param_n in params_n:
             key = param_n['key']
             if key in self.params:
-                # raise Exception('Key "{}" already exists in params'.format(key))
-                print('Key "{}" already exists in params in block {}'
-                      ''.format(key, self.key))
-                continue
+                raise Exception('Key "{}" already exists in params'.format(key))
 
-            extended_param_n = base_params_n.get(param_n.pop('base_key', None), {})
-            extended_param_n.update(param_n)
-            self.params[key] = param_factory(self, **extended_param_n)
+            base_key = param_n.get('base_key', None)
+            param_n_ext = base_params_n.get(base_key, {}).copy()
+            param_n_ext.update(param_n)
+            self.params[key] = param_factory(self, **param_n_ext)
+            base_params_n[key] = param_n_ext
 
         add_param(key='comment', name='Comment', type='_multiline', hide='part',
                   value='', tab=ADVANCED_PARAM_TAB)
-- 
cgit v1.2.3