def get_context(context): context.no_cache = 1 context.api_key = get_api_key() try: doc = dataent.get_doc("Integration Request", dataent.form_dict['token']) payment_details = json.loads(doc.data) for key in expected_keys: context[key] = payment_details[key] context['token'] = dataent.form_dict['token'] context['amount'] = flt(context['amount']) context['subscription_id'] = payment_details['subscription_id'] \ if payment_details.get('subscription_id') else '' except Exception as e: dataent.redirect_to_message(_('Invalid Token'), _('Seems token you are using is invalid!'), http_status_code=400, indicator_color='red') dataent.local.flags.redirect_location = dataent.local.response.location raise dataent.Redirect
def signup(full_name, email, subdomain, plan="Free"): status = _signup(full_name, email, subdomain, plan=plan) context = { 'pathname': 'schools/signup' if distribution == 'schools' else 'signup' } if status == 'success': location = dataent.redirect_to_message( _('Thank you for signing up'), """<div><p>You will receive an email at <strong>{}</strong>, asking you to verify this account request.<br> If you are unable to find the email in your inbox, please check your SPAM folder. It may take a few minutes before you receive this email.</p> <p>Once you click on the verification link, your account will be ready in a few minutes.</p> </div>""".format(email), context=context) elif status == 'retry': return {} else: # something went wrong location = dataent.redirect_to_message( _('Something went wrong'), 'Please try again or drop an email to [email protected]', context=context) return {'location': location}
def get_context(self, context): newsletters = get_newsletter_list("Newsletter", None, None, 0) if newsletters: newsletter_list = [d.name for d in newsletters] if self.name not in newsletter_list: dataent.redirect_to_message(_('Permission Error'), _("You are not permitted to view the newsletter.")) dataent.local.flags.redirect_location = dataent.local.response.location raise dataent.Redirect else: context.attachments = get_attachments(self.name) context.no_cache = 1 context.show_sidebar = True
def get_context(context): context.no_cache = 1 # all these keys exist in form_dict if not (set(expected_keys) - set(dataent.form_dict.keys())): for key in expected_keys: context[key] = dataent.form_dict[key] else: dataent.redirect_to_message( _('Some information is missing'), _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.' )) dataent.local.flags.redirect_location = dataent.local.response.location raise dataent.Redirect
def create_stripe_subscription(gateway_controller, data): stripe_settings = dataent.get_doc("Stripe Settings", gateway_controller) stripe_settings.data = dataent._dict(data) stripe.api_key = stripe_settings.get_password(fieldname="secret_key", raise_exception=False) stripe.default_http_client = stripe.http_client.RequestsClient() try: stripe_settings.integration_request = create_request_log( stripe_settings.data, "Host", "Stripe") stripe_settings.payment_plans = dataent.get_doc( "Payment Request", stripe_settings.data.reference_docname).subscription_plans return create_subscription_on_stripe(stripe_settings) except Exception: dataent.log_error(dataent.get_traceback()) return { "redirect_to": dataent.redirect_to_message( _('Server Error'), _("It seems that there is an issue with the server's stripe configuration. In case of failure, the amount will get refunded to your account." )), "status": 401 }
def get_context(context): context.no_cache = 1 context.api_key = get_razorpay_settings().api_key context.brand_image = (dataent.db.get_value("Razorpay Settings", None, "brand_image") or './assets/epaas/images/erp-icon.svg') if dataent.form_dict.payment_request: payment_req = dataent.get_doc('Payment Request', dataent.form_dict.payment_request) validate_transaction_currency(payment_req.currency) if payment_req.status == "Paid": dataent.redirect_to_message(_('Already Paid'), _('You have already paid for this order')) return reference_doc = dataent.get_doc(payment_req.reference_doctype, payment_req.reference_name) context.amount = payment_req.grand_total context.title = reference_doc.company context.description = payment_req.subject context.doctype = payment_req.doctype context.name = payment_req.name context.payer_name = reference_doc.customer_name context.payer_email = reference_doc.get('email_to') or dataent.session.user context.order_id = payment_req.name context.reference_doctype = payment_req.reference_doctype context.reference_name = payment_req.reference_name # all these keys exist in form_dict elif not (set(expected_keys) - set(dataent.form_dict.keys())): for key in expected_keys: context[key] = dataent.form_dict[key] context['amount'] = flt(context['amount']) context['reference_doctype'] = context['reference_name'] = None else: dataent.redirect_to_message(_('Some information is missing'), _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.')) dataent.local.flags.redirect_location = dataent.local.response.location raise dataent.Redirect
def get_context(context): context.no_cache = 1 # all these keys exist in form_dict if not (set(expected_keys) - set(dataent.form_dict.keys())): for key in expected_keys: context[key] = dataent.form_dict[key] context['amount'] = flt(context['amount']) gateway_controller = get_gateway_controller(context.reference_docname) context['header_img'] = dataent.db.get_value("GoCardless Settings", gateway_controller, "header_img") else: dataent.redirect_to_message( _('Some information is missing'), _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.' )) dataent.local.flags.redirect_location = dataent.local.response.location raise dataent.Redirect
def signup(last_name, email, subdomain, company_name, phone_number, plan=None, distribution="epaas", res=None): status = _signup(last_name, email, subdomain, plan=plan, distribution=distribution, reseller=res) if status == 'success': location = dataent.redirect_to_message( _('Verify your Email'), """<div><p>You will receive an email at <strong>{}</strong>, asking you to verify this account request.<p><br> <p>It may take a few minutes before you receive this email. If you don't find it, please check your SPAM folder.</p> </div>""".format(email), indicator_color='blue') elif status == 'retry': return {} else: # something went wrong location = dataent.redirect_to_message( _('Something went wrong'), 'Please try again or drop an email to [email protected]', indicator_color='red') return {'location': location}
def get_context(context): context.no_cache = 1 # all these keys exist in form_dict if not (set(expected_keys) - set(list(dataent.form_dict))): for key in expected_keys: context[key] = dataent.form_dict[key] gateway_controller = get_gateway_controller(context.reference_doctype, context.reference_docname) context.publishable_key = get_api_key(context.reference_docname, gateway_controller) context.image = get_header_image(context.reference_docname, gateway_controller) context['amount'] = fmt_money(amount=context['amount'], currency=context['currency']) if dataent.db.get_value(context.reference_doctype, context.reference_docname, "is_a_subscription"): payment_plan = dataent.db.get_value(context.reference_doctype, context.reference_docname, "payment_plan") recurrence = dataent.db.get_value("Payment Plan", payment_plan, "recurrence") context['amount'] = context['amount'] + " " + _(recurrence) else: dataent.redirect_to_message( _('Some information is missing'), _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.' )) dataent.local.flags.redirect_location = dataent.local.response.location raise dataent.Redirect
def create_request(self, data): import stripe self.data = dataent._dict(data) stripe.api_key = self.get_password(fieldname="secret_key", raise_exception=False) stripe.default_http_client = stripe.http_client.RequestsClient() try: self.integration_request = create_request_log(self.data, "Host", "Stripe") return self.create_charge_on_stripe() except Exception: dataent.log_error(dataent.get_traceback()) return{ "redirect_to": dataent.redirect_to_message(_('Server Error'), _("It seems that there is an issue with the server's stripe configuration. In case of failure, the amount will get refunded to your account.")), "status": 401 }
def create_payment_request(self, data): self.data = dataent._dict(data) try: self.integration_request = create_request_log( self.data, "Host", "Braintree") return self.create_charge_on_braintree() except Exception: dataent.log_error(dataent.get_traceback()) return { "redirect_to": dataent.redirect_to_message( _('Server Error'), _("There seems to be an issue with the server's braintree configuration. Don't worry, in case of failure, the amount will get refunded to your account." )), "status": 401 }
def make_payment(razorpay_payment_id, options, reference_doctype, reference_docname): try: razorpay_payment = dataent.get_doc({ "doctype": "Razorpay Payment", "razorpay_payment_id": razorpay_payment_id, "data": options, "reference_doctype": reference_doctype, "reference_docname": reference_docname }) razorpay_payment.insert(ignore_permissions=True) if dataent.db.get_value("Razorpay Payment", razorpay_payment.name, "status") == "Authorized": return { "redirect_to": razorpay_payment.flags.redirect_to or "razorpay-payment-success", "status": 200 } except AuthenticationError, e: make_log_entry(e.message, options) return{ "redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")), "status": 401 }
}) razorpay_payment.insert(ignore_permissions=True) if dataent.db.get_value("Razorpay Payment", razorpay_payment.name, "status") == "Authorized": return { "redirect_to": razorpay_payment.flags.redirect_to or "razorpay-payment-success", "status": 200 } except AuthenticationError, e: make_log_entry(e.message, options) return{ "redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")), "status": 401 } except InvalidRequest, e: make_log_entry(e.message, options) return { "redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")), "status": 400 } except GatewayError, e: make_log_entry(e.message, options) return { "redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")), "status": 500 }