cleanup_comments.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from datetime import timedelta, date
  2. from db import get_session
  3. import re
  4. from sqlalchemy import text
  5. def main():
  6. db = next(get_session())
  7. q = db.execute(text("SELECT * FROM dbo.Forderungen_Kommentar_Rohdaten"))
  8. for row in q.fetchall():
  9. for i, r in enumerate(row.Kommentar.split("\n"), 1):
  10. comment_date = row.Timestamp + timedelta(minutes=i)
  11. comment_user = row.Benutzer_ID
  12. r = r.replace("'", "")
  13. d, u = get_date_and_user_from_comment(r)
  14. db.execute(
  15. text(
  16. "INSERT INTO dbo.Forderungen_Kommentar "
  17. f"VALUES ('{row.Client_DB}', '{row.Beleg_Nr}', '{comment_date}', '{comment_user}', '{r}')"
  18. )
  19. )
  20. db.commit()
  21. def get_date_and_user_from_comment(r: str) -> tuple[date, str]:
  22. m = re.search(r"(\d\d\.\d\d?)\.?[\/\s](\w+)", r)
  23. if m:
  24. date_split = m[1].split(".")
  25. return date(2026, date_split[1], date_split[0]), m[2]
  26. if r.startswith("EWB"):
  27. return None, "mde"
  28. az = re.search(r"^AZ\:?\s(\d+\/\d+)", r)
  29. if az:
  30. return None, "mde"
  31. return None, "mde"
  32. if __name__ == "__main__":
  33. main()