75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Debug script to check why planned bookings are not being activated
|
|
"""
|
|
import sys
|
|
import os
|
|
import datetime
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'Web'))
|
|
|
|
from pymongo import MongoClient
|
|
import settings as cfg
|
|
import ausleihung as au
|
|
|
|
def check_bookings():
|
|
"""Check all planned bookings and their status"""
|
|
client = MongoClient(cfg.MONGODB_HOST, cfg.MONGODB_PORT)
|
|
db = client[cfg.MONGODB_DB]
|
|
ausleihungen = db['ausleihungen']
|
|
|
|
# Get all planned bookings
|
|
planned = list(ausleihungen.find({'Status': 'planned'}))
|
|
|
|
print(f"\n📊 Gefundene GEPLANTE Ausleihen: {len(planned)}\n")
|
|
print("=" * 100)
|
|
|
|
current_time = datetime.datetime.now()
|
|
print(f"⏰ Aktuelle Zeit: {current_time}\n")
|
|
|
|
for booking in planned:
|
|
booking_id = str(booking['_id'])
|
|
user = booking.get('User', 'N/A')
|
|
item = booking.get('Item', 'N/A')
|
|
start = booking.get('Start')
|
|
end = booking.get('End')
|
|
period = booking.get('Period')
|
|
status = booking.get('Status')
|
|
|
|
print(f"\n🔹 Ausleihe ID: {booking_id}")
|
|
print(f" Benutzer: {user}")
|
|
print(f" Item: {item}")
|
|
print(f" Status: {status}")
|
|
print(f" Schulstunde/Periode: {period}")
|
|
print(f" Start: {start} (Typ: {type(start).__name__})")
|
|
print(f" Ende: {end} (Typ: {type(end).__name__})")
|
|
|
|
# Check current status
|
|
current_status = au.get_current_status(booking, log_changes=False)
|
|
print(f" ✓ Berechneter Status: {current_status}")
|
|
|
|
if current_status != status:
|
|
print(f" ⚠️ STATUS STIMMT NICHT ÜBEREIN! Sollte sein: {current_status}")
|
|
|
|
# Check time comparison
|
|
if start:
|
|
time_diff = (current_time - start).total_seconds()
|
|
if time_diff < 0:
|
|
print(f" ⏳ Startet in: {abs(time_diff) / 60:.1f} Minuten")
|
|
elif time_diff < 3600:
|
|
print(f" ✓ Sollte JETZT AKTIV sein! ({time_diff / 60:.1f} Minuten vorbei)")
|
|
else:
|
|
print(f" ✓ Sollte schon {time_diff / 3600:.1f} Stunden aktiv sein!")
|
|
|
|
print("\n" + "=" * 100)
|
|
|
|
# Check active bookings too
|
|
active = list(ausleihungen.find({'Status': 'active'}))
|
|
print(f"\n✓ AKTIVE Ausleihen: {len(active)}")
|
|
for booking in active:
|
|
print(f" - {booking.get('User', 'N/A')}: {booking.get('Item', 'N/A')} (Periode: {booking.get('Period')})")
|
|
|
|
client.close()
|
|
|
|
if __name__ == '__main__':
|
|
check_bookings()
|