fixed complex strings
This commit is contained in:
@@ -19,6 +19,15 @@ from app.models import (
|
||||
VariantProperty,
|
||||
VedomostRow,
|
||||
)
|
||||
from app.services.project_settings import (
|
||||
get_column_mappings_list,
|
||||
get_project_params_map,
|
||||
get_simple_list_settings,
|
||||
resolve_decimal_and_board,
|
||||
resolve_param_value,
|
||||
resolve_where_used,
|
||||
vedomost_column_map,
|
||||
)
|
||||
from app.services.table_generators import (
|
||||
TABLE_TYPES,
|
||||
ComponentView,
|
||||
@@ -165,16 +174,23 @@ def generate_table(
|
||||
|
||||
mappings = _mappings_dict(db, project.id)
|
||||
components = load_components_for_variant(db, project)
|
||||
col_mappings = get_column_mappings_list(db, project.id, table_type)
|
||||
|
||||
if table_type == "perechen":
|
||||
rows = generate_perechen(components, name_field=name_field or "Name", mappings=mappings)
|
||||
nf = name_field or (col_mappings[0] if col_mappings else "Name") or "Name"
|
||||
rows = generate_perechen(components, name_field=nf, mappings=mappings)
|
||||
elif table_type == "specification_pcb":
|
||||
dec, board = resolve_decimal_and_board(
|
||||
db, project.id, project.decimal_number, project.board_name, table_type
|
||||
)
|
||||
name_prop = col_mappings[1] if len(col_mappings) > 1 and col_mappings[1] else "ManufacturerPartNumber"
|
||||
rows = generate_specification_pcb(
|
||||
components,
|
||||
decimal_number=project.decimal_number,
|
||||
board_name=project.board_name,
|
||||
decimal_number=dec,
|
||||
board_name=board,
|
||||
pcb_doc_name=project.pcb_doc_name or "",
|
||||
mappings=mappings,
|
||||
name_field=name_prop,
|
||||
)
|
||||
elif table_type == "specification":
|
||||
materials: list[MaterialView] = []
|
||||
@@ -191,22 +207,35 @@ def generate_table(
|
||||
layer_number=m.layer_number,
|
||||
)
|
||||
)
|
||||
rows = generate_specification(materials, layer_count=layer_count, decimal_number=project.decimal_number)
|
||||
dec, _ = resolve_decimal_and_board(
|
||||
db, project.id, project.decimal_number, project.board_name, table_type
|
||||
)
|
||||
rows = generate_specification(materials, layer_count=layer_count, decimal_number=dec)
|
||||
elif table_type == "vedomost":
|
||||
inscriptions = {
|
||||
i.field_number: i.field_value
|
||||
for i in db.scalars(
|
||||
select(TitleInscription).where(TitleInscription.project_id == project.id)
|
||||
).all()
|
||||
}
|
||||
where_used = inscriptions.get(101) or inscriptions.get(1001) or project.decimal_number
|
||||
rows = generate_vedomost(components, where_used=where_used, mappings=mappings)
|
||||
params = get_project_params_map(db, project.id)
|
||||
where_used = resolve_where_used(db, project.id, col_mappings)
|
||||
if not where_used:
|
||||
inscriptions = {
|
||||
i.field_number: i.field_value
|
||||
for i in db.scalars(
|
||||
select(TitleInscription).where(TitleInscription.project_id == project.id)
|
||||
).all()
|
||||
}
|
||||
raw = inscriptions.get(101) or inscriptions.get(1001) or project.decimal_number or ""
|
||||
where_used = resolve_param_value(raw, params)
|
||||
rows = generate_vedomost(
|
||||
components,
|
||||
where_used=where_used,
|
||||
mappings=mappings,
|
||||
column_mappings=vedomost_column_map(col_mappings),
|
||||
)
|
||||
else:
|
||||
sl = get_simple_list_settings(db, project.id)
|
||||
rows = generate_simple_list(
|
||||
components,
|
||||
name_field=name_field or "Name",
|
||||
tech_reserve_percent=tech_reserve_percent if tech_reserve_percent is not None else 10.0,
|
||||
boards_count=boards_count if boards_count is not None else 1,
|
||||
name_field=name_field or sl["name_field"],
|
||||
tech_reserve_percent=tech_reserve_percent if tech_reserve_percent is not None else sl["tech_reserve_percent"],
|
||||
boards_count=boards_count if boards_count is not None else sl["boards_count"],
|
||||
)
|
||||
|
||||
return replace_rows(db, project.id, table_type, rows)
|
||||
|
||||
Reference in New Issue
Block a user