__init__.py (2272B)
1 import os 2 from jinja2 import Environment, PackageLoader, select_autoescape 3 from openpyxl import Workbook 4 5 from partsdb import database as pdb 6 from partsdb import helpers 7 8 9 BASE_URL = "https://e1e0.net/partsdb" 10 11 db = pdb.PartsDB( 12 os.getenv("PARTSDB_FILE", f"{os.getenv('HOME')}/.local/share/partsdb/parts.db") 13 ) 14 15 16 def export_to_html(dest_folder): 17 env = Environment( 18 loader=PackageLoader("partsdb.exports", "templates"), 19 autoescape=select_autoescape(["html", "xml"]), 20 ) 21 categories = db.get_categories() 22 storages = db.get_storages() 23 helpers.html_main_index(dest_folder, categories, storages, env) 24 for s in categories: 25 parts = db.list_parts_by_category(s["name"]) 26 helpers.html_category_index(dest_folder, s, parts, env) 27 for s in storages: 28 parts = db.list_parts_by_storage(s["name"]) 29 helpers.html_storage_index(dest_folder, s, parts, env) 30 parts = db.list_parts() 31 for p in parts: 32 part = db.get_part(p["id"]) 33 history = db.get_part_history(p["id"]) 34 helpers.html_part(dest_folder, part, history, env) 35 image = db.get_image(p["id"]) 36 datasheet = db.get_datasheet(p["id"]) 37 helpers.html_attachments(dest_folder, p["id"], datasheet, image) 38 helpers.html_css(dest_folder, env) 39 helpers.html_aux_files(dest_folder) 40 41 42 def export_to_excel(dest_folder=".", storage_id=0): 43 if storage_id == 0: 44 storages = db.get_storages() 45 _create_excel(storages, "storage", f"{dest_folder}/storages.xlsx") 46 parts = db.list_parts() 47 part_filename = "parts_all" 48 else: 49 parts = db.list_parts_by_storage(storage_id) 50 part_filename = f"parts_sto_{storage_id}" 51 52 _create_excel(parts, "part", f"{dest_folder}/{part_filename}.xlsx") 53 54 55 def _create_excel(data, data_type, filename): 56 workbook = Workbook() 57 sheet = workbook.active 58 59 sheet["A1"] = "PN/ID" 60 sheet["B1"] = "Name" 61 sheet["C1"] = "URL" 62 a = 2 63 64 for d in data: 65 url = f"{BASE_URL}/{data_type}_{d[0]}.html" 66 name = d[1] 67 sheet.cell(row=a, column=1).value = f"{d[0]:04X}" 68 sheet.cell(row=a, column=2).value = name 69 sheet.cell(row=a, column=3).value = url 70 a += 1 71 72 workbook.save(filename=filename)