c11_jobs.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import json
  2. import csv
  3. import config
  4. def get_converted_jobs(cfg: config.Config):
  5. with open(cfg.cognos11.reports_file, "r") as frh:
  6. reports = json.load(frh)
  7. report_id_to_name = dict([(r["id"], r["name"]) for r in reports])
  8. with open(cfg.cognos11.jobs_file, "r") as frh:
  9. data = json.load(frh)
  10. result = []
  11. for job in data:
  12. print(job["name"])
  13. for step in job["details"]["steps"]:
  14. res = {}
  15. res["job_name"] = job["name"]
  16. res["to_address"] = ",".join(
  17. [opt["value"] for opt in step["options"] if opt["name"] == "toAddress"][
  18. 0
  19. ]
  20. )
  21. res["params"] = {}
  22. if step["parameters"]:
  23. res["params"] = dict(
  24. [
  25. (opt["name"], opt["value"][0]["display"])
  26. for opt in step["parameters"]
  27. if len(opt["value"]) > 0
  28. ]
  29. )
  30. res["report_name"] = report_id_to_name[step["report_id"]]
  31. res["subject"] = [
  32. opt["value"] for opt in step["options"] if opt["name"] == "subject"
  33. ][0]
  34. print(" " + res["report_name"])
  35. # print(" " + ",\n ".join(res["to_address"]))
  36. # print(" ", res["params"])
  37. result.append(res)
  38. if len(result) == 0:
  39. return
  40. with open(
  41. cfg.cognos11.config_dir + "/c11_jobs.csv", "w", encoding="latin-1", newline=""
  42. ) as fwh:
  43. csv_writer = csv.writer(fwh, delimiter=";")
  44. csv_writer.writerow(result[0].keys())
  45. for row in result:
  46. csv_writer.writerow(row.values())
  47. with open(
  48. cfg.cognos11.config_dir + "/converted.template.csv",
  49. "w",
  50. encoding="latin-1",
  51. newline="",
  52. ) as fwh:
  53. csv_writer = csv.writer(fwh, delimiter=";")
  54. csv_writer.writerow(["Report", "Empfaenger"])
  55. for row in result:
  56. suffix = (
  57. "_Summe"
  58. if len(row["params"].values()) == 0
  59. else list(row["params"].values())[0]
  60. )
  61. filename = f'{row["job_name"]}\\{row["report_name"]}_{suffix}.pdf'
  62. csv_writer.writerow([filename, row["to_address"].lower()])