import logging from django.conf import settings from inventory import models from django.utils import timezone from django.shortcuts import redirect from django.urls import reverse from django.utils.deprecation import MiddlewareMixin from fpdf import FPDF import os from inventory.utils import get_user_type logger = logging.getLogger('user_activity') class LogUserActivityMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): response = self.get_response(request) if request.user.is_authenticated: action = f"{request.method} {request.path}" models.UserActivityLog.objects.create( user=request.user, action=action, timestamp=timezone.now() ) return response def get_client_ip(self, request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: return x_forwarded_for.split(',')[0] return request.META.get('REMOTE_ADDR') class InjectParamsMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): try: # request.entity = request.user.dealer.entity request.dealer = get_user_type(request) except Exception as e: pass response = self.get_response(request) return response class InjectDealerMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): try: request.is_dealer = False request.is_staff = False if hasattr(request.user, "dealer"): request.is_dealer = True if hasattr(request.user, "staffmember"): request.is_staff = True except Exception as e: pass response = self.get_response(request) return response # class OTPVerificationMiddleware: # def __init__(self, get_response): # self.get_response = get_response # # def __call__(self, request): # if request.user.is_authenticated and not request.session.get('otp_verified', False): # return redirect(reverse('verify_otp')) # return self.get_response(request)