diff --git a/mysite/users/__init__.py b/mysite/users/__init__.py index e69de29..af895c9 100644 --- a/mysite/users/__init__.py +++ b/mysite/users/__init__.py @@ -0,0 +1,31 @@ +from django.contrib.auth.signals import user_logged_out, user_logged_in +from django.dispatch import receiver +from time import perf_counter +from .models import Profile + +log_in_time = 0 +log_out_time = 0 +total_time_spent = 0 + +@receiver(user_logged_in) +def log_in(sender, user, request, **kwargs): + global log_in_time + log_in_time = perf_counter() + +@receiver(user_logged_out) +def log_out(sender, user, request, **kwargs): + global log_out_time + log_out_time = perf_counter() + calculate_total_time(user) + +def calculate_total_time(user): + global log_in_time + global log_out_time + global total_time_spent + total_time_spent = log_out_time - log_in_time + save_time(total_time_spent, user) + +def save_time(total_time_spent, user): + p = Profile.objects.raw('SELECT user from Profile WHERE user = %s', [user]) + + p.save() diff --git a/mysite/users/models.py b/mysite/users/models.py index e8de921..f124e18 100644 --- a/mysite/users/models.py +++ b/mysite/users/models.py @@ -1,13 +1,13 @@ from django.db import models from django.contrib.auth.models import User - # Create your models here. class Profile(models.Model): user= models.OneToOneField(User, on_delete=models.CASCADE) image = models.ImageField(default='admin/default.jpg',upload_to='profile_pics') bio = models.CharField(max_length=50, null=True, blank=True) + timespent = models.FloatField(default=0) def __str__(self): - return f'{self.user.username} profile' \ No newline at end of file + return f'{self.user.username} profile'