Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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})