У меня есть веб-приложение, которое пытается определить, когда люди посещают мероприятия.
class Attendee(models.Model):
location = models.ForeignKey(Location)
user = models.ForeignKey(User)
checked_in = models.DateTimeField()
checked_out = models.DateTimeField()
last_active = models.DateTimeField()
Участник регистрируется всякий раз, когда он входит в определенное место, а участник проверяется всякий раз, когда он выходит.
Проблема в том, что для определения того, когда кто-то на самом деле «извлечен», потому что он не может активно выходить из системы пользователя Django, я должен найти способ зарегистрировать его как проверенного через 24 часа.
В настоящее время я использую ужасно упрощенный запрос ORM в менеджере для перечисления «активных» и «неактивных» пользователей на сайте.
expires = datetime.datetime.today() - datetime.timedelta(seconds=settings.AUTO_CHECKOUT_AFTER)
# Get people who were last active more than 24 hours ago OR who have checked out
inactive_users = User.objects.all().filter(Q(attendee__last_active__lt = expires) \
| Q(attendee__checked_out__lte = datetime.datetime.now()), \
attendee__location=location).exclude(attendee__checked_out = None, attendee__checked_in__gte = expires).distinct()
Какой лучший способ сделать это? Я предполагаю, что нужен Django, эквивалентный заданию CRON, для автоматической проверки неактивных пользователей.