# Add this to the end of app/contract_generator.py def test_with_real_jobs(): """Test contract generation with real jobs from your database""" from app import create_app from app.models import Job, User, Category app = create_app() with app.app_context(): # Get real jobs from your database jobs = Job.query.all() users = User.query.all() print(f"📊 Found {len(jobs)} jobs and {len(users)} users in database") if not jobs: print("❌ No jobs found! Create some test jobs first.") return if len(users) < 2: print("❌ Need at least 2 users (contractor + worker)") return # Use first job and first two users job = jobs[0] contractor = users[0] # Assume first user is contractor worker = users[1] if len(users) > 1 else users[0] # Second user is worker print(f"🏗️ Testing with real job: {job.title}") print(f"👔 Contractor: {contractor.first_name} {contractor.last_name}") print(f"👷 Worker: {worker.first_name} {worker.last_name}") # Create dummy application class DummyApplication: def __init__(self): self.id = 999 application = DummyApplication() # Generate contract with REAL data generator = ContractGenerator() try: contract_data = generator.generate_contract_data(job, contractor, worker, application) filename = f"real_job_contract_{job.id}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.html" filepath = generator.save_contract_html(contract_data, filename) print(f"✅ REAL CONTRACT GENERATED: {filepath}") print(f"📄 Contract ID: {contract_data['contract_id']}") print(f"💰 Hourly Rate: ${contract_data['hourly_rate']}") print(f"📍 Location: {contract_data['job_location']}") return filepath except Exception as e: print(f"❌ Error generating contract: {e}") print("💡 Might need to add hourly_rate field to Job model") return None def create_contract_for_real_application(job_id, worker_user_id): """Create contract when a real application is accepted""" from app import create_app from app.models import Job, User app = create_app() with app.app_context(): # Get real database objects job = Job.query.get(job_id) contractor = User.query.get(job.contractor_id) worker = User.query.get(worker_user_id) if not all([job, contractor, worker]): print("❌ Missing required data") return None # Create application object class ApplicationData: def __init__(self, job_id, worker_id): self.id = f"{job_id}_{worker_id}_{int(datetime.now().timestamp())}" application = ApplicationData(job_id, worker_user_id) # Generate contract generator = ContractGenerator() contract_data = generator.generate_contract_data(job, contractor, worker, application) filename = f"contract_job_{job_id}_worker_{worker_user_id}.html" filepath = generator.save_contract_html(contract_data, filename) print(f"✅ Contract created for job {job_id}: {filepath}") return filepath # Update the main section if __name__ == "__main__": print("🔧 Testing Contract Generator...") print("=" * 50) # Test with dummy data first print("1️⃣ Testing with dummy data:") test_contract_generation() print("\n2️⃣ Testing with real job data:") test_with_real_jobs()