# Copyright (C) 2015 Chintalagiri Shashank
#
# This file is part of Tendril.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
This file is part of tendril
See the COPYING, README, and INSTALL files for more information
"""
from flask import render_template, request
from flask_user import login_required
import iec60063
from . import conventions as blueprint
from tendril.conventions import electronics
from tendril.conventions import motifs
from tendril.inventory import guidelines
from tendril.utils.fsutils import get_path_breadcrumbs
[docs]def get_motifs():
return motifs.get_motifs_list()
[docs]def get_motif_render(motifname):
return motifs.create_motif_object(motifname + '.1').get_configdict_stub()
[docs]def get_iec60063_params():
stype = request.args.get('type')
if stype and not stype.strip():
stype = None
series = request.args.get('series')
if series and not series.strip():
series = None
start = request.args.get('start')
try:
if not start.strip():
start = None
except AttributeError:
start = None
end = request.args.get('end')
try:
if not end.strip():
end = None
except AttributeError:
end = None
if series is None:
series = 'E24'
if stype is None:
stype = ''
return get_iec60063_contextpart(stype, series, start, end)
[docs]def get_iec60063_contextpart(stype, series, start=None, end=None):
return {"iec60063vals": [i for i in iec60063.gen_vals(iec60063.get_series(series), # noqa
iec60063.get_ostr(stype), # noqa
start, end)],
"iec60063stype": stype,
"iec60063series": series,
"iec60063start": start,
"iec60063end": end,
}
@blueprint.route('/motif/<path:motifname>/')
@login_required
[docs]def motif_description(motifname=None):
stage = {'crumbroot': "/conventions",
'motifname': motifname,
'motif': get_motif_render(motifname),
'breadcrumbs': get_path_breadcrumbs(motifname, rootst="Conventions / Motifs")} # noqa
return render_template('motif.html', stage=stage,
pagetitle='MOTIF ' + motifname)
[docs]def get_devices():
rval = []
for device, desc in electronics.DEVICE_CLASSES_DOC:
rval.append((device,
electronics.fpiswire(device),
electronics.fpismodlen(device),
electronics.no_fp(device),
desc))
return rval
@blueprint.route('/', methods=['GET'])
@login_required
[docs]def main():
stage = {'motifs': get_motifs(),
'devices': get_devices(),
'guidelines': guidelines.electronics_qty.get_guideline_table()}
if request.method == 'GET':
stage.update(get_iec60063_params())
return render_template('conventions_main.html', stage=stage,
pagetitle='Conventions')