Merge "Delete external mocks"

This commit is contained in:
Zuul 2017-10-26 15:51:25 +00:00 committed by Gerrit Code Review
commit d5ea0345c2
286 changed files with 1 additions and 64292 deletions

View File

@ -1,13 +0,0 @@
"""Utils module mock."""
def report_config(conf, dump=False):
"""Mock report_config function."""
pass
def set_utils_conf(conf):
"""Mock set_utils_conf function."""
pass

View File

@ -1,6 +0,0 @@
def audit(*args, **kwargs):
pass
def init(*args, **kwargs):
pass

View File

@ -1,6 +0,0 @@
def is_token_valid(token_to_validate, lcp_id, conf, token_role):
pass
def TokenConf(mech_id, mech_password, rms_url, tenant_name, keystone_version):
pass

View File

@ -1,2 +0,0 @@
def get_logger(*a, **k):
pass

View File

@ -1,6 +0,0 @@
def init(*a, **kw):
pass
def enforce(*a, **kw):
pass

View File

@ -1,23 +0,0 @@
class utils:
@staticmethod
def set_utils_conf(conf):
pass
@staticmethod
def report_config(conf, dump_to_log):
pass
@staticmethod
def create_existing_uuid(uuid):
pass
class api_error_utils:
@staticmethod
def get_error(transaction_id,
error_details="",
message=None,
status_code=400):
pass

View File

@ -1,8 +0,0 @@
def get_error(transaction_id,
error_details="",
message=None,
status_code=400):
pass

View File

@ -1,6 +0,0 @@
def get_regions_of_group(*a, **k):
pass
def set_utils_conf(*a, **k):
pass

View File

@ -1,10 +0,0 @@
def set_utils_conf(conf):
pass
def report_config(conf, dump_to_log):
pass
def create_existing_uuid(uuid):
pass

View File

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
0 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">0 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
</td>
<td class="text">
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,161 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/app.py: 83%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/app.py</b> :
<span class="pc_cov">83%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
22 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">19 run</span>
<span class="mis shortkey_m button_toggle_mis">3 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">1 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="stm run hide_run"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm mis"><a href="#n31">31</a></p>
<p id="n32" class="stm mis"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="stm par run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm mis"><a href="#n35">35</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">make_app</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span> <span class="key">import</span> <span class="nam">model</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span><span class="op">.</span><span class="nam">commands</span> <span class="key">import</span> <span class="nam">CommandRunner</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">policy</span> <span class="key">import</span> <span class="nam">policy</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">authentication</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="nam">logger</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"><span class="key">def</span> <span class="nam">setup_app</span><span class="op">(</span><span class="nam">config</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"> <span class="nam">model</span><span class="op">.</span><span class="nam">init_model</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="stm run hide_run"> <span class="nam">token_conf</span> <span class="op">=</span> <span class="nam">authentication</span><span class="op">.</span><span class="nam">_get_token_conf</span><span class="op">(</span><span class="nam">config</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"> <span class="nam">policy</span><span class="op">.</span><span class="nam">init</span><span class="op">(</span><span class="nam">config</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">policy_file</span><span class="op">,</span> <span class="nam">token_conf</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"> <span class="nam">app_conf</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="nam">config</span><span class="op">.</span><span class="nam">app</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="com"># setting configurations for utils to be used from now and on</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">set_utils_conf</span><span class="op">(</span><span class="nam">config</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"> <span class="nam">app</span> <span class="op">=</span> <span class="nam">make_app</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">pop</span><span class="op">(</span><span class="str">'root'</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="nam">logging</span><span class="op">=</span><span class="nam">getattr</span><span class="op">(</span><span class="nam">config</span><span class="op">,</span> <span class="str">'logging'</span><span class="op">,</span> <span class="op">{</span><span class="op">}</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="op">**</span><span class="nam">app_conf</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">'Starting CMS...'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="key">return</span> <span class="nam">app</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"><span class="key">def</span> <span class="nam">main</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm mis"> <span class="nam">runner</span> <span class="op">=</span> <span class="nam">CommandRunner</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm mis"> <span class="nam">runner</span><span class="op">.</span><span class="nam">run</span><span class="op">(</span><span class="op">[</span><span class="str">'serve'</span><span class="op">,</span> <span class="str">'../config.py'</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm par run hide_run"><span class="annotate short">34&#x202F;&#x219B;&#x202F;35</span><span class="annotate long">line 34 didn't jump to line 35, because the condition on line 34 was never true</span><span class="key">if</span> <span class="nam">__name__</span> <span class="op">==</span> <span class="str">"__main__"</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm mis"> <span class="nam">main</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
0 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">0 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
</td>
<td class="text">
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,159 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/root.py: 90%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/root.py</b> :
<span class="pc_cov">90%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
10 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">9 run</span>
<span class="mis shortkey_m button_toggle_mis">1 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="stm run hide_run"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">expose</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">response</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">webob</span><span class="op">.</span><span class="nam">exc</span> <span class="key">import</span> <span class="nam">status_map</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span><span class="op">.</span><span class="nam">secure</span> <span class="key">import</span> <span class="nam">SecureController</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span> <span class="key">import</span> <span class="nam">root</span> <span class="key">as</span> <span class="nam">v1</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">authentication</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">conf</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">class</span> <span class="nam">RootController</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"> <span class="com"># url/v1/</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm run hide_run"> <span class="nam">v1</span> <span class="op">=</span> <span class="nam">v1</span><span class="op">.</span><span class="nam">V1Controller</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"> <span class="op">@</span><span class="nam">expose</span><span class="op">(</span><span class="nam">template</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"> <span class="key">def</span> <span class="nam">_default</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="str"> Method to handle GET /</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="str"> parameters: None</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="str"> return: dict describing cms rest version information</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="key">return</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="str">"versions"</span><span class="op">:</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="str">"values"</span><span class="op">:</span> <span class="op">[</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="str">"status"</span><span class="op">:</span> <span class="str">"stable"</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="str">"id"</span><span class="op">:</span> <span class="str">"v1"</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="str">"links"</span><span class="op">:</span> <span class="op">[</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="str">"href"</span><span class="op">:</span> <span class="str">"http://localhost:7080/"</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
0 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">0 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
</td>
<td class="text">
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,187 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/base.py: 75%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/base.py</b> :
<span class="pc_cov">75%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
16 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">12 run</span>
<span class="mis shortkey_m button_toggle_mis">4 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm mis"><a href="#n9">9</a></p>
<p id="n10" class="stm mis"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="stm run hide_run"><a href="#n14">14</a></p>
<p id="n15" class="stm mis"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">import</span> <span class="nam">wsme</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">response</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsme</span> <span class="key">import</span> <span class="nam">types</span> <span class="key">as</span> <span class="nam">wtypes</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">import</span> <span class="nam">inspect</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">class</span> <span class="nam">ClientSideError</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">exc</span><span class="op">.</span><span class="nam">ClientSideError</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">error</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">400</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm mis"> <span class="nam">response</span><span class="op">.</span><span class="nam">translatable_error</span> <span class="op">=</span> <span class="nam">error</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm mis"> <span class="nam">super</span><span class="op">(</span><span class="nam">ClientSideError</span><span class="op">,</span> <span class="nam">self</span><span class="op">)</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="nam">error</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"><span class="key">class</span> <span class="nam">InputValueError</span><span class="op">(</span><span class="nam">ClientSideError</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">400</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm mis"> <span class="nam">super</span><span class="op">(</span><span class="nam">InputValueError</span><span class="op">,</span> <span class="nam">self</span><span class="op">)</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="str">"Invalid value for input {} : {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">class</span> <span class="nam">EntityNotFoundError</span><span class="op">(</span><span class="nam">ClientSideError</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="nam">super</span><span class="op">(</span><span class="nam">EntityNotFoundError</span><span class="op">,</span> <span class="nam">self</span><span class="op">)</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="str">"Entity not found for {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">id</span><span class="op">)</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"><span class="key">class</span> <span class="nam">Base</span><span class="op">(</span><span class="nam">wtypes</span><span class="op">.</span><span class="nam">DynamicBase</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="str">'''</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="str"> @classmethod</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="str"> def from_model(cls, m):</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="str"> return cls(**(m.as_dict()))</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="str"> def as_dict(self, model):</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="str"> valid_keys = inspect.getargspec(model.__init__)[0]</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="str"> if 'self' in valid_keys:</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="str"> valid_keys.remove('self')</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="str"> return self.as_dict_from_keys(valid_keys)</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="str"> def as_dict_from_keys(self, keys):</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="str"> return dict((k, getattr(self, k))</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="str"> for k in keys</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"><span class="str"> if hasattr(self, k) and</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="str"> getattr(self, k) != wsme.Unset)</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="str"> @classmethod</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="str"> def from_db_and_links(cls, m, links):</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> return cls(links=links, **(m.as_dict()))</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> '''</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
0 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">0 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
</td>
<td class="text">
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,149 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/configuration.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/configuration.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
14 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">14 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="pln"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
</td>
<td class="text">
<p id="t1" class="pln"><span class="str">"""Configuration rest API input module."""</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">import</span> <span class="nam">logging</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">conf</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">rest</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsmeext</span><span class="op">.</span><span class="nam">pecan</span> <span class="key">import</span> <span class="nam">wsexpose</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="nam">logger</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">getLogger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"><span class="key">class</span> <span class="nam">ConfigurationController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"> <span class="str">"""Configuration controller."""</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"> <span class="key">def</span> <span class="nam">get</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">dump_to_log</span><span class="op">=</span><span class="str">'false'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="str">"""get method.</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="str"> :param dump_to_log: A boolean string that says whether the</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="str"> configuration should be written to log</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="str"> :return: A pretty string that contains the service's configuration</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"Get configuration..."</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="nam">dump</span> <span class="op">=</span> <span class="nam">dump_to_log</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span> <span class="op">==</span> <span class="str">'true'</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">set_utils_conf</span><span class="op">(</span><span class="nam">conf</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">utils</span><span class="op">.</span><span class="nam">report_config</span><span class="op">(</span><span class="nam">conf</span><span class="op">,</span> <span class="nam">dump</span><span class="op">,</span> <span class="nam">logger</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/customer/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/customer/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
0 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">0 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
</td>
<td class="text">
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,201 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/customer/enabled.py: 91%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/customer/enabled.py</b> :
<span class="pc_cov">91%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
33 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">30 run</span>
<span class="mis shortkey_m button_toggle_mis">3 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="stm run hide_run"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="stm mis"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="stm mis"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm mis"><a href="#n55">55</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">rest</span><span class="op">,</span> <span class="nam">request</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsmeext</span><span class="op">.</span><span class="nam">pecan</span> <span class="key">import</span> <span class="nam">wsexpose</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">api_error_utils</span> <span class="key">as</span> <span class="nam">err_utils</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Models</span> <span class="key">import</span> <span class="nam">Enabled</span><span class="op">,</span> <span class="nam">CustomerResultWrapper</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">customer_logic</span> <span class="key">import</span> <span class="nam">CustomerLogic</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">error_base</span> <span class="key">import</span> <span class="nam">ErrorStatus</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">authentication</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"><span class="nam">LOG</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">class</span> <span class="nam">EnabledController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">CustomerResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="nam">Enabled</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="key">def</span> <span class="nam">put</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">enable</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:enable'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"EnabledController - (put) customer id {0} enable: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">enable</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">enable</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">enable</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"EnabledController - change enable (put) finished well: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="str">'enabled'</span> <span class="key">if</span> <span class="nam">enable</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">else</span> <span class="str">'disabled'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'Change enable'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_uuid</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"EnabledController - Failed to Change enable"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"EnabledController - change enable (put) - Failed to Change enable"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="key">def</span> <span class="nam">post</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">405</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"> <span class="key">def</span> <span class="nam">get</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">405</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"> <span class="key">def</span> <span class="nam">delete</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">405</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,241 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/customer/metadata.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/customer/metadata.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
52 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">52 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="stm run hide_run"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="stm run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">rest</span><span class="op">,</span> <span class="nam">request</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsmeext</span><span class="op">.</span><span class="nam">pecan</span> <span class="key">import</span> <span class="nam">wsexpose</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Models</span> <span class="key">import</span> <span class="nam">CustomerResultWrapper</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">api_error_utils</span> <span class="key">as</span> <span class="nam">err_utils</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">error_base</span> <span class="key">import</span> <span class="nam">ErrorStatus</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Models</span> <span class="key">import</span> <span class="nam">MetadataWrapper</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">import</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">metadata_logic</span> <span class="key">as</span> <span class="nam">logic</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">authentication</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"><span class="nam">LOG</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">class</span> <span class="nam">MetadataController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">CustomerResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="nam">MetadataWrapper</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"> <span class="key">def</span> <span class="nam">post</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:add_metadata'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"> <span class="nam">res</span> <span class="op">=</span> <span class="nam">logic</span><span class="op">.</span><span class="nam">add_customer_metadata</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} metadata added'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'add customer metadata'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_uuid</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="key">return</span> <span class="nam">res</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="key">except</span> <span class="nam">AttributeError</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">409</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ValueError</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"MetaDataController - Failed to add metadata"</span><span class="op">,</span> <span class="nam">ex</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"MetaDataController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">ex</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">400</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"MetaDataController - Failed to add metadata"</span><span class="op">,</span> <span class="nam">ex</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">ex</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">CustomerResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="nam">MetadataWrapper</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"> <span class="key">def</span> <span class="nam">put</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:update_metadata'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="nam">res</span> <span class="op">=</span> <span class="nam">logic</span><span class="op">.</span><span class="nam">update_customer_metadata</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} metadata updated'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'update customer metadata'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"> <span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="key">return</span> <span class="nam">res</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="key">except</span> <span class="nam">AttributeError</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">400</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ValueError</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"MetaDataController - Failed to add metadata"</span><span class="op">,</span> <span class="nam">ex</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"MetaDataController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">ex</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">ex</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">400</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">ex</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"MetaDataController - Failed to add metadata"</span><span class="op">,</span> <span class="nam">ex</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">ex</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,357 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/customer/regions.py: 94%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/customer/regions.py</b> :
<span class="pc_cov">94%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
75 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">72 run</span>
<span class="mis shortkey_m button_toggle_mis">3 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">2 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="stm run hide_run"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="stm run hide_run"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="stm par run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="stm mis"><a href="#n42">42</a></p>
<p id="n43" class="stm mis"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="pln"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="stm run hide_run"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="stm run hide_run"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="pln"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="stm par run hide_run"><a href="#n107">107</a></p>
<p id="n108" class="stm mis"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="pln"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="stm run hide_run"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="stm run hide_run"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">oslo_db</span><span class="op">.</span><span class="nam">exception</span> <span class="key">import</span> <span class="nam">DBDuplicateEntry</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">rest</span><span class="op">,</span> <span class="nam">request</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsmeext</span><span class="op">.</span><span class="nam">pecan</span> <span class="key">import</span> <span class="nam">wsexpose</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">api_error_utils</span> <span class="key">as</span> <span class="nam">err_utils</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">customer</span><span class="op">.</span><span class="nam">users</span> <span class="key">import</span> <span class="nam">UserController</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Models</span> <span class="key">import</span> <span class="nam">Region</span><span class="op">,</span> <span class="nam">RegionResultWrapper</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">customer_logic</span> <span class="key">import</span> <span class="nam">CustomerLogic</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">error_base</span> <span class="key">import</span> <span class="nam">ErrorStatus</span><span class="op">,</span> <span class="nam">DuplicateEntryError</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">authentication</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t14" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="nam">LOG</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"><span class="key">class</span> <span class="nam">RegionController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"> <span class="nam">users</span> <span class="op">=</span> <span class="nam">UserController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="op">[</span><span class="nam">str</span><span class="op">]</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"> <span class="key">def</span> <span class="nam">get</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"> <span class="key">return</span> <span class="op">[</span><span class="str">"This is the regions controller "</span><span class="op">,</span> <span class="str">"customer id: "</span> <span class="op">+</span> <span class="nam">customer_id</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">RegionResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="op">[</span><span class="nam">Region</span><span class="op">]</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"> <span class="key">def</span> <span class="nam">post</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">regions</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"RegionController - Add Regions (post) customer id {0} regions: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">regions</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:add_region'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">add_regions</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">regions</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"RegionController - Add Regions (post) finished well: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} regions: {} added'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="op">[</span><span class="nam">r</span><span class="op">.</span><span class="nam">name</span> <span class="key">for</span> <span class="nam">r</span> <span class="key">in</span> <span class="nam">regions</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'add regions'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm par run hide_run"><span class="annotate short">41&#x202F;&#x219B;&#x202F;42</span><span class="annotate long">line 41 didn't jump to line 42, because the exception caught by line 41 didn't happen</span> <span class="key">except</span> <span class="nam">DBDuplicateEntry</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"RegionController - Add Regions (post) - region already exists"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">409</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="str">'Region already exists'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to update regions"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"RegionController - Add Regions (post) - Failed to update regions"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">RegionResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="op">[</span><span class="nam">Region</span><span class="op">]</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"> <span class="key">def</span> <span class="nam">put</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">regions</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"RegionController - Replace Regions (put) customer id {0} regions: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">regions</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:update_region'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">validate_put_url</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">replace_regions</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">regions</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"RegionController - Replace Regions (put) finished well: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} regions: {} updated'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="op">[</span><span class="nam">r</span><span class="op">.</span><span class="nam">name</span> <span class="key">for</span> <span class="nam">r</span> <span class="key">in</span> <span class="nam">regions</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'Replace regions'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to Replace regions"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"RegionController - Replace Regions (put) - Failed to replace regions"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">204</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"> <span class="key">def</span> <span class="nam">delete</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"RegionController - Delete Region (delete) customer id {0} region_id: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:delete_region'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">delete_region</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"RegionController - Delete Region (delete) finished well"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} region: {} deleted'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'delete region'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm par run hide_run"><span class="annotate short">107&#x202F;&#x219B;&#x202F;108</span><span class="annotate long">line 107 didn't jump to line 108, because the exception caught by line 107 didn't happen</span> <span class="key">except</span> <span class="nam">ValueError</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to delete region"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"RegionController - Failed in delete Region"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"> <span class="key">def</span> <span class="nam">validate_put_url</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm run hide_run"> <span class="nam">url_elements</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'/'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"> <span class="nam">last_index</span> <span class="op">=</span> <span class="op">-</span><span class="num">2</span> <span class="key">if</span> <span class="nam">url_elements</span><span class="op">[</span><span class="op">-</span><span class="num">1</span><span class="op">]</span> <span class="op">==</span> <span class="str">''</span> <span class="key">else</span> <span class="op">-</span><span class="num">1</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"> <span class="com"># If there's an element after 'regions', it is a region ID</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"> <span class="com"># which is currently unsupported</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="key">if</span> <span class="nam">url_elements</span><span class="op">[</span><span class="nam">last_index</span> <span class="op">-</span> <span class="num">1</span><span class="op">]</span> <span class="op">==</span> <span class="str">'regions'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">'Method not allowed for a specific region in Request: {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">path</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="str">'Method not allowed for a specific region'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">405</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,459 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/customer/root.py: 97%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/customer/root.py</b> :
<span class="pc_cov">97%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
111 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">108 run</span>
<span class="mis shortkey_m button_toggle_mis">3 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">1 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="stm run hide_run"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="stm run hide_run"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="stm run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="stm run hide_run"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="stm par run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="stm mis"><a href="#n61">61</a></p>
<p id="n62" class="stm mis"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm mis"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="stm run hide_run"><a href="#n75">75</a></p>
<p id="n76" class="pln"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="stm run hide_run"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="stm run hide_run"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="stm run hide_run"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="stm run hide_run"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="stm run hide_run"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="stm run hide_run"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="stm run hide_run"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="stm run hide_run"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="stm run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="stm run hide_run"><a href="#n133">133</a></p>
<p id="n134" class="stm run hide_run"><a href="#n134">134</a></p>
<p id="n135" class="pln"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="stm run hide_run"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="stm run hide_run"><a href="#n146">146</a></p>
<p id="n147" class="stm run hide_run"><a href="#n147">147</a></p>
<p id="n148" class="pln"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="pln"><a href="#n150">150</a></p>
<p id="n151" class="stm run hide_run"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="stm run hide_run"><a href="#n156">156</a></p>
<p id="n157" class="stm run hide_run"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="stm run hide_run"><a href="#n159">159</a></p>
<p id="n160" class="pln"><a href="#n160">160</a></p>
<p id="n161" class="stm run hide_run"><a href="#n161">161</a></p>
<p id="n162" class="stm run hide_run"><a href="#n162">162</a></p>
<p id="n163" class="pln"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="stm run hide_run"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="stm run hide_run"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="stm run hide_run"><a href="#n173">173</a></p>
<p id="n174" class="stm run hide_run"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="stm run hide_run"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="stm run hide_run"><a href="#n180">180</a></p>
<p id="n181" class="pln"><a href="#n181">181</a></p>
<p id="n182" class="pln"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="stm run hide_run"><a href="#n184">184</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">rest</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">response</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">import</span> <span class="nam">oslo_db</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsmeext</span><span class="op">.</span><span class="nam">pecan</span> <span class="key">import</span> <span class="nam">wsexpose</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Models</span> <span class="key">import</span> <span class="nam">Customer</span><span class="op">,</span> <span class="nam">CustomerResultWrapper</span><span class="op">,</span> <span class="nam">CustomerSummaryResponse</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">customer</span><span class="op">.</span><span class="nam">users</span> <span class="key">import</span> <span class="nam">DefaultUserController</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">customer</span><span class="op">.</span><span class="nam">regions</span> <span class="key">import</span> <span class="nam">RegionController</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">customer</span><span class="op">.</span><span class="nam">metadata</span> <span class="key">import</span> <span class="nam">MetadataController</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">customer</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">import</span> <span class="nam">EnabledController</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">customer_logic</span> <span class="key">import</span> <span class="nam">CustomerLogic</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">error_base</span> <span class="key">import</span> <span class="nam">ErrorStatus</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">api_error_utils</span> <span class="key">as</span> <span class="nam">err_utils</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">authentication</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm run hide_run"><span class="nam">LOG</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"><span class="key">class</span> <span class="nam">CustomerController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"> <span class="nam">regions</span> <span class="op">=</span> <span class="nam">RegionController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"> <span class="nam">users</span> <span class="op">=</span> <span class="nam">DefaultUserController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">MetadataController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="nam">enabled</span> <span class="op">=</span> <span class="nam">EnabledController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">Customer</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="key">def</span> <span class="nam">get</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_uuid</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - GetCustomerDetails: uuid is "</span> <span class="op">+</span> <span class="nam">customer_uuid</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:get_one'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">get_customer</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - GetCustomerDetails finished well: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to GetCustomerDetails"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to GetCustomerDetails"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">CustomerResultWrapper</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="nam">Customer</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">201</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="key">def</span> <span class="nam">post</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - CreateCustomer: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">customer</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:create'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">uuid</span> <span class="op">=</span> <span class="nam">None</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">custId</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="nam">uuid</span> <span class="op">=</span> <span class="nam">utils</span><span class="op">.</span><span class="nam">make_uuid</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm par run hide_run"><span class="annotate short">60&#x202F;&#x219B;&#x202F;61</span><span class="annotate long">line 60 didn't jump to line 61, because the condition on line 60 was never true</span> <span class="key">if</span> <span class="key">not</span> <span class="nam">CustomerController</span><span class="op">.</span><span class="nam">validate_cust_id</span><span class="op">(</span><span class="nam">customer</span><span class="op">.</span><span class="nam">custId</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm mis"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'create customer'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">custId</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm mis"> <span class="key">raise</span> <span class="nam">ErrorStatus</span><span class="op">(</span><span class="str">'400'</span><span class="op">,</span> <span class="nam">None</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="nam">uuid</span> <span class="op">=</span> <span class="nam">utils</span><span class="op">.</span><span class="nam">create_existing_uuid</span><span class="op">(</span><span class="nam">customer</span><span class="op">.</span><span class="nam">custId</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="key">except</span> <span class="nam">TypeError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ErrorStatus</span><span class="op">(</span><span class="num">409.1</span><span class="op">,</span> <span class="str">'Customer ID {0} already exists'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer</span><span class="op">.</span><span class="nam">custId</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">create_customer</span><span class="op">(</span><span class="nam">customer</span><span class="op">,</span> <span class="nam">uuid</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="key">except</span> <span class="nam">oslo_db</span><span class="op">.</span><span class="nam">exception</span><span class="op">.</span><span class="nam">DBDuplicateEntry</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm mis"> <span class="key">raise</span> <span class="nam">ErrorStatus</span><span class="op">(</span><span class="num">409.2</span><span class="op">,</span> <span class="str">'Customer field {0} already exists'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">exception</span><span class="op">.</span><span class="nam">columns</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - Customer Created: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} {} created in regions: {}, with users: {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="pln"> <span class="nam">uuid</span><span class="op">,</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">name</span><span class="op">,</span> <span class="op">[</span><span class="nam">r</span><span class="op">.</span><span class="nam">name</span> <span class="key">for</span> <span class="nam">r</span> <span class="key">in</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">regions</span><span class="op">]</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"> <span class="op">[</span><span class="nam">u</span><span class="op">.</span><span class="nam">id</span> <span class="key">for</span> <span class="nam">u</span> <span class="key">in</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">users</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'create customer'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">uuid</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to CreateCustomer"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to CreateCustomer"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">CustomerResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="nam">Customer</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"> <span class="key">def</span> <span class="nam">put</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">customer</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - UpdateCustomer: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">customer</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:update'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">update_customer</span><span class="op">(</span><span class="nam">customer</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm run hide_run"> <span class="nam">response</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="num">200</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - UpdateCustomer finished well: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">customer</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} {} updated in regions: {}, with users: {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">name</span><span class="op">,</span> <span class="op">[</span><span class="nam">r</span><span class="op">.</span><span class="nam">name</span> <span class="key">for</span> <span class="nam">r</span> <span class="key">in</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">regions</span><span class="op">]</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"> <span class="op">[</span><span class="nam">u</span><span class="op">.</span><span class="nam">id</span> <span class="key">for</span> <span class="nam">u</span> <span class="key">in</span> <span class="nam">customer</span><span class="op">.</span><span class="nam">users</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'update customer'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"Failed in UpdateCustomer"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to UpdateCustomer"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t126" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">CustomerSummaryResponse</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="op">[</span><span class="nam">str</span><span class="op">]</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="stm run hide_run"> <span class="key">def</span> <span class="nam">get_all</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">region</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">user</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">starts_with</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"> <span class="nam">contains</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - GetCustomerlist"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:get_all'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">get_customer_list_by_criteria</span><span class="op">(</span><span class="nam">region</span><span class="op">,</span> <span class="nam">user</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="pln"> <span class="nam">starts_with</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"> <span class="nam">contains</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"> <span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t139" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to GetCustomerlist"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to GetCustomerlist"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t151" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">204</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln"> <span class="key">def</span> <span class="nam">delete</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:delete'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - DeleteCustomer: uuid is "</span> <span class="op">+</span> <span class="nam">customer_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run"> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">delete_customer_by_uuid</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"CustomerController - DeleteCustomer finished well"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t161" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} deleted'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'delete customer'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to DeleteCustomer"</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t173" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"CustomerController - Failed to DeleteCustomer"</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t180" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="pln"> <span class="key">def</span> <span class="nam">validate_cust_id</span><span class="op">(</span><span class="nam">cust_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="pln"> <span class="com"># regex = re.compile('[a-zA-Z]')</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"> <span class="com"># return regex.match(cust_id[0])</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="stm run hide_run"> <span class="key">return</span> <span class="nam">True</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,583 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/customer/users.py: 86%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/customer/users.py</b> :
<span class="pc_cov">86%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
138 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">123 run</span>
<span class="mis shortkey_m button_toggle_mis">15 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">9 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="stm run hide_run"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="stm par run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="stm mis"><a href="#n40">40</a></p>
<p id="n41" class="stm mis"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="stm run hide_run"><a href="#n46">46</a></p>
<p id="n47" class="stm run hide_run"><a href="#n47">47</a></p>
<p id="n48" class="stm run hide_run"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="stm run hide_run"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="stm par run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="stm mis"><a href="#n71">71</a></p>
<p id="n72" class="stm mis"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="stm run hide_run"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="stm run hide_run"><a href="#n87">87</a></p>
<p id="n88" class="stm run hide_run"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="stm run hide_run"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="stm run hide_run"><a href="#n96">96</a></p>
<p id="n97" class="stm run hide_run"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="stm par run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="stm mis"><a href="#n101">101</a></p>
<p id="n102" class="stm mis"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="stm par run hide_run"><a href="#n106">106</a></p>
<p id="n107" class="stm mis"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="pln"><a href="#n109">109</a></p>
<p id="n110" class="pln"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="pln"><a href="#n115">115</a></p>
<p id="n116" class="pln"><a href="#n116">116</a></p>
<p id="n117" class="pln"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="pln"><a href="#n123">123</a></p>
<p id="n124" class="stm par run hide_run"><a href="#n124">124</a></p>
<p id="n125" class="stm mis"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="stm run hide_run"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="stm run hide_run"><a href="#n137">137</a></p>
<p id="n138" class="stm run hide_run"><a href="#n138">138</a></p>
<p id="n139" class="stm run hide_run"><a href="#n139">139</a></p>
<p id="n140" class="stm run hide_run"><a href="#n140">140</a></p>
<p id="n141" class="stm run hide_run"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
<p id="n143" class="stm run hide_run"><a href="#n143">143</a></p>
<p id="n144" class="stm run hide_run"><a href="#n144">144</a></p>
<p id="n145" class="pln"><a href="#n145">145</a></p>
<p id="n146" class="stm run hide_run"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="stm run hide_run"><a href="#n148">148</a></p>
<p id="n149" class="pln"><a href="#n149">149</a></p>
<p id="n150" class="pln"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="stm run hide_run"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="pln"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="stm par run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="stm mis"><a href="#n159">159</a></p>
<p id="n160" class="stm mis"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="pln"><a href="#n162">162</a></p>
<p id="n163" class="pln"><a href="#n163">163</a></p>
<p id="n164" class="stm run hide_run"><a href="#n164">164</a></p>
<p id="n165" class="stm run hide_run"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="stm run hide_run"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="pln"><a href="#n170">170</a></p>
<p id="n171" class="stm run hide_run"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="stm run hide_run"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="stm run hide_run"><a href="#n175">175</a></p>
<p id="n176" class="stm run hide_run"><a href="#n176">176</a></p>
<p id="n177" class="stm run hide_run"><a href="#n177">177</a></p>
<p id="n178" class="stm run hide_run"><a href="#n178">178</a></p>
<p id="n179" class="stm run hide_run"><a href="#n179">179</a></p>
<p id="n180" class="stm run hide_run"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="stm run hide_run"><a href="#n182">182</a></p>
<p id="n183" class="pln"><a href="#n183">183</a></p>
<p id="n184" class="stm run hide_run"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="stm run hide_run"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="stm run hide_run"><a href="#n190">190</a></p>
<p id="n191" class="stm run hide_run"><a href="#n191">191</a></p>
<p id="n192" class="stm run hide_run"><a href="#n192">192</a></p>
<p id="n193" class="pln"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="stm par run hide_run"><a href="#n196">196</a></p>
<p id="n197" class="stm mis"><a href="#n197">197</a></p>
<p id="n198" class="stm mis"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="stm run hide_run"><a href="#n202">202</a></p>
<p id="n203" class="stm run hide_run"><a href="#n203">203</a></p>
<p id="n204" class="stm run hide_run"><a href="#n204">204</a></p>
<p id="n205" class="stm run hide_run"><a href="#n205">205</a></p>
<p id="n206" class="pln"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="stm run hide_run"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="stm run hide_run"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="stm run hide_run"><a href="#n213">213</a></p>
<p id="n214" class="stm run hide_run"><a href="#n214">214</a></p>
<p id="n215" class="stm run hide_run"><a href="#n215">215</a></p>
<p id="n216" class="stm run hide_run"><a href="#n216">216</a></p>
<p id="n217" class="stm run hide_run"><a href="#n217">217</a></p>
<p id="n218" class="stm run hide_run"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="stm run hide_run"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="stm run hide_run"><a href="#n222">222</a></p>
<p id="n223" class="pln"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="pln"><a href="#n225">225</a></p>
<p id="n226" class="stm run hide_run"><a href="#n226">226</a></p>
<p id="n227" class="stm run hide_run"><a href="#n227">227</a></p>
<p id="n228" class="stm run hide_run"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="pln"><a href="#n230">230</a></p>
<p id="n231" class="stm par run hide_run"><a href="#n231">231</a></p>
<p id="n232" class="stm mis"><a href="#n232">232</a></p>
<p id="n233" class="stm mis"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="pln"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="stm par run hide_run"><a href="#n237">237</a></p>
<p id="n238" class="stm mis"><a href="#n238">238</a></p>
<p id="n239" class="pln"><a href="#n239">239</a></p>
<p id="n240" class="pln"><a href="#n240">240</a></p>
<p id="n241" class="pln"><a href="#n241">241</a></p>
<p id="n242" class="stm run hide_run"><a href="#n242">242</a></p>
<p id="n243" class="stm run hide_run"><a href="#n243">243</a></p>
<p id="n244" class="stm run hide_run"><a href="#n244">244</a></p>
<p id="n245" class="pln"><a href="#n245">245</a></p>
<p id="n246" class="pln"><a href="#n246">246</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">rest</span><span class="op">,</span> <span class="nam">request</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsmeext</span><span class="op">.</span><span class="nam">pecan</span> <span class="key">import</span> <span class="nam">wsexpose</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">api_error_utils</span> <span class="key">as</span> <span class="nam">err_utils</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Models</span> <span class="key">import</span> <span class="nam">User</span><span class="op">,</span> <span class="nam">UserResultWrapper</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">customer_logic</span> <span class="key">import</span> <span class="nam">CustomerLogic</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">error_base</span> <span class="key">import</span> <span class="nam">ErrorStatus</span><span class="op">,</span> <span class="nam">NotFound</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">authentication</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"><span class="nam">LOG</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">class</span> <span class="nam">DefaultUserController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="op">[</span><span class="nam">str</span><span class="op">]</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"> <span class="key">def</span> <span class="nam">get</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"> <span class="key">return</span> <span class="op">[</span><span class="str">"This is the users controller "</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="str">"customer id: "</span> <span class="op">+</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="str">"user "</span> <span class="op">+</span> <span class="str">"default user"</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">UserResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="op">[</span><span class="nam">User</span><span class="op">]</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"> <span class="key">def</span> <span class="nam">put</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">)</span><span class="op">:</span> <span class="com"># replace default users to customer</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"DefaultUserController - Replace DefaultUsers (put) customer id {0} users: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">users</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:update_default_user'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">replace_default_users</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"DefaultUserController - Replace DefaultUsers (put) Finished well customer id {0} users: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">users</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to replace default users"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm par run hide_run"><span class="annotate short">39&#x202F;&#x219B;&#x202F;40</span><span class="annotate long">line 39 didn't jump to line 40, because the exception caught by line 39 didn't happen</span> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">UserResultWrapper</span><span class="op">(</span><span class="nam">transaction_id</span><span class="op">=</span><span class="str">"Users Not Added"</span><span class="op">,</span> <span class="nam">users</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to replace default users"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">UserResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="op">[</span><span class="nam">User</span><span class="op">]</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"> <span class="key">def</span> <span class="nam">post</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">)</span><span class="op">:</span> <span class="com"># add default users to customer</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"DefaultUserController - Add DefaultUsers (put) customer id {0} users: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">users</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:add_default_user'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">add_default_users</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"DefaultUserController - Add DefaultUsers (post) Finished well customer id {0} users: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">users</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to add default users"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm par run hide_run"><span class="annotate short">70&#x202F;&#x219B;&#x202F;71</span><span class="annotate long">line 70 didn't jump to line 71, because the exception caught by line 70 didn't happen</span> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">UserResultWrapper</span><span class="op">(</span><span class="nam">transaction_id</span><span class="op">=</span><span class="str">"Users Not Added"</span><span class="op">,</span> <span class="nam">users</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to add default users"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">204</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"> <span class="key">def</span> <span class="nam">delete</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"DefaultUserController - Delete DefaultUsers (delete) customer id {0} user_id: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:delete_default_user'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">delete_default_users</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"DefaultUserController - Delete DefaultUsers (delete) Finished well customer id {0} user_id: {1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'delete default users'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to delete default users"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm par run hide_run"><span class="annotate short">100&#x202F;&#x219B;&#x202F;101</span><span class="annotate long">line 100 didn't jump to line 101, because the exception caught by line 100 didn't happen</span> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm par run hide_run"><span class="annotate short">106&#x202F;&#x219B;&#x202F;107</span><span class="annotate long">line 106 didn't jump to line 107, because the exception caught by line 106 didn't happen</span> <span class="key">except</span> <span class="nam">NotFound</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">e</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed in Delete default User"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t117" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"><span class="key">class</span> <span class="nam">UserController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"> <span class="key">def</span> <span class="nam">_validate</span><span class="op">(</span><span class="nam">args</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"> <span class="com"># validate if user didnt provide input json for users</span><span class="strut">&nbsp;</span></p>
<p id="t123" class="pln"> <span class="com"># to prevent wsme to take the input from url params</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="stm par run hide_run"><span class="annotate short">124&#x202F;&#x219B;&#x202F;125</span><span class="annotate long">line 124 didn't jump to line 125, because the condition on line 124 was never true</span> <span class="key">if</span> <span class="str">'users'</span> <span class="key">in</span> <span class="nam">args</span> <span class="key">and</span> <span class="nam">args</span><span class="op">[</span><span class="str">'users'</span><span class="op">]</span> <span class="key">and</span> <span class="key">not</span> <span class="nam">request</span><span class="op">.</span><span class="nam">body</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="str">"bad request, no json body"</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">400</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t129" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="op">[</span><span class="nam">str</span><span class="op">]</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"> <span class="key">def</span> <span class="nam">get</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run"> <span class="key">return</span> <span class="op">[</span><span class="str">"This is the users controller "</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"> <span class="str">"customer id: "</span> <span class="op">+</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"> <span class="str">"region id: "</span> <span class="op">+</span> <span class="nam">region_id</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">UserResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="op">[</span><span class="nam">User</span><span class="op">]</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"> <span class="key">def</span> <span class="nam">post</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_validate</span><span class="op">(</span><span class="nam">locals</span><span class="op">(</span><span class="op">)</span><span class="op">)</span> <span class="com"># more validations for input</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="stm run hide_run"> <span class="nam">title</span> <span class="op">=</span> <span class="str">"Add users to Region '{}' for customer: '{}', users: {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">region_id</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">users</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"UserController - {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">title</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:add_region_user'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">add_users</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"UserController - {} Finished well"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">title</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t146" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} users: {} added in region {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="op">[</span><span class="nam">u</span><span class="op">.</span><span class="nam">id</span> <span class="key">for</span> <span class="nam">u</span> <span class="key">in</span> <span class="nam">users</span><span class="op">]</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'add users'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t152" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">title</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm par run hide_run"><span class="annotate short">158&#x202F;&#x219B;&#x202F;159</span><span class="annotate long">line 158 didn't jump to line 159, because the exception caught by line 158 didn't happen</span> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t164" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">UserResultWrapper</span><span class="op">(</span><span class="nam">transaction_id</span><span class="op">=</span><span class="str">"Users Not Added"</span><span class="op">,</span> <span class="nam">users</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"UserController - Failed to Add Users (post)"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t171" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t173" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">UserResultWrapper</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">body</span><span class="op">=</span><span class="op">[</span><span class="nam">User</span><span class="op">]</span><span class="op">,</span> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">200</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"> <span class="key">def</span> <span class="nam">put</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">_validate</span><span class="op">(</span><span class="nam">locals</span><span class="op">(</span><span class="op">)</span><span class="op">)</span> <span class="com"># more validations for input</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="stm run hide_run"> <span class="nam">title</span> <span class="op">=</span> <span class="str">"Replace users to Region '{}' for customer: '{}', users: {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">region_id</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">users</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"UserController - {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">title</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:update_region_user'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">replace_users</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"UserController - {} Finished well"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">title</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t184" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} users: {} updated in region {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="op">[</span><span class="nam">u</span><span class="op">.</span><span class="nam">id</span> <span class="key">for</span> <span class="nam">u</span> <span class="key">in</span> <span class="nam">users</span><span class="op">]</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'replace users'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">title</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t193" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t196" class="stm par run hide_run"><span class="annotate short">196&#x202F;&#x219B;&#x202F;197</span><span class="annotate long">line 196 didn't jump to line 197, because the exception caught by line 196 didn't happen</span> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t197" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t198" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t202" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">UserResultWrapper</span><span class="op">(</span><span class="nam">transaction_id</span><span class="op">=</span><span class="str">"Users Not Replaced"</span><span class="op">,</span> <span class="nam">users</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"UserController - Failed to Replaced Users (put)"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t205" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t206" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t209" class="stm run hide_run"> <span class="key">return</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t211" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">204</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"> <span class="key">def</span> <span class="nam">delete</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"UserController - Delete User (delete) customer id {0} region_id: {1} user_id: {2}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="stm run hide_run"> <span class="nam">authentication</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="str">'customers:delete_region_user'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t215" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t216" class="stm run hide_run"> <span class="nam">customer_logic</span> <span class="op">=</span> <span class="nam">CustomerLogic</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="stm run hide_run"> <span class="nam">customer_logic</span><span class="op">.</span><span class="nam">delete_users</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t218" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"UserController - Delete User (delete) Finished well customer id {0} region_id: {1} user_id: {2}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t220" class="stm run hide_run"> <span class="nam">event_details</span> <span class="op">=</span> <span class="str">'Customer {} user: {} deleted in region {}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"> <span class="nam">customer_id</span><span class="op">,</span> <span class="nam">user_id</span><span class="op">,</span> <span class="nam">region_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t222" class="stm run hide_run"> <span class="nam">utils</span><span class="op">.</span><span class="nam">audit_trail</span><span class="op">(</span><span class="str">'delete users'</span><span class="op">,</span> <span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="pln"> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">,</span> <span class="nam">customer_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"> <span class="nam">event_details</span><span class="op">=</span><span class="nam">event_details</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t225" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t226" class="stm run hide_run"> <span class="key">except</span> <span class="nam">ErrorStatus</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t227" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - Failed to delete users"</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t228" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">status_code</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t231" class="stm par run hide_run"><span class="annotate short">231&#x202F;&#x219B;&#x202F;232</span><span class="annotate long">line 231 didn't jump to line 232, because the exception caught by line 231 didn't happen</span> <span class="key">except</span> <span class="nam">LookupError</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t232" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"DefaultUserController - {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t233" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">exception</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t237" class="stm par run hide_run"><span class="annotate short">237&#x202F;&#x219B;&#x202F;238</span><span class="annotate long">line 237 didn't jump to line 238, because the exception caught by line 237 didn't happen</span> <span class="key">except</span> <span class="nam">NotFound</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="pln"> <span class="nam">message</span><span class="op">=</span><span class="nam">e</span><span class="op">.</span><span class="nam">message</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t242" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exception</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t243" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="str">"UserController - Failed to Delete User (delete) "</span><span class="op">,</span> <span class="nam">exception</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t244" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="nam">request</span><span class="op">.</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">500</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t246" class="pln"> <span class="nam">error_details</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,221 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/logs.py: 35%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/logs.py</b> :
<span class="pc_cov">35%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
33 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">13 run</span>
<span class="mis shortkey_m button_toggle_mis">20 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm mis"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm mis"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm mis"><a href="#n40">40</a></p>
<p id="n41" class="stm mis"><a href="#n41">41</a></p>
<p id="n42" class="stm mis"><a href="#n42">42</a></p>
<p id="n43" class="stm mis"><a href="#n43">43</a></p>
<p id="n44" class="stm mis"><a href="#n44">44</a></p>
<p id="n45" class="stm mis"><a href="#n45">45</a></p>
<p id="n46" class="stm mis"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm mis"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm mis"><a href="#n50">50</a></p>
<p id="n51" class="stm mis"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm mis"><a href="#n53">53</a></p>
<p id="n54" class="stm mis"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="stm mis"><a href="#n58">58</a></p>
<p id="n59" class="stm mis"><a href="#n59">59</a></p>
<p id="n60" class="stm mis"><a href="#n60">60</a></p>
<p id="n61" class="stm mis"><a href="#n61">61</a></p>
<p id="n62" class="stm mis"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="stm mis"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">import</span> <span class="nam">logging</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">rest</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">import</span> <span class="nam">wsme</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsmeext</span><span class="op">.</span><span class="nam">pecan</span> <span class="key">import</span> <span class="nam">wsexpose</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="nam">logger</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">getLogger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="key">class</span> <span class="nam">LogChangeResultWSME</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">DynamicBase</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"> <span class="str">"""log change result wsme type."""</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"> <span class="nam">result</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">str</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">,</span> <span class="nam">default</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="op">**</span><span class="nam">kwargs</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"> <span class="str">""""init method."""</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm mis"> <span class="nam">super</span><span class="op">(</span><span class="nam">LogChangeResult</span><span class="op">,</span> <span class="nam">self</span><span class="op">)</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="op">**</span><span class="nam">kwargs</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">class</span> <span class="nam">LogChangeResult</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="str">"""log change result type."""</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">result</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="str">""""init method."""</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">result</span> <span class="op">=</span> <span class="nam">result</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"><span class="key">class</span> <span class="nam">LogsController</span><span class="op">(</span><span class="nam">rest</span><span class="op">.</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"> <span class="str">"""Logs Audit controller."""</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="op">@</span><span class="nam">wsexpose</span><span class="op">(</span><span class="nam">LogChangeResultWSME</span><span class="op">,</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">201</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">rest_content_types</span><span class="op">=</span><span class="str">'json'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"> <span class="key">def</span> <span class="nam">put</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">level</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"> <span class="str">"""update log level.</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="str"> :param level: the log level text name</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="str"> :return:</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"Changing log level to [{}]"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">level</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm mis"> <span class="nam">log_level</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">_levelNames</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">level</span><span class="op">.</span><span class="nam">upper</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm mis"> <span class="key">if</span> <span class="nam">log_level</span> <span class="key">is</span> <span class="key">not</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">_change_log_level</span><span class="op">(</span><span class="nam">log_level</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm mis"> <span class="nam">result</span> <span class="op">=</span> <span class="str">"Log level changed to {}."</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">level</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"> <span class="str">"The given log level [{}] doesn't exist."</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">level</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm mis"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm mis"> <span class="nam">result</span> <span class="op">=</span> <span class="str">"Fail to change log_level. Reason: {}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="nam">e</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">error</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm mis"> <span class="key">return</span> <span class="nam">LogChangeResult</span><span class="op">(</span><span class="nam">result</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"> <span class="key">def</span> <span class="nam">_change_log_level</span><span class="op">(</span><span class="nam">log_level</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm mis"> <span class="nam">path</span> <span class="op">=</span> <span class="nam">__name__</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'.'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm mis"> <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">path</span><span class="op">)</span> <span class="op">></span> <span class="num">0</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm mis"> <span class="nam">root</span> <span class="op">=</span> <span class="nam">path</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm mis"> <span class="nam">root_logger</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">getLogger</span><span class="op">(</span><span class="nam">root</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm mis"> <span class="nam">root_logger</span><span class="op">.</span><span class="nam">setLevel</span><span class="op">(</span><span class="nam">log_level</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"Fail to change log_level to [{}]. "</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="str">"the given log level doesn't exist."</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">log_level</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,111 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/orm/root.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/orm/root.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
8 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">8 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">customer</span><span class="op">.</span><span class="nam">root</span> <span class="key">import</span> <span class="nam">CustomerController</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">logs</span> <span class="key">import</span> <span class="nam">LogsController</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">configuration</span> <span class="key">import</span> <span class="nam">ConfigurationController</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span><span class="op">.</span><span class="nam">rest</span> <span class="key">import</span> <span class="nam">RestController</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">class</span> <span class="nam">OrmController</span><span class="op">(</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"> <span class="nam">configuration</span> <span class="op">=</span> <span class="nam">ConfigurationController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"> <span class="nam">customers</span> <span class="op">=</span> <span class="nam">CustomerController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"> <span class="nam">logs</span> <span class="op">=</span> <span class="nam">LogsController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,103 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/controllers/v1/root.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/controllers/v1/root.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
4 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">4 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">controllers</span><span class="op">.</span><span class="nam">v1</span><span class="op">.</span><span class="nam">orm</span><span class="op">.</span><span class="nam">root</span> <span class="key">import</span> <span class="nam">OrmController</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span><span class="op">.</span><span class="nam">rest</span> <span class="key">import</span> <span class="nam">RestController</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">class</span> <span class="nam">V1Controller</span><span class="op">(</span><span class="nam">RestController</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"> <span class="nam">orm</span> <span class="op">=</span> <span class="nam">OrmController</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,111 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/logger/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/logger/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
6 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">6 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">import</span> <span class="nam">logging</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">def</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">name</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"> <span class="nam">logger</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">getLogger</span><span class="op">(</span><span class="nam">name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">log_exception</span> <span class="op">=</span> <span class="key">lambda</span> <span class="nam">msg</span><span class="op">,</span> <span class="nam">exception</span><span class="op">:</span> <span class="nam">logger</span><span class="op">.</span><span class="nam">exception</span><span class="op">(</span><span class="nam">msg</span> <span class="op">+</span> <span class="str">" Exception: "</span> <span class="op">+</span> <span class="nam">str</span><span class="op">(</span><span class="nam">exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"> <span class="key">return</span> <span class="nam">logger</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="nam">__all__</span> <span class="op">=</span> <span class="op">[</span><span class="str">'get_logger'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/logic/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/logic/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
0 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">0 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
</td>
<td class="text">
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,131 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/logic/error_base.py: 86%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/logic/error_base.py</b> :
<span class="pc_cov">86%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
14 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">12 run</span>
<span class="mis shortkey_m button_toggle_mis">2 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="stm run hide_run"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="stm run hide_run"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="stm run hide_run"><a href="#n18">18</a></p>
<p id="n19" class="stm mis"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">class</span> <span class="nam">Error</span><span class="op">(</span><span class="nam">Exception</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">class</span> <span class="nam">ErrorStatus</span><span class="op">(</span><span class="nam">Error</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status_code</span> <span class="op">=</span> <span class="nam">status_code</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">message</span> <span class="op">=</span> <span class="nam">message</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm run hide_run"><span class="key">class</span> <span class="nam">NotFound</span><span class="op">(</span><span class="nam">Error</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">404</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status_code</span> <span class="op">=</span> <span class="nam">status_code</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">message</span> <span class="op">=</span> <span class="nam">message</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">class</span> <span class="nam">DuplicateEntryError</span><span class="op">(</span><span class="nam">Error</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="num">409</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">status_code</span> <span class="op">=</span> <span class="nam">status_code</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">message</span> <span class="op">=</span> <span class="nam">message</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,309 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/logic/metadata_logic.py: 15%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/logic/metadata_logic.py</b> :
<span class="pc_cov">15%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
74 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">14 run</span>
<span class="mis shortkey_m button_toggle_mis">60 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="stm run hide_run"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="stm run hide_run"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="stm run hide_run"><a href="#n14">14</a></p>
<p id="n15" class="stm mis"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm mis"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="stm mis"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="stm mis"><a href="#n21">21</a></p>
<p id="n22" class="stm mis"><a href="#n22">22</a></p>
<p id="n23" class="stm mis"><a href="#n23">23</a></p>
<p id="n24" class="stm mis"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="stm mis"><a href="#n26">26</a></p>
<p id="n27" class="stm mis"><a href="#n27">27</a></p>
<p id="n28" class="stm mis"><a href="#n28">28</a></p>
<p id="n29" class="stm mis"><a href="#n29">29</a></p>
<p id="n30" class="stm mis"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="stm mis"><a href="#n32">32</a></p>
<p id="n33" class="stm mis"><a href="#n33">33</a></p>
<p id="n34" class="stm mis"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="stm mis"><a href="#n36">36</a></p>
<p id="n37" class="stm mis"><a href="#n37">37</a></p>
<p id="n38" class="stm mis"><a href="#n38">38</a></p>
<p id="n39" class="stm mis"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="stm mis"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="stm mis"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="stm mis"><a href="#n45">45</a></p>
<p id="n46" class="stm mis"><a href="#n46">46</a></p>
<p id="n47" class="stm mis"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm mis"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="stm mis"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm mis"><a href="#n55">55</a></p>
<p id="n56" class="stm mis"><a href="#n56">56</a></p>
<p id="n57" class="stm mis"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="stm mis"><a href="#n59">59</a></p>
<p id="n60" class="stm mis"><a href="#n60">60</a></p>
<p id="n61" class="stm mis"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="stm mis"><a href="#n63">63</a></p>
<p id="n64" class="stm mis"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="stm mis"><a href="#n66">66</a></p>
<p id="n67" class="stm mis"><a href="#n67">67</a></p>
<p id="n68" class="stm mis"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="stm mis"><a href="#n70">70</a></p>
<p id="n71" class="stm mis"><a href="#n71">71</a></p>
<p id="n72" class="stm mis"><a href="#n72">72</a></p>
<p id="n73" class="pln"><a href="#n73">73</a></p>
<p id="n74" class="stm mis"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm mis"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm mis"><a href="#n78">78</a></p>
<p id="n79" class="stm mis"><a href="#n79">79</a></p>
<p id="n80" class="stm mis"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="stm mis"><a href="#n84">84</a></p>
<p id="n85" class="stm mis"><a href="#n85">85</a></p>
<p id="n86" class="stm mis"><a href="#n86">86</a></p>
<p id="n87" class="stm mis"><a href="#n87">87</a></p>
<p id="n88" class="stm mis"><a href="#n88">88</a></p>
<p id="n89" class="stm mis"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="stm mis"><a href="#n91">91</a></p>
<p id="n92" class="stm mis"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm mis"><a href="#n98">98</a></p>
<p id="n99" class="stm mis"><a href="#n99">99</a></p>
<p id="n100" class="stm mis"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="stm mis"><a href="#n102">102</a></p>
<p id="n103" class="stm mis"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="stm mis"><a href="#n109">109</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">data</span><span class="op">.</span><span class="nam">sql_alchemy</span><span class="op">.</span><span class="nam">models</span> <span class="key">import</span> <span class="nam">CustomerMetadata</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">data</span><span class="op">.</span><span class="nam">data_manager</span> <span class="key">import</span> <span class="nam">DataManager</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">rds_proxy</span> <span class="key">import</span> <span class="nam">RdsProxy</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Models</span> <span class="key">import</span> <span class="nam">CustomerResultWrapper</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">utils</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">request</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">conf</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="stm run hide_run"><span class="key">import</span> <span class="nam">json</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm run hide_run"><span class="nam">logger</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t14" class="stm run hide_run"><span class="key">def</span> <span class="nam">add_customer_metadata</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata_wrapper</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm mis"> <span class="nam">sql_metadata_collection</span> <span class="op">=</span> <span class="nam">map_metadata</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata_wrapper</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm mis"> <span class="nam">datamanager</span> <span class="op">=</span> <span class="nam">DataManager</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="nam">customer_record</span> <span class="op">=</span> <span class="nam">datamanager</span><span class="op">.</span><span class="nam">get_record</span><span class="op">(</span><span class="str">'customer'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm mis"> <span class="nam">sql_customer</span> <span class="op">=</span> <span class="nam">customer_record</span><span class="op">.</span><span class="nam">read_customer_by_uuid</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm mis"> <span class="key">if</span> <span class="key">not</span> <span class="nam">sql_customer</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">error</span><span class="op">(</span><span class="str">'customer not found, customer uuid: {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="str">'customer not found, customer uuid: {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm mis"> <span class="key">for</span> <span class="nam">metadata</span> <span class="key">in</span> <span class="nam">sql_metadata_collection</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm mis"> <span class="nam">metadata_match</span> <span class="op">=</span> <span class="op">[</span><span class="nam">m</span> <span class="key">for</span> <span class="nam">m</span> <span class="key">in</span> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_metadata</span> <span class="key">if</span> <span class="nam">m</span><span class="op">.</span><span class="nam">field_key</span> <span class="op">==</span> <span class="nam">metadata</span><span class="op">.</span><span class="nam">field_key</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm mis"> <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">metadata_match</span><span class="op">)</span> <span class="op">></span> <span class="num">0</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">error</span><span class="op">(</span><span class="str">'Duplicate metadata key, key already exits: {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">metadata</span><span class="op">.</span><span class="nam">field_key</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm mis"> <span class="key">raise</span> <span class="nam">AttributeError</span><span class="op">(</span><span class="str">'Duplicate metadata key, key already exits: {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">metadata</span><span class="op">.</span><span class="nam">field_key</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm mis"> <span class="key">for</span> <span class="nam">metadata</span> <span class="key">in</span> <span class="nam">sql_metadata_collection</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm mis"> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_metadata</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">'updating metadata {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">json</span><span class="op">.</span><span class="nam">dumps</span><span class="op">(</span><span class="nam">metadata</span><span class="op">.</span><span class="nam">get_proxy_dict</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">'finished appending metadata to customer'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm mis"> <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_customer_regions</span><span class="op">)</span> <span class="op">></span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm mis"> <span class="nam">RdsProxy</span><span class="op">.</span><span class="nam">send_customer</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="str">"PUT"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm mis"> <span class="nam">datamanager</span><span class="op">.</span><span class="nam">commit</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm mis"> <span class="nam">customer_result_wrapper</span> <span class="op">=</span> <span class="nam">build_response</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm mis"> <span class="key">return</span> <span class="nam">customer_result_wrapper</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm mis"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exp</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="stm mis"> <span class="nam">datamanager</span><span class="op">.</span><span class="nam">rollback</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="stm mis"> <span class="key">raise</span> <span class="nam">exp</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"><span class="key">def</span> <span class="nam">update_customer_metadata</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata_wrapper</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm mis"> <span class="nam">sql_metadata_collection</span> <span class="op">=</span> <span class="nam">map_metadata</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">metadata_wrapper</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm mis"> <span class="nam">datamanager</span> <span class="op">=</span> <span class="nam">DataManager</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm mis"> <span class="nam">customer_record</span> <span class="op">=</span> <span class="nam">datamanager</span><span class="op">.</span><span class="nam">get_record</span><span class="op">(</span><span class="str">'customer'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm mis"> <span class="nam">sql_customer</span> <span class="op">=</span> <span class="nam">customer_record</span><span class="op">.</span><span class="nam">read_customer_by_uuid</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm mis"> <span class="key">if</span> <span class="key">not</span> <span class="nam">sql_customer</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">error</span><span class="op">(</span><span class="str">'customer not found, customer uuid: {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm mis"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="str">'customer not found, customer uuid: {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm mis"> <span class="key">while</span> <span class="nam">len</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_metadata</span><span class="op">)</span> <span class="op">></span> <span class="num">0</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm mis"> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_metadata</span><span class="op">.</span><span class="nam">remove</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_metadata</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm mis"> <span class="key">for</span> <span class="nam">metadata</span> <span class="key">in</span> <span class="nam">sql_metadata_collection</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm mis"> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_metadata</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm mis"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">'updating metadata {0}'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">json</span><span class="op">.</span><span class="nam">dumps</span><span class="op">(</span><span class="nam">metadata</span><span class="op">.</span><span class="nam">get_proxy_dict</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm mis"> <span class="key">if</span> <span class="nam">len</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_customer_regions</span><span class="op">)</span> <span class="op">></span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm mis"> <span class="nam">RdsProxy</span><span class="op">.</span><span class="nam">send_customer</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="str">"PUT"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm mis"> <span class="nam">datamanager</span><span class="op">.</span><span class="nam">commit</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm mis"> <span class="nam">customer_result_wrapper</span> <span class="op">=</span> <span class="nam">build_response</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm mis"> <span class="key">return</span> <span class="nam">customer_result_wrapper</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm mis"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exp</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm mis"> <span class="nam">datamanager</span><span class="op">.</span><span class="nam">rollback</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm mis"> <span class="key">raise</span> <span class="nam">exp</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"><span class="key">def</span> <span class="nam">map_metadata</span><span class="op">(</span><span class="nam">customer_id</span><span class="op">,</span> <span class="nam">metadata_wrapper</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="stm mis"> <span class="nam">sql_metadata_collection</span> <span class="op">=</span> <span class="op">[</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm mis"> <span class="key">for</span> <span class="nam">key</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">metadata_wrapper</span><span class="op">.</span><span class="nam">metadata</span><span class="op">.</span><span class="nam">iteritems</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm mis"> <span class="nam">sql_metadata</span> <span class="op">=</span> <span class="nam">CustomerMetadata</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="stm mis"> <span class="nam">sql_metadata</span><span class="op">.</span><span class="nam">customer_id</span> <span class="op">=</span> <span class="nam">customer_id</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="stm mis"> <span class="nam">sql_metadata</span><span class="op">.</span><span class="nam">field_key</span> <span class="op">=</span> <span class="nam">key</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm mis"> <span class="nam">sql_metadata</span><span class="op">.</span><span class="nam">field_value</span> <span class="op">=</span> <span class="nam">value</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm mis"> <span class="nam">sql_metadata_collection</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">sql_metadata</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm mis"> <span class="key">return</span> <span class="nam">sql_metadata_collection</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"><span class="key">def</span> <span class="nam">build_response</span><span class="op">(</span><span class="nam">customer_uuid</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"> <span class="com"># The link should point to the customer itself (/v1/orm/customers/{id}),</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"> <span class="com"># so the 'metadata' element should be removed.</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm mis"> <span class="nam">link_elements</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">url</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'/'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm mis"> <span class="nam">link_elements</span><span class="op">.</span><span class="nam">remove</span><span class="op">(</span><span class="str">'metadata'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm mis"> <span class="nam">base_link</span> <span class="op">=</span> <span class="str">'/'</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">link_elements</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm mis"> <span class="nam">timestamp</span> <span class="op">=</span> <span class="nam">utils</span><span class="op">.</span><span class="nam">get_time_human</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm mis"> <span class="nam">customer_result_wrapper</span> <span class="op">=</span> <span class="nam">CustomerResultWrapper</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"> <span class="nam">transaction_id</span><span class="op">=</span><span class="nam">transaction_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"> <span class="nam">id</span><span class="op">=</span><span class="nam">customer_uuid</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"> <span class="nam">updated</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"> <span class="nam">created</span><span class="op">=</span><span class="nam">timestamp</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"> <span class="nam">links</span><span class="op">=</span><span class="op">{</span><span class="str">'self'</span><span class="op">:</span> <span class="nam">base_link</span><span class="op">}</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm mis"> <span class="key">return</span> <span class="nam">customer_result_wrapper</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,167 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/model/Model.py: 86%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/model/Model.py</b> :
<span class="pc_cov">86%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
7 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">6 run</span>
<span class="mis shortkey_m button_toggle_mis">1 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="pln"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="stm mis"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="pln"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="pln"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="pln"><a href="#n29">29</a></p>
<p id="n30" class="pln"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">import</span> <span class="nam">inspect</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsme</span> <span class="key">import</span> <span class="nam">types</span> <span class="key">as</span> <span class="nam">wtypes</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">rest</span><span class="op">.</span><span class="nam">json</span> <span class="key">import</span> <span class="nam">tojson</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">class</span> <span class="nam">Model</span><span class="op">(</span><span class="nam">wtypes</span><span class="op">.</span><span class="nam">DynamicBase</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"> <span class="str">"""Base class for CMS models.</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"> <span class="key">def</span> <span class="nam">tojson</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm mis"> <span class="key">return</span> <span class="nam">tojson</span><span class="op">(</span><span class="nam">type</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">,</span> <span class="nam">self</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="str"> def __init__(self, **kwds):</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="pln"><span class="str"> self.fields = list(kwds)</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"><span class="str"> for k, v in kwds.iteritems():</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="str"> setattr(self, k, v)</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="str"> def as_dict(self):</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="str"> d = {}</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="str"> for f in self.fields:</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="str"> v = getattr(self, f)</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="str"> if isinstance(v, Model):</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="str"> v = v.as_dict()</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="str"> elif isinstance(v, list) and v and isinstance(v[0], Model):</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="str"> v = [sub.as_dict() for sub in v]</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="pln"><span class="str"> d[f] = v</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln"><span class="str"> return d</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t30" class="pln"><span class="str"> def __eq__(self, other):</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"><span class="str"> return self.as_dict() == other.as_dict()</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="str"> @classmethod</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="str"> def get_field_names(cls):</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="str"> fields = inspect.getargspec(cls.__init__)[0]</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="str"> return set(fields) - set(["self"])</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,979 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/model/Models.py: 95%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/model/Models.py</b> :
<span class="pc_cov">95%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
241 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">236 run</span>
<span class="mis shortkey_m button_toggle_mis">5 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">6 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm run hide_run"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="stm run hide_run"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="stm run hide_run"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="pln"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="stm run hide_run"><a href="#n59">59</a></p>
<p id="n60" class="stm run hide_run"><a href="#n60">60</a></p>
<p id="n61" class="stm run hide_run"><a href="#n61">61</a></p>
<p id="n62" class="stm run hide_run"><a href="#n62">62</a></p>
<p id="n63" class="stm run hide_run"><a href="#n63">63</a></p>
<p id="n64" class="stm run hide_run"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="stm run hide_run"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="stm run hide_run"><a href="#n68">68</a></p>
<p id="n69" class="pln"><a href="#n69">69</a></p>
<p id="n70" class="pln"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="stm run hide_run"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="stm run hide_run"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="stm run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="stm run hide_run"><a href="#n89">89</a></p>
<p id="n90" class="stm run hide_run"><a href="#n90">90</a></p>
<p id="n91" class="stm run hide_run"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="stm run hide_run"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="pln"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="pln"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="stm run hide_run"><a href="#n101">101</a></p>
<p id="n102" class="stm run hide_run"><a href="#n102">102</a></p>
<p id="n103" class="pln"><a href="#n103">103</a></p>
<p id="n104" class="pln"><a href="#n104">104</a></p>
<p id="n105" class="stm run hide_run"><a href="#n105">105</a></p>
<p id="n106" class="pln"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="pln"><a href="#n108">108</a></p>
<p id="n109" class="stm run hide_run"><a href="#n109">109</a></p>
<p id="n110" class="stm run hide_run"><a href="#n110">110</a></p>
<p id="n111" class="stm run hide_run"><a href="#n111">111</a></p>
<p id="n112" class="stm run hide_run"><a href="#n112">112</a></p>
<p id="n113" class="stm run hide_run"><a href="#n113">113</a></p>
<p id="n114" class="stm run hide_run"><a href="#n114">114</a></p>
<p id="n115" class="stm run hide_run"><a href="#n115">115</a></p>
<p id="n116" class="stm run hide_run"><a href="#n116">116</a></p>
<p id="n117" class="stm run hide_run"><a href="#n117">117</a></p>
<p id="n118" class="stm run hide_run"><a href="#n118">118</a></p>
<p id="n119" class="stm run hide_run"><a href="#n119">119</a></p>
<p id="n120" class="stm run hide_run"><a href="#n120">120</a></p>
<p id="n121" class="stm run hide_run"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="pln"><a href="#n130">130</a></p>
<p id="n131" class="pln"><a href="#n131">131</a></p>
<p id="n132" class="pln"><a href="#n132">132</a></p>
<p id="n133" class="pln"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="pln"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="pln"><a href="#n139">139</a></p>
<p id="n140" class="pln"><a href="#n140">140</a></p>
<p id="n141" class="pln"><a href="#n141">141</a></p>
<p id="n142" class="pln"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="stm run hide_run"><a href="#n144">144</a></p>
<p id="n145" class="stm run hide_run"><a href="#n145">145</a></p>
<p id="n146" class="stm run hide_run"><a href="#n146">146</a></p>
<p id="n147" class="stm run hide_run"><a href="#n147">147</a></p>
<p id="n148" class="stm run hide_run"><a href="#n148">148</a></p>
<p id="n149" class="stm run hide_run"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="pln"><a href="#n151">151</a></p>
<p id="n152" class="stm run hide_run"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="pln"><a href="#n155">155</a></p>
<p id="n156" class="stm run hide_run"><a href="#n156">156</a></p>
<p id="n157" class="pln"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="stm run hide_run"><a href="#n159">159</a></p>
<p id="n160" class="stm run hide_run"><a href="#n160">160</a></p>
<p id="n161" class="stm run hide_run"><a href="#n161">161</a></p>
<p id="n162" class="stm run hide_run"><a href="#n162">162</a></p>
<p id="n163" class="stm run hide_run"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="stm run hide_run"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="pln"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="stm run hide_run"><a href="#n170">170</a></p>
<p id="n171" class="stm run hide_run"><a href="#n171">171</a></p>
<p id="n172" class="stm run hide_run"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="stm run hide_run"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="pln"><a href="#n177">177</a></p>
<p id="n178" class="pln"><a href="#n178">178</a></p>
<p id="n179" class="pln"><a href="#n179">179</a></p>
<p id="n180" class="pln"><a href="#n180">180</a></p>
<p id="n181" class="stm run hide_run"><a href="#n181">181</a></p>
<p id="n182" class="stm run hide_run"><a href="#n182">182</a></p>
<p id="n183" class="stm run hide_run"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="pln"><a href="#n185">185</a></p>
<p id="n186" class="stm run hide_run"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="pln"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="stm run hide_run"><a href="#n190">190</a></p>
<p id="n191" class="stm run hide_run"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="stm run hide_run"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="stm run hide_run"><a href="#n199">199</a></p>
<p id="n200" class="stm run hide_run"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="pln"><a href="#n202">202</a></p>
<p id="n203" class="stm run hide_run"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="pln"><a href="#n206">206</a></p>
<p id="n207" class="stm run hide_run"><a href="#n207">207</a></p>
<p id="n208" class="stm run hide_run"><a href="#n208">208</a></p>
<p id="n209" class="stm run hide_run"><a href="#n209">209</a></p>
<p id="n210" class="stm run hide_run"><a href="#n210">210</a></p>
<p id="n211" class="stm run hide_run"><a href="#n211">211</a></p>
<p id="n212" class="stm run hide_run"><a href="#n212">212</a></p>
<p id="n213" class="pln"><a href="#n213">213</a></p>
<p id="n214" class="stm run hide_run"><a href="#n214">214</a></p>
<p id="n215" class="pln"><a href="#n215">215</a></p>
<p id="n216" class="pln"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="pln"><a href="#n218">218</a></p>
<p id="n219" class="pln"><a href="#n219">219</a></p>
<p id="n220" class="pln"><a href="#n220">220</a></p>
<p id="n221" class="pln"><a href="#n221">221</a></p>
<p id="n222" class="pln"><a href="#n222">222</a></p>
<p id="n223" class="pln"><a href="#n223">223</a></p>
<p id="n224" class="pln"><a href="#n224">224</a></p>
<p id="n225" class="pln"><a href="#n225">225</a></p>
<p id="n226" class="stm run hide_run"><a href="#n226">226</a></p>
<p id="n227" class="stm run hide_run"><a href="#n227">227</a></p>
<p id="n228" class="stm run hide_run"><a href="#n228">228</a></p>
<p id="n229" class="stm run hide_run"><a href="#n229">229</a></p>
<p id="n230" class="stm run hide_run"><a href="#n230">230</a></p>
<p id="n231" class="stm par run hide_run"><a href="#n231">231</a></p>
<p id="n232" class="stm mis"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="pln"><a href="#n234">234</a></p>
<p id="n235" class="stm run hide_run"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="pln"><a href="#n238">238</a></p>
<p id="n239" class="stm run hide_run"><a href="#n239">239</a></p>
<p id="n240" class="stm run hide_run"><a href="#n240">240</a></p>
<p id="n241" class="stm run hide_run"><a href="#n241">241</a></p>
<p id="n242" class="stm run hide_run"><a href="#n242">242</a></p>
<p id="n243" class="stm run hide_run"><a href="#n243">243</a></p>
<p id="n244" class="stm run hide_run"><a href="#n244">244</a></p>
<p id="n245" class="stm run hide_run"><a href="#n245">245</a></p>
<p id="n246" class="stm run hide_run"><a href="#n246">246</a></p>
<p id="n247" class="stm run hide_run"><a href="#n247">247</a></p>
<p id="n248" class="stm run hide_run"><a href="#n248">248</a></p>
<p id="n249" class="pln"><a href="#n249">249</a></p>
<p id="n250" class="stm run hide_run"><a href="#n250">250</a></p>
<p id="n251" class="pln"><a href="#n251">251</a></p>
<p id="n252" class="pln"><a href="#n252">252</a></p>
<p id="n253" class="pln"><a href="#n253">253</a></p>
<p id="n254" class="pln"><a href="#n254">254</a></p>
<p id="n255" class="pln"><a href="#n255">255</a></p>
<p id="n256" class="pln"><a href="#n256">256</a></p>
<p id="n257" class="pln"><a href="#n257">257</a></p>
<p id="n258" class="stm run hide_run"><a href="#n258">258</a></p>
<p id="n259" class="stm run hide_run"><a href="#n259">259</a></p>
<p id="n260" class="stm run hide_run"><a href="#n260">260</a></p>
<p id="n261" class="stm run hide_run"><a href="#n261">261</a></p>
<p id="n262" class="stm run hide_run"><a href="#n262">262</a></p>
<p id="n263" class="stm run hide_run"><a href="#n263">263</a></p>
<p id="n264" class="stm run hide_run"><a href="#n264">264</a></p>
<p id="n265" class="stm run hide_run"><a href="#n265">265</a></p>
<p id="n266" class="stm run hide_run"><a href="#n266">266</a></p>
<p id="n267" class="stm par run hide_run"><a href="#n267">267</a></p>
<p id="n268" class="stm mis"><a href="#n268">268</a></p>
<p id="n269" class="pln"><a href="#n269">269</a></p>
<p id="n270" class="stm run hide_run"><a href="#n270">270</a></p>
<p id="n271" class="pln"><a href="#n271">271</a></p>
<p id="n272" class="pln"><a href="#n272">272</a></p>
<p id="n273" class="pln"><a href="#n273">273</a></p>
<p id="n274" class="pln"><a href="#n274">274</a></p>
<p id="n275" class="pln"><a href="#n275">275</a></p>
<p id="n276" class="stm par run hide_run"><a href="#n276">276</a></p>
<p id="n277" class="stm par run hide_run"><a href="#n277">277</a></p>
<p id="n278" class="stm mis"><a href="#n278">278</a></p>
<p id="n279" class="stm mis"><a href="#n279">279</a></p>
<p id="n280" class="pln"><a href="#n280">280</a></p>
<p id="n281" class="stm run hide_run"><a href="#n281">281</a></p>
<p id="n282" class="stm run hide_run"><a href="#n282">282</a></p>
<p id="n283" class="stm run hide_run"><a href="#n283">283</a></p>
<p id="n284" class="stm run hide_run"><a href="#n284">284</a></p>
<p id="n285" class="stm run hide_run"><a href="#n285">285</a></p>
<p id="n286" class="stm run hide_run"><a href="#n286">286</a></p>
<p id="n287" class="stm run hide_run"><a href="#n287">287</a></p>
<p id="n288" class="stm run hide_run"><a href="#n288">288</a></p>
<p id="n289" class="stm run hide_run"><a href="#n289">289</a></p>
<p id="n290" class="pln"><a href="#n290">290</a></p>
<p id="n291" class="pln"><a href="#n291">291</a></p>
<p id="n292" class="pln"><a href="#n292">292</a></p>
<p id="n293" class="stm run hide_run"><a href="#n293">293</a></p>
<p id="n294" class="pln"><a href="#n294">294</a></p>
<p id="n295" class="stm run hide_run"><a href="#n295">295</a></p>
<p id="n296" class="pln"><a href="#n296">296</a></p>
<p id="n297" class="stm run hide_run"><a href="#n297">297</a></p>
<p id="n298" class="stm run hide_run"><a href="#n298">298</a></p>
<p id="n299" class="stm run hide_run"><a href="#n299">299</a></p>
<p id="n300" class="stm run hide_run"><a href="#n300">300</a></p>
<p id="n301" class="pln"><a href="#n301">301</a></p>
<p id="n302" class="pln"><a href="#n302">302</a></p>
<p id="n303" class="pln"><a href="#n303">303</a></p>
<p id="n304" class="pln"><a href="#n304">304</a></p>
<p id="n305" class="pln"><a href="#n305">305</a></p>
<p id="n306" class="stm run hide_run"><a href="#n306">306</a></p>
<p id="n307" class="stm run hide_run"><a href="#n307">307</a></p>
<p id="n308" class="stm run hide_run"><a href="#n308">308</a></p>
<p id="n309" class="stm run hide_run"><a href="#n309">309</a></p>
<p id="n310" class="stm run hide_run"><a href="#n310">310</a></p>
<p id="n311" class="pln"><a href="#n311">311</a></p>
<p id="n312" class="stm run hide_run"><a href="#n312">312</a></p>
<p id="n313" class="stm run hide_run"><a href="#n313">313</a></p>
<p id="n314" class="stm par run hide_run"><a href="#n314">314</a></p>
<p id="n315" class="stm mis"><a href="#n315">315</a></p>
<p id="n316" class="stm par run hide_run"><a href="#n316">316</a></p>
<p id="n317" class="stm run hide_run"><a href="#n317">317</a></p>
<p id="n318" class="stm run hide_run"><a href="#n318">318</a></p>
<p id="n319" class="pln"><a href="#n319">319</a></p>
<p id="n320" class="pln"><a href="#n320">320</a></p>
<p id="n321" class="stm run hide_run"><a href="#n321">321</a></p>
<p id="n322" class="stm run hide_run"><a href="#n322">322</a></p>
<p id="n323" class="stm run hide_run"><a href="#n323">323</a></p>
<p id="n324" class="pln"><a href="#n324">324</a></p>
<p id="n325" class="stm run hide_run"><a href="#n325">325</a></p>
<p id="n326" class="stm run hide_run"><a href="#n326">326</a></p>
<p id="n327" class="stm run hide_run"><a href="#n327">327</a></p>
<p id="n328" class="stm run hide_run"><a href="#n328">328</a></p>
<p id="n329" class="pln"><a href="#n329">329</a></p>
<p id="n330" class="pln"><a href="#n330">330</a></p>
<p id="n331" class="pln"><a href="#n331">331</a></p>
<p id="n332" class="pln"><a href="#n332">332</a></p>
<p id="n333" class="pln"><a href="#n333">333</a></p>
<p id="n334" class="pln"><a href="#n334">334</a></p>
<p id="n335" class="pln"><a href="#n335">335</a></p>
<p id="n336" class="stm run hide_run"><a href="#n336">336</a></p>
<p id="n337" class="stm run hide_run"><a href="#n337">337</a></p>
<p id="n338" class="stm run hide_run"><a href="#n338">338</a></p>
<p id="n339" class="stm run hide_run"><a href="#n339">339</a></p>
<p id="n340" class="pln"><a href="#n340">340</a></p>
<p id="n341" class="stm run hide_run"><a href="#n341">341</a></p>
<p id="n342" class="stm run hide_run"><a href="#n342">342</a></p>
<p id="n343" class="stm run hide_run"><a href="#n343">343</a></p>
<p id="n344" class="stm run hide_run"><a href="#n344">344</a></p>
<p id="n345" class="pln"><a href="#n345">345</a></p>
<p id="n346" class="pln"><a href="#n346">346</a></p>
<p id="n347" class="stm run hide_run"><a href="#n347">347</a></p>
<p id="n348" class="stm run hide_run"><a href="#n348">348</a></p>
<p id="n349" class="stm run hide_run"><a href="#n349">349</a></p>
<p id="n350" class="pln"><a href="#n350">350</a></p>
<p id="n351" class="stm run hide_run"><a href="#n351">351</a></p>
<p id="n352" class="stm run hide_run"><a href="#n352">352</a></p>
<p id="n353" class="pln"><a href="#n353">353</a></p>
<p id="n354" class="stm run hide_run"><a href="#n354">354</a></p>
<p id="n355" class="stm run hide_run"><a href="#n355">355</a></p>
<p id="n356" class="pln"><a href="#n356">356</a></p>
<p id="n357" class="pln"><a href="#n357">357</a></p>
<p id="n358" class="stm run hide_run"><a href="#n358">358</a></p>
<p id="n359" class="stm run hide_run"><a href="#n359">359</a></p>
<p id="n360" class="pln"><a href="#n360">360</a></p>
<p id="n361" class="stm run hide_run"><a href="#n361">361</a></p>
<p id="n362" class="stm run hide_run"><a href="#n362">362</a></p>
<p id="n363" class="pln"><a href="#n363">363</a></p>
<p id="n364" class="pln"><a href="#n364">364</a></p>
<p id="n365" class="pln"><a href="#n365">365</a></p>
<p id="n366" class="pln"><a href="#n366">366</a></p>
<p id="n367" class="pln"><a href="#n367">367</a></p>
<p id="n368" class="pln"><a href="#n368">368</a></p>
<p id="n369" class="pln"><a href="#n369">369</a></p>
<p id="n370" class="stm run hide_run"><a href="#n370">370</a></p>
<p id="n371" class="stm run hide_run"><a href="#n371">371</a></p>
<p id="n372" class="stm run hide_run"><a href="#n372">372</a></p>
<p id="n373" class="stm run hide_run"><a href="#n373">373</a></p>
<p id="n374" class="pln"><a href="#n374">374</a></p>
<p id="n375" class="stm run hide_run"><a href="#n375">375</a></p>
<p id="n376" class="stm run hide_run"><a href="#n376">376</a></p>
<p id="n377" class="stm run hide_run"><a href="#n377">377</a></p>
<p id="n378" class="stm run hide_run"><a href="#n378">378</a></p>
<p id="n379" class="pln"><a href="#n379">379</a></p>
<p id="n380" class="pln"><a href="#n380">380</a></p>
<p id="n381" class="stm run hide_run"><a href="#n381">381</a></p>
<p id="n382" class="stm run hide_run"><a href="#n382">382</a></p>
<p id="n383" class="stm run hide_run"><a href="#n383">383</a></p>
<p id="n384" class="pln"><a href="#n384">384</a></p>
<p id="n385" class="stm run hide_run"><a href="#n385">385</a></p>
<p id="n386" class="stm run hide_run"><a href="#n386">386</a></p>
<p id="n387" class="pln"><a href="#n387">387</a></p>
<p id="n388" class="stm run hide_run"><a href="#n388">388</a></p>
<p id="n389" class="stm run hide_run"><a href="#n389">389</a></p>
<p id="n390" class="pln"><a href="#n390">390</a></p>
<p id="n391" class="pln"><a href="#n391">391</a></p>
<p id="n392" class="pln"><a href="#n392">392</a></p>
<p id="n393" class="pln"><a href="#n393">393</a></p>
<p id="n394" class="pln"><a href="#n394">394</a></p>
<p id="n395" class="pln"><a href="#n395">395</a></p>
<p id="n396" class="pln"><a href="#n396">396</a></p>
<p id="n397" class="stm run hide_run"><a href="#n397">397</a></p>
<p id="n398" class="stm run hide_run"><a href="#n398">398</a></p>
<p id="n399" class="stm run hide_run"><a href="#n399">399</a></p>
<p id="n400" class="stm run hide_run"><a href="#n400">400</a></p>
<p id="n401" class="stm run hide_run"><a href="#n401">401</a></p>
<p id="n402" class="stm run hide_run"><a href="#n402">402</a></p>
<p id="n403" class="stm run hide_run"><a href="#n403">403</a></p>
<p id="n404" class="stm run hide_run"><a href="#n404">404</a></p>
<p id="n405" class="pln"><a href="#n405">405</a></p>
<p id="n406" class="stm run hide_run"><a href="#n406">406</a></p>
<p id="n407" class="pln"><a href="#n407">407</a></p>
<p id="n408" class="stm run hide_run"><a href="#n408">408</a></p>
<p id="n409" class="pln"><a href="#n409">409</a></p>
<p id="n410" class="stm run hide_run"><a href="#n410">410</a></p>
<p id="n411" class="stm run hide_run"><a href="#n411">411</a></p>
<p id="n412" class="stm run hide_run"><a href="#n412">412</a></p>
<p id="n413" class="stm run hide_run"><a href="#n413">413</a></p>
<p id="n414" class="stm run hide_run"><a href="#n414">414</a></p>
<p id="n415" class="stm run hide_run"><a href="#n415">415</a></p>
<p id="n416" class="stm run hide_run"><a href="#n416">416</a></p>
<p id="n417" class="pln"><a href="#n417">417</a></p>
<p id="n418" class="stm run hide_run"><a href="#n418">418</a></p>
<p id="n419" class="pln"><a href="#n419">419</a></p>
<p id="n420" class="stm run hide_run"><a href="#n420">420</a></p>
<p id="n421" class="pln"><a href="#n421">421</a></p>
<p id="n422" class="pln"><a href="#n422">422</a></p>
<p id="n423" class="pln"><a href="#n423">423</a></p>
<p id="n424" class="stm run hide_run"><a href="#n424">424</a></p>
<p id="n425" class="stm run hide_run"><a href="#n425">425</a></p>
<p id="n426" class="stm run hide_run"><a href="#n426">426</a></p>
<p id="n427" class="stm run hide_run"><a href="#n427">427</a></p>
<p id="n428" class="stm run hide_run"><a href="#n428">428</a></p>
<p id="n429" class="stm run hide_run"><a href="#n429">429</a></p>
<p id="n430" class="stm run hide_run"><a href="#n430">430</a></p>
<p id="n431" class="stm run hide_run"><a href="#n431">431</a></p>
<p id="n432" class="pln"><a href="#n432">432</a></p>
<p id="n433" class="stm run hide_run"><a href="#n433">433</a></p>
<p id="n434" class="pln"><a href="#n434">434</a></p>
<p id="n435" class="pln"><a href="#n435">435</a></p>
<p id="n436" class="stm run hide_run"><a href="#n436">436</a></p>
<p id="n437" class="stm run hide_run"><a href="#n437">437</a></p>
<p id="n438" class="pln"><a href="#n438">438</a></p>
<p id="n439" class="stm run hide_run"><a href="#n439">439</a></p>
<p id="n440" class="stm run hide_run"><a href="#n440">440</a></p>
<p id="n441" class="stm run hide_run"><a href="#n441">441</a></p>
<p id="n442" class="pln"><a href="#n442">442</a></p>
<p id="n443" class="pln"><a href="#n443">443</a></p>
<p id="n444" class="stm run hide_run"><a href="#n444">444</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">import</span> <span class="nam">wsme</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">wsme</span> <span class="key">import</span> <span class="nam">types</span> <span class="key">as</span> <span class="nam">wtypes</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">model</span><span class="op">.</span><span class="nam">Model</span> <span class="key">import</span> <span class="nam">Model</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">error_base</span> <span class="key">import</span> <span class="nam">ErrorStatus</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">conf</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span><span class="op">.</span><span class="nam">cross_api_utils</span> <span class="key">import</span> <span class="nam">set_utils_conf</span><span class="op">,</span> <span class="nam">get_regions_of_group</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">class</span> <span class="nam">Enabled</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"> <span class="str">"""enable model the customer</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"> <span class="nam">enabled</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">bool</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">enabled</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"> <span class="str">"""Create a new enables class.</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="str"> :param enabled: customer status</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="nam">enabled</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm run hide_run"><span class="key">class</span> <span class="nam">Compute</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="str">"""compute model the customer</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="nam">instances</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="nam">injected_files</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"injected-files"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"> <span class="nam">key_pairs</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"key-pairs"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"> <span class="nam">ram</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="nam">vcpus</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="stm run hide_run"> <span class="nam">metadata_items</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"metadata-items"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"> <span class="nam">injected_file_content_bytes</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"injected-file-content-bytes"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"> <span class="nam">floating_ips</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"floating-ips"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="nam">fixed_ips</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"fixed-ips"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm run hide_run"> <span class="nam">injected_file_path_bytes</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"injected-file-path-bytes"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="nam">server_groups</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"server-groups"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"> <span class="nam">server_group_members</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"server-group-members"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">instances</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">injected_files</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">key_pairs</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">ram</span><span class="op">=</span><span class="str">''</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="pln"> <span class="nam">vcpus</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">metadata_items</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">injected_file_content_bytes</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="nam">floating_ips</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">fixed_ips</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">injected_file_path_bytes</span><span class="op">=</span><span class="str">''</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"> <span class="nam">server_groups</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">server_group_members</span><span class="op">=</span><span class="str">''</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="str"> Create a new compute instance.</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"><span class="str"> :param instances:</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str"> :param injected_files:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="str"> :param key_pairs:</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str"> :param ram:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="str"> :param vcpus:</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str"> :param metadata_items:</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="str"> :param injected_file_content_bytes:</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="str"> :param floating_ips:</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="str"> :param fixed_ips:</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="str"> :param injected_file_path_bytes:</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="str"> :param server_groups:</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="str"> :param server_group_members:</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">instances</span> <span class="op">=</span> <span class="nam">instances</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">injected_files</span> <span class="op">=</span> <span class="nam">injected_files</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">key_pairs</span> <span class="op">=</span> <span class="nam">key_pairs</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">ram</span> <span class="op">=</span> <span class="nam">ram</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="stm run hide_run"> <span class="key">if</span> <span class="nam">vcpus</span> <span class="key">is</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">vcpus</span> <span class="op">=</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">quotas_default_values</span><span class="op">.</span><span class="nam">compute</span><span class="op">.</span><span class="nam">vcpus</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">vcpus</span> <span class="op">=</span> <span class="nam">vcpus</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run"> <span class="key">if</span> <span class="nam">metadata_items</span> <span class="key">is</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">metadata_items</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t69" class="pln"> <span class="nam">conf</span><span class="op">.</span><span class="nam">quotas_default_values</span><span class="op">.</span><span class="nam">compute</span><span class="op">.</span><span class="nam">metadata_items</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">metadata_items</span> <span class="op">=</span> <span class="nam">metadata_items</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run"> <span class="key">if</span> <span class="nam">injected_file_content_bytes</span> <span class="key">is</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">injected_file_content_bytes</span> <span class="op">=</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="nam">conf</span><span class="op">.</span><span class="nam">quotas_default_values</span><span class="op">.</span><span class="nam">compute</span><span class="op">.</span><span class="nam">injected_file_content_bytes</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">injected_file_content_bytes</span> <span class="op">=</span> <span class="nam">injected_file_content_bytes</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">floating_ips</span> <span class="op">=</span> <span class="nam">floating_ips</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">fixed_ips</span> <span class="op">=</span> <span class="nam">fixed_ips</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">injected_file_path_bytes</span> <span class="op">=</span> <span class="nam">injected_file_path_bytes</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">server_groups</span> <span class="op">=</span> <span class="nam">server_groups</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">server_group_members</span> <span class="op">=</span> <span class="nam">server_group_members</span><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm run hide_run"><span class="key">class</span> <span class="nam">Storage</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"> <span class="str">"""storage info model for customer</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="stm run hide_run"> <span class="nam">gigabytes</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="stm run hide_run"> <span class="nam">snapshots</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm run hide_run"> <span class="nam">volumes</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">gigabytes</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">snapshots</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">volumes</span><span class="op">=</span><span class="str">''</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="str"> create a new Storage instance.</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="pln"><span class="str"> :param gigabytes:</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="str"> :param snapshots:</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="pln"><span class="str"> :param volumes:</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">gigabytes</span> <span class="op">=</span> <span class="nam">gigabytes</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">snapshots</span> <span class="op">=</span> <span class="nam">snapshots</span><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">volumes</span> <span class="op">=</span> <span class="nam">volumes</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t104" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t105" class="stm run hide_run"><span class="key">class</span> <span class="nam">Network</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="pln"> <span class="str">"""network model the customer</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t108" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm run hide_run"> <span class="nam">floating_ips</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"floating-ips"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm run hide_run"> <span class="nam">networks</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="stm run hide_run"> <span class="nam">ports</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm run hide_run"> <span class="nam">routers</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="stm run hide_run"> <span class="nam">subnets</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="stm run hide_run"> <span class="nam">security_groups</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"security-groups"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm run hide_run"> <span class="nam">security_group_rules</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"security-group-rules"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm run hide_run"> <span class="nam">health_monitor</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"health-monitor"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm run hide_run"> <span class="nam">member</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm run hide_run"> <span class="nam">nat_instance</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"nat-instance"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="stm run hide_run"> <span class="nam">pool</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm run hide_run"> <span class="nam">route_table</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">"route-table"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="stm run hide_run"> <span class="nam">vip</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">floating_ips</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">networks</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">ports</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">routers</span><span class="op">=</span><span class="str">''</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln"> <span class="nam">subnets</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">security_groups</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">security_group_rules</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"> <span class="nam">health_monitor</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">member</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">nat_instance</span><span class="op">=</span><span class="str">''</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"> <span class="nam">pool</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">route_table</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">vip</span><span class="op">=</span><span class="str">''</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"><span class="str"> Create a new Network instance.</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="pln"><span class="str"> :param floating_ips: num of floating_ips</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="pln"><span class="str"> :param networks: num of networks</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="pln"><span class="str"> :param ports: num of ports</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="pln"><span class="str"> :param routers: num of routers</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="str"> :param subnets: num of subnets</span><span class="strut">&nbsp;</span></p>
<p id="t135" class="pln"><span class="str"> :param security_groups: security groups</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln"><span class="str"> :param security_group_rules: security group rules</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"><span class="str"> :param health_monitor:</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"><span class="str"> :param member:</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="pln"><span class="str"> :param nat_instance:</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="pln"><span class="str"> :param pool:</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="pln"><span class="str"> :param route_table:</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="pln"><span class="str"> :param vip:</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">floating_ips</span> <span class="op">=</span> <span class="nam">floating_ips</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">networks</span> <span class="op">=</span> <span class="nam">networks</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">ports</span> <span class="op">=</span> <span class="nam">ports</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">routers</span> <span class="op">=</span> <span class="nam">routers</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">subnets</span> <span class="op">=</span> <span class="nam">subnets</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="stm run hide_run"> <span class="key">if</span> <span class="nam">security_groups</span> <span class="key">is</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">security_groups</span> <span class="op">=</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">quotas_default_values</span><span class="op">.</span><span class="nam">network</span><span class="op">.</span><span class="nam">security_groups</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">security_groups</span> <span class="op">=</span> <span class="nam">security_groups</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run"> <span class="key">if</span> <span class="nam">security_group_rules</span> <span class="key">is</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">security_group_rules</span> <span class="op">=</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">quotas_default_values</span><span class="op">.</span><span class="nam">network</span><span class="op">.</span><span class="nam">security_group_rules</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">security_group_rules</span> <span class="op">=</span> <span class="nam">security_group_rules</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">health_monitor</span> <span class="op">=</span> <span class="nam">health_monitor</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">member</span> <span class="op">=</span> <span class="nam">member</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">nat_instance</span> <span class="op">=</span> <span class="nam">nat_instance</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">pool</span> <span class="op">=</span> <span class="nam">pool</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">route_table</span> <span class="op">=</span> <span class="nam">route_table</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">vip</span> <span class="op">=</span> <span class="nam">vip</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t166" class="stm run hide_run"><span class="key">class</span> <span class="nam">Quota</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"> <span class="str">"""network model the customer</span><span class="strut">&nbsp;</span></p>
<p id="t168" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t170" class="stm run hide_run"> <span class="nam">compute</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">Compute</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="stm run hide_run"> <span class="nam">storage</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">Storage</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="stm run hide_run"> <span class="nam">network</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">Network</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t174" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">compute</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">storage</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">network</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"> <span class="str">"""Create a new compute.</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t177" class="pln"><span class="str"> :param compute: compute quota</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="pln"><span class="str"> :param storage: storage quota</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="pln"><span class="str"> :param network: network quota</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">compute</span> <span class="op">=</span> <span class="nam">compute</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">storage</span> <span class="op">=</span> <span class="nam">storage</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">network</span> <span class="op">=</span> <span class="nam">network</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t185" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t186" class="stm run hide_run"><span class="key">class</span> <span class="nam">User</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln"> <span class="str">"""user model the customer</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm run hide_run"> <span class="nam">id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm run hide_run"> <span class="nam">role</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">str</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t193" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">id</span><span class="op">=</span><span class="str">""</span><span class="op">,</span> <span class="nam">role</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln"> <span class="str">"""Create a new compute.</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="str"> :param id: user id</span><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="str"> :param role: roles this use belong to</span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">id</span> <span class="op">=</span> <span class="nam">id</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">role</span> <span class="op">=</span> <span class="nam">role</span><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t202" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t203" class="stm run hide_run"><span class="key">class</span> <span class="nam">Region</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"> <span class="str">"""network model the customer</span><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t206" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="stm run hide_run"> <span class="nam">name</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="stm run hide_run"> <span class="nam">type</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">default</span><span class="op">=</span><span class="str">"single"</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t209" class="stm run hide_run"> <span class="nam">quotas</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">Quota</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t210" class="stm run hide_run"> <span class="nam">users</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">User</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t211" class="stm run hide_run"> <span class="nam">status</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="stm run hide_run"> <span class="nam">error_message</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t214" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">""</span><span class="op">,</span> <span class="nam">type</span><span class="op">=</span><span class="str">"single"</span><span class="op">,</span> <span class="nam">quotas</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">,</span> <span class="nam">users</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="str">""</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t215" class="pln"> <span class="nam">error_message</span><span class="op">=</span><span class="str">""</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t216" class="pln"> <span class="str">"""Create a new compute.</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t218" class="pln"><span class="str"> :param name: region name</span><span class="strut">&nbsp;</span></p>
<p id="t219" class="pln"><span class="str"> :param type: region type</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="pln"><span class="str"> :param quotas: quotas ( array of Quota)</span><span class="strut">&nbsp;</span></p>
<p id="t221" class="pln"><span class="str"> :param users: array of users of specific region</span><span class="strut">&nbsp;</span></p>
<p id="t222" class="pln"><span class="str"> :param status: status of creation</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="pln"><span class="str"> :param error_message: error message if status is error</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t225" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t226" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t227" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">type</span> <span class="op">=</span> <span class="nam">type</span><span class="strut">&nbsp;</span></p>
<p id="t228" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">quotas</span> <span class="op">=</span> <span class="nam">quotas</span><span class="strut">&nbsp;</span></p>
<p id="t229" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">users</span> <span class="op">=</span> <span class="nam">users</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="nam">status</span><span class="strut">&nbsp;</span></p>
<p id="t231" class="stm par run hide_run"><span class="annotate short">231&#x202F;&#x219B;&#x202F;232</span><span class="annotate long">line 231 didn't jump to line 232, because the condition on line 231 was never true</span> <span class="key">if</span> <span class="nam">error_message</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t232" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">error_message</span> <span class="op">=</span> <span class="nam">error_message</span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t234" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t235" class="stm run hide_run"><span class="key">class</span> <span class="nam">Customer</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln"> <span class="str">"""customer entity with all it's related data</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t238" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="stm run hide_run"> <span class="nam">description</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="stm run hide_run"> <span class="nam">enabled</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">bool</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="stm run hide_run"> <span class="nam">name</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t242" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">DictType</span><span class="op">(</span><span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">)</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t243" class="stm run hide_run"> <span class="nam">regions</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">Region</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t244" class="stm run hide_run"> <span class="nam">users</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">User</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="stm run hide_run"> <span class="nam">defaultQuotas</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">Quota</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t246" class="stm run hide_run"> <span class="nam">status</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t247" class="stm run hide_run"> <span class="nam">custId</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t248" class="stm run hide_run"> <span class="nam">uuid</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t249" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t250" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">""</span><span class="op">,</span> <span class="nam">enabled</span><span class="op">=</span><span class="nam">False</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">""</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">=</span><span class="op">{</span><span class="op">}</span><span class="op">,</span> <span class="nam">regions</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">,</span> <span class="nam">users</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t251" class="pln"> <span class="nam">defaultQuotas</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="str">""</span><span class="op">,</span> <span class="nam">custId</span><span class="op">=</span><span class="str">""</span><span class="op">,</span> <span class="nam">uuid</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t252" class="pln"> <span class="str">"""Create a new Customer.</span><span class="strut">&nbsp;</span></p>
<p id="t253" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t254" class="pln"><span class="str"> :param description: Server name</span><span class="strut">&nbsp;</span></p>
<p id="t255" class="pln"><span class="str"> :param enabled: I don't know</span><span class="strut">&nbsp;</span></p>
<p id="t256" class="pln"><span class="str"> :param status: status of creation</span><span class="strut">&nbsp;</span></p>
<p id="t257" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t258" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">description</span> <span class="op">=</span> <span class="nam">description</span><span class="strut">&nbsp;</span></p>
<p id="t259" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="nam">enabled</span><span class="strut">&nbsp;</span></p>
<p id="t260" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t261" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">metadata</span><span class="strut">&nbsp;</span></p>
<p id="t262" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">regions</span> <span class="op">=</span> <span class="nam">regions</span><span class="strut">&nbsp;</span></p>
<p id="t263" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">users</span> <span class="op">=</span> <span class="nam">users</span><span class="strut">&nbsp;</span></p>
<p id="t264" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">defaultQuotas</span> <span class="op">=</span> <span class="nam">defaultQuotas</span><span class="strut">&nbsp;</span></p>
<p id="t265" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="nam">status</span><span class="strut">&nbsp;</span></p>
<p id="t266" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">custId</span> <span class="op">=</span> <span class="nam">custId</span><span class="strut">&nbsp;</span></p>
<p id="t267" class="stm par run hide_run"><span class="annotate short">267&#x202F;&#x219B;&#x202F;268</span><span class="annotate long">line 267 didn't jump to line 268, because the condition on line 267 was never true</span> <span class="key">if</span> <span class="nam">uuid</span> <span class="key">is</span> <span class="key">not</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t268" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">uuid</span> <span class="op">=</span> <span class="nam">uuid</span><span class="strut">&nbsp;</span></p>
<p id="t269" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t270" class="stm run hide_run"> <span class="key">def</span> <span class="nam">validate_model</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">context</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t271" class="pln"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t272" class="pln"><span class="str"> this function check if the customer model meet the demands</span><span class="strut">&nbsp;</span></p>
<p id="t273" class="pln"><span class="str"> :param context: i.e. 'create 'update'</span><span class="strut">&nbsp;</span></p>
<p id="t274" class="pln"><span class="str"> :return: none</span><span class="strut">&nbsp;</span></p>
<p id="t275" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t276" class="stm par run hide_run"><span class="annotate short">276&#x202F;&#x219B;&#x202F;exit</span><span class="annotate long">line 276 didn't return from function 'validate_model', because the condition on line 276 was never false</span> <span class="key">if</span> <span class="nam">context</span> <span class="op">==</span> <span class="str">"update"</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t277" class="stm par run hide_run"><span class="annotate short">277&#x202F;&#x219B;&#x202F;278</span><span class="annotate long">line 277 didn't jump to line 278, because the loop on line 277 never started</span> <span class="key">for</span> <span class="nam">region</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">regions</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t278" class="stm mis"> <span class="key">if</span> <span class="nam">region</span><span class="op">.</span><span class="nam">type</span> <span class="op">==</span> <span class="str">"group"</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t279" class="stm mis"> <span class="key">raise</span> <span class="nam">ErrorStatus</span><span class="op">(</span><span class="num">400</span><span class="op">,</span> <span class="str">"region type is invalid for update, \'group\' can be only in create"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t280" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t281" class="stm run hide_run"> <span class="key">def</span> <span class="nam">handle_region_group</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t282" class="stm run hide_run"> <span class="nam">regions_to_add</span> <span class="op">=</span> <span class="op">[</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t283" class="stm run hide_run"> <span class="key">for</span> <span class="nam">region</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">regions</span><span class="op">[</span><span class="op">:</span><span class="op">]</span><span class="op">:</span> <span class="com"># get copy of it to be able to delete from the origin</span><span class="strut">&nbsp;</span></p>
<p id="t284" class="stm run hide_run"> <span class="key">if</span> <span class="nam">region</span><span class="op">.</span><span class="nam">type</span> <span class="op">==</span> <span class="str">"group"</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t285" class="stm run hide_run"> <span class="nam">group_regions</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">get_regions_for_group</span><span class="op">(</span><span class="nam">region</span><span class="op">.</span><span class="nam">name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t286" class="stm run hide_run"> <span class="key">if</span> <span class="key">not</span> <span class="nam">group_regions</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t287" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ErrorStatus</span><span class="op">(</span><span class="num">404</span><span class="op">,</span> <span class="str">'Group {} Not found'</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">region</span><span class="op">.</span><span class="nam">name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t288" class="stm run hide_run"> <span class="key">for</span> <span class="nam">group_region</span> <span class="key">in</span> <span class="nam">group_regions</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t289" class="stm run hide_run"> <span class="nam">regions_to_add</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">Region</span><span class="op">(</span><span class="nam">name</span><span class="op">=</span><span class="nam">group_region</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t290" class="pln"> <span class="nam">type</span><span class="op">=</span><span class="str">'single'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t291" class="pln"> <span class="nam">quotas</span><span class="op">=</span><span class="nam">region</span><span class="op">.</span><span class="nam">quotas</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t292" class="pln"> <span class="nam">users</span><span class="op">=</span><span class="nam">region</span><span class="op">.</span><span class="nam">users</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t293" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">regions</span><span class="op">.</span><span class="nam">remove</span><span class="op">(</span><span class="nam">region</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t294" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t295" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">regions</span><span class="op">.</span><span class="nam">extend</span><span class="op">(</span><span class="nam">set</span><span class="op">(</span><span class="nam">regions_to_add</span><span class="op">)</span><span class="op">)</span> <span class="com"># remove duplicates if exist</span><span class="strut">&nbsp;</span></p>
<p id="t296" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t297" class="stm run hide_run"> <span class="key">def</span> <span class="nam">get_regions_for_group</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">group_name</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t298" class="stm run hide_run"> <span class="nam">set_utils_conf</span><span class="op">(</span><span class="nam">conf</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t299" class="stm run hide_run"> <span class="nam">regions</span> <span class="op">=</span> <span class="nam">get_regions_of_group</span><span class="op">(</span><span class="nam">group_name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t300" class="stm run hide_run"> <span class="key">return</span> <span class="nam">regions</span><span class="strut">&nbsp;</span></p>
<p id="t301" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t302" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t303" class="pln"><span class="str">""" Customer Result Handler """</span><span class="strut">&nbsp;</span></p>
<p id="t304" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t305" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t306" class="stm run hide_run"><span class="key">class</span> <span class="nam">CustomerResult</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t307" class="stm run hide_run"> <span class="nam">id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t308" class="stm run hide_run"> <span class="nam">updated</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t309" class="stm run hide_run"> <span class="nam">created</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t310" class="stm run hide_run"> <span class="nam">links</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">{</span><span class="nam">str</span><span class="op">:</span> <span class="nam">str</span><span class="op">}</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t311" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t312" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">id</span><span class="op">,</span> <span class="nam">links</span><span class="op">=</span><span class="op">{</span><span class="op">}</span><span class="op">,</span> <span class="nam">updated</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">created</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t313" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">id</span> <span class="op">=</span> <span class="nam">id</span><span class="strut">&nbsp;</span></p>
<p id="t314" class="stm par run hide_run"><span class="annotate short">314&#x202F;&#x219B;&#x202F;315</span><span class="annotate long">line 314 didn't jump to line 315, because the condition on line 314 was never true</span> <span class="key">if</span> <span class="nam">updated</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t315" class="stm mis"> <span class="nam">self</span><span class="op">.</span><span class="nam">updated</span> <span class="op">=</span> <span class="nam">updated</span><span class="strut">&nbsp;</span></p>
<p id="t316" class="stm par run hide_run"><span class="annotate short">316&#x202F;&#x219B;&#x202F;318</span><span class="annotate long">line 316 didn't jump to line 318, because the condition on line 316 was never false</span> <span class="key">elif</span> <span class="nam">created</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t317" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">created</span> <span class="op">=</span> <span class="nam">created</span><span class="strut">&nbsp;</span></p>
<p id="t318" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">links</span> <span class="op">=</span> <span class="nam">links</span><span class="strut">&nbsp;</span></p>
<p id="t319" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t320" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t321" class="stm run hide_run"><span class="key">class</span> <span class="nam">CustomerResultWrapper</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t322" class="stm run hide_run"> <span class="nam">transaction_id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t323" class="stm run hide_run"> <span class="nam">customer</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">CustomerResult</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t324" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t325" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">id</span><span class="op">,</span> <span class="nam">links</span><span class="op">,</span> <span class="nam">updated</span><span class="op">,</span> <span class="nam">created</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t326" class="stm run hide_run"> <span class="nam">customer_result</span> <span class="op">=</span> <span class="nam">CustomerResult</span><span class="op">(</span><span class="nam">id</span><span class="op">,</span> <span class="nam">links</span><span class="op">,</span> <span class="nam">updated</span><span class="op">,</span> <span class="nam">created</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t327" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">transaction_id</span> <span class="op">=</span> <span class="nam">transaction_id</span><span class="strut">&nbsp;</span></p>
<p id="t328" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">customer</span> <span class="op">=</span> <span class="nam">customer_result</span><span class="strut">&nbsp;</span></p>
<p id="t329" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t330" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t331" class="pln"><span class="str">""" ****************************************************************** """</span><span class="strut">&nbsp;</span></p>
<p id="t332" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t333" class="pln"><span class="str">""" User Result Handler """</span><span class="strut">&nbsp;</span></p>
<p id="t334" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t335" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t336" class="stm run hide_run"><span class="key">class</span> <span class="nam">UserResult</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t337" class="stm run hide_run"> <span class="nam">id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t338" class="stm run hide_run"> <span class="nam">added</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t339" class="stm run hide_run"> <span class="nam">links</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">{</span><span class="nam">str</span><span class="op">:</span> <span class="nam">str</span><span class="op">}</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t340" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t341" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">id</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">added</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">links</span><span class="op">=</span><span class="op">{</span><span class="op">}</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t342" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">id</span> <span class="op">=</span> <span class="nam">id</span><span class="strut">&nbsp;</span></p>
<p id="t343" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">added</span> <span class="op">=</span> <span class="nam">added</span><span class="strut">&nbsp;</span></p>
<p id="t344" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">links</span> <span class="op">=</span> <span class="nam">links</span><span class="strut">&nbsp;</span></p>
<p id="t345" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t346" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t347" class="stm run hide_run"><span class="key">class</span> <span class="nam">UserResultWrapper</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t348" class="stm run hide_run"> <span class="nam">transaction_id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t349" class="stm run hide_run"> <span class="nam">users</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">UserResult</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t350" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t351" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">users</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t352" class="stm run hide_run"> <span class="nam">users_result</span> <span class="op">=</span> <span class="op">[</span><span class="nam">UserResult</span><span class="op">(</span><span class="nam">user</span><span class="op">[</span><span class="str">'id'</span><span class="op">]</span><span class="op">,</span> <span class="nam">user</span><span class="op">[</span><span class="str">'added'</span><span class="op">]</span><span class="op">,</span> <span class="nam">user</span><span class="op">[</span><span class="str">'links'</span><span class="op">]</span><span class="op">)</span> <span class="key">for</span> <span class="nam">user</span> <span class="key">in</span> <span class="nam">users</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t353" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t354" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">transaction_id</span> <span class="op">=</span> <span class="nam">transaction_id</span><span class="strut">&nbsp;</span></p>
<p id="t355" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">users</span> <span class="op">=</span> <span class="nam">users_result</span><span class="strut">&nbsp;</span></p>
<p id="t356" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t357" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t358" class="stm run hide_run"><span class="key">class</span> <span class="nam">MetadataWrapper</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t359" class="stm run hide_run"> <span class="nam">metadata</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">DictType</span><span class="op">(</span><span class="nam">str</span><span class="op">,</span> <span class="nam">str</span><span class="op">)</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t360" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t361" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">metadata</span><span class="op">=</span><span class="op">{</span><span class="op">}</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t362" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">metadata</span> <span class="op">=</span> <span class="nam">metadata</span><span class="strut">&nbsp;</span></p>
<p id="t363" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t364" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t365" class="pln"><span class="str">""" ****************************************************************** """</span><span class="strut">&nbsp;</span></p>
<p id="t366" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t367" class="pln"><span class="str">""" Region Result Handler """</span><span class="strut">&nbsp;</span></p>
<p id="t368" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t369" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t370" class="stm run hide_run"><span class="key">class</span> <span class="nam">RegionResult</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t371" class="stm run hide_run"> <span class="nam">id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t372" class="stm run hide_run"> <span class="nam">added</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t373" class="stm run hide_run"> <span class="nam">links</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">{</span><span class="nam">str</span><span class="op">:</span> <span class="nam">str</span><span class="op">}</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t374" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t375" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">id</span><span class="op">,</span> <span class="nam">added</span><span class="op">=</span><span class="nam">None</span><span class="op">,</span> <span class="nam">links</span><span class="op">=</span><span class="op">{</span><span class="op">}</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t376" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">id</span> <span class="op">=</span> <span class="nam">id</span><span class="strut">&nbsp;</span></p>
<p id="t377" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">added</span> <span class="op">=</span> <span class="nam">added</span><span class="strut">&nbsp;</span></p>
<p id="t378" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">links</span> <span class="op">=</span> <span class="nam">links</span><span class="strut">&nbsp;</span></p>
<p id="t379" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t380" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t381" class="stm run hide_run"><span class="key">class</span> <span class="nam">RegionResultWrapper</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t382" class="stm run hide_run"> <span class="nam">transaction_id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t383" class="stm run hide_run"> <span class="nam">regions</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">RegionResult</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t384" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t385" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">regions</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t386" class="stm run hide_run"> <span class="nam">regions_result</span> <span class="op">=</span> <span class="op">[</span><span class="nam">RegionResult</span><span class="op">(</span><span class="nam">region</span><span class="op">[</span><span class="str">'id'</span><span class="op">]</span><span class="op">,</span> <span class="nam">region</span><span class="op">[</span><span class="str">'added'</span><span class="op">]</span><span class="op">,</span> <span class="nam">region</span><span class="op">[</span><span class="str">'links'</span><span class="op">]</span><span class="op">)</span> <span class="key">for</span> <span class="nam">region</span> <span class="key">in</span> <span class="nam">regions</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t387" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t388" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">transaction_id</span> <span class="op">=</span> <span class="nam">transaction_id</span><span class="strut">&nbsp;</span></p>
<p id="t389" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">regions</span> <span class="op">=</span> <span class="nam">regions_result</span><span class="strut">&nbsp;</span></p>
<p id="t390" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t391" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t392" class="pln"><span class="str">""" ****************************************************************** """</span><span class="strut">&nbsp;</span></p>
<p id="t393" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t394" class="pln"><span class="str">""" CustomerSummary is a DataObject and contains all the fields defined in CustomerSummary structure. """</span><span class="strut">&nbsp;</span></p>
<p id="t395" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t396" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t397" class="stm run hide_run"><span class="key">class</span> <span class="nam">CustomerSummary</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t398" class="stm run hide_run"> <span class="nam">name</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t399" class="stm run hide_run"> <span class="nam">id</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t400" class="stm run hide_run"> <span class="nam">description</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wsme</span><span class="op">.</span><span class="nam">types</span><span class="op">.</span><span class="nam">text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t401" class="stm run hide_run"> <span class="nam">enabled</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">bool</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t402" class="stm run hide_run"> <span class="nam">num_regions</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">int</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t403" class="stm run hide_run"> <span class="nam">status</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="nam">wtypes</span><span class="op">.</span><span class="nam">text</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t404" class="stm run hide_run"> <span class="nam">regions</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">str</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t405" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t406" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">id</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">''</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t407" class="pln"> <span class="nam">enabled</span><span class="op">=</span><span class="nam">True</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="str">""</span><span class="op">,</span> <span class="nam">regions</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">,</span> <span class="nam">num_regions</span><span class="op">=</span><span class="num">0</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t408" class="stm run hide_run"> <span class="nam">Model</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t409" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t410" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t411" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">id</span> <span class="op">=</span> <span class="nam">id</span><span class="strut">&nbsp;</span></p>
<p id="t412" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">description</span> <span class="op">=</span> <span class="nam">description</span><span class="strut">&nbsp;</span></p>
<p id="t413" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="nam">enabled</span><span class="strut">&nbsp;</span></p>
<p id="t414" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">num_regions</span> <span class="op">=</span> <span class="nam">num_regions</span><span class="strut">&nbsp;</span></p>
<p id="t415" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">status</span> <span class="op">=</span> <span class="nam">status</span><span class="strut">&nbsp;</span></p>
<p id="t416" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">regions</span> <span class="op">=</span> <span class="nam">regions</span><span class="strut">&nbsp;</span></p>
<p id="t417" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t418" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t419" class="pln"> <span class="key">def</span> <span class="nam">from_db_model</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t420" class="stm run hide_run"> <span class="nam">regions</span> <span class="op">=</span> <span class="op">[</span><span class="nam">region</span><span class="op">.</span><span class="nam">region</span><span class="op">.</span><span class="nam">name</span> <span class="key">for</span> <span class="nam">region</span> <span class="key">in</span><span class="strut">&nbsp;</span></p>
<p id="t421" class="pln"> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_customer_regions</span> <span class="key">if</span><span class="strut">&nbsp;</span></p>
<p id="t422" class="pln"> <span class="nam">region</span><span class="op">.</span><span class="nam">region_id</span> <span class="op">!=</span> <span class="op">-</span><span class="num">1</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t423" class="pln"> <span class="com"># default region is -1 , check if -1 in customer list if yes it will return (true, flase) equal to (0, 1)</span><span class="strut">&nbsp;</span></p>
<p id="t424" class="stm run hide_run"> <span class="nam">num_regions</span> <span class="op">=</span> <span class="nam">len</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_customer_regions</span><span class="op">)</span> <span class="op">-</span> <span class="op">(</span><span class="op">-</span><span class="num">1</span> <span class="key">in</span> <span class="op">[</span><span class="nam">region</span><span class="op">.</span><span class="nam">region_id</span> <span class="key">for</span> <span class="nam">region</span> <span class="key">in</span> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">customer_customer_regions</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t425" class="stm run hide_run"> <span class="nam">customer</span> <span class="op">=</span> <span class="nam">CustomerSummary</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t426" class="stm run hide_run"> <span class="nam">customer</span><span class="op">.</span><span class="nam">id</span> <span class="op">=</span> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">uuid</span><span class="strut">&nbsp;</span></p>
<p id="t427" class="stm run hide_run"> <span class="nam">customer</span><span class="op">.</span><span class="nam">name</span> <span class="op">=</span> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">name</span><span class="strut">&nbsp;</span></p>
<p id="t428" class="stm run hide_run"> <span class="nam">customer</span><span class="op">.</span><span class="nam">description</span> <span class="op">=</span> <span class="nam">sql_customer</span><span class="op">.</span><span class="nam">description</span><span class="strut">&nbsp;</span></p>
<p id="t429" class="stm run hide_run"> <span class="nam">customer</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="nam">bool</span><span class="op">(</span><span class="nam">sql_customer</span><span class="op">.</span><span class="nam">enabled</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t430" class="stm run hide_run"> <span class="nam">customer</span><span class="op">.</span><span class="nam">num_regions</span> <span class="op">=</span> <span class="nam">num_regions</span><span class="strut">&nbsp;</span></p>
<p id="t431" class="stm run hide_run"> <span class="nam">customer</span><span class="op">.</span><span class="nam">regions</span> <span class="op">=</span> <span class="nam">regions</span><span class="strut">&nbsp;</span></p>
<p id="t432" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t433" class="stm run hide_run"> <span class="key">return</span> <span class="nam">customer</span><span class="strut">&nbsp;</span></p>
<p id="t434" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t435" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t436" class="stm run hide_run"><span class="key">class</span> <span class="nam">CustomerSummaryResponse</span><span class="op">(</span><span class="nam">Model</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t437" class="stm run hide_run"> <span class="nam">customers</span> <span class="op">=</span> <span class="nam">wsme</span><span class="op">.</span><span class="nam">wsattr</span><span class="op">(</span><span class="op">[</span><span class="nam">CustomerSummary</span><span class="op">]</span><span class="op">,</span> <span class="nam">mandatory</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t438" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t439" class="stm run hide_run"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t440" class="stm run hide_run"> <span class="nam">Model</span><span class="op">.</span><span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t441" class="stm run hide_run"> <span class="nam">self</span><span class="op">.</span><span class="nam">customers</span> <span class="op">=</span> <span class="op">[</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t442" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t443" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t444" class="stm run hide_run"><span class="str">""" ****************************************************************** """</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,121 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/model/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/model/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
3 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">3 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="pln"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="pln"><a href="#n6">6</a></p>
<p id="n7" class="pln"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="pln"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">conf</span> <span class="com"># noqa</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t3" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">def</span> <span class="nam">init_model</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"> <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="pln"><span class="str"> This is a stub method which is called at application startup time.</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="str"> If you need to bind to a parsed database configuration, set up tables or</span><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="str"> ORM classes, or perform any database initialization, this is the</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="pln"><span class="str"> recommended place to do it.</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="str"> For more information working with databases, and some common recipes,</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="str"> see http://pecan.readthedocs.org/en/latest/databases.html</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="str"> """</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"> <span class="key">pass</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,303 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/rds_proxy.py: 76%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/rds_proxy.py</b> :
<span class="pc_cov">76%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
47 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">35 run</span>
<span class="mis shortkey_m button_toggle_mis">12 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">1 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="pln"><a href="#n11">11</a></p>
<p id="n12" class="pln"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="pln"><a href="#n16">16</a></p>
<p id="n17" class="stm mis"><a href="#n17">17</a></p>
<p id="n18" class="stm mis"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm mis"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="stm mis"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm mis"><a href="#n25">25</a></p>
<p id="n26" class="stm mis"><a href="#n26">26</a></p>
<p id="n27" class="stm mis"><a href="#n27">27</a></p>
<p id="n28" class="stm mis"><a href="#n28">28</a></p>
<p id="n29" class="stm mis"><a href="#n29">29</a></p>
<p id="n30" class="stm mis"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="stm mis"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="stm run hide_run"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="pln"><a href="#n40">40</a></p>
<p id="n41" class="stm run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="pln"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="pln"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm run hide_run"><a href="#n70">70</a></p>
<p id="n71" class="stm run hide_run"><a href="#n71">71</a></p>
<p id="n72" class="pln"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="pln"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="pln"><a href="#n79">79</a></p>
<p id="n80" class="stm run hide_run"><a href="#n80">80</a></p>
<p id="n81" class="stm run hide_run"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="stm run hide_run"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="stm par run hide_run"><a href="#n85">85</a></p>
<p id="n86" class="stm run hide_run"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="stm mis"><a href="#n91">91</a></p>
<p id="n92" class="pln"><a href="#n92">92</a></p>
<p id="n93" class="pln"><a href="#n93">93</a></p>
<p id="n94" class="pln"><a href="#n94">94</a></p>
<p id="n95" class="stm run hide_run"><a href="#n95">95</a></p>
<p id="n96" class="stm run hide_run"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm run hide_run"><a href="#n98">98</a></p>
<p id="n99" class="stm run hide_run"><a href="#n99">99</a></p>
<p id="n100" class="stm run hide_run"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="stm run hide_run"><a href="#n102">102</a></p>
<p id="n103" class="stm run hide_run"><a href="#n103">103</a></p>
<p id="n104" class="stm run hide_run"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="stm run hide_run"><a href="#n106">106</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">import</span> <span class="nam">pprint</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">import</span> <span class="nam">requests</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">import</span> <span class="nam">json</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">conf</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">request</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logic</span><span class="op">.</span><span class="nam">error_base</span> <span class="key">import</span> <span class="nam">ErrorStatus</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">from</span> <span class="nam">cms_rest</span><span class="op">.</span><span class="nam">logger</span> <span class="key">import</span> <span class="nam">get_logger</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="nam">LOG</span> <span class="op">=</span> <span class="nam">get_logger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="nam">headers</span> <span class="op">=</span> <span class="op">{</span><span class="str">'content-type'</span><span class="op">:</span> <span class="str">'application/json'</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t12" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"><span class="key">class</span> <span class="nam">RdsProxy</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="pln"> <span class="key">def</span> <span class="nam">get_status</span><span class="op">(</span><span class="nam">resource_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm mis"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"> <span class="str">"Sending to RDS Server to get status: "</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">base</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">status</span> <span class="op">+</span> <span class="nam">resource_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm mis"> <span class="nam">resp</span> <span class="op">=</span> <span class="nam">requests</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln"> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">base</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">status</span> <span class="op">+</span> <span class="nam">resource_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"> <span class="nam">verify</span><span class="op">=</span><span class="nam">conf</span><span class="op">.</span><span class="nam">verify</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"> <span class="str">"Sending to RDS Server to get status: "</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">base</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">status</span> <span class="op">+</span> <span class="nam">resource_id</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm mis"> <span class="nam">pp</span> <span class="op">=</span> <span class="nam">pprint</span><span class="op">.</span><span class="nam">PrettyPrinter</span><span class="op">(</span><span class="nam">width</span><span class="op">=</span><span class="num">30</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm mis"> <span class="nam">pretty_text</span> <span class="op">=</span> <span class="nam">pp</span><span class="op">.</span><span class="nam">pformat</span><span class="op">(</span><span class="nam">resp</span><span class="op">.</span><span class="nam">json</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"Response from RDS Server:\n"</span> <span class="op">+</span> <span class="nam">pretty_text</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm mis"> <span class="key">return</span> <span class="nam">resp</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm mis"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">exp</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm mis"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">log_exception</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln"> <span class="str">"CustomerLogic - Failed to Get status for customer : "</span> <span class="op">+</span> <span class="nam">resource_id</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">exp</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm mis"> <span class="key">raise</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"> <span class="key">def</span> <span class="nam">send_customer</span><span class="op">(</span><span class="nam">customer</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">method</span><span class="op">)</span><span class="op">:</span> <span class="com"># method is "POST" or "PUT"</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="key">return</span> <span class="nam">RdsProxy</span><span class="op">.</span><span class="nam">send_customer_dict</span><span class="op">(</span><span class="nam">customer</span><span class="op">.</span><span class="nam">get_proxy_dict</span><span class="op">(</span><span class="op">)</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">method</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="op">@</span><span class="nam">staticmethod</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="pln"> <span class="key">def</span> <span class="nam">send_customer_dict</span><span class="op">(</span><span class="nam">customer_dict</span><span class="op">,</span> <span class="nam">transaction_id</span><span class="op">,</span> <span class="nam">method</span><span class="op">)</span><span class="op">:</span> <span class="com"># method is "POST" or "PUT"</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm run hide_run"> <span class="nam">data</span> <span class="op">=</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"> <span class="str">"service_template"</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="pln"> <span class="str">"resource"</span><span class="op">:</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"> <span class="str">"resource_type"</span><span class="op">:</span> <span class="str">"customer"</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="op">}</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"> <span class="str">"model"</span><span class="op">:</span> <span class="nam">str</span><span class="op">(</span><span class="nam">json</span><span class="op">.</span><span class="nam">dumps</span><span class="op">(</span><span class="nam">customer_dict</span><span class="op">)</span><span class="op">)</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"> <span class="str">"tracking"</span><span class="op">:</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"> <span class="str">"external_id"</span><span class="op">:</span> <span class="str">""</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"> <span class="str">"tracking_id"</span><span class="op">:</span> <span class="nam">transaction_id</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">data_to_display</span> <span class="op">=</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"> <span class="str">"service_template"</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"> <span class="str">"resource"</span><span class="op">:</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"> <span class="str">"resource_type"</span><span class="op">:</span> <span class="str">"customer"</span><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"> <span class="op">}</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"> <span class="str">"model"</span><span class="op">:</span> <span class="nam">customer_dict</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"> <span class="str">"tracking"</span><span class="op">:</span> <span class="op">{</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"> <span class="str">"external_id"</span><span class="op">:</span> <span class="str">""</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"> <span class="str">"tracking_id"</span><span class="op">:</span> <span class="nam">transaction_id</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="pln"> <span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run"> <span class="nam">pp</span> <span class="op">=</span> <span class="nam">pprint</span><span class="op">.</span><span class="nam">PrettyPrinter</span><span class="op">(</span><span class="nam">width</span><span class="op">=</span><span class="num">30</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm run hide_run"> <span class="nam">pretty_text</span> <span class="op">=</span> <span class="nam">pp</span><span class="op">.</span><span class="nam">pformat</span><span class="op">(</span><span class="nam">data_to_display</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="stm run hide_run"> <span class="nam">wrapper_json</span> <span class="op">=</span> <span class="nam">json</span><span class="op">.</span><span class="nam">dumps</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t72" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run"> <span class="nam">headers</span><span class="op">[</span><span class="str">'X-RANGER-Client'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="pln"> <span class="str">'X-RANGER-Client'</span><span class="op">]</span> <span class="key">if</span> <span class="str">'X-RANGER-Client'</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span> <span class="key">else</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"> <span class="str">'NA'</span><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run"> <span class="nam">headers</span><span class="op">[</span><span class="str">'X-RANGER-Requester'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">[</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"> <span class="str">'X-RANGER-Requester'</span><span class="op">]</span> <span class="key">if</span> <span class="str">'X-RANGER-Requester'</span> <span class="key">in</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span> <span class="key">else</span> <span class="xx">\</span><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t79" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t80" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"Wrapper JSON before sending action: {0} to Rds Proxy\n{1}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">method</span><span class="op">,</span> <span class="nam">pretty_text</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">info</span><span class="op">(</span><span class="str">"Sending to RDS Server: "</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">base</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">resources</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t83" class="stm run hide_run"> <span class="nam">wrapper_json</span> <span class="op">=</span> <span class="nam">json</span><span class="op">.</span><span class="nam">dumps</span><span class="op">(</span><span class="nam">data</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t85" class="stm par run hide_run"><span class="annotate short">85&#x202F;&#x219B;&#x202F;91</span><span class="annotate long">line 85 didn't jump to line 91, because the condition on line 85 was never false</span> <span class="key">if</span> <span class="nam">method</span> <span class="op">==</span> <span class="str">"POST"</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="stm run hide_run"> <span class="nam">resp</span> <span class="op">=</span> <span class="nam">requests</span><span class="op">.</span><span class="nam">post</span><span class="op">(</span><span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">base</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">resources</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"> <span class="nam">data</span><span class="op">=</span><span class="nam">wrapper_json</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"> <span class="nam">headers</span><span class="op">=</span><span class="nam">headers</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"> <span class="nam">verify</span><span class="op">=</span><span class="nam">conf</span><span class="op">.</span><span class="nam">verify</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm mis"> <span class="nam">resp</span> <span class="op">=</span> <span class="nam">requests</span><span class="op">.</span><span class="nam">put</span><span class="op">(</span><span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">base</span> <span class="op">+</span> <span class="nam">conf</span><span class="op">.</span><span class="nam">api</span><span class="op">.</span><span class="nam">rds_server</span><span class="op">.</span><span class="nam">resources</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="pln"> <span class="nam">data</span><span class="op">=</span><span class="nam">wrapper_json</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="pln"> <span class="nam">headers</span><span class="op">=</span><span class="nam">headers</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="pln"> <span class="nam">verify</span><span class="op">=</span><span class="nam">conf</span><span class="op">.</span><span class="nam">verify</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="stm run hide_run"> <span class="key">if</span> <span class="nam">resp</span><span class="op">.</span><span class="nam">content</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm run hide_run"> <span class="nam">LOG</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"Response Content from rds server: {0}"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">resp</span><span class="op">.</span><span class="nam">content</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm run hide_run"> <span class="nam">content</span> <span class="op">=</span> <span class="nam">resp</span><span class="op">.</span><span class="nam">content</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="stm run hide_run"> <span class="key">if</span> <span class="nam">resp</span><span class="op">.</span><span class="nam">content</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm run hide_run"> <span class="nam">content</span> <span class="op">=</span> <span class="nam">resp</span><span class="op">.</span><span class="nam">json</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t102" class="stm run hide_run"> <span class="key">if</span> <span class="nam">resp</span><span class="op">.</span><span class="nam">content</span> <span class="key">and</span> <span class="num">200</span> <span class="op">&lt;=</span> <span class="nam">resp</span><span class="op">.</span><span class="nam">status_code</span> <span class="op">&lt;</span> <span class="num">300</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm run hide_run"> <span class="nam">content</span> <span class="op">=</span> <span class="nam">resp</span><span class="op">.</span><span class="nam">json</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm run hide_run"> <span class="key">return</span> <span class="nam">content</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm run hide_run"> <span class="key">raise</span> <span class="nam">ErrorStatus</span><span class="op">(</span><span class="nam">resp</span><span class="op">.</span><span class="nam">status_code</span><span class="op">,</span> <span class="nam">content</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/utils/__init__.py: 100%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/utils/__init__.py</b> :
<span class="pc_cov">100%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
0 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">0 run</span>
<span class="mis shortkey_m button_toggle_mis">0 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">0 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
</td>
<td class="text">
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,207 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
<title>Coverage for cms_rest/utils/authentication.py: 76%</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.isonscreen.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.pyfile_ready);
</script>
</head>
<body class="pyfile">
<div id="header">
<div class="content">
<h1>Coverage for <b>cms_rest/utils/authentication.py</b> :
<span class="pc_cov">76%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<h2 class="stats">
43 statements &nbsp;
<span class="run hide_run shortkey_r button_toggle_run">36 run</span>
<span class="mis shortkey_m button_toggle_mis">7 missing</span>
<span class="exc shortkey_x button_toggle_exc">0 excluded</span>
<span class="par run hide_run shortkey_p button_toggle_par">1 partial</span>
</h2>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">r</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">p</span> &nbsp; toggle line displays
</p>
<p class="keyhelp">
<span class="key">j</span>
<span class="key">k</span> &nbsp; next/prev highlighted chunk
</p>
<p class="keyhelp">
<span class="key">0</span> &nbsp; (zero) top of page
</p>
<p class="keyhelp">
<span class="key">1</span> &nbsp; (one) first highlighted chunk
</p>
</div>
</div>
<div id="source">
<table>
<tr>
<td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="stm run hide_run"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="pln"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="pln"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="stm mis"><a href="#n11">11</a></p>
<p id="n12" class="stm mis"><a href="#n12">12</a></p>
<p id="n13" class="pln"><a href="#n13">13</a></p>
<p id="n14" class="stm mis"><a href="#n14">14</a></p>
<p id="n15" class="stm mis"><a href="#n15">15</a></p>
<p id="n16" class="stm mis"><a href="#n16">16</a></p>
<p id="n17" class="pln"><a href="#n17">17</a></p>
<p id="n18" class="stm mis"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="pln"><a href="#n20">20</a></p>
<p id="n21" class="stm run hide_run"><a href="#n21">21</a></p>
<p id="n22" class="stm run hide_run"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="stm run hide_run"><a href="#n25">25</a></p>
<p id="n26" class="stm run hide_run"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="stm run hide_run"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="stm run hide_run"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="stm run hide_run"><a href="#n33">33</a></p>
<p id="n34" class="pln"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="stm run hide_run"><a href="#n36">36</a></p>
<p id="n37" class="stm run hide_run"><a href="#n37">37</a></p>
<p id="n38" class="stm run hide_run"><a href="#n38">38</a></p>
<p id="n39" class="stm run hide_run"><a href="#n39">39</a></p>
<p id="n40" class="stm run hide_run"><a href="#n40">40</a></p>
<p id="n41" class="stm par run hide_run"><a href="#n41">41</a></p>
<p id="n42" class="stm run hide_run"><a href="#n42">42</a></p>
<p id="n43" class="stm run hide_run"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="stm run hide_run"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="stm mis"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="stm run hide_run"><a href="#n50">50</a></p>
<p id="n51" class="stm run hide_run"><a href="#n51">51</a></p>
<p id="n52" class="stm run hide_run"><a href="#n52">52</a></p>
<p id="n53" class="stm run hide_run"><a href="#n53">53</a></p>
<p id="n54" class="stm run hide_run"><a href="#n54">54</a></p>
<p id="n55" class="stm run hide_run"><a href="#n55">55</a></p>
<p id="n56" class="stm run hide_run"><a href="#n56">56</a></p>
<p id="n57" class="stm run hide_run"><a href="#n57">57</a></p>
<p id="n58" class="stm run hide_run"><a href="#n58">58</a></p>
</td>
<td class="text">
<p id="t1" class="stm run hide_run"><span class="key">import</span> <span class="nam">logging</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="stm run hide_run"><span class="key">from</span> <span class="nam">keystone_utils</span> <span class="key">import</span> <span class="nam">tokens</span><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">policy</span> <span class="key">import</span> <span class="nam">policy</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">pecan</span> <span class="key">import</span> <span class="nam">conf</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">from</span> <span class="nam">orm_common</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">api_error_utils</span> <span class="key">as</span> <span class="nam">err_utils</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="nam">logger</span> <span class="op">=</span> <span class="nam">logging</span><span class="op">.</span><span class="nam">getLogger</span><span class="op">(</span><span class="nam">__name__</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="key">def</span> <span class="nam">authorize</span><span class="op">(</span><span class="nam">request</span><span class="op">,</span> <span class="nam">action</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm mis"> <span class="key">if</span> <span class="key">not</span> <span class="nam">_is_authorization_enabled</span><span class="op">(</span><span class="nam">conf</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm mis"> <span class="key">return</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t14" class="stm mis"> <span class="nam">auth_region</span> <span class="op">=</span> <span class="nam">request</span><span class="op">.</span><span class="nam">headers</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">'X-Auth-Region'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm mis"> <span class="key">if</span> <span class="key">not</span> <span class="nam">auth_region</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm mis"> <span class="key">raise</span> <span class="nam">err_utils</span><span class="op">.</span><span class="nam">get_error</span><span class="op">(</span><span class="str">'N/A'</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="str">'X-Auth-Region is missing'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="pln"> <span class="nam">status_code</span><span class="op">=</span><span class="num">401</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="stm mis"> <span class="nam">policy</span><span class="op">.</span><span class="nam">authorize</span><span class="op">(</span><span class="nam">action</span><span class="op">,</span> <span class="nam">request</span><span class="op">,</span> <span class="nam">conf</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t21" class="stm run hide_run"><span class="key">def</span> <span class="nam">_is_authorization_enabled</span><span class="op">(</span><span class="nam">app_conf</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="stm run hide_run"> <span class="key">return</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">enabled</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t25" class="stm run hide_run"><span class="key">def</span> <span class="nam">_get_token_conf</span><span class="op">(</span><span class="nam">app_conf</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="stm run hide_run"> <span class="nam">mech_id</span> <span class="op">=</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">mech_id</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run"> <span class="nam">mech_password</span> <span class="op">=</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">mech_pass</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="stm run hide_run"> <span class="nam">rms_url</span> <span class="op">=</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">rms_url</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run"> <span class="nam">tenant_name</span> <span class="op">=</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">tenant_name</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run"> <span class="nam">keystone_version</span> <span class="op">=</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">keystone_version</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="stm run hide_run"> <span class="nam">conf</span> <span class="op">=</span> <span class="nam">tokens</span><span class="op">.</span><span class="nam">TokenConf</span><span class="op">(</span><span class="nam">mech_id</span><span class="op">,</span> <span class="nam">mech_password</span><span class="op">,</span> <span class="nam">rms_url</span><span class="op">,</span> <span class="nam">tenant_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"> <span class="nam">keystone_version</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t33" class="stm run hide_run"> <span class="key">return</span> <span class="nam">conf</span><span class="strut">&nbsp;</span></p>
<p id="t34" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t36" class="stm run hide_run"><span class="key">def</span> <span class="nam">check_permissions</span><span class="op">(</span><span class="nam">app_conf</span><span class="op">,</span> <span class="nam">token_to_validate</span><span class="op">,</span> <span class="nam">lcp_id</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"Check permissions...start"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="stm run hide_run"> <span class="nam">token_role</span> <span class="op">=</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">token_role</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="stm run hide_run"> <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm run hide_run"> <span class="key">if</span> <span class="nam">_is_authorization_enabled</span><span class="op">(</span><span class="nam">app_conf</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm par run hide_run"><span class="annotate short">41&#x202F;&#x219B;&#x202F;48</span><span class="annotate long">line 41 didn't jump to line 48, because the condition on line 41 was never false</span> <span class="key">if</span> <span class="nam">token_to_validate</span> <span class="key">is</span> <span class="key">not</span> <span class="nam">None</span> <span class="key">and</span> <span class="nam">lcp_id</span> <span class="key">is</span> <span class="key">not</span> <span class="nam">None</span> <span class="key">and</span> <span class="nam">str</span><span class="op">(</span><span class="nam">token_to_validate</span><span class="op">)</span><span class="op">.</span><span class="nam">strip</span><span class="op">(</span><span class="op">)</span> <span class="op">!=</span> <span class="str">''</span> <span class="key">and</span> <span class="nam">str</span><span class="op">(</span><span class="nam">lcp_id</span><span class="op">)</span><span class="op">.</span><span class="nam">strip</span><span class="op">(</span><span class="op">)</span> <span class="op">!=</span> <span class="str">''</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="stm run hide_run"> <span class="nam">token_conf</span> <span class="op">=</span> <span class="nam">_get_token_conf</span><span class="op">(</span><span class="nam">app_conf</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t43" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"Authorization: validating token=[{}] on lcp_id=[{}]"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">token_to_validate</span><span class="op">,</span> <span class="nam">lcp_id</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"> <span class="nam">is_permitted</span> <span class="op">=</span> <span class="nam">tokens</span><span class="op">.</span><span class="nam">is_token_valid</span><span class="op">(</span><span class="nam">token_to_validate</span><span class="op">,</span> <span class="nam">lcp_id</span><span class="op">,</span> <span class="nam">token_conf</span><span class="op">,</span> <span class="nam">token_role</span><span class="op">,</span> <span class="nam">app_conf</span><span class="op">.</span><span class="nam">authentication</span><span class="op">.</span><span class="nam">role_location</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"Authorization: The token=[{}] on lcp_id=[{}] is [{}]"</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln"> <span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">token_to_validate</span><span class="op">,</span> <span class="nam">lcp_id</span><span class="op">,</span> <span class="str">"valid"</span> <span class="key">if</span> <span class="nam">is_permitted</span> <span class="key">else</span> <span class="str">"invalid"</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="stm mis"> <span class="key">raise</span> <span class="nam">Exception</span><span class="op">(</span><span class="str">"Token=[{}] and/or Region=[{}] are empty/none."</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">token_to_validate</span><span class="op">,</span> <span class="nam">lcp_id</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"> <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"The authentication service is disabled. No authentication is needed."</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="stm run hide_run"> <span class="nam">is_permitted</span> <span class="op">=</span> <span class="nam">True</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="stm run hide_run"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t53" class="stm run hide_run"> <span class="nam">msg</span> <span class="op">=</span> <span class="str">"Fail to validate request. due to {}."</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">e</span><span class="op">.</span><span class="nam">message</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">error</span><span class="op">(</span><span class="nam">msg</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">exception</span><span class="op">(</span><span class="nam">e</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t56" class="stm run hide_run"> <span class="nam">is_permitted</span> <span class="op">=</span> <span class="nam">False</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="stm run hide_run"> <span class="nam">logger</span><span class="op">.</span><span class="nam">debug</span><span class="op">(</span><span class="str">"Check permissions...end"</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="stm run hide_run"> <span class="key">return</span> <span class="nam">is_permitted</span><span class="strut">&nbsp;</span></p>
</td>
</tr>
</table>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-11 03:14
</p>
</div>
</div>
</body>
</html>

View File

@ -1,584 +0,0 @@
// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
// For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
// Coverage.py HTML report browser code.
/*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */
/*global coverage: true, document, window, $ */
coverage = {};
// Find all the elements with shortkey_* class, and use them to assign a shortcut key.
coverage.assign_shortkeys = function () {
$("*[class*='shortkey_']").each(function (i, e) {
$.each($(e).attr("class").split(" "), function (i, c) {
if (/^shortkey_/.test(c)) {
$(document).bind('keydown', c.substr(9), function () {
$(e).click();
});
}
});
});
};
// Create the events for the help panel.
coverage.wire_up_help_panel = function () {
$("#keyboard_icon").click(function () {
// Show the help panel, and position it so the keyboard icon in the
// panel is in the same place as the keyboard icon in the header.
$(".help_panel").show();
var koff = $("#keyboard_icon").offset();
var poff = $("#panel_icon").position();
$(".help_panel").offset({
top: koff.top-poff.top,
left: koff.left-poff.left
});
});
$("#panel_icon").click(function () {
$(".help_panel").hide();
});
};
// Create the events for the filter box.
coverage.wire_up_filter = function () {
// Cache elements.
var table = $("table.index");
var table_rows = table.find("tbody tr");
var table_row_names = table_rows.find("td.name a");
var no_rows = $("#no_rows");
// Create a duplicate table footer that we can modify with dynamic summed values.
var table_footer = $("table.index tfoot tr");
var table_dynamic_footer = table_footer.clone();
table_dynamic_footer.attr('class', 'total_dynamic hidden');
table_footer.after(table_dynamic_footer);
// Observe filter keyevents.
$("#filter").on("keyup change", $.debounce(150, function (event) {
var filter_value = $(this).val();
if (filter_value === "") {
// Filter box is empty, remove all filtering.
table_rows.removeClass("hidden");
// Show standard footer, hide dynamic footer.
table_footer.removeClass("hidden");
table_dynamic_footer.addClass("hidden");
// Hide placeholder, show table.
if (no_rows.length > 0) {
no_rows.hide();
}
table.show();
}
else {
// Filter table items by value.
var hidden = 0;
var shown = 0;
// Hide / show elements.
$.each(table_row_names, function () {
var element = $(this).parents("tr");
if ($(this).text().indexOf(filter_value) === -1) {
// hide
element.addClass("hidden");
hidden++;
}
else {
// show
element.removeClass("hidden");
shown++;
}
});
// Show placeholder if no rows will be displayed.
if (no_rows.length > 0) {
if (shown === 0) {
// Show placeholder, hide table.
no_rows.show();
table.hide();
}
else {
// Hide placeholder, show table.
no_rows.hide();
table.show();
}
}
// Manage dynamic header:
if (hidden > 0) {
// Calculate new dynamic sum values based on visible rows.
for (var column = 2; column < 20; column++) {
// Calculate summed value.
var cells = table_rows.find('td:nth-child(' + column + ')');
if (!cells.length) {
// No more columns...!
break;
}
var sum = 0, numer = 0, denom = 0;
$.each(cells.filter(':visible'), function () {
var ratio = $(this).data("ratio");
if (ratio) {
var splitted = ratio.split(" ");
numer += parseInt(splitted[0], 10);
denom += parseInt(splitted[1], 10);
}
else {
sum += parseInt(this.innerHTML, 10);
}
});
// Get footer cell element.
var footer_cell = table_dynamic_footer.find('td:nth-child(' + column + ')');
// Set value into dynamic footer cell element.
if (cells[0].innerHTML.indexOf('%') > -1) {
// Percentage columns use the numerator and denominator,
// and adapt to the number of decimal places.
var match = /\.([0-9]+)/.exec(cells[0].innerHTML);
var places = 0;
if (match) {
places = match[1].length;
}
var pct = numer * 100 / denom;
footer_cell.text(pct.toFixed(places) + '%');
}
else {
footer_cell.text(sum);
}
}
// Hide standard footer, show dynamic footer.
table_footer.addClass("hidden");
table_dynamic_footer.removeClass("hidden");
}
else {
// Show standard footer, hide dynamic footer.
table_footer.removeClass("hidden");
table_dynamic_footer.addClass("hidden");
}
}
}));
// Trigger change event on setup, to force filter on page refresh
// (filter value may still be present).
$("#filter").trigger("change");
};
// Loaded on index.html
coverage.index_ready = function ($) {
// Look for a cookie containing previous sort settings:
var sort_list = [];
var cookie_name = "COVERAGE_INDEX_SORT";
var i;
// This almost makes it worth installing the jQuery cookie plugin:
if (document.cookie.indexOf(cookie_name) > -1) {
var cookies = document.cookie.split(";");
for (i = 0; i < cookies.length; i++) {
var parts = cookies[i].split("=");
if ($.trim(parts[0]) === cookie_name && parts[1]) {
sort_list = eval("[[" + parts[1] + "]]");
break;
}
}
}
// Create a new widget which exists only to save and restore
// the sort order:
$.tablesorter.addWidget({
id: "persistentSort",
// Format is called by the widget before displaying:
format: function (table) {
if (table.config.sortList.length === 0 && sort_list.length > 0) {
// This table hasn't been sorted before - we'll use
// our stored settings:
$(table).trigger('sorton', [sort_list]);
}
else {
// This is not the first load - something has
// already defined sorting so we'll just update
// our stored value to match:
sort_list = table.config.sortList;
}
}
});
// Configure our tablesorter to handle the variable number of
// columns produced depending on report options:
var headers = [];
var col_count = $("table.index > thead > tr > th").length;
headers[0] = { sorter: 'text' };
for (i = 1; i < col_count-1; i++) {
headers[i] = { sorter: 'digit' };
}
headers[col_count-1] = { sorter: 'percent' };
// Enable the table sorter:
$("table.index").tablesorter({
widgets: ['persistentSort'],
headers: headers
});
coverage.assign_shortkeys();
coverage.wire_up_help_panel();
coverage.wire_up_filter();
// Watch for page unload events so we can save the final sort settings:
$(window).unload(function () {
document.cookie = cookie_name + "=" + sort_list.toString() + "; path=/";
});
};
// -- pyfile stuff --
coverage.pyfile_ready = function ($) {
// If we're directed to a particular line number, highlight the line.
var frag = location.hash;
if (frag.length > 2 && frag[1] === 'n') {
$(frag).addClass('highlight');
coverage.set_sel(parseInt(frag.substr(2), 10));
}
else {
coverage.set_sel(0);
}
$(document)
.bind('keydown', 'j', coverage.to_next_chunk_nicely)
.bind('keydown', 'k', coverage.to_prev_chunk_nicely)
.bind('keydown', '0', coverage.to_top)
.bind('keydown', '1', coverage.to_first_chunk)
;
$(".button_toggle_run").click(function (evt) {coverage.toggle_lines(evt.target, "run");});
$(".button_toggle_exc").click(function (evt) {coverage.toggle_lines(evt.target, "exc");});
$(".button_toggle_mis").click(function (evt) {coverage.toggle_lines(evt.target, "mis");});
$(".button_toggle_par").click(function (evt) {coverage.toggle_lines(evt.target, "par");});
coverage.assign_shortkeys();
coverage.wire_up_help_panel();
coverage.init_scroll_markers();
// Rebuild scroll markers after window high changing
$(window).resize(coverage.resize_scroll_markers);
};
coverage.toggle_lines = function (btn, cls) {
btn = $(btn);
var hide = "hide_"+cls;
if (btn.hasClass(hide)) {
$("#source ."+cls).removeClass(hide);
btn.removeClass(hide);
}
else {
$("#source ."+cls).addClass(hide);
btn.addClass(hide);
}
};
// Return the nth line div.
coverage.line_elt = function (n) {
return $("#t" + n);
};
// Return the nth line number div.
coverage.num_elt = function (n) {
return $("#n" + n);
};
// Return the container of all the code.
coverage.code_container = function () {
return $(".linenos");
};
// Set the selection. b and e are line numbers.
coverage.set_sel = function (b, e) {
// The first line selected.
coverage.sel_begin = b;
// The next line not selected.
coverage.sel_end = (e === undefined) ? b+1 : e;
};
coverage.to_top = function () {
coverage.set_sel(0, 1);
coverage.scroll_window(0);
};
coverage.to_first_chunk = function () {
coverage.set_sel(0, 1);
coverage.to_next_chunk();
};
coverage.is_transparent = function (color) {
// Different browsers return different colors for "none".
return color === "transparent" || color === "rgba(0, 0, 0, 0)";
};
coverage.to_next_chunk = function () {
var c = coverage;
// Find the start of the next colored chunk.
var probe = c.sel_end;
var color, probe_line;
while (true) {
probe_line = c.line_elt(probe);
if (probe_line.length === 0) {
return;
}
color = probe_line.css("background-color");
if (!c.is_transparent(color)) {
break;
}
probe++;
}
// There's a next chunk, `probe` points to it.
var begin = probe;
// Find the end of this chunk.
var next_color = color;
while (next_color === color) {
probe++;
probe_line = c.line_elt(probe);
next_color = probe_line.css("background-color");
}
c.set_sel(begin, probe);
c.show_selection();
};
coverage.to_prev_chunk = function () {
var c = coverage;
// Find the end of the prev colored chunk.
var probe = c.sel_begin-1;
var probe_line = c.line_elt(probe);
if (probe_line.length === 0) {
return;
}
var color = probe_line.css("background-color");
while (probe > 0 && c.is_transparent(color)) {
probe--;
probe_line = c.line_elt(probe);
if (probe_line.length === 0) {
return;
}
color = probe_line.css("background-color");
}
// There's a prev chunk, `probe` points to its last line.
var end = probe+1;
// Find the beginning of this chunk.
var prev_color = color;
while (prev_color === color) {
probe--;
probe_line = c.line_elt(probe);
prev_color = probe_line.css("background-color");
}
c.set_sel(probe+1, end);
c.show_selection();
};
// Return the line number of the line nearest pixel position pos
coverage.line_at_pos = function (pos) {
var l1 = coverage.line_elt(1),
l2 = coverage.line_elt(2),
result;
if (l1.length && l2.length) {
var l1_top = l1.offset().top,
line_height = l2.offset().top - l1_top,
nlines = (pos - l1_top) / line_height;
if (nlines < 1) {
result = 1;
}
else {
result = Math.ceil(nlines);
}
}
else {
result = 1;
}
return result;
};
// Returns 0, 1, or 2: how many of the two ends of the selection are on
// the screen right now?
coverage.selection_ends_on_screen = function () {
if (coverage.sel_begin === 0) {
return 0;
}
var top = coverage.line_elt(coverage.sel_begin);
var next = coverage.line_elt(coverage.sel_end-1);
return (
(top.isOnScreen() ? 1 : 0) +
(next.isOnScreen() ? 1 : 0)
);
};
coverage.to_next_chunk_nicely = function () {
coverage.finish_scrolling();
if (coverage.selection_ends_on_screen() === 0) {
// The selection is entirely off the screen: select the top line on
// the screen.
var win = $(window);
coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop()));
}
coverage.to_next_chunk();
};
coverage.to_prev_chunk_nicely = function () {
coverage.finish_scrolling();
if (coverage.selection_ends_on_screen() === 0) {
var win = $(window);
coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop() + win.height()));
}
coverage.to_prev_chunk();
};
// Select line number lineno, or if it is in a colored chunk, select the
// entire chunk
coverage.select_line_or_chunk = function (lineno) {
var c = coverage;
var probe_line = c.line_elt(lineno);
if (probe_line.length === 0) {
return;
}
var the_color = probe_line.css("background-color");
if (!c.is_transparent(the_color)) {
// The line is in a highlighted chunk.
// Search backward for the first line.
var probe = lineno;
var color = the_color;
while (probe > 0 && color === the_color) {
probe--;
probe_line = c.line_elt(probe);
if (probe_line.length === 0) {
break;
}
color = probe_line.css("background-color");
}
var begin = probe + 1;
// Search forward for the last line.
probe = lineno;
color = the_color;
while (color === the_color) {
probe++;
probe_line = c.line_elt(probe);
color = probe_line.css("background-color");
}
coverage.set_sel(begin, probe);
}
else {
coverage.set_sel(lineno);
}
};
coverage.show_selection = function () {
var c = coverage;
// Highlight the lines in the chunk
c.code_container().find(".highlight").removeClass("highlight");
for (var probe = c.sel_begin; probe > 0 && probe < c.sel_end; probe++) {
c.num_elt(probe).addClass("highlight");
}
c.scroll_to_selection();
};
coverage.scroll_to_selection = function () {
// Scroll the page if the chunk isn't fully visible.
if (coverage.selection_ends_on_screen() < 2) {
// Need to move the page. The html,body trick makes it scroll in all
// browsers, got it from http://stackoverflow.com/questions/3042651
var top = coverage.line_elt(coverage.sel_begin);
var top_pos = parseInt(top.offset().top, 10);
coverage.scroll_window(top_pos - 30);
}
};
coverage.scroll_window = function (to_pos) {
$("html,body").animate({scrollTop: to_pos}, 200);
};
coverage.finish_scrolling = function () {
$("html,body").stop(true, true);
};
coverage.init_scroll_markers = function () {
var c = coverage;
// Init some variables
c.lines_len = $('td.text p').length;
c.body_h = $('body').height();
c.header_h = $('div#header').height();
c.missed_lines = $('td.text p.mis, td.text p.par');
// Build html
c.resize_scroll_markers();
};
coverage.resize_scroll_markers = function () {
var c = coverage,
min_line_height = 3,
max_line_height = 10,
visible_window_h = $(window).height();
$('#scroll_marker').remove();
// Don't build markers if the window has no scroll bar.
if (c.body_h <= visible_window_h) {
return;
}
$("body").append("<div id='scroll_marker'>&nbsp;</div>");
var scroll_marker = $('#scroll_marker'),
marker_scale = scroll_marker.height() / c.body_h,
line_height = scroll_marker.height() / c.lines_len;
// Line height must be between the extremes.
if (line_height > min_line_height) {
if (line_height > max_line_height) {
line_height = max_line_height;
}
}
else {
line_height = min_line_height;
}
var previous_line = -99,
last_mark,
last_top;
c.missed_lines.each(function () {
var line_top = Math.round($(this).offset().top * marker_scale),
id_name = $(this).attr('id'),
line_number = parseInt(id_name.substring(1, id_name.length));
if (line_number === previous_line + 1) {
// If this solid missed block just make previous mark higher.
last_mark.css({
'height': line_top + line_height - last_top
});
}
else {
// Add colored line in scroll_marker block.
scroll_marker.append('<div id="m' + line_number + '" class="marker"></div>');
last_mark = $('#m' + line_number);
last_mark.css({
'height': line_height,
'top': line_top
});
last_top = line_top;
}
previous_line = line_number;
});
};

View File

@ -1,440 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Coverage report</title>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.ba-throttle-debounce.min.js"></script>
<script type="text/javascript" src="jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="jquery.hotkeys.js"></script>
<script type="text/javascript" src="coverage_html.js"></script>
<script type="text/javascript">
jQuery(document).ready(coverage.index_ready);
</script>
</head>
<body class="indexfile">
<div id="header">
<div class="content">
<h1>Coverage report:
<span class="pc_cov">82%</span>
</h1>
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
<form id="filter_container">
<input id="filter" type="text" value="" placeholder="filter..." />
</form>
</div>
</div>
<div class="help_panel">
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
<p class="legend">Hot-keys on this page</p>
<div>
<p class="keyhelp">
<span class="key">n</span>
<span class="key">s</span>
<span class="key">m</span>
<span class="key">x</span>
<span class="key">b</span>
<span class="key">p</span>
<span class="key">c</span> &nbsp; change column sorting
</p>
</div>
</div>
<div id="index">
<table class="index">
<thead>
<tr class="tablehead" title="Click to sort">
<th class="name left headerSortDown shortkey_n">Module</th>
<th class="shortkey_s">statements</th>
<th class="shortkey_m">missing</th>
<th class="shortkey_x">excluded</th>
<th class="shortkey_b">branches</th>
<th class="shortkey_p">partial</th>
<th class="right shortkey_c">coverage</th>
</tr>
</thead>
<tfoot>
<tr class="total">
<td class="name left">Total</td>
<td>1417</td>
<td>203</td>
<td>0</td>
<td>312</td>
<td>55</td>
<td class="right" data-ratio="1419 1729">82%</td>
</tr>
</tfoot>
<tbody>
<tr class="file">
<td class="name left"><a href="cms_rest___init___py.html">cms_rest/__init__.py</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="0 0">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_app_py.html">cms_rest/app.py</a></td>
<td>22</td>
<td>3</td>
<td>0</td>
<td>2</td>
<td>1</td>
<td class="right" data-ratio="20 24">83%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers___init___py.html">cms_rest/controllers/__init__.py</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="0 0">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_root_py.html">cms_rest/controllers/root.py</a></td>
<td>10</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="9 10">90%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1___init___py.html">cms_rest/controllers/v1/__init__.py</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="0 0">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_base_py.html">cms_rest/controllers/v1/base.py</a></td>
<td>16</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="12 16">75%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm___init___py.html">cms_rest/controllers/v1/orm/__init__.py</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="0 0">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_configuration_py.html">cms_rest/controllers/v1/orm/configuration.py</a></td>
<td>14</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="14 14">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_customer___init___py.html">cms_rest/controllers/v1/orm/customer/__init__.py</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="0 0">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_customer_enabled_py.html">cms_rest/controllers/v1/orm/customer/enabled.py</a></td>
<td>33</td>
<td>3</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td class="right" data-ratio="32 35">91%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_customer_metadata_py.html">cms_rest/controllers/v1/orm/customer/metadata.py</a></td>
<td>52</td>
<td>0</td>
<td>0</td>
<td>16</td>
<td>0</td>
<td class="right" data-ratio="68 68">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_customer_regions_py.html">cms_rest/controllers/v1/orm/customer/regions.py</a></td>
<td>75</td>
<td>3</td>
<td>0</td>
<td>12</td>
<td>2</td>
<td class="right" data-ratio="82 87">94%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_customer_root_py.html">cms_rest/controllers/v1/orm/customer/root.py</a></td>
<td>111</td>
<td>3</td>
<td>0</td>
<td>14</td>
<td>1</td>
<td class="right" data-ratio="121 125">97%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_customer_users_py.html">cms_rest/controllers/v1/orm/customer/users.py</a></td>
<td>138</td>
<td>15</td>
<td>0</td>
<td>30</td>
<td>9</td>
<td class="right" data-ratio="144 168">86%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_logs_py.html">cms_rest/controllers/v1/orm/logs.py</a></td>
<td>33</td>
<td>20</td>
<td>0</td>
<td>4</td>
<td>0</td>
<td class="right" data-ratio="13 37">35%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_orm_root_py.html">cms_rest/controllers/v1/orm/root.py</a></td>
<td>8</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="8 8">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_controllers_v1_root_py.html">cms_rest/controllers/v1/root.py</a></td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="4 4">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_logger___init___py.html">cms_rest/logger/__init__.py</a></td>
<td>6</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td class="right" data-ratio="8 8">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_logic___init___py.html">cms_rest/logic/__init__.py</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="0 0">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_logic_customer_logic_py.html">cms_rest/logic/customer_logic.py</a></td>
<td>466</td>
<td>64</td>
<td>0</td>
<td>162</td>
<td>34</td>
<td class="right" data-ratio="508 628">81%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_logic_error_base_py.html">cms_rest/logic/error_base.py</a></td>
<td>14</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="12 14">86%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_logic_metadata_logic_py.html">cms_rest/logic/metadata_logic.py</a></td>
<td>74</td>
<td>60</td>
<td>0</td>
<td>20</td>
<td>0</td>
<td class="right" data-ratio="14 94">15%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_model_Model_py.html">cms_rest/model/Model.py</a></td>
<td>7</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="6 7">86%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_model_Models_py.html">cms_rest/model/Models.py</a></td>
<td>241</td>
<td>5</td>
<td>0</td>
<td>32</td>
<td>6</td>
<td class="right" data-ratio="260 273">95%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_model___init___py.html">cms_rest/model/__init__.py</a></td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="3 3">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_rds_proxy_py.html">cms_rest/rds_proxy.py</a></td>
<td>47</td>
<td>12</td>
<td>0</td>
<td>8</td>
<td>1</td>
<td class="right" data-ratio="42 55">76%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_utils___init___py.html">cms_rest/utils/__init__.py</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="right" data-ratio="0 0">100%</td>
</tr>
<tr class="file">
<td class="name left"><a href="cms_rest_utils_authentication_py.html">cms_rest/utils/authentication.py</a></td>
<td>43</td>
<td>7</td>
<td>0</td>
<td>8</td>
<td>1</td>
<td class="right" data-ratio="39 51">76%</td>
</tr>
</tbody>
</table>
<p id="no_rows">
No items found using the specified filter.
</p>
</div>
<div id="footer">
<div class="content">
<p>
<a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4</a>,
created at 2017-05-12 00:04
</p>
</div>
</div>
</body>
</html>

View File

@ -1,9 +0,0 @@
/*
* jQuery throttle / debounce - v1.1 - 3/7/2010
* http://benalman.com/projects/jquery-throttle-debounce-plugin/
*
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);

View File

@ -1,100 +0,0 @@
/*
* jQuery Hotkeys Plugin
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* Based upon the plugin by Tzury Bar Yochay:
* http://github.com/tzuryby/hotkeys
*
* Original idea by:
* Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
*/
(function(jQuery){
jQuery.hotkeys = {
version: "0.8",
specialKeys: {
8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 188: ",", 190: ".",
191: "/", 224: "meta"
},
shiftNums: {
"`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
"8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
".": ">", "/": "?", "\\": "|"
}
};
function keyHandler( handleObj ) {
// Only care when a possible input has been specified
if ( typeof handleObj.data !== "string" ) {
return;
}
var origHandler = handleObj.handler,
keys = handleObj.data.toLowerCase().split(" ");
handleObj.handler = function( event ) {
// Don't fire in text-accepting inputs that we didn't directly bind to
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
event.target.type === "text" || $(event.target).prop('contenteditable') == 'true' )) {
return;
}
// Keypress represents characters, not special keys
var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
character = String.fromCharCode( event.which ).toLowerCase(),
key, modif = "", possible = {};
// check combinations (alt|ctrl|shift+anything)
if ( event.altKey && special !== "alt" ) {
modif += "alt+";
}
if ( event.ctrlKey && special !== "ctrl" ) {
modif += "ctrl+";
}
// TODO: Need to make sure this works consistently across platforms
if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
modif += "meta+";
}
if ( event.shiftKey && special !== "shift" ) {
modif += "shift+";
}
if ( special ) {
possible[ modif + special ] = true;
} else {
possible[ modif + character ] = true;
possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
// "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
if ( modif === "shift+" ) {
possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
}
}
for ( var i = 0, l = keys.length; i < l; i++ ) {
if ( possible[ keys[i] ] ) {
return origHandler.apply( this, arguments );
}
}
};
}
jQuery.each([ "keydown", "keyup", "keypress" ], function() {
jQuery.event.special[ this ] = { add: keyHandler };
});
})( jQuery );

View File

@ -1,53 +0,0 @@
/* Copyright (c) 2010
* @author Laurence Wheway
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* @version 1.2.0
*/
(function($) {
jQuery.extend({
isOnScreen: function(box, container) {
//ensure numbers come in as intgers (not strings) and remove 'px' is it's there
for(var i in box){box[i] = parseFloat(box[i])};
for(var i in container){container[i] = parseFloat(container[i])};
if(!container){
container = {
left: $(window).scrollLeft(),
top: $(window).scrollTop(),
width: $(window).width(),
height: $(window).height()
}
}
if( box.left+box.width-container.left > 0 &&
box.left < container.width+container.left &&
box.top+box.height-container.top > 0 &&
box.top < container.height+container.top
) return true;
return false;
}
})
jQuery.fn.isOnScreen = function (container) {
for(var i in container){container[i] = parseFloat(container[i])};
if(!container){
container = {
left: $(window).scrollLeft(),
top: $(window).scrollTop(),
width: $(window).width(),
height: $(window).height()
}
}
if( $(this).offset().left+$(this).width()-container.left > 0 &&
$(this).offset().left < container.width+container.left &&
$(this).offset().top+$(this).height()-container.top > 0 &&
$(this).offset().top < container.height+container.top
) return true;
return false;
}
})(jQuery);

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 B

File diff suppressed because one or more lines are too long

View File

@ -1,375 +0,0 @@
/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */
/* For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt */
/* CSS styles for coverage.py. */
/* Page-wide styles */
html, body, h1, h2, h3, p, table, td, th {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-weight: inherit;
font-style: inherit;
font-size: 100%;
font-family: inherit;
vertical-align: baseline;
}
/* Set baseline grid to 16 pt. */
body {
font-family: georgia, serif;
font-size: 1em;
}
html>body {
font-size: 16px;
}
/* Set base font size to 12/16 */
p {
font-size: .75em; /* 12/16 */
line-height: 1.33333333em; /* 16/12 */
}
table {
border-collapse: collapse;
}
td {
vertical-align: top;
}
table tr.hidden {
display: none !important;
}
p#no_rows {
display: none;
font-size: 1.2em;
}
a.nav {
text-decoration: none;
color: inherit;
}
a.nav:hover {
text-decoration: underline;
color: inherit;
}
/* Page structure */
#header {
background: #f8f8f8;
width: 100%;
border-bottom: 1px solid #eee;
}
#source {
padding: 1em;
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
.indexfile #footer {
margin: 1em 3em;
}
.pyfile #footer {
margin: 1em 1em;
}
#footer .content {
padding: 0;
font-size: 85%;
font-family: verdana, sans-serif;
color: #666666;
font-style: italic;
}
#index {
margin: 1em 0 0 3em;
}
/* Header styles */
#header .content {
padding: 1em 3em;
}
h1 {
font-size: 1.25em;
display: inline-block;
}
#filter_container {
display: inline-block;
float: right;
margin: 0 2em 0 0;
}
#filter_container input {
width: 10em;
}
h2.stats {
margin-top: .5em;
font-size: 1em;
}
.stats span {
border: 1px solid;
padding: .1em .25em;
margin: 0 .1em;
cursor: pointer;
border-color: #999 #ccc #ccc #999;
}
.stats span.hide_run, .stats span.hide_exc,
.stats span.hide_mis, .stats span.hide_par,
.stats span.par.hide_run.hide_par {
border-color: #ccc #999 #999 #ccc;
}
.stats span.par.hide_run {
border-color: #999 #ccc #ccc #999;
}
.stats span.run {
background: #ddffdd;
}
.stats span.exc {
background: #eeeeee;
}
.stats span.mis {
background: #ffdddd;
}
.stats span.hide_run {
background: #eeffee;
}
.stats span.hide_exc {
background: #f5f5f5;
}
.stats span.hide_mis {
background: #ffeeee;
}
.stats span.par {
background: #ffffaa;
}
.stats span.hide_par {
background: #ffffcc;
}
/* Help panel */
#keyboard_icon {
float: right;
margin: 5px;
cursor: pointer;
}
.help_panel {
position: absolute;
background: #ffffcc;
padding: .5em;
border: 1px solid #883;
display: none;
}
.indexfile .help_panel {
width: 20em; height: 4em;
}
.pyfile .help_panel {
width: 16em; height: 8em;
}
.help_panel .legend {
font-style: italic;
margin-bottom: 1em;
}
#panel_icon {
float: right;
cursor: pointer;
}
.keyhelp {
margin: .75em;
}
.keyhelp .key {
border: 1px solid black;
border-color: #888 #333 #333 #888;
padding: .1em .35em;
font-family: monospace;
font-weight: bold;
background: #eee;
}
/* Source file styles */
.linenos p {
text-align: right;
margin: 0;
padding: 0 .5em;
color: #999999;
font-family: verdana, sans-serif;
font-size: .625em; /* 10/16 */
line-height: 1.6em; /* 16/10 */
}
.linenos p.highlight {
background: #ffdd00;
}
.linenos p a {
text-decoration: none;
color: #999999;
}
.linenos p a:hover {
text-decoration: underline;
color: #999999;
}
td.text {
width: 100%;
}
.text p {
margin: 0;
padding: 0 0 0 .5em;
border-left: 2px solid #ffffff;
white-space: pre;
position: relative;
}
.text p.mis {
background: #ffdddd;
border-left: 2px solid #ff0000;
}
.text p.run, .text p.run.hide_par {
background: #ddffdd;
border-left: 2px solid #00ff00;
}
.text p.exc {
background: #eeeeee;
border-left: 2px solid #808080;
}
.text p.par, .text p.par.hide_run {
background: #ffffaa;
border-left: 2px solid #eeee99;
}
.text p.hide_run, .text p.hide_exc, .text p.hide_mis, .text p.hide_par,
.text p.hide_run.hide_par {
background: inherit;
}
.text span.annotate {
font-family: georgia;
color: #666;
float: right;
padding-right: .5em;
}
.text p.hide_par span.annotate {
display: none;
}
.text span.annotate.long {
display: none;
}
.text p:hover span.annotate.long {
display: block;
max-width: 50%;
white-space: normal;
float: right;
position: absolute;
top: 1.75em;
right: 1em;
width: 30em;
height: auto;
color: #333;
background: #ffffcc;
border: 1px solid #888;
padding: .25em .5em;
z-index: 999;
border-radius: .2em;
box-shadow: #cccccc .2em .2em .2em;
}
/* Syntax coloring */
.text .com {
color: green;
font-style: italic;
line-height: 1px;
}
.text .key {
font-weight: bold;
line-height: 1px;
}
.text .str {
color: #000080;
}
/* index styles */
#index td, #index th {
text-align: right;
width: 5em;
padding: .25em .5em;
border-bottom: 1px solid #eee;
}
#index th {
font-style: italic;
color: #333;
border-bottom: 1px solid #ccc;
cursor: pointer;
}
#index th:hover {
background: #eee;
border-bottom: 1px solid #999;
}
#index td.left, #index th.left {
padding-left: 0;
}
#index td.right, #index th.right {
padding-right: 0;
}
#index th.headerSortDown, #index th.headerSortUp {
border-bottom: 1px solid #000;
white-space: nowrap;
background: #eee;
}
#index th.headerSortDown:after {
content: " ↓";
}
#index th.headerSortUp:after {
content: " ↑";
}
#index td.name, #index th.name {
text-align: left;
width: auto;
}
#index td.name a {
text-decoration: none;
color: #000;
}
#index tr.total,
#index tr.total_dynamic {
}
#index tr.total td,
#index tr.total_dynamic td {
font-weight: bold;
border-top: 1px solid #ccc;
border-bottom: none;
}
#index tr.file:hover {
background: #eeeeee;
}
#index tr.file:hover td.name {
text-decoration: underline;
color: #000;
}
/* scroll marker styles */
#scroll_marker {
position: fixed;
right: 0;
top: 0;
width: 16px;
height: 100%;
background: white;
border-left: 1px solid #eee;
}
#scroll_marker .marker {
background: #eedddd;
position: absolute;
min-height: 3px;
width: 100%;
}

View File

@ -1,63 +0,0 @@
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('short'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
app.use('/uuid', require('./routes/uuid'));
app.use('/rds', require('./routes/rds'));
app.use('/audit', require('./routes/audit'));
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;

View File

@ -1,8 +0,0 @@
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}

View File

@ -1,8 +0,0 @@
var router = require('express').Router();
router.post('/v1/audit/transaction', (req, res)=> {
res.status(200).end();
console.log(req.body);
});
module.exports = router;

View File

@ -1,9 +0,0 @@
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;

View File

@ -1,60 +0,0 @@
var router = require('express').Router();
var fs = require('fs');
router.post('/v1/rds/resources', (req, res)=> {
var model = JSON.parse(req.body.service_template.model);
console.log(model, null, 2);
res.status(201).json({
'customer': {
'id': '70383330-f107-11e5-9d3c-005056a504e9',
'links': {
'own': 'http://127.0.0.1:8777/v1/rds/customer/70383330-f107-11e5-9d3c-005056a504e9'
}
'created': '703ca0a0-f107-11e5-9d3c-005056a504e9'
}
});
fs.writeFileSync(__dirname + '/rds_resource_put.json', req.body.service_template.model);
});
router.put('/v1/rds/resources', (req, res)=> {
var model = JSON.parse(req.body.service_template.model);
console.log(model, null, 2);
res.status(201).json({
'customer': {
'id': '70383330-f107-11e5-9d3c-005056a504e9',
'links': {
'own': 'http://127.0.0.1:8777/v1/rds/customer/70383330-f107-11e5-9d3c-005056a504e9'
},
'created': '703ca0a0-f107-11e5-9d3c-005056a504e9'
}
});
fs.writeFileSync(__dirname + '/rds_resource_put.json', req.body.service_template.model);
});
router.get('/v1/rds/status/resource/:id', (req, res)=>{
id = req.params.id
res.status(200).json({
'status': 'pending',
'regions': [
{
'region': 'SAN1',
'status': 'success',
'resource-id': id
},
{
'region': 'AIC_MEDIUM',
'status': 'error',
'resource-id': id
},
{
'region': 'dla1',
'status': 'success',
'resource-id': id
},
]
})
})
module.exports = router;

View File

@ -1,9 +0,0 @@
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;

View File

@ -1,10 +0,0 @@
var router = require('express').Router();
var uuid = require('uuid');
router.post('/v1/uuids', (req, res)=>{
res.json({
uuid: uuid.v1()
});
});
module.exports = router;

View File

@ -1,6 +0,0 @@
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}

View File

@ -1,5 +0,0 @@
extends layout
block content
h1= title
p Welcome to #{title}

View File

@ -1,7 +0,0 @@
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content

View File

@ -1,14 +0,0 @@
from orm.services.flavor_manager.fms_rest.logger import get_logger
logger = get_logger(__name__)
def init(audit_server_url, num_of_send_retries, time_wait_between_retries):
logger.debug('MOCK: audit.init called')
pass
def audit(timestamp, application_id, tracking_id, transaction_id, transaction_type, resource_id, service_name,
user_id=None, external_id=None, event_details=None, status=None):
logger.debug('MOCK: audit.audit called')
return 200

View File

@ -1,108 +0,0 @@
import copy
import uuid
from orm.services.flavor_manager.fms_rest.data.sql_alchemy.data_manager import DataManager
from orm.services.flavor_manager.fms_rest.logger import get_logger
from mock import MagicMock
logger = get_logger(__name__)
def post(url, **kwargs):
if 'rds/resources' in url:
logger.debug('MOCK: requests.post called for rds/resources')
return _build_rds_response()
elif 'uuids' in url:
logger.debug('MOCK: requests.post called for uuid')
return _build_uuid_response()
def delete(url, **kwargs):
if 'rds/resources' in url:
logger.debug('MOCK: requests.deletr called for rds/resources')
return _build_rds_response()
else:
raise Exception("No delete action for this url".format(url))
def get(url):
if 'status/resource' in url:
logger.debug('MOCK: requests.get called for status/resources')
return _build_status_response(url)
def _build_uuid_response():
res = MagicMock()
res.json.return_value = {
'uuid': str(uuid.uuid1())
}
return res
def _build_rds_response():
response = MagicMock()
response.status_code = 201
response.content = {"flavor": {"profile": "p1",
"status": "Error",
"description": "A standard 2GB Ram 2 vCPUs 50GB Disk, Flavor",
"extra-specs": {"key3": "value3",
"key2": "value2",
"key1": "value1"},
"ram": "4096",
"ephemeral": "0",
"visibility": "private",
"regions": [
{
"status": "Error",
"name": "dkk12"
}, {
"status": "Error",
"name": "san12"}],
"vcpus": "2",
"swap": "1024",
"disk": "50",
"tenants": ["070be05e-26e2-4519-a46d-224cbf8558f4", "4f7b9561-af8b-4cc0-87e2-319270dad49e"],
"id": "a5310ede-1c15-11e6-86bb-005056a50d38",
"name": "fr4096v2d50"
}
}
response.json.return_value = response.content
return response
def _build_status_response(url):
uuid_index = url.find('status/resource/') + 16
uuid = url[uuid_index:]
datamanager = DataManager()
flavor_record = datamanager.get_record('flavor')
sql_flavor = flavor_record.get_flavor_by_id(uuid)
_status_response['regions'] = []
for sql_region in sql_flavor.flavor_regions:
new_region = copy.copy(_region_mock)
new_region['region'] = sql_region.region_name
_status_response['regions'].append(new_region)
mock = MagicMock()
mock.json.return_value = _status_response
return mock
_region_mock = {
"region": "dla1",
"timestamp": "1451599200",
"ord-transaction-id": "0649c5be323f4792afbc1efdd480847d",
"resource-id": "12fde398643acbed32f8097c98aec20",
"ord-notifier-id": "",
"status": "success",
"error-code": "200",
"error-msg": "OK"
}
_status_response = {
"status": "pending",
"regions": []
}

View File

@ -1,14 +0,0 @@
from fms_mocks import audit_mock, requests_mock
from orm.services.flavor_manager.fms_rest.data.sql_alchemy.data_manager import DataManager
from orm.services.flavor_manager.fms_rest.logic import flavor_logic
from orm.services.flavor_manager.fms_rest.proxies import rds_proxy
from orm.services.flavor_manager.fms_rest.utils import utils
providers = [
('rds_proxy', rds_proxy),
('flavor_logic', flavor_logic),
('requests', requests_mock),
('data_manager', DataManager),
('utils', utils),
('audit_client', audit_mock)
]

View File

@ -1,6 +0,0 @@
def audit(*args, **kwargs):
pass
def init(*args, **kwargs):
pass

View File

@ -1,6 +0,0 @@
def is_token_valid(*args, **kwargs):
pass
def TokenConf(*args, **kwargs):
pass

View File

@ -1,7 +0,0 @@
# from pecan.hooks import PecanHook
class TransactionIdHook():
def before(self, state):
pass

View File

@ -1,76 +0,0 @@
from functools import partial
import inspect
from orm.services.flavor_manager.fms_rest.external_mock.orm_common.injector.fang.errors import DependentNotFoundError
try:
import click
except ImportError:
click = None
class DependencyRegister:
def __init__(self):
# Maps dependents to names of resources they require
self.dependents = {}
# Maps names of resources to their dependents
self.resources = {}
@classmethod
def _unwrap_func(cls, decorated_func):
'''This unwraps a decorated func, returning the inner wrapped func.
This may become unnecessary with Python 3.4's inspect.unwrap().
'''
if click is not None:
# Workaround for click.command() decorator not setting
# __wrapped__
if isinstance(decorated_func, click.Command):
return cls._unwrap_func(decorated_func.callback)
if hasattr(decorated_func, '__wrapped__'):
# Recursion: unwrap more if needed
return cls._unwrap_func(decorated_func.__wrapped__)
else:
# decorated_func isn't actually decorated, no more
# unwrapping to do
return decorated_func
@classmethod
def _unwrap_dependent(cls, dependent):
# Dependent is effectively a class. Classes are registered as is.
if inspect.isclass(dependent):
return dependent
# dependent is some other kind of callable, eg a function
else:
return cls._unwrap_func(dependent)
def _register_dependent(self, dependent, resource_name):
if dependent not in self.dependents:
self.dependents[dependent] = []
self.dependents[dependent].insert(0, resource_name)
def _register_resource_dependency(self, resource_name, dependent):
if resource_name not in self.resources:
self.resources[resource_name] = set()
self.resources[resource_name].add(dependent)
def register(self, resource_name, dependent=None):
if dependent is None:
# Give a partial usable as a decorator
return partial(self.register, resource_name)
dependent = self._unwrap_dependent(dependent)
self._register_dependent(dependent, resource_name)
self._register_resource_dependency(resource_name, dependent)
# Return dependent to ease use as decorator
return dependent
def query_resources(self, dependent):
dependent = self._unwrap_dependent(dependent)
if dependent not in self.dependents:
raise DependentNotFoundError(dependent=dependent)
return self.dependents[dependent]

View File

@ -1,16 +0,0 @@
from orm.services.flavor_manager.fms_rest.external_mock.orm_common.injector.fang.dependency_register import DependencyRegister
from orm.services.flavor_manager.fms_rest.external_mock.orm_common.injector.fang.resolver import DependencyResolver
from orm.services.flavor_manager.fms_rest.external_mock.orm_common.injector.fang.resource_provider_register import ResourceProviderRegister
class Di:
def __init__(self, namespace=None):
self.namespace = namespace
self.dependencies = DependencyRegister()
self.providers = ResourceProviderRegister()
self.resolver = DependencyResolver(
dependency_register=self.dependencies,
resource_provider_register=self.providers)
# For use as a decorator
self.dependsOn = self.dependencies.register

View File

@ -1,47 +0,0 @@
class FangError(Exception):
pass
class DependentNotFoundError(FangError):
def __init__(self, dependent=None):
self.dependent = dependent
if dependent:
message = (
"Couldn't find dependencies registered for {!r}"
"".format(dependent))
else:
message = (
"Couldn't find dependencies registered for the given "
"dependent")
super(DependentNotFoundError, self).__init__(message)
class ProviderAlreadyRegisteredError(FangError):
def __init__(self, resource_name=None, existing_provider=None):
self.resource_name = resource_name
self.existing_provider = existing_provider
if resource_name and existing_provider:
message = (
'A provider ({provider!r}) has already been '
'registered for resource {resource_name!r}'.format(
provider=existing_provider,
resource_name=resource_name))
else:
message = (
'A provider has already been registered for the '
'resource')
super(ProviderAlreadyRegisteredError, self).__init__(message)
class ProviderNotFoundError(FangError):
def __init__(self, resource_name=None):
self.resource_name = resource_name
if resource_name:
message = (
"A provider could not be found for resource {!r}"
"".format(resource_name))
else:
message = (
"A provider could not be found for the requested "
"resource")
super(ProviderNotFoundError, self).__init__(message)

View File

@ -1,45 +0,0 @@
import logging
from orm.services.flavor_manager.fms_rest.externel_mock.orm_common.injector.fang.errors import ProviderNotFoundError
# This is effectively what is sometimes termed a "dependency injection
# container".
class DependencyResolver:
def __init__(
self,
dependency_register=None,
resource_provider_register=None):
self.dependency_register = dependency_register
self.resource_provider_register = resource_provider_register
# Methods delegated to other objects
self.query_dependents_resources = \
self.dependency_register.query_resources
self.resolve = self.resource_provider_register.resolve
def resolve_all_dependencies(self, dependent):
return [
self.resolve(resource_name)
for resource_name in
self.query_dependents_resources(dependent)]
def unpack(self, dependent):
resources = self.resolve_all_dependencies(dependent)
# Never return a length-1 list/tuple, to allow easier unpacking
# eg, avoid need for comma in:
# my_one_dep, = my_resolver.unpack_dependencies(my_func)
if len(resources) == 1:
return resources[0]
else:
return resources
def are_all_dependencies_met_for(self, dependent):
for resource_name in self.query_dependents_resources(dependent):
try:
self.resolve(resource_name)
except ProviderNotFoundError as e:
logging.error("Provider not found! Make sure the provider is available.\n %s", e)
return False
else:
return True

View File

@ -1,65 +0,0 @@
from functools import partial
from orm.services.flavor_manager.fms_rest.external_mock.orm_common.injector.fang.errors import (FangError, ProviderAlreadyRegisteredError, ProviderNotFoundError)
class ResourceProviderRegister:
def __init__(self, namespace=None):
self.namespace = namespace
# Maps resource names to a provider
self.resource_providers = {}
def register(self, resource_name, provider=None, allow_override=False):
if provider is None:
# Give a partial usable as a decorator
return partial(
self.register,
resource_name, allow_override=allow_override)
if ((not allow_override) and resource_name in self.resource_providers):
raise ProviderAlreadyRegisteredError(
resource_name=resource_name,
existing_provider=self.resource_providers[resource_name])
self.resource_providers[resource_name] = provider
# Return provider to ease use as decorator
return provider
register_callable = register
# For registering providers which always return the same instance
def register_instance(self, resource_name, instance=None, **kwargs):
if instance is None:
# Give a partial usable as a decorator
return partial(self.register_instance, resource_name, **kwargs)
self.register(resource_name, provider=(lambda: instance), **kwargs)
return instance
def mass_register(self, resource_names_to_providers, **kwargs):
for resource_name, provider in resource_names_to_providers.items():
self.register_instance(resource_name, provider, **kwargs)
def load(self, other_register, allow_overrides=False):
if not allow_overrides:
own_keys = self.resource_providers.keys()
other_keys = other_register.resource_providers.keys()
common_keys = own_keys & other_keys
if common_keys:
# TODO Add new FangError sub-class?
raise FangError(
'This register already has providers for keys: '
'{!r}'.format(common_keys))
self.resource_providers.update(
other_register.resource_providers)
def clear(self):
self.resource_providers.clear()
def resolve(self, resource_name):
if resource_name not in self.resource_providers:
raise ProviderNotFoundError(resource_name=resource_name)
return self.resource_providers[resource_name]()

View File

@ -1,58 +0,0 @@
import imp
import os
from orm.common.orm_common.injector import fang
_di = fang.Di()
logger = None
def register_providers(env_variable, providers_dir_path, _logger):
global logger
logger = _logger
logger.info('Initializing dependency injector')
logger.info('Checking {0} variable'.format(env_variable))
env = None
if not (env_variable in os.environ):
logger.warn('No {0} variable found using `prod` injector'.format(env_variable))
env = 'prod'
elif os.environ[env_variable] == '__TEST__':
logger.info('__TEST__ variable found, explicitly skipping provider registration!!!')
return
else:
env = os.environ[env_variable]
log_message = '{0} found setting injector to {1} environment'.format(
env_variable, env)
log_message = log_message.replace('\n', '_').replace('\r', '_')
logger.info(log_message)
logger.info('Setting injector providers')
module = _import_file_by_name(env, providers_dir_path)
for provider in module.providers:
logger.info('Setting provider `{0}` to {1}'.format(provider[0], provider[1]))
_di.providers.register_instance(provider[0], provider[1])
def get_di():
return _di
def override_injected_dependency(dep_tuple):
_di.providers.register_instance(dep_tuple[0], dep_tuple[1], allow_override=True)
def _import_file_by_name(env, providers_dir_path):
file_path = os.path.join(providers_dir_path, '{0}_providers.py'.format(env))
try:
module = imp.load_source('fms_providers', file_path)
except IOError as ex:
logger.log_exception(
'File with providers for the {0} environment, path: {1} wasnt found! Crushing!!!'.format(env, file_path),
ex)
raise ex
return module

View File

@ -1,10 +0,0 @@
import logging
def get_logger(name):
logger = logging.getLogger(name)
logger.log_exception = lambda msg, exception: logger.exception(msg + " Exception: " + str(exception))
return logger
__all__ = ['get_logger']

View File

@ -1,6 +0,0 @@
def authorize(*args, **kwargs):
pass
def init(*args, **kwargs):
pass

View File

@ -1,8 +0,0 @@
class utils:
@staticmethod
def set_utils_conf(conf):
pass
@staticmethod
def report_config(conf, dump_to_log):
pass

View File

@ -1,10 +0,0 @@
import cross_api_utils
import utils
def set_utils_conf(conf):
cross_api_utils.set_utils_conf(conf)
utils.set_utils_conf(conf)
__all__ = ['cross_api_utils', 'utils']

View File

@ -1,2 +0,0 @@
def get_error(*args, **kwargs):
pass

View File

@ -1,108 +0,0 @@
import time
import requests
from orm.common.orm_common.logger import get_logger
from pecan import conf
logger = get_logger(__name__)
conf = None
def set_utils_conf(_conf):
global conf
conf = _conf
def _check_conf_initialization():
if not conf:
raise AssertionError(
'Configuration wasnt initiated, please run set_utils_conf and '
'pass pecan configuration')
def is_region_exist(region_name):
""" function to check whether region exists
returns 200 for ok and None for error
"""
region = get_rms_region(region_name)
if region is None:
return False
return True
def is_region_group_exist(group_name):
""" function to check whether region group exists
returns 200 for ok and None for error
"""
group = get_rms_region_group(group_name)
if group is None:
return False
return True
def get_regions_of_group(group_name):
""" function to get regions associated with group
returns 200 for ok and None for error
"""
group = get_rms_region_group(group_name)
if group is None:
return None
return group["Regions"]
def get_rms_region(region_name):
""" function to call rms api for region info
returns 200 for ok and None for error
"""
_check_conf_initialization()
try:
headers = {
'content-type': 'application/json',
}
rms_server_url = '%s%s/%s' % (
conf.api.rms_server.base, conf.api.rms_server.regions, region_name)
resp = requests.get(rms_server_url, headers=headers).json()
return resp
except Exception as e:
logger.log_exception('Failed in get_rms_region', e)
return None
return 200
prev_group_name = None
def get_rms_region_group(group_name):
""" function to call rms api for group info
returns 200 for ok and None for error
"""
global prev_group_name, prev_timestamp, prev_resp
_check_conf_initialization()
try:
timestamp = time.time()
if group_name == prev_group_name and timestamp - prev_timestamp <= \
conf.api.rms_server.cache_seconds:
return prev_resp
headers = {
'content-type': 'application/json',
}
rms_server_url = '%s%s/%s' % (
conf.api.rms_server.base, conf.api.rms_server.groups, group_name)
resp = requests.get(rms_server_url, headers=headers).json()
prev_resp = resp
prev_group_name = group_name
prev_timestamp = timestamp
return resp
except Exception as e:
logger.log_exception('Failed in get_rms_region_group', e)
return None
return 200

View File

@ -1,116 +0,0 @@
import pprint
import time
import requests
from audit_client.api import audit
from orm.common.orm_common.logger import get_logger
from pecan import conf
logger = get_logger(__name__)
conf = None
def set_utils_conf(_conf):
global conf
conf = _conf
def _check_conf_initialization():
if not conf:
raise AssertionError(
'Configurations wasnt initiated, please run set_utils_conf and '
'pass pecan coniguration')
def make_uuid():
""" function to request new uuid from uuid_generator rest service
returns uuid string
"""
_check_conf_initialization()
url = conf.api.uuid_server.base + conf.api.uuid_server.uuids
try:
resp = requests.post(url)
except Exception as e:
logger.info('Failed in make_uuid:' + str(e))
raise Exception('Failed in make_uuid:' + str(e))
resp = resp.json()
return resp['uuid']
def make_transid():
""" function to request new uuid of transaction type from uuid_generator
rest service
returns uuid string
"""
_check_conf_initialization()
url = conf.api.uuid_server.base + conf.api.uuid_server.uuids
try:
resp = requests.post(url, data={'uuid_type': 'transaction'})
except Exception as e:
logger.info('Failed in make_transid:' + str(e))
raise Exception('Failed in make_transid:' + str(e))
resp = resp.json()
return resp['uuid']
audit_setup = False
def audit_trail(cmd, transaction_id, headers, resource_id, message):
""" function to send item to audit trail rest api
returns 200 for ok and None for error
"""
_check_conf_initialization()
global audit_setup, audit_server_url
if not audit_setup:
audit_server_url = '%s%s' % (conf.api.audit_server.base,
conf.api.audit_server.trans)
num_of_send_retries = 3
time_wait_between_retries = 1
audit.init(audit_server_url, num_of_send_retries,
time_wait_between_retries)
audit_setup = True
try:
timestamp = long(round(time.time() * 1000))
application_id = headers['X-RANGER-Client']
tracking_id = headers[
'X-RANGER-Tracking-Id'] if 'X-RANGER-Tracking-Id' in headers \
else transaction_id
# transaction_id is function argument
transaction_type = cmd
# resource_id is function argument
service_name = conf.server.name
user_id = headers[
'X-RANGER-Requester'] if 'X-RANGER-Requester' in headers else 'NA'
external_id = 'NA'
event_details = 'CMS'
status = message
audit.audit(timestamp, application_id, tracking_id, transaction_id,
transaction_type,
resource_id, service_name, user_id, external_id,
event_details, status)
except Exception as e:
logger.log_exception('Failed in audit service', e)
return None
return 200
def report_config(conf, dump_to_log=False, my_logger=None):
""" return the configuration (which is set by config.py) as a string
"""
ret = pprint.pformat(conf.to_dict(), indent=4)
effective_logger = my_logger if my_logger else logger
if dump_to_log:
effective_logger.info('Current Configuration:\n' + ret)
return ret

View File

@ -2,7 +2,7 @@
import logging
from orm.services.id_generator.uuidgen.external_mock.orm_common.utils import utils
from orm.common.orm_common.utils import utils
from pecan import conf, rest
from wsmeext.pecan import wsexpose

View File

@ -1,13 +0,0 @@
"""Utils module mock."""
def report_config(conf, dump=False):
"""Mock report_config function."""
pass
def set_utils_conf(conf):
"""Mock set_utils_conf function."""
pass

Some files were not shown because too many files have changed in this diff Show More