You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
| # tasks.py
 | |
| from celery import shared_task
 | |
| from osinacore.models import *
 | |
| from django.db.models import Q
 | |
| 
 | |
| @shared_task
 | |
| def set_offline():
 | |
|     all_staff_profiles = StaffProfile.objects.all()
 | |
| 
 | |
|     for staff_profile in all_staff_profiles:
 | |
|         last_working_point_activity = PointActivity.objects.filter(
 | |
|             point__status='Working On',
 | |
|             point__task__assigned_to=staff_profile.user,
 | |
|         ).order_by('-end_time').first()
 | |
| 
 | |
|         if last_working_point_activity and last_working_point_activity.end_time <= datetime.now() - timedelta(minutes=10):
 | |
|             user = staff_profile.user
 | |
|             last_connection = Connection.objects.filter(user=user).order_by('-date').first()
 | |
|             if last_connection is None or last_connection.status != 'Offline':
 | |
|                 Connection.objects.create(
 | |
|                     status='Offline',
 | |
|                     date=datetime.now(),
 | |
|                     user=user
 | |
|                 )
 | |
|                 Status.objects.create(
 | |
|                     text='I am now offline!',
 | |
|                     date=datetime.now().date(),
 | |
|                     time=datetime.now().strftime('%I:%M %p'),
 | |
|                     staff=user.staffprofile
 | |
|                 ) |