Постобработка данных о посещаемости с помощью Django - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть веб-приложение, которое пытается определить, когда люди посещают мероприятия.

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, для автоматической проверки неактивных пользователей.

1 Ответ

1 голос
/ 25 февраля 2010

Вам не нужен «Django-эквивалент работы cron», вам просто нужна работа cron.

Cron должен запускать автономный скрипт Django - вы можете сделать это несколькими различными способами, но самый простой способ - создать автономную ./manage.py команду .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...