mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from datetime import timedelta
 | 
						|
 | 
						|
from django.db import models
 | 
						|
from django.db.models import CASCADE
 | 
						|
 | 
						|
from zerver.models.clients import Client
 | 
						|
from zerver.models.users import UserProfile
 | 
						|
 | 
						|
 | 
						|
class UserActivity(models.Model):
 | 
						|
    """Data table recording the last time each user hit Zulip endpoints
 | 
						|
    via which Clients; unlike UserPresence, these data are not exposed
 | 
						|
    to users via the Zulip API.
 | 
						|
 | 
						|
    Useful for debugging as well as to answer analytics questions like
 | 
						|
    "How many users have accessed the Zulip mobile app in the last
 | 
						|
    month?" or "Which users/organizations have recently used API
 | 
						|
    endpoint X that is about to be desupported" for communications
 | 
						|
    and database migration purposes.
 | 
						|
    """
 | 
						|
 | 
						|
    user_profile = models.ForeignKey(UserProfile, on_delete=CASCADE)
 | 
						|
    client = models.ForeignKey(Client, on_delete=CASCADE)
 | 
						|
    query = models.CharField(max_length=50, db_index=True)
 | 
						|
 | 
						|
    count = models.IntegerField()
 | 
						|
    last_visit = models.DateTimeField("last visit")
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        unique_together = ("user_profile", "client", "query")
 | 
						|
 | 
						|
 | 
						|
class UserActivityInterval(models.Model):
 | 
						|
    MIN_INTERVAL_LENGTH = timedelta(minutes=15)
 | 
						|
 | 
						|
    user_profile = models.ForeignKey(UserProfile, on_delete=CASCADE)
 | 
						|
    start = models.DateTimeField("start time", db_index=True)
 | 
						|
    end = models.DateTimeField("end time", db_index=True)
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        indexes = [
 | 
						|
            models.Index(
 | 
						|
                fields=["user_profile", "end"],
 | 
						|
                name="zerver_useractivityinterval_user_profile_id_end_bb3bfc37_idx",
 | 
						|
            ),
 | 
						|
        ]
 |