def dashboard_page(): ''' Dashboard: Generate the Welcome/Status page for the dashboard ''' verify = verifyLogin( app.config['SECRET_KEY'], app.config['COOKIE_TIMEOUT'], request.cookies) if verify: user = User() user.get('uid', verify, g.rdb_conn) data = startData(user) data['active'] = 'dashboard' data['url'] = '/dashboard' data['js_bottom'].append("member/screen-o-death.js") data['js_bottom'].append("member/screen-o-death-chart.js") if user.status != "active": data['url'] = '/dashboard/mod-subscription' page = render_template('member/mod-subscription.html', data=data) else: data['monitors'] = user.getMonitors(g.rdb_conn) data['reactions'] = user.getReactions(g.rdb_conn) data['monevents'] = user.getEvents(g.rdb_conn) data['moneventsnum'] = len(data['monevents']) data['monstats'] = {'healthy': 0, 'unknown': 0, 'failed': 0} for key in data['monitors'].keys(): if "healthy" in data['monitors'][key]['status']: data['monstats']['healthy'] = data[ 'monstats']['healthy'] + 1 elif "failed" in data['monitors'][key]['status']: data['monstats']['failed'] = data['monstats']['failed'] + 1 else: data['monstats']['unknown'] = data[ 'monstats']['unknown'] + 1 # If there are no monitors print a welcome message if len(data['monitors']) < 1 and len(data['reactions']) < 1: data['welcome'] = True else: data['welcome'] = False if len(data['monitors']) < 1: data['mons'] = False else: data['mons'] = True if len(data['reactions']) < 1: data['reacts'] = False else: data['reacts'] = True from generalforms import subscribe form = subscribe.AddPackForm(request.form) page = render_template( 'member/screen-o-death.html', data=data, form=form) return page else: return redirect(url_for('user.login_page'))
def modsub_page(): '''Dashboard Modify Subscription: This will allow a user to modify their subscription and account plan ''' verify = verifyLogin(app.config['SECRET_KEY'], app.config['COOKIE_TIMEOUT'], request.cookies) if verify: user = User() user.get('uid', verify, g.rdb_conn) data = startData(user) data['active'] = 'dashboard' data['url'] = '/dashboard/mod-subscription' data['uid'] = user.uid tmpl = 'member/mod-subscription.html' data['js_bottom'].append('forms/subscribe.js') form = [] from generalforms import subscribe payment = __import__("payments." + user.payments, globals(), locals(), ['Payments'], -1) subscription = payment.Payments(user=user, config=app.config, rdb=g.rdb_conn) if request.method == "POST": if data['upgraded'] is True: result = subscription.adjust(request) else: result = subscription.create(request) if result is True: if data['upgraded'] is True: flash('Adjustment to subscription successful', 'success') else: data['upgraded'] = True flash('Successfully Subscribed!', 'success') newdata = startData(user) data['limit'] = newdata['limit'] data['rlimit'] = newdata['rlimit'] data['acttype'] = newdata['acttype'] data['subplans'] = newdata['subplans'] data['cost'] = newdata['cost'] data['subscription'] = newdata['subscription'] else: flash('Unable to adjust subscription please notify support', 'danger') if data['upgraded'] is True: form = subscribe.AddPackForm(request.form) page = render_template(tmpl, data=data, form=form) return page else: flash('Please Login.', 'warning') return redirect(url_for('user.login_page'))
def parse_form(self, request): ''' Parse the form used to subscribe and return a dict of processed data''' from generalforms import subscribe form = subscribe.AddPackForm(request.form) if request.method == "POST" and \ "stripeToken" in request.form and "plan" in request.form: stripe_token = request.form['stripeToken'] plan = request.form['plan'] return_data = {'type': 'subscribe', 'stripe_token' : stripe_token, 'plan' : plan} elif request.method == "POST": if form.validate(): return_data = {'type': 'adjust', 'quantity': int(form.add_packs.data)} else: return_data = False return return_data
def modsub_page(): '''Dashboard Modify Subscription: This will allow a user to modify their subscription and account plan ''' verify = verifyLogin(app.config['SECRET_KEY'], app.config['COOKIE_TIMEOUT'], request.cookies) if verify: user = User() user.get('uid', verify, g.rdb_conn) data = startData(user) data['active'] = 'dashboard' data['url'] = '/dashboard/mod-subscription' data['uid'] = user.uid tmpl = 'member/mod-subscription.html' data['js_bottom'].append('forms/subscribe.js') form = [] headers = { "content-type": "application/json", "Authorization": app.config['ASSEMBLY_PRIVATE_KEY'] } from generalforms import subscribe if data['acttype'] == "Lite": # Upgrade Users if request.method == "POST" and \ "stripeToken" in request.form and "plan" in request.form: stripeToken = request.form['stripeToken'] plan = request.form['plan'] if stripeToken: result = None monitor = Monitor() payload = { 'email': user.email, 'quantity': monitor.count(user.uid, g.rdb_conn), 'card': stripeToken, 'plan': plan } json_payload = json.dumps(payload) url = app.config['ASSEMBLY_PAYMENTS_URL'] + "/customers" print("Making request to %s") % url try: # Send Request to Assembly to create user and subscribe # them to desired plan result = requests.post(url=url, headers=headers, data=json_payload, verify=True) except: print("Critical Error making request to ASM Payments") flash( 'There was an error processing \ your card details.', 'danger') print("Got {0} status code from Assembly".format( result.status_code)) if result.status_code >= 200 and result.status_code <= 299: rdata = json.loads(result.text) user.stripeid = rdata['id'] user.stripe = stripeToken user.subplans = payload['quantity'] user.subscription = payload['plan'] user.acttype = "pro" print("Setting UID %s Subscription to: %s") % ( user.uid, user.acttype) subres = user.setSubscription(g.rdb_conn) stathat.ez_count( app.config['STATHAT_EZ_KEY'], app.config['ENVNAME'] + ' User Upgrades', 1) if subres: newdata = startData(user) data['limit'] = newdata['limit'] data['rlimit'] = newdata['rlimit'] data['acttype'] = newdata['acttype'] data['subplans'] = newdata['subplans'] data['cost'] = newdata['cost'] data['subscription'] = newdata['subscription'] flash('Subscription successfully created.', 'success') else: flash('Subscription not successfully created.', 'danger') # Increase subscription if data['acttype'] != "Lite": form = subscribe.AddPackForm(request.form) if request.method == "POST" and "stripeToken" not in request.form: if form.validate(): add_packs = int(form.add_packs.data) # Set subscription quantity to desired monitor count payload = {'quantity': add_packs} json_payload = json.dumps(payload) url = app.config[ 'ASSEMBLY_PAYMENTS_URL'] + "/customers/" + user.stripeid print("Making request to %s") % url try: # Get Subscription ID result = requests.get(url=url, headers=headers, verify=True) if result.status_code == 200: rdata = json.loads(result.text) subsid = rdata['subscriptions']['data'][0]['id'] url = url + "/subscriptions/" + subsid print("Making request to %s") % url # Set Quantity try: result = requests.put(url=url, headers=headers, data=json_payload, verify=True) except: print("Critical Error making \ request to ASM Payments") flash( 'An error occured while \ processing the form.', 'danger') else: flash( 'An error occured while \ processing the form.', 'danger') except: print("Critical Error making request to ASM Payments") flash( 'An error occured \ while processing the form.', 'danger') print("Got {0} status code from Assembly".format( result.status_code)) if result.status_code >= 200 and result.status_code <= 299: user.subplans = add_packs # Save user config print("Setting subscription count to \ {0} for user {1}".format(add_packs, user.uid)) subres = user.setSubscription(g.rdb_conn) if subres: newdata = startData(user) data['limit'] = newdata['limit'] data['rlimit'] = newdata['rlimit'] data['acttype'] = newdata['acttype'] data['subplans'] = newdata['subplans'] data['cost'] = newdata['cost'] flash('Subscription successfully modified.', 'success') else: flash('Unknown error modifing subscription.', 'danger') page = render_template(tmpl, data=data, form=form) return page else: flash('Please Login.', 'warning') return redirect(url_for('user.login_page'))