convert.py 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import numpy as np
  2. import pandas as pd
  3. from datetime import datetime
  4. filter = 9
  5. project_id = 10
  6. first_seller_id = 1
  7. submission_header = ["sub_field_id", "submission_id", "field_id", "form_id", "value"]
  8. fields_header = [
  9. "field_id",
  10. "form_id",
  11. "page_no",
  12. "field_label",
  13. "field_type",
  14. "field_value",
  15. "field_order",
  16. "field_show_on_user_page",
  17. "is_field_primary",
  18. "field_is_editable",
  19. "field_options",
  20. "is_deletion_allowed",
  21. ]
  22. def multi_select(entry):
  23. if entry is np.nan:
  24. return ""
  25. entries = entry.split(":", 2)[-1][1:-1].split(";")
  26. return ",".join([e.split(":")[-1][1:-1] for e in entries if not e.startswith("i")])
  27. submission_df = pd.read_csv(
  28. "sandbox/flohmarkt/qCBshrQfrm_submission_fields.csv",
  29. names=submission_header,
  30. index_col=["sub_field_id"],
  31. )
  32. fields_df = pd.read_csv(
  33. "sandbox/flohmarkt/qCBshrQfrm_fields.csv",
  34. names=fields_header,
  35. index_col=["field_id"],
  36. )
  37. # print(fields_df.head())
  38. submission_df = submission_df[submission_df["form_id"] == filter]
  39. submission_df = pd.merge(submission_df, fields_df, how="left", on=["field_id"])
  40. # print(submission_df.head())
  41. submission_df = submission_df.pivot(
  42. index="submission_id", columns=["field_label"], values="value"
  43. )
  44. # submission_df.columns = [108,109,110,111,113,114,115,117,118,120,121,122,123,125,126,128,129]
  45. submission_df["Artikel"] = submission_df["Artikel"].apply(multi_select)
  46. submission_df["Mithilfe"] = submission_df["Mithilfe"].apply(multi_select)
  47. submission_df["Freiwillige Mithilfe"] = submission_df["Freiwillige Mithilfe"].apply(
  48. multi_select
  49. )
  50. submission_df["PayPal"] = submission_df["PayPal"].apply(multi_select)
  51. fields_df = fields_df[
  52. (fields_df["form_id"] == filter) & (fields_df["field_label"] != "Divider")
  53. ]
  54. labels = fields_df["field_label"].to_dict().values()
  55. submission_df.drop_duplicates(inplace=True)
  56. submission_df[labels].to_csv(f"sandbox/flohmarkt/submission_{filter}.csv")
  57. submission_df[["E-Mail-Adresse", "Nachname", "Vorname"]].to_csv(
  58. f"sandbox/flohmarkt/newsletter_{filter}.csv", index=False, sep=";"
  59. )
  60. # with open(f'sandbox/flohmarkt/emails_{filter}.txt', 'w') as fwh:
  61. # fwh.write(';'.join(emails))
  62. submission_df.sort_values(by=["Nachname", "Vorname"], ignore_index=True, inplace=True)
  63. submission_df.reset_index(inplace=True)
  64. submission_df["project_id"] = project_id
  65. submission_df["seller_id"] = submission_df.index + first_seller_id
  66. submission_df["cdate"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  67. export_fields = [
  68. "project_id",
  69. "seller_id",
  70. "Nachname",
  71. "Vorname",
  72. "Adresse",
  73. "PLZ",
  74. "Wohnort",
  75. "E-Mail-Adresse",
  76. "Telefon",
  77. "cdate",
  78. "cdate",
  79. ]
  80. submission_df[export_fields].to_csv(
  81. f"sandbox/flohmarkt/upload_{filter}.csv", header=False, index=False
  82. )
  83. # project_id seller_id name first_name address zip_code place mail phone mdate cdate
  84. # a:8:{i:0;s:14:""Größen 50/56"";i:1;s:14:""Größen 62/68"";i:2;s:14:""Größen 74/80"";i:3;s:10:""Schlafsack"";
  85. # i:4;s:39:""Säuglingsbedarf (Flaschenwärmer etc.)"";i:5;s:9:""Spielzeug"";i:6;s:7:""Bücher"";i:7;s:15:""Winter-Fußsack"";}