import os import django import logging from pathlib import Path # Setup Django environment os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.develop') django.setup() from django.core.cache import cache from city_detection_ip import get_location_by_coordinates, SPECIAL_COORDINATES def test_flow(lat, lon): print(f"\n{'='*60}") print(f"DEBUGGING REVERSE GEOFLOW FOR: ({lat}, {lon})") print(f"{'='*60}") # Step 1: Special Coordinates Check print("\n[STEP 1] Checking Special Coordinates...") is_special = False for s_lat, s_lon in SPECIAL_COORDINATES: if abs(lat - s_lat) < 0.001 and abs(lon - s_lon) < 0.001: print(f" MATCH FOUND! Coordinate ({lat}, {lon}) is a static placeholder.") print(" Logic should skip DB lookup and use IP Detection instead.") is_special = True break if not is_special: print(" ✅ Not a special coordinate. Proceeding to cache.") # Step 2: Cache Check print("\n[STEP 2] Checking Cache...") cache_key = f'geo_{round(lat, 2)}_{round(lon, 2)}' cached_result = cache.get(cache_key) if cached_result: print(f" ✅ CACHE HIT! key: {cache_key}") print(f" Result: {cached_result}") else: print(f" ❌ CACHE MISS. key: {cache_key}. Proceeding to Database.") # Step 3: Application Logic Execution print("\n[STEP 3] Executing Application Logic (city_detection_ip.py)...") # Note: ensure logging is at INFO level to see app's internal logs logging.getLogger('city_detection_ip').setLevel(logging.INFO) result = get_location_by_coordinates(lat, lon) print("\n[STEP 4] Final Result:") if result: print(f" SUCCESS: {result.get('city')}, {result.get('countryCode')}") else: print(" FAILED: No location found.") print(f"{'='*60}\n") if __name__ == "__main__": import sys if len(sys.argv) == 3: try: l1, l2 = float(sys.argv[1]), float(sys.argv[2]) test_flow(l1, l2) except ValueError: print("Please provide valid numbers for lat and lon.") else: # Default test (Karbaba coordinates) test_flow(32.616, 44.034)