Beispiel #1
0
        def __init__(self, request):
            self._id = None
            self.request = request
            self._collection = get_mongodb(request)[self._collection_name]
            now = dateutil.utcnow()

            # Delete old sessions:
            self._collection.remove({'accessed':{'$lt':now-self._timeout}}, safe=True)

            now = dateutil.utcnow()
            created = accessed = now
            value = None
            state = {}
            cookieval = request.cookies.get(self._cookie_name)
            if cookieval is not None:
                value = self._collection.find_one(dict(_id=ObjectId(cookieval)))
                #print "loaded session: cookieval=%s value=%s" % (repr(cookieval), repr(value))

            if value is not None:
                accessed = value['accessed']
                created = value['created']
                state = value['state']
                self._id = ObjectId(cookieval)
                if now - accessed > self._timeout:
                    state = {}

            self.created = created
            self.accessed = accessed
            dict.__init__(self, state)
Beispiel #2
0
 def test_validate(self):
     import dateutil
     before = dateutil.utcnow()
     request = testing.DummyRequest()
     request.GET['title'] = "Hello"
     request.GET['body'] = "World"
     result = _getBlogPostClass().validate(request)
     self.assertEqual(result['title'], "Hello")
     self.assertEqual(result['body'], "World")
     # Make sure dateline defaulted to the current time (when validation occurred).
     self.assertTrue(result['dateline'] > before)
     after = dateutil.utcnow()
     self.assertTrue(result['dateline'] < after)
Beispiel #3
0
 def accessed(session, *arg, **kw):
     session.accessed = dateutil.utcnow()
     if not session._dirty:
         session._dirty = True
         def set_cookie_callback(request, response):
             session._set_cookie(response)
             session.request = None # explicitly break cycle for gc
         session.request.add_response_callback(set_cookie_callback)
     return wrapped(session, *arg, **kw)
Beispiel #4
0
 def purge(self):
     cutoff = dateutil.utcnow() - self.delete_cutoff_days
     old_ids = []
     for item in self.gridfs._GridFS__files.find({'parents':[], 'uploadDate':{'$lt':cutoff}}, fields=[]):
         old_ids.append(item['_id'])
     if old_ids:
         log.debug("purging old files: %s" % repr(old_ids))
     for id in old_ids:
         self.gridfs.delete(id)