Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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))