convert.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import numpy as np
  2. import pandas as pd
  3. from datetime import datetime
  4. filter = 8
  5. project_id = 9
  6. first_seller_id = 1
  7. submission_header = ['sub_field_id', 'submission_id', 'field_id', 'form_id', 'value']
  8. fields_header = ['field_id', 'form_id', 'page_no', 'field_label', 'field_type',
  9. 'field_value', 'field_order', 'field_show_on_user_page', 'is_field_primary',
  10. 'field_is_editable', 'field_options', 'is_deletion_allowed']
  11. def multi_select(entry):
  12. if entry is np.nan:
  13. return ''
  14. entries = entry.split(':', 2)[-1][1:-1].split(';')
  15. return ','.join([e.split(':')[-1][1:-1] for e in entries if not e.startswith('i')])
  16. submission_df = pd.read_csv('sandbox/flohmarkt/qCBshrQfrm_submission_fields.csv',
  17. names=submission_header, index_col=['sub_field_id'])
  18. fields_df = pd.read_csv('sandbox/flohmarkt/qCBshrQfrm_fields.csv',
  19. names=fields_header, index_col=['field_id'])
  20. # print(fields_df.head())
  21. submission_df = submission_df[submission_df['form_id'] == filter]
  22. submission_df = pd.merge(submission_df, fields_df, how='left', on=['field_id'])
  23. # print(submission_df.head())
  24. submission_df = submission_df.pivot(index='submission_id', columns=['field_label'], values='value')
  25. # submission_df.columns = [108,109,110,111,113,114,115,117,118,120,121,122,123,125,126,128,129]
  26. submission_df['Artikel'] = submission_df['Artikel'].apply(multi_select)
  27. submission_df['Mithilfe'] = submission_df['Mithilfe'].apply(multi_select)
  28. submission_df['Freiwillige Mithilfe'] = submission_df['Freiwillige Mithilfe'].apply(multi_select)
  29. submission_df['PayPal'] = submission_df['PayPal'].apply(multi_select)
  30. fields_df = fields_df[(fields_df['form_id'] == filter) & (fields_df['field_label'] != 'Divider')]
  31. labels = fields_df['field_label'].to_dict().values()
  32. submission_df.drop_duplicates(inplace=True)
  33. submission_df[labels].to_csv(f'sandbox/flohmarkt/submission_{filter}.csv')
  34. submission_df[['E-Mail-Adresse', 'Nachname', 'Vorname']].to_csv(f'sandbox/flohmarkt/newsletter_{filter}.csv', index=False, sep=';')
  35. # with open(f'sandbox/flohmarkt/emails_{filter}.txt', 'w') as fwh:
  36. # fwh.write(';'.join(emails))
  37. submission_df.sort_values(by=['Nachname', 'Vorname'], ignore_index=True, inplace=True)
  38. submission_df.reset_index(inplace=True)
  39. submission_df['project_id'] = project_id
  40. submission_df['seller_id'] = submission_df.index + first_seller_id
  41. submission_df['cdate'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  42. export_fields = ['project_id', 'seller_id', 'Nachname', 'Vorname', 'Adresse', 'PLZ', 'Wohnort', 'E-Mail-Adresse', 'Telefon', 'cdate', 'cdate']
  43. submission_df[export_fields].to_csv(f'sandbox/flohmarkt/upload_{filter}.csv', header=False, index=False)
  44. # project_id seller_id name first_name address zip_code place mail phone mdate cdate
  45. # 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"";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"";}