updates
This commit is contained in:
149
Backend/seeds_data/assign_housekeeping_tasks.py
Normal file
149
Backend/seeds_data/assign_housekeeping_tasks.py
Normal file
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script to assign test housekeeping tasks to the housekeeping user.
|
||||
This creates sample tasks for testing the housekeeping dashboard.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
# Add the Backend directory to the path
|
||||
backend_dir = Path(__file__).parent.parent
|
||||
sys.path.insert(0, str(backend_dir))
|
||||
|
||||
from src.shared.config.database import SessionLocal
|
||||
from src.models import Role, User, Room
|
||||
from src.hotel_services.models.housekeeping_task import HousekeepingTask, HousekeepingStatus, HousekeepingType
|
||||
|
||||
def assign_housekeeping_tasks():
|
||||
"""Assign test housekeeping tasks to the housekeeping user."""
|
||||
db = SessionLocal()
|
||||
try:
|
||||
# Get housekeeping user
|
||||
housekeeping_user = db.query(User).join(Role).filter(
|
||||
Role.name == 'housekeeping',
|
||||
User.email == 'housekeeping@gnxsoft.com'
|
||||
).first()
|
||||
|
||||
if not housekeeping_user:
|
||||
print("✗ Housekeeping user not found! Please run add_housekeeping_user.py first.")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"✓ Found housekeeping user: {housekeeping_user.email} (ID: {housekeeping_user.id})")
|
||||
|
||||
# Get admin user for created_by
|
||||
admin_role = db.query(Role).filter(Role.name == 'admin').first()
|
||||
admin_user = db.query(User).filter(User.role_id == admin_role.id).first() if admin_role else None
|
||||
|
||||
# Get some rooms
|
||||
rooms = db.query(Room).limit(5).all()
|
||||
|
||||
if not rooms:
|
||||
print("✗ No rooms found in the database! Please seed rooms first.")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"✓ Found {len(rooms)} rooms")
|
||||
|
||||
# Default checklist items for different task types
|
||||
checklists = {
|
||||
'checkout': [
|
||||
{'item': 'Bathroom cleaned', 'completed': False, 'notes': ''},
|
||||
{'item': 'Beds made with fresh linens', 'completed': False, 'notes': ''},
|
||||
{'item': 'Trash emptied', 'completed': False, 'notes': ''},
|
||||
{'item': 'Towels replaced', 'completed': False, 'notes': ''},
|
||||
{'item': 'Amenities restocked', 'completed': False, 'notes': ''},
|
||||
{'item': 'Floor vacuumed and mopped', 'completed': False, 'notes': ''},
|
||||
{'item': 'Surfaces dusted', 'completed': False, 'notes': ''},
|
||||
{'item': 'Windows and mirrors cleaned', 'completed': False, 'notes': ''},
|
||||
],
|
||||
'stayover': [
|
||||
{'item': 'Beds made', 'completed': False, 'notes': ''},
|
||||
{'item': 'Trash emptied', 'completed': False, 'notes': ''},
|
||||
{'item': 'Towels replaced', 'completed': False, 'notes': ''},
|
||||
{'item': 'Bathroom cleaned', 'completed': False, 'notes': ''},
|
||||
],
|
||||
'vacant': [
|
||||
{'item': 'Deep clean bathroom', 'completed': False, 'notes': ''},
|
||||
{'item': 'Change linens', 'completed': False, 'notes': ''},
|
||||
{'item': 'Vacuum and mop', 'completed': False, 'notes': ''},
|
||||
{'item': 'Dust surfaces', 'completed': False, 'notes': ''},
|
||||
{'item': 'Check amenities', 'completed': False, 'notes': ''},
|
||||
],
|
||||
'inspection': [
|
||||
{'item': 'Check all amenities', 'completed': False, 'notes': ''},
|
||||
{'item': 'Test electronics', 'completed': False, 'notes': ''},
|
||||
{'item': 'Check for damages', 'completed': False, 'notes': ''},
|
||||
{'item': 'Verify cleanliness', 'completed': False, 'notes': ''},
|
||||
],
|
||||
}
|
||||
|
||||
# Create tasks for today
|
||||
today = datetime.utcnow().replace(hour=9, minute=0, second=0, microsecond=0)
|
||||
task_types = ['checkout', 'stayover', 'vacant', 'inspection']
|
||||
|
||||
created_count = 0
|
||||
skipped_count = 0
|
||||
|
||||
for i, room in enumerate(rooms):
|
||||
# Cycle through task types
|
||||
task_type = task_types[i % len(task_types)]
|
||||
|
||||
# Check if task already exists for this room today
|
||||
existing_task = db.query(HousekeepingTask).filter(
|
||||
HousekeepingTask.room_id == room.id,
|
||||
HousekeepingTask.assigned_to == housekeeping_user.id,
|
||||
HousekeepingTask.status == HousekeepingStatus.pending,
|
||||
HousekeepingTask.scheduled_time >= today.replace(hour=0, minute=0),
|
||||
HousekeepingTask.scheduled_time < today.replace(hour=23, minute=59, second=59)
|
||||
).first()
|
||||
|
||||
if existing_task:
|
||||
print(f" ⚠️ Task already exists for Room {room.room_number}, skipping...")
|
||||
skipped_count += 1
|
||||
continue
|
||||
|
||||
# Schedule tasks at different times throughout the day
|
||||
scheduled_time = today + timedelta(hours=i)
|
||||
|
||||
task = HousekeepingTask(
|
||||
room_id=room.id,
|
||||
booking_id=None,
|
||||
task_type=HousekeepingType(task_type),
|
||||
status=HousekeepingStatus.pending,
|
||||
scheduled_time=scheduled_time,
|
||||
assigned_to=housekeeping_user.id,
|
||||
created_by=admin_user.id if admin_user else housekeeping_user.id,
|
||||
checklist_items=checklists.get(task_type, []),
|
||||
notes=f'Test task for Room {room.room_number} - {task_type} cleaning',
|
||||
estimated_duration_minutes=45 if task_type == 'checkout' else 30
|
||||
)
|
||||
|
||||
db.add(task)
|
||||
created_count += 1
|
||||
print(f" ✓ Created {task_type} task for Room {room.room_number} (scheduled: {scheduled_time.strftime('%Y-%m-%d %H:%M')})")
|
||||
|
||||
db.commit()
|
||||
|
||||
print(f"\n✓ Tasks assigned successfully!")
|
||||
print(f" - Created: {created_count} task(s)")
|
||||
print(f" - Skipped: {skipped_count} task(s) (already exist)")
|
||||
print(f" - Assigned to: {housekeeping_user.email}")
|
||||
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
print(f"✗ Error assigning housekeeping tasks: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
sys.exit(1)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("Assigning test housekeeping tasks to housekeeping user...")
|
||||
print("=" * 60)
|
||||
assign_housekeeping_tasks()
|
||||
print("=" * 60)
|
||||
print("Done!")
|
||||
|
||||
Reference in New Issue
Block a user