def post(self): user = userhandlers.getUser(users.get_current_user().user_id()) if not user: logging.error("no user is logged in!") self.error(404) return if self.request.get('caller'): caller = '+1'+self.request.get('caller') elif user.phoneNumber: caller = '+1'+user.phoneNumber else: logging.error("impossible! the user doesn't have a number configured yet") self.error(403) return account = twilio.Account(testing.ACCOUNT_SID, testing.ACCOUNT_TOKEN) tra = {'From' : testing.CALLER_ID, 'To' : caller, 'Url' : testing.CALLBACK_DOMAIN+'record/recordtwiml?code=%s&index=%s' % (self.request.get('code'),self.request.get('index')), } try: logging.debug("placing call to %s" % caller) account.request('/%s/Accounts/%s/Calls/' % (testing.API_VERSION, testing.ACCOUNT_SID), 'POST', tra) except Exception, e: logging.error("Twilio REST error: %s" % e)
def post(self): user = userhandlers.getUser(users.get_current_user().user_id()) if not user: logging.error("no user is logged in!") self.error(404) return if self.request.get('caller'): caller = '+1'+self.request.get('caller') elif user.phoneNumber: caller = '+1'+user.phoneNumber else: self.error(403) return logging.debug('Starting a test with %s' % caller) testID = self.request.get('id') logging.debug('Looking up test with key %s' % testID) userTest = UserTest() userTest.test = db.get(testID) userTest.user = userhandlers.getUser(users.get_current_user().user_id()) userTest.score = 0 userTest.put() index = 0 nextWord = userTest.test.words[index] id = userTest.key() account = twilio.Account(ACCOUNT_SID, ACCOUNT_TOKEN) tra = {'From' : CALLER_ID, 'To' : caller, 'Url' : CALLBACK_DOMAIN+'test/quiz?word=%s&index=%s&id=%s' % (nextWord,str(index),id), } try: logging.debug("placing call to %s" % caller) account.request('/%s/Accounts/%s/Calls/' % (API_VERSION, ACCOUNT_SID), 'POST', tra) except Exception, e: logging.error("Twilio REST error: %s" % e)
def post(self): activeUser = userhandlers.getUser(users.get_current_user().user_id()) if not activeUser: self.error(404) return # check to see if the test already exists. we may have created it # if the user recorded their own words code = self.request.get("code") test = db.GqlQuery("SELECT * FROM Test WHERE randHandle = :1", code).get() if test is None: logging.debug("hmm. we had to create a new test model for %s" % code) test = Test() else: logging.debug("adding words to existing test %s" % code) test.owner = activeUser if self.request.get("name"): test.name = self.request.get("name") else: test.name = "no name" if self.request.get("grade"): test.grade = self.request.get("grade") else: test.grade = "unknown" words = [] wordAnswers = [] if self.request.get("one"): words.append(self.request.get("one")) wordAnswers.append(computeKeypadAnswer(self.request.get("one"))) if self.request.get("two"): words.append(self.request.get("two")) wordAnswers.append(computeKeypadAnswer(self.request.get("two"))) if self.request.get("three"): words.append(self.request.get("three")) wordAnswers.append(computeKeypadAnswer(self.request.get("three"))) if self.request.get("four"): words.append(self.request.get("four")) wordAnswers.append(computeKeypadAnswer(self.request.get("four"))) if self.request.get("five"): words.append(self.request.get("five")) wordAnswers.append(computeKeypadAnswer(self.request.get("five"))) if not words or len(words) == 0: self.error(403) return test.words = words test.wordAnswers = wordAnswers test.testsTaken = 0 test.put() # encapsulate in json response_dict = {} if activeUser.first: owner = activeUser.first + " " + activeUser.last else: owner = activeUser.nickname response_dict.update({"name": test.name, "grade": test.grade, "words": test.words}) logging.debug("json response %s" % response_dict) self.response.headers["Content-Type"] = "application/javascript" self.response.out.write(simplejson.dumps(response_dict))