On 1/31/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > There's some conceptual thing I'm apparently just not getting. I > attempted to follow Doug's advice and came up with: > > class LastSeen (object): > """Middleware that adds various objects to thread local storage > from the request object.""" > def process_request(self, request): > now = datetime.datetime.now() > try: > last_request = request.session['last_request'] > # don't update it too often, every 4 hours should be ok > if (now - last_request).seconds > (60 * 60 *4): > request.session['last_seen'] = last_request > request.session['last_request'] = now
you have to update last request at every request, not only when its too old... if you do it like this it is EXACTLY what you did before > except KeyError: > request.session['last_request'] = > datetime.datetime.now() > request.session['last_seen'] = datetime.datetime.now() > except TypeError: > request.session['last_request'] = > datetime.datetime.now() > request.session['last_seen'] = datetime.datetime.now() > > > Which appears to do the exact same thing I was doing before. > > > > On Jan 30, 1:07 pm, "Doug Van Horn" <[EMAIL PROTECTED]> wrote: > > On Jan 30, 11:23 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> > > wrote: > > > > > Well, if I were doing it by hand, every time they came to the site I > > > would set this_visit, and then set last_visit (or last_seen, or > > > whatever) to the previous value of this_visit, and I would only do it > > > once, when they first come to the site. > > > > The question, then, is how to determine "when they first come to the > > site." > > > > Right now, you determine that by saying, "If the last_seen variable is > > older than 4 hours, then this user was last seen right now." Note > > that they may have clicked just a second ago, when the last_seen > > variable was 3:59:59 old. Their next click will bump the 'last_seen' > > variable. Not what you want. > > > > You probably want to store the most recent request timestamp as part > > of the session. Something like: > > > > request.session['last_request'] = datetime.now() > > > > Then, you need to figure out when your 'last_seen' session variable > > should be updated. It might be something like: > > > > if (now - last_request) > (60 * 60 * 4): # if the last request is 4+ > > hours old... > > request.session['last_seen'] = last_request > > > > Handle your base case, where there is no 'last_request' (and thus no > > last_seen), and you should be good. > > > > Hope that helps. > > > > And remember the advice listed by an earlier post-er. Design your > > algorithm on paper. Think it through. Write some psuedo code. Run > > some mental 'unit tests'. Then go code it. > > > > Regards, > > > > Doug Van Horn, Presidenthttp://www.maydigital.com/ ~~ > > http://www.limapapa.com/ > > > > > -- Honza Kr�l E-Mail: [EMAIL PROTECTED] ICQ#: 107471613 Phone: +420 606 678585 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---