import uuid
from django.utils import timezone

class DeviceTrackingMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # بررسی می‌کنیم آیا کاربر کوکی device_id دارد یا خیر
        device_id = request.COOKIES.get('device_id')
        
        # اگر نداشت، یک شناسه یکتای جدید می‌سازیم
        if not device_id:
            device_id = str(uuid.uuid4())
        
        # شناسه را به request متصل می‌کنیم تا در views به آن دسترسی داشته باشیم
        request.device_id = device_id

        response = self.get_response(request)

        # کوکی را برای مدت ۱ سال (۳۱۵۳۶۰۰۰ ثانیه) روی مرورگر کاربر تنظیم می‌کنیم
        if not request.COOKIES.get('device_id'):
            response.set_cookie('device_id', device_id, max_age=31536000, httponly=True)
            
        return response
