Skip to content

Commit 6bcb3b5

Browse files
authored
Merge pull request #45 from PTCInc/44-nested-advanced-tags-groups-not-working-with-adv_tag_groupget_all_tag_groups
fix(adv tags): fixed path split input implementation. Updated Tests
2 parents dfe4dd5 + 04af08a commit 6bcb3b5

File tree

7 files changed

+92
-66
lines changed

7 files changed

+92
-66
lines changed

docs/kepconfig.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ <h2 id="features">Features</h2>
114114
<tr>
115115
<td style="text-align:center;"><strong>Datalogger</strong> <br /> <em>(Log Groups, Items, Mapping, Triggers, Reset Mapping Service)</em></td>
116116
<td style="text-align:center;">Y</td>
117-
<td style="text-align:center;">Y</td>
117+
<td style="text-align:center;">N</td>
118118
</tr>
119119
<tr>
120120
<td style="text-align:center;"><strong>UA Gateway</strong> <br /> <em>(Certificates, Server Endpoints, Client Connections, Server Interface parameters)</em></td>
@@ -370,7 +370,7 @@ <h2 id="need-more-information">Need More Information</h2>
370370
</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a><span class="sd">.. include:: ../README.md</span>
371371
</span><span id="L-19"><a href="#L-19"><span class="linenos">19</span></a>
372372
</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a><span class="sd">&quot;&quot;&quot;</span>
373-
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;1.4.0&quot;</span>
373+
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;1.4.1&quot;</span>
374374
</span><span id="L-22"><a href="#L-22"><span class="linenos">22</span></a><span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">connection</span><span class="p">,</span> <span class="n">error</span>
375375
</span></pre></div>
376376

docs/kepconfig/adv_tags.html

Lines changed: 46 additions & 42 deletions
Large diffs are not rendered by default.

docs/kepconfig/adv_tags/adv_tag_group.html

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -228,16 +228,18 @@ <h1 class="modulename">
228228
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a><span class="sd"> :param server: instance of the `server` class</span>
229229
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a><span class="sd"> :param adv_tag_group_path: path identifying the advanced tag group collection to retrieve. Standard Kepware address decimal</span>
230230
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a><span class="sd"> notation string such as &quot;_advancedtags.AdvTagGroup1&quot; or &quot;_advancedtags.AdvTagGroup1.AdvTagGroupChild&quot;</span>
231-
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a>
232-
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a><span class="sd"> :return: List of data for all tag groups within the tag group</span>
231+
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a><span class="sd"> :param options: *(optional)* Dict of parameters to filter, sort or pagenate the list of tags and tag groups. </span>
232+
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a><span class="sd"> Options are &#39;filter&#39;, &#39;sortOrder&#39;, and &#39;sortProperty&#39; only.</span>
233233
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a>
234-
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a><span class="sd"> :raises KepHTTPError: If urllib provides an HTTPError</span>
235-
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a><span class="sd"> :raises KepURLError: If urllib provides an URLError</span>
236-
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a><span class="sd"> &#39;&#39;&#39;</span>
237-
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">path_obj</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_adv_tag_path_split</span><span class="p">(</span><span class="n">adv_tag_group_path</span><span class="p">,</span> <span class="n">isItem</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
238-
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">url</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_create_adv_tags_base_url</span><span class="p">(</span><span class="n">server</span><span class="o">.</span><span class="n">url</span><span class="p">,</span> <span class="n">path_obj</span><span class="p">)</span> <span class="o">+</span> <span class="n">_create_url</span><span class="p">()</span>
239-
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="n">r</span> <span class="o">=</span> <span class="n">server</span><span class="o">.</span><span class="n">_config_get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">options</span><span class="p">)</span>
240-
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="k">return</span> <span class="n">r</span><span class="o">.</span><span class="n">payload</span>
234+
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a><span class="sd"> :return: List of data for all tag groups within the tag group</span>
235+
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a>
236+
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a><span class="sd"> :raises KepHTTPError: If urllib provides an HTTPError</span>
237+
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a><span class="sd"> :raises KepURLError: If urllib provides an URLError</span>
238+
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a><span class="sd"> &#39;&#39;&#39;</span>
239+
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="n">path_obj</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_adv_tag_path_split</span><span class="p">(</span><span class="n">adv_tag_group_path</span><span class="p">,</span> <span class="n">isItem</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
240+
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">url</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_create_adv_tags_base_url</span><span class="p">(</span><span class="n">server</span><span class="o">.</span><span class="n">url</span><span class="p">,</span> <span class="n">path_obj</span><span class="p">)</span> <span class="o">+</span> <span class="n">_create_url</span><span class="p">()</span>
241+
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="n">r</span> <span class="o">=</span> <span class="n">server</span><span class="o">.</span><span class="n">_config_get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">options</span><span class="p">)</span>
242+
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="k">return</span> <span class="n">r</span><span class="o">.</span><span class="n">payload</span>
241243
</span></pre></div>
242244

243245

@@ -538,16 +540,18 @@ <h6 id="raises">Raises</h6>
538540
</span><span id="get_all_tag_groups-155"><a href="#get_all_tag_groups-155"><span class="linenos">155</span></a><span class="sd"> :param server: instance of the `server` class</span>
539541
</span><span id="get_all_tag_groups-156"><a href="#get_all_tag_groups-156"><span class="linenos">156</span></a><span class="sd"> :param adv_tag_group_path: path identifying the advanced tag group collection to retrieve. Standard Kepware address decimal</span>
540542
</span><span id="get_all_tag_groups-157"><a href="#get_all_tag_groups-157"><span class="linenos">157</span></a><span class="sd"> notation string such as &quot;_advancedtags.AdvTagGroup1&quot; or &quot;_advancedtags.AdvTagGroup1.AdvTagGroupChild&quot;</span>
541-
</span><span id="get_all_tag_groups-158"><a href="#get_all_tag_groups-158"><span class="linenos">158</span></a>
542-
</span><span id="get_all_tag_groups-159"><a href="#get_all_tag_groups-159"><span class="linenos">159</span></a><span class="sd"> :return: List of data for all tag groups within the tag group</span>
543+
</span><span id="get_all_tag_groups-158"><a href="#get_all_tag_groups-158"><span class="linenos">158</span></a><span class="sd"> :param options: *(optional)* Dict of parameters to filter, sort or pagenate the list of tags and tag groups. </span>
544+
</span><span id="get_all_tag_groups-159"><a href="#get_all_tag_groups-159"><span class="linenos">159</span></a><span class="sd"> Options are &#39;filter&#39;, &#39;sortOrder&#39;, and &#39;sortProperty&#39; only.</span>
543545
</span><span id="get_all_tag_groups-160"><a href="#get_all_tag_groups-160"><span class="linenos">160</span></a>
544-
</span><span id="get_all_tag_groups-161"><a href="#get_all_tag_groups-161"><span class="linenos">161</span></a><span class="sd"> :raises KepHTTPError: If urllib provides an HTTPError</span>
545-
</span><span id="get_all_tag_groups-162"><a href="#get_all_tag_groups-162"><span class="linenos">162</span></a><span class="sd"> :raises KepURLError: If urllib provides an URLError</span>
546-
</span><span id="get_all_tag_groups-163"><a href="#get_all_tag_groups-163"><span class="linenos">163</span></a><span class="sd"> &#39;&#39;&#39;</span>
547-
</span><span id="get_all_tag_groups-164"><a href="#get_all_tag_groups-164"><span class="linenos">164</span></a> <span class="n">path_obj</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_adv_tag_path_split</span><span class="p">(</span><span class="n">adv_tag_group_path</span><span class="p">,</span> <span class="n">isItem</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
548-
</span><span id="get_all_tag_groups-165"><a href="#get_all_tag_groups-165"><span class="linenos">165</span></a> <span class="n">url</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_create_adv_tags_base_url</span><span class="p">(</span><span class="n">server</span><span class="o">.</span><span class="n">url</span><span class="p">,</span> <span class="n">path_obj</span><span class="p">)</span> <span class="o">+</span> <span class="n">_create_url</span><span class="p">()</span>
549-
</span><span id="get_all_tag_groups-166"><a href="#get_all_tag_groups-166"><span class="linenos">166</span></a> <span class="n">r</span> <span class="o">=</span> <span class="n">server</span><span class="o">.</span><span class="n">_config_get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">options</span><span class="p">)</span>
550-
</span><span id="get_all_tag_groups-167"><a href="#get_all_tag_groups-167"><span class="linenos">167</span></a> <span class="k">return</span> <span class="n">r</span><span class="o">.</span><span class="n">payload</span>
546+
</span><span id="get_all_tag_groups-161"><a href="#get_all_tag_groups-161"><span class="linenos">161</span></a><span class="sd"> :return: List of data for all tag groups within the tag group</span>
547+
</span><span id="get_all_tag_groups-162"><a href="#get_all_tag_groups-162"><span class="linenos">162</span></a>
548+
</span><span id="get_all_tag_groups-163"><a href="#get_all_tag_groups-163"><span class="linenos">163</span></a><span class="sd"> :raises KepHTTPError: If urllib provides an HTTPError</span>
549+
</span><span id="get_all_tag_groups-164"><a href="#get_all_tag_groups-164"><span class="linenos">164</span></a><span class="sd"> :raises KepURLError: If urllib provides an URLError</span>
550+
</span><span id="get_all_tag_groups-165"><a href="#get_all_tag_groups-165"><span class="linenos">165</span></a><span class="sd"> &#39;&#39;&#39;</span>
551+
</span><span id="get_all_tag_groups-166"><a href="#get_all_tag_groups-166"><span class="linenos">166</span></a> <span class="n">path_obj</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_adv_tag_path_split</span><span class="p">(</span><span class="n">adv_tag_group_path</span><span class="p">,</span> <span class="n">isItem</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
552+
</span><span id="get_all_tag_groups-167"><a href="#get_all_tag_groups-167"><span class="linenos">167</span></a> <span class="n">url</span> <span class="o">=</span> <span class="n">adv_tags</span><span class="o">.</span><span class="n">_create_adv_tags_base_url</span><span class="p">(</span><span class="n">server</span><span class="o">.</span><span class="n">url</span><span class="p">,</span> <span class="n">path_obj</span><span class="p">)</span> <span class="o">+</span> <span class="n">_create_url</span><span class="p">()</span>
553+
</span><span id="get_all_tag_groups-168"><a href="#get_all_tag_groups-168"><span class="linenos">168</span></a> <span class="n">r</span> <span class="o">=</span> <span class="n">server</span><span class="o">.</span><span class="n">_config_get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">options</span><span class="p">)</span>
554+
</span><span id="get_all_tag_groups-169"><a href="#get_all_tag_groups-169"><span class="linenos">169</span></a> <span class="k">return</span> <span class="n">r</span><span class="o">.</span><span class="n">payload</span>
551555
</span></pre></div>
552556

553557

@@ -559,6 +563,8 @@ <h6 id="parameters">Parameters</h6>
559563
<li><strong>server</strong>: instance of the <code>server</code> class</li>
560564
<li><strong>adv_tag_group_path</strong>: path identifying the advanced tag group collection to retrieve. Standard Kepware address decimal
561565
notation string such as "_advancedtags.AdvTagGroup1" or "_advancedtags.AdvTagGroup1.AdvTagGroupChild"</li>
566+
<li><strong>options</strong>: <em>(optional)</em> Dict of parameters to filter, sort or pagenate the list of tags and tag groups.
567+
Options are 'filter', 'sortOrder', and 'sortProperty' only.</li>
562568
</ul>
563569

564570
<h6 id="returns">Returns</h6>

docs/search.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kepconfig/adv_tags/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
specific objects within the Kepware Configuration API
99
"""
1010

11+
from ..error import KepError
1112
from . import adv_tag_group, average_tags, derived_tags, complex_tags, cumulative_tags, min_tags, max_tags, link_tags
1213
ADV_TAGS_ROOT = '/project/_advancedtags'
1314

@@ -28,6 +29,9 @@ def _adv_tag_path_split(path: str, *, isItem=False) -> dict:
2829
return = {'adv_tag_root': '_advancedtags', 'tag_path': ['ch1','dev1']}
2930
'''
3031
path_list = path.split('.', 2)
32+
if path_list[0] != '_advancedtags':
33+
raise KepError('Error: Invalid advanced tag path - Must start with "_advancedtags"')
34+
3135
path_obj = {}
3236
for x in range(0, len(path_list)):
3337
if x == 0:

kepconfig/adv_tags/adv_tag_group.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,13 +154,15 @@ def get_all_tag_groups(server: server, adv_tag_group_path: str, *, options: dict
154154
:param server: instance of the `server` class
155155
:param adv_tag_group_path: path identifying the advanced tag group collection to retrieve. Standard Kepware address decimal
156156
notation string such as "_advancedtags.AdvTagGroup1" or "_advancedtags.AdvTagGroup1.AdvTagGroupChild"
157+
:param options: *(optional)* Dict of parameters to filter, sort or pagenate the list of tags and tag groups.
158+
Options are 'filter', 'sortOrder', and 'sortProperty' only.
157159
158160
:return: List of data for all tag groups within the tag group
159161
160162
:raises KepHTTPError: If urllib provides an HTTPError
161163
:raises KepURLError: If urllib provides an URLError
162164
'''
163-
path_obj = adv_tags._adv_tag_path_split(adv_tag_group_path, isItem=True)
165+
path_obj = adv_tags._adv_tag_path_split(adv_tag_group_path, isItem=False)
164166
url = adv_tags._create_adv_tags_base_url(server.url, path_obj) + _create_url()
165167
r = server._config_get(url, params=options)
166168
return r.payload

tests/adv_tags_test.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,20 @@ def test_adv_tag_group_get(server):
222222
assert type(adv_tags.adv_tag_group.get_tag_group(server, adv_tag_child_group_path)) == dict
223223

224224
# Get all advanced tag groups at root
225-
assert type(adv_tags.adv_tag_group.get_all_tag_groups(server, '')) == list
225+
assert type(adv_tags.adv_tag_group.get_all_tag_groups(server, '_advancedtags')) == list
226226

227227
# Get all advanced tag groups under a parent
228-
assert type(adv_tags.adv_tag_group.get_all_tag_groups(server, f'_advancedtags.{adv_tag_group_name}')) == list
228+
result = adv_tags.adv_tag_group.get_all_tag_groups(server, f'_advancedtags.{adv_tag_group_name}')
229+
assert type(result) == list
230+
assert any(group["common.ALLTYPES_NAME"] == adv_tag_group_child for group in result)
231+
result = adv_tags.adv_tag_group.get_all_tag_groups(server, adv_tag_child_group_path)
232+
assert type(result) == list
233+
assert len(result) == 0
234+
235+
def test_adv_tag_bad_root_in_path(server):
236+
# Test bad advanced tag path
237+
with pytest.raises(error.KepError):
238+
adv_tags.adv_tag_group.get_tag_group(server, '_wrongroot.AdvTagGroup1')
229239

230240
def test_adv_tag_group_modify(server):
231241
# Modify advanced tag group

0 commit comments

Comments
 (0)