Ejemplo n.º 1
0
    def get(self):
        if self.request.POST:
            parameters = self.request.POST.copy()
        if self.request.GET:
            parameters = self.request.GET.copy()
        logging.debug('Received access code verification: ' + str(parameters))

        student_email = parameters['student_email']
        # Check payment is completed, not Pending or Failed.
        access_code = parameters['access_code']
        if access_code is not None and crypto.verify_access_code(access_code):
            if len(Student.get_by_access_code(access_code)) == 0:
                # [hack] this handler will only work for the ns_sample namespac
                namespace_manager.set_namespace('ns_sample')
                student = Student.get_enrolled_student_by_email(student_email)
                #student = (
                #  models.StudentProfileDAO.get_enrolled_student_by_email_for(
                #    student_email, self.app_context))
                if not student:
                    logging.warning('Could not process payment for student: ' +
                                    student_email)
                    self.send_error_email(student_email)
                    return
                logging.info(
                    'Student %s is now a full access student. Access code %s confirmed.'
                    % (student_email, access_code))
                student.has_paid = True
                student.access_code = access_code
                student.put()
                self.redirect("/sample?use_last_location=true")
            else:
                logging.warning(
                    'Student %s tried an already used access code: %s' %
                    (student_email, access_code))
                self.redirect(
                    "/sample?use_last_location=true&invalid_access_code=true")
        else:
            logging.info('Student %s tried an invalid access code: %s' %
                         (student_email, access_code))
            self.redirect(
                "/sample?use_last_location=true&invalid_access_code=true")