GoogleCalc commited on
Commit
98e2408
·
verified ·
1 Parent(s): 0ef2aae

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +77 -9
app.py CHANGED
@@ -440,6 +440,25 @@ def init_db():
440
  )
441
  """)
442
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  conn.commit()
444
  conn.close()
445
  print(f"✅ Database initialized at: {DB_PATH}")
@@ -525,26 +544,75 @@ def save_calculation(email, country, currency, breed, birds, weeks, days, total_
525
 
526
 
527
  def track_visit(request: gr.Request):
528
- """Track page visit."""
529
  try:
530
- client_ip = request.client.host if request and hasattr(request, 'client') else "unknown"
531
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  conn = sqlite3.connect(DB_PATH)
533
  cur = conn.cursor()
534
-
535
  cur.execute("""
536
- INSERT INTO analytics (visit_date, ip, country, action, created_at)
537
- VALUES (?, ?, ?, ?, ?)
 
 
 
 
 
 
 
 
 
 
 
 
538
  """, (
539
  datetime.now().strftime("%Y-%m-%d"),
540
  client_ip,
541
- detect_country_from_env() or "NG",
542
  "page_visit",
543
- datetime.now().isoformat()
 
 
 
 
 
 
544
  ))
545
-
546
  conn.commit()
547
  conn.close()
 
548
  except Exception as e:
549
  print(f"Analytics error: {e}")
550
 
 
440
  )
441
  """)
442
 
443
+ # Backward-compatible analytics migration
444
+ analytics_columns = {
445
+ "referrer": "TEXT",
446
+ "utm_source": "TEXT",
447
+ "utm_medium": "TEXT",
448
+ "utm_campaign": "TEXT",
449
+ "utm_content": "TEXT",
450
+ "utm_term": "TEXT",
451
+ }
452
+
453
+ cur.execute("PRAGMA table_info(analytics)")
454
+ existing_columns = {row[1] for row in cur.fetchall()}
455
+
456
+ for column, column_type in analytics_columns.items():
457
+ if column not in existing_columns:
458
+ cur.execute(
459
+ f"ALTER TABLE analytics ADD COLUMN {column} {column_type}"
460
+ )
461
+
462
  conn.commit()
463
  conn.close()
464
  print(f"✅ Database initialized at: {DB_PATH}")
 
544
 
545
 
546
  def track_visit(request: gr.Request):
547
+ """Track page visit, country, referrer and UTM campaign data."""
548
  try:
549
+ client_ip = (
550
+ request.client.host
551
+ if request and hasattr(request, "client")
552
+ else "unknown"
553
+ )
554
+
555
+ headers = request.headers if request and hasattr(request, "headers") else {}
556
+
557
+ # Referrer
558
+ referrer = (
559
+ headers.get("referer")
560
+ or headers.get("referrer")
561
+ or ""
562
+ )
563
+
564
+ # UTM parameters
565
+ query_params = {}
566
+
567
+ if request and hasattr(request, "query_params"):
568
+ try:
569
+ query_params = dict(request.query_params)
570
+ except Exception:
571
+ query_params = {}
572
+
573
+ utm_source = query_params.get("utm_source", "")
574
+ utm_medium = query_params.get("utm_medium", "")
575
+ utm_campaign = query_params.get("utm_campaign", "")
576
+ utm_content = query_params.get("utm_content", "")
577
+ utm_term = query_params.get("utm_term", "")
578
+
579
+ country = detect_country_from_env() or "NG"
580
+
581
  conn = sqlite3.connect(DB_PATH)
582
  cur = conn.cursor()
583
+
584
  cur.execute("""
585
+ INSERT INTO analytics (
586
+ visit_date,
587
+ ip,
588
+ country,
589
+ action,
590
+ created_at,
591
+ referrer,
592
+ utm_source,
593
+ utm_medium,
594
+ utm_campaign,
595
+ utm_content,
596
+ utm_term
597
+ )
598
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
599
  """, (
600
  datetime.now().strftime("%Y-%m-%d"),
601
  client_ip,
602
+ country,
603
  "page_visit",
604
+ datetime.now(timezone.utc).isoformat(),
605
+ referrer,
606
+ utm_source,
607
+ utm_medium,
608
+ utm_campaign,
609
+ utm_content,
610
+ utm_term,
611
  ))
612
+
613
  conn.commit()
614
  conn.close()
615
+
616
  except Exception as e:
617
  print(f"Analytics error: {e}")
618