def post(self):
     if not self.is_logged_in():
         self.redirect(LOGIN_PAGE_URL)
     else:
         machine_id = self.get_argument('machine_id')
         timezone = self.get_argument('timezone')
         deactivation_entry_code = self.get_argument('deactivation_entry_code')
     
         customer = Customer.get_by_key_name(self.get_current_username())
         activation_credentials = ActivationCredentials.get_all_for_customer_and_machine_id(customer=customer, machine_id=machine_id)
         activation_credentials_list = []
         for credentials in activation_credentials:
             credentials_id = credentials.key().id()
             serial_number = self.get_argument('serial_number_ac_%d' % credentials_id)
             activation_code = self.get_argument('activation_code_ac_%d' % credentials_id)
             if serial_number == credentials.serial_number and activation_code == credentials.activation_code:
                 credentials.deactivation_code = self.get_argument('deactivation_code_ac_%d' % credentials_id)
                 credentials.deactivation_entry_code = deactivation_entry_code
                 credentials.timezone = timezone
                 credentials.when_deactivated = datetime.utcnow()
                 activation_credentials_list.append(credentials)
             else:
                 pass  # Error.
         db.put(activation_credentials_list)
         self.redirect('/dashboard')
 def post(self):
     machine_id = self.get_argument('machine_id')
     customer = Customer.get_by_key_name(session.get_current_username())
     credentials = ActivationCredentials.get_all_active_for_customer_and_machine_id(
         customer=customer,
         machine_id=machine_id)
     self.set_header('Content-Type', 'application/json')
     self.write(json.dumps(len(credentials) > 0))
 def post(self):
     if not self.is_logged_in():
         self.redirect(LOGIN_PAGE_URL)
     else:
         machine_id = self.get_argument('machine_id')
         timezone = self.get_argument('timezone')
         deactivation_entry_code = self.get_argument('deactivation_entry_code')
     
         customer = Customer.get_by_key_name(self.get_current_username())
         activation_credentials = ActivationCredentials.get_all_active_for_customer_and_machine_id(customer=customer, machine_id=machine_id)
         self.render('deinstall_maths_english_input.html', 
             activation_credentials=activation_credentials,
             customer=customer,
             machine_id=machine_id,
             timezone=timezone,
             deactivation_entry_code=deactivation_entry_code)
    def post(self):
        # Get customer and create an invoice.
        customer = Customer.get_by_key_name(self.get_current_username())
        invoice = Invoice(customer=customer)
        invoice.put()

        # Now start processing subscription data.
        subscription_data = self.session['subscription-data']
        products = db.get([db.Key(key) for key in subscription_data.get('products')])
        period = subscription_data.get('period')
        subscription_period = SubscriptionPeriod.get_by_period(period)

        units = [product for product in products if 'product_keys' not in product.properties()]
        baskets = [product for product in products if 'product_keys' in product.properties()]

        activation_credentials_list = []
        orders = []
        for unit in units:
            subscription = Subscription.get_by_product_and_period(unit, period)

            order = Order(customer=customer, invoice=invoice, subscription=subscription)
            order.subscription_price = subscription.price
            order.subscription_general_sales_tax = subscription.general_sales_tax
            order.subscription_period_in_months = subscription.period_in_months
            order.subscription_free_period_in_months = subscription_period.free_period_in_months
            order.price = subscription.price + subscription.general_sales_tax
            order.subscription_currency = subscription.currency
            orders.append(order)
            order.put()

            unit_id = unit.key().id()
            activation_credentials = ActivationCredentials()
            activation_credentials.serial_number = self.get_argument('u_%d_serial_number' % unit_id)
            activation_credentials.machine_id = self.get_argument('u_%d_machine_id' % unit_id)
            activation_credentials.order = order
            activation_credentials.product = unit
            activation_credentials.customer = customer
            logging.info(activation_credentials)
            activation_credentials_list.append(activation_credentials)

        for basket in baskets:
            subscription = Subscription.get_by_product_and_period(basket, period)

            order = Order(customer=customer, invoice=invoice, subscription=subscription)
            order.subscription_price = subscription.price
            order.subscription_general_sales_tax = subscription.general_sales_tax
            order.subscription_period_in_months = subscription.period_in_months
            order.subscription_free_period_in_months = subscription_period.free_period_in_months
            order.price = subscription.price + subscription.general_sales_tax
            order.subscription_currency = subscription.currency
            orders.append(order)
            order.put()

            for unit in basket.products:
                basket_id = basket.key().id()
                unit_id = unit.key().id()

                activation_credentials = ActivationCredentials()
                activation_credentials.serial_number = self.get_argument('b_%d_u_%d_serial_number' % (basket_id, unit_id,))
                activation_credentials.machine_id = self.get_argument('b_%d_u_%d_machine_id' % (basket_id, unit_id,))
                activation_credentials.order = order
                activation_credentials.product = unit
                activation_credentials.customer = customer
                logging.info(activation_credentials)
                activation_credentials_list.append(activation_credentials)

        db.put(activation_credentials_list)
        
        invoice.total_price = sum([order.price for order in orders])
        invoice.currency = orders[0].subscription_currency
        invoice.put()
        
        self.session['activation-invoice-key'] = str(invoice.key())
        self.redirect('/activate/overview')