'django.middleware.locale.LocaleMiddleware',
'dj_pagination.middleware.PaginationMiddleware',
'teleforma.middleware.XsSharing',
+ 'teleforma.middleware.LastUserActivityMiddleware',
'django_user_agents.middleware.UserAgentMiddleware',
"django.middleware.common.CommonMiddleware",
)
#THUMBNAIL_FORCE_OVERWRITE = True
+LAST_ACTIVITY_INTERVAL_SECS = 3600
+
########################
# EMAIL
-
-
-from django import http
+from datetime import timedelta
+from django.utils import timezone
from django.conf import settings
+from django.db.models.expressions import F
+from django import http
+
try:
XS_SHARING_ALLOWED_ORIGINS = settings.XS_SHARING_ALLOWED_ORIGINS
XS_SHARING_ALLOWED_METHODS = settings.XS_SHARING_ALLOWED_METHODS
XS_SHARING_ALLOWED_HEADERS)
return self.get_response(request)
+
+
+class LastUserActivityMiddleware:
+ KEY = "last-activity"
+
+ def __init__(self, get_response):
+ self.get_response = get_response
+
+ def __call__(self, request):
+ if request.user.is_authenticated:
+ last_activity = request.session.get(self.KEY)
+ too_old_time = timezone.now() - timedelta(seconds=settings.LAST_ACTIVITY_INTERVAL_SECS)
+
+ # Update database only if the session timestamp is old enough
+ if not last_activity or last_activity < too_old_time:
+ # Update your custom UserActivity or UserProfile model
+ request.user.useractivity.last_activity_date = timezone.now()
+ request.user.useractivity.save()
+
+ # Update the session timestamp
+ request.session[self.KEY] = timezone.now().isoformat()
+
+ return self.get_response(request)
\ No newline at end of file