Update
This commit is contained in:
+85
@@ -6200,6 +6200,91 @@ def software_installations_page(request: Request, db: Session = Depends(get_db))
|
||||
return response
|
||||
|
||||
|
||||
@app.get("/software/installations/export.xlsx")
|
||||
def software_installations_export_excel(request: Request, db: Session = Depends(get_db)):
|
||||
_require_admin(request)
|
||||
language_code = _request_language(request)
|
||||
software_entries = _software_installation_rows(db)
|
||||
|
||||
headers = [
|
||||
translate(db, language_code, "common.assets", "Assets"),
|
||||
translate(db, language_code, "common.name", "Name"),
|
||||
translate(db, language_code, "about.version", "Version"),
|
||||
translate(db, language_code, "software.publisher", "Publisher"),
|
||||
translate(db, language_code, "software.architecture", "Architecture"),
|
||||
translate(db, language_code, "software.platform", "Platform"),
|
||||
translate(db, language_code, "software.install_date", "Installation date"),
|
||||
translate(db, language_code, "software.last_seen", "Last seen"),
|
||||
]
|
||||
|
||||
rows = []
|
||||
for entry in software_entries:
|
||||
platform = str(entry.platform or "unknown")
|
||||
rows.append([
|
||||
entry.asset_name or "",
|
||||
entry.name or "",
|
||||
entry.version or "",
|
||||
entry.publisher or "",
|
||||
entry.architecture or "",
|
||||
translate(db, language_code, f"software.platform.{platform}", platform),
|
||||
entry.install_date or "",
|
||||
entry.last_seen_at or "",
|
||||
])
|
||||
|
||||
return _xlsx_response(
|
||||
"assetmanager-software-installations.xlsx",
|
||||
headers,
|
||||
rows,
|
||||
)
|
||||
|
||||
|
||||
@app.get("/software/summary/export.xlsx")
|
||||
def software_summary_export_excel(request: Request, db: Session = Depends(get_db)):
|
||||
_require_admin(request)
|
||||
language_code = _request_language(request)
|
||||
allowed_groupings = {"name_platform", "software", "version"}
|
||||
grouping = str(
|
||||
request.query_params.get("grouping")
|
||||
or request.session.get("software_summary_grouping")
|
||||
or "software"
|
||||
).strip().lower()
|
||||
if grouping not in allowed_groupings:
|
||||
grouping = "software"
|
||||
|
||||
software_summary = _software_summary_rows(db, grouping)
|
||||
|
||||
headers = [
|
||||
translate(db, language_code, "common.name", "Name"),
|
||||
translate(db, language_code, "software.publisher", "Publisher"),
|
||||
translate(db, language_code, "software.platform", "Platform"),
|
||||
translate(db, language_code, "software.versions", "Versions"),
|
||||
translate(db, language_code, "software.version_count", "Number of versions"),
|
||||
translate(db, language_code, "software.unique_asset_count", "Unique assets"),
|
||||
translate(db, language_code, "software.inventory_entry_count", "Inventory entries"),
|
||||
translate(db, language_code, "software.last_seen", "Last seen"),
|
||||
]
|
||||
|
||||
rows = []
|
||||
for row in software_summary:
|
||||
platform = str(row.get("platform") or "unknown")
|
||||
rows.append([
|
||||
row.get("name") or "",
|
||||
row.get("publisher") or "",
|
||||
translate(db, language_code, f"software.platform.{platform}", platform),
|
||||
row.get("versions") or "",
|
||||
row.get("version_count") or 0,
|
||||
row.get("asset_count") or 0,
|
||||
row.get("entries") or 0,
|
||||
row.get("last_seen_at") or "",
|
||||
])
|
||||
|
||||
return _xlsx_response(
|
||||
f"assetmanager-software-summary-{grouping}.xlsx",
|
||||
headers,
|
||||
rows,
|
||||
)
|
||||
|
||||
|
||||
@app.get("/software/summary")
|
||||
def software_summary_page(request: Request, db: Session = Depends(get_db)):
|
||||
_require_admin(request)
|
||||
|
||||
Reference in New Issue
Block a user