def post(self): type = self.get_value('type', required=False) type = self.map_type(type) try: hit = HIT() hit.owner = users.get_current_user() hit.lifetime = self.get_value('lifetime', required=True, mapfn=int) hit.duration = self.get_value('duration', required=True, mapfn=int) hit.approval_delay = self.get_value('approval_delay', required=True, mapfn=int) hit.hit_approval = self.get_value('hit_approval', required=False, mapfn=int) hit.hit_approval_rate = self.get_value('hit_approval_rate', required=True, mapfn=int) hit.accepted_hit_rate = self.get_value('accepted_hit_rate', required=True, mapfn=int) hit.returned_hit_rate = self.get_value('returned_hit_rate', required=True, mapfn=int) hit.abandoned_hit_rate = self.get_value('abandoned_hit_rate', required=True, mapfn=int) hit.rejected_hit_rate = self.get_value('rejected_hit_rate', required=True, mapfn=int) hit.locale_qualification = self.get_value('locale_qualification', required=True) hit.frame_height = self.get_value('frame_height', required=True, mapfn=int) if type != 'MULTIPLE_URLS': hit.max_workers = self.get_value('max_workers', required=True, mapfn=int) if type != 'PASS_THROUGH': hit.min_workers = self.get_value('min_workers', required=True, mapfn=int) if type == 'MULTIPLE_URLS': hit.location1 = self.get_value('location1', required=True) hit.size1 = self.get_value('size1', required=True, mapfn=int) hit.location2 = self.get_value('location2', required=False) hit.size2 = self.get_value('size2', required=False, mapfn=int) hit.location3 = self.get_value('location3', required=False) hit.size3 = self.get_value('size3', required=False, mapfn=int) hit.location4 = self.get_value('location4', required=False) hit.size4 = self.get_value('size4', required=False, mapfn=int) hit.location5 = self.get_value('location5', required=False) hit.size5 = self.get_value('size5', required=False, mapfn=int) hit.location6 = self.get_value('location6', required=False) hit.size6 = self.get_value('size6', required=False, mapfn=int) hit.location7 = self.get_value('location7', required=False) hit.size7 = self.get_value('size7', required=False, mapfn=int) hit.location8 = self.get_value('location8', required=False) hit.size8 = self.get_value('size8', required=False, mapfn=int) hit.location9 = self.get_value('location9', required=False) hit.size9 = self.get_value('size9', required=False, mapfn=int) hit.location10 = self.get_value('location10', required=False) hit.size10 = self.get_value('size10', required=False, mapfn=int) else: hit.location = self.get_value('location', required=True) hit.aws_access_key = self.get_value('aws_access_key', required=True) hit.aws_secret_key = self.get_value('aws_secret_key', required=True) hit.auth_secret = self.get_value('auth_secret', required=False) hit.title = self.get_value('title', required=True) hit.description = self.get_value('description', required=True) hit.reward = self.get_value('reward', required=True) hit.handle_submit = self.get_value('handle_submit', required=False, mapfn=bool) hit.always_pay = self.get_value('always_pay', required=False, mapfn=bool) hit.sandbox = self.get_value('sandbox', required=False, mapfn=bool) hit.blacklist = re.split('[,\s]+', self.request.get('blacklist').strip()) hit.info = self.get_value('info') if type == 'FOCAL_TIME': hit.focal_time = iso8601.parse_date(self.get_value('focal_time', required=True).replace('Z', ':00Z')) hit.type = type hit.next_worker_number = 1 hit.put() except BadValueError, error: self.response.set_status(400) self.response.out.write(error.reason) return
def post(self): type = self.get_value('type', required=False) type = self.map_type(type) try: hit = HIT() hit.owner = users.get_current_user() hit.lifetime = self.get_value('lifetime', required=True, mapfn=int) hit.duration = self.get_value('duration', required=True, mapfn=int) hit.approval_delay = self.get_value('approval_delay', required=True, mapfn=int) hit.hit_approval = self.get_value('hit_approval', required=False, mapfn=int) hit.hit_approval_rate = self.get_value('hit_approval_rate', required=True, mapfn=int) hit.accepted_hit_rate = self.get_value('accepted_hit_rate', required=True, mapfn=int) hit.returned_hit_rate = self.get_value('returned_hit_rate', required=True, mapfn=int) hit.abandoned_hit_rate = self.get_value('abandoned_hit_rate', required=True, mapfn=int) hit.rejected_hit_rate = self.get_value('rejected_hit_rate', required=True, mapfn=int) hit.locale_qualification = self.get_value('locale_qualification', required=True) hit.frame_height = self.get_value('frame_height', required=True, mapfn=int) if type != 'MULTIPLE_URLS': hit.max_workers = self.get_value('max_workers', required=True, mapfn=int) if type != 'PASS_THROUGH': hit.min_workers = self.get_value('min_workers', required=True, mapfn=int) if type == 'MULTIPLE_URLS': hit.location1 = self.get_value('location1', required=True) hit.size1 = self.get_value('size1', required=True, mapfn=int) hit.location2 = self.get_value('location2', required=False) hit.size2 = self.get_value('size2', required=False, mapfn=int) hit.location3 = self.get_value('location3', required=False) hit.size3 = self.get_value('size3', required=False, mapfn=int) hit.location4 = self.get_value('location4', required=False) hit.size4 = self.get_value('size4', required=False, mapfn=int) hit.location5 = self.get_value('location5', required=False) hit.size5 = self.get_value('size5', required=False, mapfn=int) hit.location6 = self.get_value('location6', required=False) hit.size6 = self.get_value('size6', required=False, mapfn=int) hit.location7 = self.get_value('location7', required=False) hit.size7 = self.get_value('size7', required=False, mapfn=int) hit.location8 = self.get_value('location8', required=False) hit.size8 = self.get_value('size8', required=False, mapfn=int) hit.location9 = self.get_value('location9', required=False) hit.size9 = self.get_value('size9', required=False, mapfn=int) hit.location10 = self.get_value('location10', required=False) hit.size10 = self.get_value('size10', required=False, mapfn=int) else: hit.location = self.get_value('location', required=True) hit.aws_access_key = self.get_value('aws_access_key', required=True) hit.aws_secret_key = self.get_value('aws_secret_key', required=True) hit.auth_secret = self.get_value('auth_secret', required=False) hit.title = self.get_value('title', required=True) hit.description = self.get_value('description', required=True) hit.reward = self.get_value('reward', required=True) hit.handle_submit = self.get_value('handle_submit', required=False, mapfn=bool) hit.always_pay = self.get_value('always_pay', required=False, mapfn=bool) hit.sandbox = self.get_value('sandbox', required=False, mapfn=bool) hit.blacklist = re.split('[,\s]+', self.request.get('blacklist').strip()) hit.info = self.get_value('info') if type == 'FOCAL_TIME': hit.focal_time = iso8601.parse_date( self.get_value('focal_time', required=True).replace('Z', ':00Z')) hit.type = type hit.next_worker_number = 1 hit.put() except BadValueError, error: self.response.set_status(400) self.response.out.write(error.reason) return