def user_home(): user = get_authenticated_user_by_id(session['user_id']) admin_user = user_is_admin(user) app_templates = {} if admin_user: for template in con.AppTemplate.find(): app_templates[unicode(template._id)] = template else: for template in con.AppTemplate.find({"group":"user"}): app_templates[unicode(template._id)] = template app_stats = {} for user_app in user.apps: app_id = unicode(user_app.key) app_stats[app_id] = build_app_stats_for_app_id(app_id) if request.method == 'GET': return render_template("account/home.html", user=user, app_stats=app_stats, app_templates=app_templates) else: if 'add-app' in request.form : passed, errors = validate_add_app_form(request.form, user) if not passed: return render_template("account/home.html", user=user, addAppErrors=errors, appName=request.form.get('appName'), appTemplate=request.form.get('appTemplate'), pricePlan=request.form.get('pricePlan'), app_stats=app_stats, app_templates=app_templates) app_template = con.AppTemplate.find_one({'_id':ObjectId(request.form.get('appTemplate'))}) price_plan_id = request.form.get('priceplan') price_plans = [price_plan for price_plan in app_template.price_plans if unicode(price_plan._id) == price_plan_id] if not len(price_plans) == 1: return render_template("account/home.html", user=user, addAppErrors=['There was a problem with the price plan you selected, please choose again'], appName=request.form.get('appName'), appTemplate=request.form.get('appTemplate'), pricePlan=request.form.get('pricePlan'), app_stats=app_stats, app_templates=app_templates) price_plan = price_plans[0] #TODO Here we need to add the payment bit subscription_id = create_new_subscription(int(time.time()), 0, price_plan) user_app_name = request.form.get('appName') user_app_key = hashlib.sha224("%s %s" % (unicode(user._id), user_app_name)).hexdigest() user_app_secret_seed = "%s %s %s" % (unicode(user._id), user_app_name, time.time()) user_app_secret = hashlib.sha224(user_app_secret_seed).hexdigest() user_app = AuthenticatedUserApp({ "name":user_app_name, "key":user_app_key, "secret":user_app_secret, "subscription_ids":[subscription_id]}) user = get_authenticated_user_by_id(session['user_id']) user.apps.append(user_app) user.save() return render_template("account/home.html", user=user, app_stats=app_stats, app_templates=app_templates)
def run_register_new_device_adapter(request, api_method_wrapper): view = getattr(views, api_method_wrapper.view) device_guid = request.form.get('deviceguid') if not device_guid: return view('failure', {"errors":["You did not include a guid for this device"]}) metalens_account = get_authenticated_user_by_riverid("metalens") candidate_apps = [app for app in metalens_account.apps if app.key == device_guid] if candidate_apps: user_app = candidate_apps[0] else: metalens_price_plans = get_all_price_plans_for_app_template('metalens/1', "admin") #TODO Here we need to add support for creating paid accounts too price_plan = [p for p in metalens_price_plans if p.name == "A metaLens Device"][0] subscription_id = create_new_subscription(int(time.time()), 0, price_plan) user_app_name = 'A metaLens Device %s' % device_guid user_app_key = device_guid user_app_secret_seed = "%s %s %s" % (unicode(metalens_account._id), user_app_name, time.time()) user_app_secret = hashlib.sha224(user_app_secret_seed).hexdigest() user_app_template = unicode(con.AppTemplate.find_one({'name':'A metaLens Device'})._id) user_app = AuthenticatedUserApp({ "name":user_app_name, "key":user_app_key, "secret":user_app_secret, "subscription_ids":[subscription_id], "template":user_app_template}) metalens_account.apps.append(user_app) metalens_account.save() return view('success', {'key':user_app.key, 'secret':user_app.secret})