akshay33 commited on
Commit
70773ec
·
verified ·
1 Parent(s): fe01032

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -12
app.py CHANGED
@@ -3,7 +3,7 @@ import pandas as pd
3
  import io
4
 
5
  def extract_contacts(accounts_file, contacts_file, selected_status, selected_sites, contact_type):
6
- # Read CSVs
7
  final_accounts = pd.read_csv(accounts_file.name)
8
  final_contacts = pd.read_csv(contacts_file.name)
9
 
@@ -13,7 +13,7 @@ def extract_contacts(accounts_file, contacts_file, selected_status, selected_sit
13
  (final_accounts['SITE'].isin(selected_sites))
14
  ]
15
 
16
- # Filter contacts
17
  filtered_contacts = final_contacts[
18
  (final_contacts['STATUS'].str.upper() == contact_type.upper()) &
19
  (final_contacts['ACCOUNT_NAME'].isin(filtered_accounts['ACCOUNT_NAME']))
@@ -30,15 +30,16 @@ def extract_contacts(accounts_file, contacts_file, selected_status, selected_sit
30
  'SF_IDS': [sfids if sfids else f"No {contact_type} IDs"]
31
  })
32
 
33
- # Create CSV for download
34
  csv_buffer = io.StringIO()
35
  df_out.to_csv(csv_buffer, index=False)
36
  csv_bytes = csv_buffer.getvalue().encode()
37
 
38
  return df_out, csv_bytes
39
 
 
40
  with gr.Blocks() as demo:
41
- gr.Markdown("# Contact Extractor (Upload & Filter)")
42
 
43
  with gr.Row():
44
  accounts_file = gr.File(label="Upload Accounts CSV", file_types=[".csv"])
@@ -49,24 +50,28 @@ with gr.Blocks() as demo:
49
  contact_type = gr.Radio(["Active", "Inactive"], label="Contact Type")
50
 
51
  submit_btn = gr.Button("Extract Contacts")
52
-
53
- output_table = gr.Dataframe()
54
  download_csv = gr.File(label="Download CSV")
55
 
56
- # Populate filters after file upload
57
  def populate_filters(accounts_file):
58
  df = pd.read_csv(accounts_file.name)
59
  return list(df['OVERALL_STATUS'].unique()), list(df['SITE'].unique())
60
 
61
- accounts_file.change(populate_filters,
62
- inputs=accounts_file,
63
- outputs=[status_dropdown, site_dropdown])
 
 
64
 
65
- # Run extraction
66
  submit_btn.click(
67
  extract_contacts,
68
  inputs=[accounts_file, contacts_file, status_dropdown, site_dropdown, contact_type],
69
  outputs=[output_table, download_csv]
70
  )
71
 
72
- demo.launch()
 
 
 
3
  import io
4
 
5
  def extract_contacts(accounts_file, contacts_file, selected_status, selected_sites, contact_type):
6
+ # Read CSVs from uploaded files
7
  final_accounts = pd.read_csv(accounts_file.name)
8
  final_contacts = pd.read_csv(contacts_file.name)
9
 
 
13
  (final_accounts['SITE'].isin(selected_sites))
14
  ]
15
 
16
+ # Filter contacts based on status and account match
17
  filtered_contacts = final_contacts[
18
  (final_contacts['STATUS'].str.upper() == contact_type.upper()) &
19
  (final_contacts['ACCOUNT_NAME'].isin(filtered_accounts['ACCOUNT_NAME']))
 
30
  'SF_IDS': [sfids if sfids else f"No {contact_type} IDs"]
31
  })
32
 
33
+ # Convert to CSV for download
34
  csv_buffer = io.StringIO()
35
  df_out.to_csv(csv_buffer, index=False)
36
  csv_bytes = csv_buffer.getvalue().encode()
37
 
38
  return df_out, csv_bytes
39
 
40
+ # Build Gradio UI with Blocks
41
  with gr.Blocks() as demo:
42
+ gr.Markdown("# 🗂️ Contact Extractor - Upload, Filter, Download")
43
 
44
  with gr.Row():
45
  accounts_file = gr.File(label="Upload Accounts CSV", file_types=[".csv"])
 
50
  contact_type = gr.Radio(["Active", "Inactive"], label="Contact Type")
51
 
52
  submit_btn = gr.Button("Extract Contacts")
53
+
54
+ output_table = gr.Dataframe(label="Filtered Contact Data")
55
  download_csv = gr.File(label="Download CSV")
56
 
57
+ # Populate filter options after accounts file upload
58
  def populate_filters(accounts_file):
59
  df = pd.read_csv(accounts_file.name)
60
  return list(df['OVERALL_STATUS'].unique()), list(df['SITE'].unique())
61
 
62
+ accounts_file.change(
63
+ populate_filters,
64
+ inputs=accounts_file,
65
+ outputs=[status_dropdown, site_dropdown]
66
+ )
67
 
68
+ # On button click, run extract_contacts
69
  submit_btn.click(
70
  extract_contacts,
71
  inputs=[accounts_file, contacts_file, status_dropdown, site_dropdown, contact_type],
72
  outputs=[output_table, download_csv]
73
  )
74
 
75
+ # Launch with public link if local run
76
+ if __name__ == "__main__":
77
+ demo.launch(share=True)