使用Django后处理考勤数据

时间:2010-02-25 15:36:56

标签: python django

我有一个网络应用,试图确定人们何时参加活动。

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()

更好的方法是什么?我猜测需要一个等同于CRON作业的Django来自动检出不活动的用户。

1 个答案:

答案 0 :(得分:1)

你不需要'Django相当于一个cron作业',你只需要一个cron作业。

cron应该运行一个独立的Django脚本 - 你可以用几种不同的方式来做,但最简单的方法是创建一个standalone ./manage.pycommand