def get(self, filename): image = Image.get_by_filename(filename) if not image: return self.abort(404) # Gather the information we take from the user. identifier = self.request.get('identifier', '') ip_address = self.request.remote_addr referrer = self.request.referrer user_agent = self.request.headers.get('User-Agent', '') visitor_uuid = self.request.cookies.get('VISITOR_UUID', '') # If they're not in our database, create a new entity to track them. visitor = Visitor.get_by_uuid(visitor_uuid) if visitor is None: visitor = Visitor() visitor.put() visit = Visit(identifier=identifier, ip_address=ip_address, user_agent=user_agent, referrer=referrer, image=image.key, visitor=visitor.key) visit.put() # Dispatch a task to send the visit to keen.io for analysis. visit_key = visit.key.urlsafe() logging.info('Dispatching task to process {visit_key}' .format(visit_key=visit_key)) taskqueue.add(url=self.uri_for('analytics'), params={'visit_key': visit_key}) self.response.content_type = str(image.content_type) self.response.set_cookie(key='VISITOR_UUID', value=visitor.uuid) self.response.out.write(image.data)
def test_get_by_uuid(self): visitor = Visitor() visitor.put() self.assertIsNotNone(Visitor.get_by_uuid(visitor.uuid)) self.assertIsNone(Visitor.get_by_uuid(''))
def test_put(self): visitor = Visitor() visitor.put() self.assertIsNotNone(visitor.uuid)