def get(self, verifytoken): tokenEntity = EnkiModelTokenVerify.get_by_token_type( xstr(verifytoken), 'emailsubscriptionconfirm') if tokenEntity: newsletter = tokenEntity.state unsubscribe_token = EnkiModelEmailSubscriptions.add_newsletter( tokenEntity.email, newsletter) self.add_infomessage(MSG.SUCCESS(), MSG.EMAIL_SUBSCRIBED(newsletter)) # send welcome email with unsubscribe link link = enki.libutil.get_local_url('emailunsubscribe', { 'unsubscribetoken': unsubscribe_token, 'newsletter': newsletter }) self.send_email( tokenEntity.email, MSG.SEND_EMAIL_EMAIL_NEWSLETTER_WELCOME_SUBJECT(newsletter), MSG.SEND_EMAIL_EMAIL_NEWSLETTER_WELCOME_BODY(newsletter, link)) self.add_infomessage( MSG.INFORMATION(), MSG.EMAIL_NEWSLETTER_WELCOME_EMAIL_SENT(newsletter)) self.redirect(enki.libutil.get_local_url('home')) tokenEntity.key.delete() else: self.add_infomessage(MSG.INFORMATION(), MSG.EMAIL_SUBSCRIPTION_FAILED()) self.redirect(enki.libutil.get_local_url('emailsubscriptions'))
def post(self): secret = xstr(self.request.get('secret')) if secret == settings.SECRET_FASTSPRING or enki.libutil.is_debug( ) or settings.ENKI_EMULATE_STORE: quantity = xint(self.request.get('quantity')) licence_keys = EnkiModelProductKey.generate_licence_keys(quantity) self.response.write(licence_keys) return self.abort(404)
def get(self): self.render_tmpl( 'storeemulatefastspring.html', referrer=xstr(self.request.get('referrer')), active_menu='store', purchase_price='$3.00', purchaser_email='user_email@provided_to_fastspring.com', quantity=2, product='product_a', order_type='test')
def get(self, unsubscribetoken): unsubscribetoken = xstr(unsubscribetoken) tokenEntity = EnkiModelEmailSubscriptions.get_by_token( unsubscribetoken) newsletter = self.request.get(xstr('newsletter')) if not newsletter: # unsubscribe from all newsletters (or was already unsubscribed) if tokenEntity: EnkiModelEmailSubscriptions.remove_by_email(tokenEntity.email) self.add_infomessage(MSG.SUCCESS(), MSG.EMAIL_UNSUBSCRIBED_ALL()) elif (newsletter in settings.email_newsletter_name) or ( newsletter in tokenEntity.newsletters ): # unsubscribe from a specific newsletter (or was already unsubscribed) if tokenEntity: EnkiModelEmailSubscriptions.remove_newsletter_by_token( tokenEntity.token, newsletter) self.add_infomessage(MSG.SUCCESS(), MSG.EMAIL_UNSUBSCRIBED(newsletter)) else: # newsletter doesn't exist hence the user's already unsubscribed self.add_infomessage(MSG.SUCCESS(), MSG.EMAIL_UNSUBSCRIBED('')) self.redirect(enki.libutil.get_local_url('emailsubscriptions'))
def post(self): secret = xstr(self.request.get('secret')) if secret == settings.SECRET_FASTSPRING or enki.libutil.is_debug( ) or settings.ENKI_EMULATE_STORE: licence_key_bundle = xstr(self.request.get('licence_key')) purchase_price = xstr(self.request.get('purchase_price')) order_id = xstr(self.request.get('order_id')) product_name = xstr(self.request.get('product_name')) purchaser_email = xstr(self.request.get('purchaser_email')) shop_name = xstr(self.request.get('shop_name')) quantity = xint(self.request.get('quantity')) if secret == settings.SECRET_FASTSPRING: is_test = self.request.get('is_test') if is_test.capitalize() == 'True': order_type = 'test' else: order_type = 'purchase' else: order_type = xstr(self.request.get('order_type')) purchaser_user_id = None token_purchasebyuser = xstr(self.request.get('referrer')) if token_purchasebyuser: token = EnkiModelTokenVerify.get_by_token_type( token_purchasebyuser, 'purchasebyuser') if token: purchaser_user_id = token.user_id token.key.delete() licence_keys = licence_key_bundle.replace('-', '').split() for licence_key in licence_keys: item = EnkiModelProductKey(licence_key=licence_key, purchase_price=purchase_price, order_id=order_id, product_name=product_name, purchaser_email=purchaser_email, shop_name=shop_name, quantity=quantity, purchaser_user_id=purchaser_user_id, order_type=order_type) item.put() return
def post(self): self.check_CSRF() product = xstr(self.request.get('product')) quantity = xint(self.request.get('quantity')) order_type = xstr(self.request.get('order_type')) purchaser_email = xstr(self.request.get('purchaser_email')) purchaser_email = purchaser_email if purchaser_email else None purchaser_user_id = xint(self.request.get('purchaser_user_id')) purchaser_user_id = purchaser_user_id if purchaser_user_id != 0 else None info = xstr(self.request.get('info')) info = info if info else None order_id = webapp2_extras.security.generate_random_string( length=10, pool=webapp2_extras.security.DIGITS) licence_keys = EnkiModelProductKey.generate_licence_keys(quantity) licence_keys = licence_keys.replace('-', '').split() for licence_key in licence_keys: item = EnkiModelProductKey(licence_key=licence_key, order_id=order_id, product_name=product, shop_name='Generator', quantity=quantity, order_type=order_type, purchaser_email=purchaser_email, purchaser_user_id=purchaser_user_id, info=info) item.put() licence_key_display = [] for item in licence_keys: item_dash = EnkiModelProductKey.insert_dashes_5_10(item) licence_key_display.append(item_dash) self.add_infomessage( MSG.INFORMATION(), '<h3>Licence keys generated</h3>' + '<ul>' + '<li>product_name = <em>' + product + '</em></li>' + '<li>order_type = <em>' + order_type + '</em></li>' + '<li>order_id = <em>' + order_id + '</em></li>' + '<li>quantity = <em>' + xstr(quantity) + '</em></li>' + '<li>Recipient mail (purchaser_email) = <em>' + (purchaser_email if purchaser_email else 'none') + '</em></li>' + '<li>Recipient user id (purchaser_user_id) = <em>' + (xstr(purchaser_user_id) if purchaser_user_id else 'none') + '</em></li>' + '<li>info = <em>' + (info if info else 'none') + '</em></li>' + '<li>licence_key(s) = <br><em>' + '<br>'.join(licence_key_display) + '</em></li>' + '</ul>') self.redirect('licencesgeneratefree')
def post(self): if not settings.SECRET_FASTSPRING or enki.libutil.is_debug( ) or settings.ENKI_EMULATE_STORE: self.check_CSRF() product = xstr(self.request.get('product')) quantity = xint(self.request.get('quantity')) purchase_price = xstr(self.request.get('purchase_price')) purchaser_email = xstr(self.request.get('purchaser_email')) order_type = xstr(self.request.get('order_type')) licence_keys = 'not generated' user_id = '' order_id = webapp2_extras.security.generate_random_string( length=10, pool=webapp2_extras.security.DIGITS) url = webapp2.uri_for('generatelicencefastspring', _full=True) form_fields = { 'secret': 'pretendsecret', 'quantity': str(quantity) } form_data = enki.libutil.urlencode(form_fields) result = urlfetch.fetch(url=url, payload=form_data, method=urlfetch.POST) if result.status_code == 200: licence_keys = result.content.replace('-', '') referrer = xstr(self.request.get('referrer')) token = EnkiModelTokenVerify.get_by_token_type( referrer, 'purchasebyuser') if token: user_id = token.user_id licence_key_display = [] for item in licence_keys.split(): item_dash = EnkiModelProductKey.insert_dashes_5_10(item) licence_key_display.append(item_dash) self.add_infomessage( MSG.INFORMATION(), '<h3>FastSpring Store Emulator - Step 1</h3>' + '<h4>Emulated purchase details</h4>' + '<ul>' + '<li><EnkiModelProductKey> #{FastSpring variable} = <em><emulated value></em></li>' + '<li>product_name #{orderItem.productName} = <em>' + product + '</em></li>' + '<li>order_id #{order.id} = <em>' + order_id + '</em></li>' + '<li>quantity #{orderItem.quantity} = <em>' + xstr(quantity) + '</em></li>' + '<li>purchase_price #{orderItem.totalUSD} = <em>' + purchase_price + '</em></li>' + '<li>purchaser_email #{order.customer.email} = <em>' + purchaser_email + '</em></li>' + '<li>licence_key #{orderItem.fulfillment.licence.licences.list} = <br><em><b>' + '<br>'.join(licence_key_display) + '</b></em></li>' + '<li>shop_name = <em>Emulator</em></li>' + '<li>order_type = <em>' + order_type + '</em></li>' + '</ul>' '<h4>Internal data - generated if the purchaser was logged in when they bought the product</h4>' + '<ul>' + '<li>EnkiModelTokenVerify.user_id = purchaser user_id = <em>' + (xstr(user_id) if user_id else 'None') + '</em></li>' + '<li>EnkiModelTokenVerify.type purchasebyuser referrer #{order.referrer} = <em>' + (xstr(referrer) if referrer else 'None') + '</em></li>' + '</ul>') url = webapp2.uri_for('ordercompletefastspring', _full=True) form_fields = { 'licence_key': licence_keys, 'purchase_price': purchase_price, 'order_id': order_id, 'order_type': order_type, 'product_name': product, 'purchaser_email': purchaser_email, 'shop_name': 'Emulator', 'quantity': quantity, 'referrer': referrer, 'is_test': 'true' } form_data = enki.libutil.urlencode(form_fields) result = urlfetch.fetch(url=url, payload=form_data, method=urlfetch.POST) if result.status_code == 200: message_view_library = '' if self.is_logged_in(): message_view_library = '<p><a href="/profile" class="alert-link">View and activate licence keys</a>.</p>' self.add_infomessage( MSG.INFORMATION(), '<h3>FastSpring Store Emulator - Step 2</h3><p>Purchase records created<p>' + message_view_library) else: self.add_infomessage( MSG.WARNING(), '<h3>FastSpring Store Emulator - Step 2 FAILED: Purchase records not created</h3>' ) self.redirect_to_relevant_page()