예제 #1
0
    def get(self, key):
        hit = HIT.get(key)

        if hit:
            if self.request.get(
                    'assignmentId') != 'ASSIGNMENT_ID_NOT_AVAILABLE':
                if self.request.get('workerId') in hit.blacklist:
                    self.render('priv/hit_blacklisted.html',
                                {'title': hit.title})
                    return

                worker = worker_lookup(hit, self.request.get('workerId'))

                if worker is None:
                    worker = Worker()
                    worker.hit = hit
                    worker.mturkid = self.request.get('workerId')
                    worker.assignment_id = self.request.get('assignmentId')
                    worker.number = next_worker_number(hit)  # save number ASAP

                worker.remote_addr = self.request.remote_addr
                worker.user_agent = self.request.headers['User-Agent']
                worker.put()

                clickgo_url = json.dumps(self.worker_click_go(worker))

            else:
                clickgo_url = json.dumps('')

            self.render(
                'priv/hit_countdown.html', {
                    'time': unix_timestamp(hit.time),
                    'title': hit.title,
                    'heartbeat_url': json.dumps(self.hit_heartbeat_url(hit)),
                    'location_url': json.dumps(self.hit_location_url(hit)),
                    'info': hit.info,
                    'hit': hit,
                    'clickgo_url': clickgo_url
                })
        else:
            self.not_found()