def get(self, key): hit = HIT.get(key) # TODO: track worker details here too? if hit: if hit.type == 'PASS_THROUGH' or datetime.utcnow() > hit.time: # don't check time for pass-through worker = worker_lookup(hit, self.request.get('workerId')) if worker is None: self.not_found() # TODO: log error? else: if hit.min_workers > hit_workers(hit).count(): # TODO: only include active workers in count? if hit.always_pay: self.json({'available': False, 'message': 'Not enough people. You will still be paid for this HIT.', 'submit': True}) else: self.json({'available': False, 'message': 'Not enough people. Please return this HIT.', 'submit': False}) else: #worker.number = next_worker_number(hit) #worker.put() url = target_url(hit, self.request.query_string, worker) self.json({'available': True, 'location': url, 'submit': hit.handle_submit}) else: self.not_found() # or other error code? else: self.not_found()
def get(self, key): hit = HIT.get(key) if hit: worker = worker_lookup(hit, self.request.get('workerId')) if worker is None: self.not_found() else: worker.remote_addr = self.request.remote_addr worker.user_agent = self.request.headers['User-Agent'] worker.put() if hit.type == 'MULTIPLE_URLS': sizes = get_sizes(hit) remaining = 0 for i in range (0, 11): if sizes[i] < worker.number <= sizes[i + 1]: remaining = sizes[i + 1] - worker.number break self.json({'status': 'OK', 'remaining': str(remaining)}) elif hit.type == 'PASS_THROUGH': self.json({'status': 'OK', 'go': 'true'}) else: self.json({'status': 'OK'}) else: self.not_found()
def get(self, key): hit = HIT.get(key) if hit: worker = worker_lookup(hit, self.request.get('workerId')) if worker is None: self.not_found() else: worker.remote_addr = self.request.remote_addr worker.user_agent = self.request.headers['User-Agent'] worker.put() if hit.type == 'MULTIPLE_URLS': sizes = get_sizes(hit) remaining = 0 for i in range(0, 11): if sizes[i] < worker.number <= sizes[i + 1]: remaining = sizes[i + 1] - worker.number break self.json({'status': 'OK', 'remaining': str(remaining)}) elif hit.type == 'PASS_THROUGH': self.json({'status': 'OK', 'go': 'true'}) else: self.json({'status': 'OK'}) else: self.not_found()
def get(self, key): hit = HIT.get(key) # TODO: track worker details here too? if hit: if hit.type == 'PASS_THROUGH' or datetime.utcnow( ) > hit.time: # don't check time for pass-through worker = worker_lookup(hit, self.request.get('workerId')) if worker is None: self.not_found() # TODO: log error? else: if hit.min_workers > hit_workers(hit).count( ): # TODO: only include active workers in count? if hit.always_pay: self.json({ 'available': False, 'message': 'Not enough people. You will still be paid for this HIT.', 'submit': True }) else: self.json({ 'available': False, 'message': 'Not enough people. Please return this HIT.', 'submit': False }) else: #worker.number = next_worker_number(hit) #worker.put() url = target_url(hit, self.request.query_string, worker) self.json({ 'available': True, 'location': url, 'submit': hit.handle_submit }) else: self.not_found() # or other error code? else: self.not_found()
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()
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()