Beispiel #1
0
  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()
Beispiel #2
0
def notify(hit):
    hostURL = SANDBOX_HOST if hit.sandbox else HOST

    connection = MTurkConnection(
        aws_access_key_id=hit.aws_access_key, aws_secret_access_key=hit.aws_secret_key, host=hostURL
    )

    for worker in hit_workers(hit):
        params = {"WorkerId": worker.mturkid, "Subject": "It's time to join", "MessageText": "Hello"}

        connection._process_request("NotifyWorkers", params)
Beispiel #3
0
def notify(hit):
    hostURL = SANDBOX_HOST if hit.sandbox else HOST

    connection = MTurkConnection(aws_access_key_id=hit.aws_access_key,
                                 aws_secret_access_key=hit.aws_secret_key,
                                 host=hostURL)

    for worker in hit_workers(hit):
        params = {
            'WorkerId': worker.mturkid,
            'Subject': "It's time to join",
            'MessageText': "Hello"
        }

        connection._process_request('NotifyWorkers', params)
Beispiel #4
0
    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()
Beispiel #5
0
  def get(self, key):
    hit = HIT.get(key)

    if hit:
      workers = []

      for worker in hit_workers(hit):
        workers.append({
          'last_seen': unix_timestamp(worker.last_seen)
        , 'remote_addr': worker.remote_addr
        , 'mturkid': worker.mturkid
        , 'assignment_id': worker.assignment_id
        , 'click_go': worker.click_go
        })

      self.json({'workers': workers})
    else:
      self.not_found()
Beispiel #6
0
    def get(self, key):
        hit = HIT.get(key)

        if hit:
            workers = []

            for worker in hit_workers(hit):
                workers.append({
                    'last_seen': unix_timestamp(worker.last_seen),
                    'remote_addr': worker.remote_addr,
                    'mturkid': worker.mturkid,
                    'assignment_id': worker.assignment_id,
                    'click_go': worker.click_go
                })

            self.json({'workers': workers})
        else:
            self.not_found()