114 lines
6.4 KiB
Python
114 lines
6.4 KiB
Python
from flask import render_template
|
|
|
|
TEMPLATE = 'components/modul_graben.html'
|
|
|
|
def get_formular_html():
|
|
return render_template(TEMPLATE)
|
|
|
|
def berechne(form_data):
|
|
positionen = []
|
|
l = _float(form_data.get('laenge', 0))
|
|
b = _float(form_data.get('breite', 0))
|
|
t = _float(form_data.get('tiefe', 0))
|
|
asphalt = _float(form_data.get('asphaltstaerke', 0))
|
|
rest_l = _float(form_data.get('rest_laenge', 0))
|
|
rest_b = _float(form_data.get('rest_breite', 0))
|
|
anz_einz = _int(form_data.get('anz_einzeiler', 0))
|
|
lm_bre = _float(form_data.get('lm_bre', 0))
|
|
abschnitt = form_data.get('abschnitt', '')
|
|
bemerkung = form_data.get('bemerkung', '')
|
|
|
|
if l <= 0 or b <= 0 or t <= 0:
|
|
return positionen
|
|
|
|
vol = l * b * t / 100
|
|
|
|
# Mindertiefe
|
|
mind_lt = form_data.get('mind_langstrasse') == 'an'
|
|
mind_ftth = form_data.get('mind_ftth_ha') == 'an'
|
|
if mind_lt:
|
|
positionen.append({'pos_nr': '10037491', 'kurztext': 'Mindertiefe Längstrasse', 'menge': vol, 'einheit': 'M3', 'laenge': l, 'breite': b, 'tiefe': t, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
if mind_ftth:
|
|
positionen.append({'pos_nr': '10037492', 'kurztext': 'Mindertiefe FTTH Hausanschluss', 'menge': vol, 'einheit': 'M3', 'laenge': l, 'breite': b, 'tiefe': t, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
|
|
# Oberfläche - mehrere Checkboxen möglich
|
|
oberfl_checks = [
|
|
('ob_wiese', '10037463', 'Graben in Wiese herstellen'),
|
|
('ob_kies', '10037464', 'Graben in Kies herstellen'),
|
|
('ob_asphalt', '10037465', 'Graben in Asphalt herstellen'),
|
|
('ob_pflaster', '10037466', 'Graben in Pflaster herstellen'),
|
|
('ob_mosaik', '10037467', 'Graben in Mosaik herstellen'),
|
|
('ob_bodentausch', '10037468', 'Graben mit Bodentausch herstellen'),
|
|
('ob_fels', '10037469', 'Graben in Fels herstellen'),
|
|
('ob_winterbau', '10037470', 'Graben im Winterbau herstellen'),
|
|
('ob_gr_natur_pfl', '10037471', 'Graben in Groß/Natursteinpflaster herstellen'),
|
|
('ob_in_beton', '10037472', 'Graben in Beton Pflaster/Mosaik herstellen'),
|
|
]
|
|
for key, pnr, txt in oberfl_checks:
|
|
if form_data.get(key) == 'an':
|
|
positionen.append({'pos_nr': pnr, 'kurztext': txt, 'menge': vol, 'einheit': 'M3', 'laenge': l, 'breite': b, 'tiefe': t, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
|
|
# Asphalt durchtrennen
|
|
if asphalt > 0:
|
|
positionen.append({'pos_nr': '10037473', 'kurztext': 'Asphaltdecke durchtrennen', 'menge': l, 'einheit': 'M', 'laenge': l, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
|
|
# Reststreifen
|
|
if rest_l > 0 and rest_b > 0:
|
|
positionen.append({'pos_nr': '10037480', 'kurztext': 'Reststreifen herstellen', 'menge': rest_l * rest_b / 100, 'einheit': 'M3', 'laenge': rest_l, 'breite': rest_b, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
|
|
# Bord/Rinne/Einzeiler
|
|
bord = form_data.get('bord') == 'an'
|
|
kante = form_data.get('kante') == 'an'
|
|
rinne = form_data.get('rinne') == 'an'
|
|
liefern = form_data.get('liefern') == 'an'
|
|
if bord:
|
|
positionen.append({'pos_nr': '10037481', 'kurztext': 'Bordstein setzen', 'menge': l, 'einheit': 'M', 'laenge': l, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
if kante:
|
|
positionen.append({'pos_nr': '10037482', 'kurztext': 'Kantenstein setzen', 'menge': l, 'einheit': 'M', 'laenge': l, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
if rinne:
|
|
positionen.append({'pos_nr': '10037483', 'kurztext': 'Einzeiler/Rinne setzen', 'menge': l, 'einheit': 'M', 'laenge': l, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
if liefern and (bord or kante or rinne):
|
|
positionen.append({'pos_nr': '10037484', 'kurztext': 'Bord/Rinne/Einzeiler liefern', 'menge': anz_einz if anz_einz > 0 else 1, 'einheit': 'ST', 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
if anz_einz > 0:
|
|
positionen.append({'pos_nr': '10037485', 'kurztext': f'Einzeiler ({anz_einz} Stk)', 'menge': anz_einz, 'einheit': 'ST', 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
|
|
# Medien
|
|
medien_map = [
|
|
('cu_kabel', '10037450', f'6-100 DA CU-Kabel ({_int(form_data.get("anz_cu",0))} DA)', _int(form_data.get('anz_cu',0)), 'DA'),
|
|
('cu_kabel_gr', '10037451', f'> 100 DA CU-Kabel ({_int(form_data.get("anz_cu",0))} DA)', _int(form_data.get('anz_cu',0)), 'DA'),
|
|
('dn110', '10037452', f'DN110 ({_int(form_data.get("anz_dn110",0))} Stk)', _int(form_data.get('anz_dn110',0)), 'ST'),
|
|
('dn50_1', '10037453', f'1xDN50 ({_int(form_data.get("anz_dn50_1",0))} Stk)', _int(form_data.get('anz_dn50_1',0)), 'ST'),
|
|
('dn50_2', '10037454', f'2xDN50 ({_int(form_data.get("anz_dn50_2",0))} Stk)', _int(form_data.get('anz_dn50_2',0)), 'ST'),
|
|
('dn50_3', '10037455', f'3xDN50 ({_int(form_data.get("anz_dn50_3",0))} Stk)', _int(form_data.get('anz_dn50_3',0)), 'ST'),
|
|
('snrve_7x12', '10037456', f'SNRVe 7x12 ({_int(form_data.get("anz_snrve_7x12",0))} Stk)', _int(form_data.get('anz_snrve_7x12',0)), 'ST'),
|
|
('snrve_22x7', '10037457', f'SNRVe 22x7 ({_int(form_data.get("anz_snrve_22x7",0))} Stk)', _int(form_data.get('anz_snrve_22x7',0)), 'ST'),
|
|
('snrve_8x7', '10037458', f'SNRVe 8x7 ({_int(form_data.get("anz_snrve_8x7",0))} Stk)', _int(form_data.get('anz_snrve_8x7',0)), 'ST'),
|
|
('snrve_1x7', '10037459', f'SNRVe 1x7 ({_int(form_data.get("anz_snrve_1x7",0))} Stk)', _int(form_data.get('anz_snrve_1x7',0)), 'ST'),
|
|
]
|
|
for key, pnr, txt, menge, eh in medien_map:
|
|
if form_data.get(key) == 'an' and menge > 0:
|
|
positionen.append({'pos_nr': pnr, 'kurztext': txt, 'menge': menge, 'einheit': eh, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
|
|
# Trasse einmessen
|
|
if form_data.get('trasseeinmessen') == 'an':
|
|
positionen.append({'pos_nr': '10037486', 'kurztext': 'Trasse einmessen', 'menge': l, 'einheit': 'M', 'laenge': l, 'bemerkung': bemerkung, 'abschnitt': abschnitt})
|
|
|
|
# Stahlplatte
|
|
if form_data.get('stahlplatte') == 'an':
|
|
stahl_bem = form_data.get('stahlplatte_bemerk', '')
|
|
positionen.append({'pos_nr': '10037487', 'kurztext': 'Stahlplatte', 'menge': 1, 'einheit': 'ST', 'bemerkung': stahl_bem, 'abschnitt': abschnitt})
|
|
|
|
return positionen
|
|
|
|
def _float(val, default=0):
|
|
try:
|
|
return float(str(val).replace(',', '.'))
|
|
except (ValueError, TypeError):
|
|
return default
|
|
|
|
def _int(val, default=0):
|
|
try:
|
|
return int(float(str(val).replace(',', '.')))
|
|
except (ValueError, TypeError):
|
|
return default
|