diff --git a/src/api/index.py b/src/api/index.py index a73498f..3c5b3ab 100755 --- a/src/api/index.py +++ b/src/api/index.py @@ -17,7 +17,7 @@ from flask_cors import CORS # from couchdbkit import Server, Document import stripe import json -from StringIO import StringIO +# from StringIO import StringIO import re import os from utils.params import PARAMS @@ -66,10 +66,20 @@ def get_plans_json(id): # Log this shit or not pass return "[]",HEADER -@app.route("/ui/signup/") +@app.route("/signup",methods=['GET','POST']) +def get_stripe(): + if request.method == 'GET' : + _object = {"data-key":CONFIG['stripe']['pub'].strip()} + return json.dumps(_object) + else: + print (request.args) + return 1 + +@app.route("/ui/signup/",methods=['GET','PUT']) def signup(id): """ """ + mystore = store.factory.instance(name=id) plans = mystore.get.plans() index = int(request.args['index']) @@ -77,6 +87,8 @@ def signup(id): args = {"product":id,"label":mystore.product['statement_descriptor'],"plan":plan,"context":CONTEXT,"now":datetime.now().year} args['theme'] = 'theme-clouds' + args['cloud-view'] = CONFIG['cloud-view'] + return render_template("signup.html",**args) @app.route("/ui/") def get_plans_ui(id): @@ -88,7 +100,8 @@ def get_plans_ui(id): label = mystore.product['statement_descriptor'] args = {"product":id,"label":label,"description":description,"context":CONTEXT,"plans":mystore.get.plans(),"now":datetime.now().year} args['theme'] = 'theme-clouds' - print (mystore.product.keys()) + # print (mystore.product.keys()) + session['cloud-view'] = CONFIG['cloud-view'] return render_template('plans.html',**args) @app.route("/init/",methods=['POST']) def init(product): @@ -106,31 +119,42 @@ def init(product): # # We should just pull the factory method and get a storage handler to handle the logs # - store = dict(CONFIG['couchdb']) - store['dbname'] = product - user = User(stripe=stripe,store=store,product=product) - user.subscribe(uid,plan_id) + # store = dict(CONFIG['couchdb']) + # store['dbname'] = product + # user = User(stripe=stripe,store=store,product=product) + # user.subscribe(uid,plan_id) - sub = None - if 'auid' in request.headers : - auid = request.headers['auid'] - user.update(emails=auid) - user.post() + # sub = None + # if 'auid' in request.headers : + # auid = request.headers['auid'] + # user.update(emails=auid) + # user.post() - store = dict(CONFIG['couchdb'],**{}) - store['dbname'] = product - store['uid'] = 'logs' + # store = dict(CONFIG['couchdb'],**{}) + # store['dbname'] = product + # store['uid'] = 'logs' - sub = user.get(uid,'subscriptions') - features = {} - for id in sub : - if sub[id]['active'] is True : - features[id] = sub[id] + # sub = user.get(uid,'subscriptions') + # features = {} + # for id in sub : + # if sub[id]['active'] is True : + # features[id] = sub[id] - user.refresh(uid) - session['key'] = user.user_key - session['uid'] = uid + # user.refresh(uid) + # session['key'] = user.user_key + # session['uid'] = uid + mystore = store.factory.instance(name=product,email=uid) + + + user = mystore.user + user.init (uid) + if not user.plan.info() : + mystore.plan.subscribe(email = user.info()['email']) + + + features = user.plan.info()['metadata']['features'] if 'features' in user.plan.info()['metadata'] else {} + print (features) return json.dumps(features),200 @@ -175,7 +199,7 @@ def subscribe(product): session['key'] = user.user_key session['uid'] = uid session['active-plans'] = [item['id'] for item in plans] - print session['active-plans'] + print (session['active-plans']) return (json.dumps(plans),200) def get_plans(product) : @@ -323,3 +347,4 @@ if __name__ == '__main__' : app.config['MAX_CONTENT_LENGTH'] = 1600 * 1024 * 1024 app.run(port=PORT,threaded=True,host='0.0.0.0') + # app.run() #'0.0.0.0',PORT,True,threaded=True) diff --git a/src/requirements.txt b/src/requirements.txt new file mode 100755 index 0000000..c71b360 --- /dev/null +++ b/src/requirements.txt @@ -0,0 +1,20 @@ +appdirs==1.4.3 +click==6.7 +couchdbkit==0.6.5 +Flask==0.12.1 +Flask-Cors==3.0.6 +http-parser==0.8.3 +itsdangerous==0.24 +Jinja2==2.9.6 +MarkupSafe==1.0 +numpy==1.12.1 +packaging==16.8 +pika==0.10.0 +pyparsing==2.2.0 +requests==2.13.0 +restkit==4.2.2 +six==1.10.0 +socketpool==0.5.3 +stripe==1.82.1 +Werkzeug==0.12.1 +git+https://dev.the-phi.com/git/steve/data-transport.git \ No newline at end of file diff --git a/src/utils/__init__.py b/src/utils/__init__.py index 8b13789..ef8cbe3 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -1 +1,2 @@ - +class void : + pass diff --git a/test/TestStore.py b/test/TestStore.py index 5d3b5d6..eb6a9d4 100644 --- a/test/TestStore.py +++ b/test/TestStore.py @@ -1,4 +1,5 @@ -from api.store import Store +# from api.store import Store, factory +import api.store as store import unittest import json import stripe @@ -9,22 +10,68 @@ class TestStore(unittest.TestCase): def test_getPlans(self): - mystore = Store(product='music') + mystore = store.factory.instance(name='music') self.assertTrue(mystore.get.plans()) - pass + + def test_getProducts(self): + mystore = store.factory.instance(name='smart-top') + self.assertTrue(mystore.get.products()) def test_getUser(self): """ """ email='nyemba@gmail.com' - mystore = Store(product='music') - self.assertTrue(mystore.get.user(email='nyemba@gmail.com')) + mystore = store.factory.instance(name='music',email=email) + # mystore.init('nyemba@gmail.com') + # self.assertTrue(mystore.get.user.info()) + user = mystore.user + user.init(email) + + self.assertTrue(user.info()) def test_UserPlan(self): """ For a given product we would like to know what our user's plan is """ email = 'nyemba@gmail.com' - mystore = Store(product='music') - print(mystore.get.plans(email=email))['id'] + mystore = store.factory.instance(name='music',email=email) + user = mystore.user + user.init (email) + user.plan.info() + + + def _test_CancelUserPlan(self) : + email = 'nyemba@gmail.com' + mystore = store.factory.instance(name='music',email=email) + user = mystore.user + # mystore.init(email) + # plan = mystore.get.user.plan() + user.init(email) + plan = user.plan.info() + + self.assertTrue ('id' in plan) + mystore.plan.cancel(id=plan['id']) + self.assertTrue ('id' in plan) + + # pass + pass + def test_SubscribeToPlan(self): + email = 'nyemba@gmail.com' + mystore = store.factory.instance(name='music',email=email) + user = mystore.user + user.init(email) + plans = mystore.get.plans() + uplan = user.plan.info() + # uplan = mystore.get.user.plan() + ids = [plan['id'] for plan in plans] + if not uplan : + id = [item for item in plans if item['amount'] == 0] + id = id[0]['id'] + mystore.plan.subscribe(id=id,email=email) + pass + else: + + new_id = list(set(ids) - set( [uplan['id']] ))[0] + mystore.plan.upgrade(new_id,email) + # mystore.plan.subscribe(new_id,email) pass if __name__ == '__main__': unittest.main() \ No newline at end of file