Project
Function
Sample CLI
gway web.site view-awg-finder
References
['awg', 'awg.find_cable']
Full Code
def view_awg_finder(
*args, meters=None, amps="40", volts="220", material="cu",
max_lines="3", phases="1", conduit=None, neutral="0", **kwargs
):
"""Page builder for AWG cable finder with HTML form and result."""
if not meters:
return '''
<h1>AWG Cable Finder</h1>
<p>Warning: This calculator may not be applicable to your use case. It may be completely wrong.
Consult a LOCAL certified electrician before making real-life cable sizing decisions.</p>
<form method="post">
<label>Meters: <input type="number" name="meters" required min="1" /></label><br/>
<label>Amps: <input type="number" name="amps" value="40" /></label><br/>
<label>Volts: <input type="number" name="volts" value="220" /></label><br/>
<label>Material:
<select name="material">
<option value="cu">Copper (cu)</option>
<option value="al">Aluminum (al)</option>
<option value="?">Don't know</option>
</select>
</label><br/>
<label>Max Lines: <input type="number" name="max_lines" value="3" /></label><br/>
<label>Phases:
<select name="phases">
<option value="1">Single Phase (1)</option>
<option value="3">Three Phase (3)</option>
</select>
</label><br/>
<label>Neutral (0 or 1): <input type="number" name="neutral" value="0" /></label><br/>
<label>Conduit (emt/true/blank): <input name="conduit" /></label><br/><br/>
<button type="submit" class="submit">Find Cable</button>
</form>
'''
try:
result = gw.awg.find_cable(
meters=meters, amps=amps, volts=volts,
material=material, max_lines=max_lines,
phases=phases, conduit=conduit, neutral=neutral
)
except Exception as e:
return f"<p class='error'>Error: {e}</p><p><a href='/awg-finder'>Try again</a></p>"
return f"""
<h1>Recommended Cable</h1>
<ul>
<li><strong>AWG Size:</strong> {result['awg']}</li>
<li><strong>Lines:</strong> {result['lines']}</li>
<li><strong>Total Cables:</strong> {result['cables']}</li>
<li><strong>Total Length (m):</strong> {result['cable_m']}</li>
<li><strong>Voltage Drop:</strong> {result['vdrop']:.2f} V ({result['vdperc']:.2f}%)</li>
<li><strong>Voltage at End:</strong> {result['vend']:.2f} V</li>
{f"<li><strong>Conduit:</strong> {result['conduit']} ({result['pipe_in']})</li>" if 'conduit' in result else ""}
</ul>
<p><a href="/awg-finder">Calculate again</a></p>
"""