2010-02-25 6 views
0

사람들이 언제 이벤트에 참석하는지 판단하려고하는 웹 앱이 있습니다.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

'장고와 동등한 작업'이 필요하지 않으므로 크론 작업 만 있으면됩니다.

cron은 독립 실행 형 Django 스크립트를 실행해야합니다. 여러 가지 방법으로이 작업을 수행 할 수 있지만 가장 쉬운 방법은 standalone ./manage.pycommand을 만드는 것입니다.

관련 문제