Example #1
0
def amazon_fetch_product(friend_id):
    user = UserActions.find_by_id(g.user['id'])
    friend = UserActions.find_by_id(friend_id)

    task = amazon_task.get_product.apply_async([friend])

    return jsonify(**{"data": {'task_id': task.id}})
Example #2
0
def check_user_logged_in():
    if session.get('user'):
        g.user = session.get('user')
        return

    result = get_user_from_cookie(cookies=request.cookies,
                                  app_id=app.config["FB_APP_ID"],
                                  app_secret=app.config["FB_APP_SECRET"])

    if result:
        user = UserActions.find_by_id(result['uid'])

        if not user:
            graph = GraphAPI(result['access_token'])
            args = {'fields': 'birthday, name, email'}
            profile = graph.get_object('me', **args)
            UserActions.new_facebook_user(profile, result)
        elif user.access_token != result['access_token']:
            user.access_token = result['access_token']

        user = UserActions.find_by_id(result['uid'])

        session['user'] = dict(name=user.name,
                               profile_url=user.profile_url,
                               id=user.id,
                               access_token=user.access_token)

    db.session.commit()
    g.user = session.get('user', None)
Example #3
0
def index(name="index", *args, **kawrgs):
    if request.is_xhr:
        return "", 400

    if g.user:
        # try:
        graph = GraphAPI(g.user['access_token'])
        args = {'fields': 'birthday, name, email'}
        facebook_friends = graph.get_object('me/friends', **args)

        user = UserActions.find_by_id(g.user['id'])

        for facebook_friend in facebook_friends['data']:
            friend = UserActions.new(facebook_friend)
            FriendRelationshipActions.create(user, friend)

        relations = FriendRelationshipActions.find_by_user(user)

        return render_template("index.html",
                               app_id=app.config["FB_APP_ID"],
                               user=user,
                               relations=relations)
    # except Exception:
    #     return redirect(url_for('logout'))

    return render_template("login.html", app_id=app.config["FB_APP_ID"])
    def setUp(self):
        app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://*****:*****@localhost/giftsmarts_test"
        db.session.close()
        db.drop_all()
        db.create_all()

        self.profile_1 = ['118600698523151', 'Luke Skywalker Alaaaiffajfch Occhinosky', '', '', '1980-01-30']
        profile_2 = {'id': '118600698523152', 'name': 'Han Solo Alaaaiffajfch Occhinosky', 'birthday': '01/30/1979'}
        profile_3 = {'id': '118600698523153', 'name': 'Padme  Alaaaiffajfch Occhinosky', 'birthday': '01/30/1979'}

        family_rel_name = "family"
        friend_rel_name = "friend"

        FriendRelationShipTypeActions.create(family_rel_name)
        FriendRelationShipTypeActions.create(friend_rel_name)
        FriendRelationShipTypeActions.create("acquaintance")

        rel_family = FriendRelationShipTypeActions.find_by_name(family_rel_name)
        rel_friend = FriendRelationShipTypeActions.find_by_name(friend_rel_name)

        self.user_1 = UserActions.create_user_from_csv(self.profile_1)
        user_2 = UserActions.new_facebook_user(profile_2, {'access_token': 'mock access token'})
        user_3 = UserActions.new_facebook_user(profile_3, {'access_token': 'mock access token'})
        FriendRelationshipActions.create(self.user_1, user_2, rel_family)
        FriendRelationshipActions.create(self.user_1, user_3, rel_friend)
        product_1 = ProductActions.create("1")
        product_2 = ProductActions.create("2")
        category = CategoryActions.create("Book")
        UserProductActions.create(self.user_1, product_1, category)
        UserProductActions.create(self.user_1, product_2, category)
Example #5
0
def check_user_logged_in():
    if session.get('user'):
        g.user = session.get('user')
        return

    result = get_user_from_cookie(cookies=request.cookies, app_id=app.config["FB_APP_ID"],
                                  app_secret=app.config["FB_APP_SECRET"])

    if result:
        user = UserActions.find_by_id(result['uid'])

        if not user:
            graph = GraphAPI(result['access_token'])
            args = {'fields': 'birthday, name, email'}
            profile = graph.get_object('me', **args);
            UserActions.new_facebook_user(profile, result)
        elif user.access_token != result['access_token']:
            user.access_token = result['access_token']

        user = UserActions.find_by_id(result['uid'])

        session['user'] = dict(name=user.name, profile_url=user.profile_url,
                               id=user.id, access_token=user.access_token)

    db.session.commit()
    g.user = session.get('user', None)
Example #6
0
    def setUp(self):
        app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://*****:*****@localhost/giftsmarts_test"
        db.session.close()
        db.drop_all()
        db.create_all()

        FriendRelationShipTypeActions.create("relationship 1")
        FriendRelationShipTypeActions.create("relationship 2")
        FriendRelationShipTypeActions.create("relationship 3")

        self.profile_1 = ['118600698523151', 'Luke Skywalker Alaaaiffajfch Occhinosky', '', '', '1980-01-30']
        profile_2 = {'id': '118600698523152', 'name': 'Han Solo Alaaaiffajfch Occhinosky', 'birthday': '01/30/1979'}
        profile_3 = {'id': '118600698523153', 'name': 'Padme  Alaaaiffajfch Occhinosky', 'birthday': '01/30/1979'}

        self.user_1 = UserActions.create_user_from_csv(self.profile_1)
        user_2 = UserActions.new_facebook_user(profile_2, {'access_token': 'mock access token'})
        user_3 = UserActions.new_facebook_user(profile_3, {'access_token': 'mock access token'})
        FriendRelationshipActions.create(self.user_1, user_2)
        FriendRelationshipActions.create(self.user_1, user_3)

        product_1 = ProductActions.create("1")
        product_2 = ProductActions.create("2")
        category = CategoryActions.create("Book")
        UserProductActions.create(self.user_1, product_1, category)
        UserProductActions.create(self.user_1, product_2, category)
Example #7
0
def get_product(self, user):

    product_list = {}
    products = []

    searches = nltk.Nltk.generate_searches(
        Post.query.filter_by(user_id=user.id))

    print('# of searches')
    print(len(searches))
    print('post searches')
    for i in range(3):
        search = random.choice(searches)
        print(i, search)
        try:
            ps = amazon.search(Keywords=search,
                               SearchIndex=AMAZON_CATEGORIES[0])
            for p in ps:
                product_list[p.title] = p
        except Exception as e:
            print('Exception')
            print(e)
            continue

    for p in product_list.keys():
        print(p.title)
        products.append(product_list[p])

    print('Total # of products')
    print(len(products))

    random.shuffle(products)
    products = products[:100]

    print('Sliced # of products')
    print(len(products))

    for index, product in enumerate(products, start=1):  # default is zero
        product_endity = ProductActions.create(product.asin)
        redis.set(product.asin, product.to_string())

        # check category
        product_category = product.get_attribute('ProductGroup')
        category = CategoryActions.find_by_name(product_category)

        if category is None:
            category = CategoryActions.create(product_category)
            UserActions.add_category(user, category)

        UserProductActions.create(user, product_endity, category)
        self.update_state(state='PROGRESS',
                          meta={
                              'current': index,
                              'total': 100,
                              'user_id': user.id
                          })

    return {'user_id': user.id, 'status': 'Task completed!'}
Example #8
0
def get_product(self, user):

    product_list = {}
    products = []

    searches = nltk.Nltk.generate_searches(Post.query.filter_by(user_id=user.id))

    print('# of searches')
    print(len(searches))
    print('post searches')
    for i in range(3):
        search = random.choice(searches)
        print(i, search)
        try:
            ps = amazon.search(Keywords=search, SearchIndex=AMAZON_CATEGORIES[0])
            for p in ps:
                product_list[p.title] = p
        except Exception as e:
            print('Exception')
            print(e)
            continue

    for p in product_list.keys():
        print(p.title)
        products.append(product_list[p])

    print('Total # of products')
    print(len(products))

    random.shuffle(products)
    products = products[:100]

    print('Sliced # of products')
    print(len(products))

    for index, product in enumerate(products, start=1):   # default is zero
        product_endity = ProductActions.create(product.asin)
        redis.set(product.asin, product.to_string())

        # check category
        product_category = product.get_attribute('ProductGroup')
        category = CategoryActions.find_by_name(product_category)

        if category is None:
            category = CategoryActions.create(product_category)
            UserActions.add_category(user, category)

        UserProductActions.create(user, product_endity, category)
        self.update_state(state='PROGRESS',
                          meta={
                              'current': index,
                              'total': 100,
                              'user_id': user.id
                          })

    return {'user_id': user.id, 'status': 'Task completed!'}
Example #9
0
def amazon_fetch_product(friend_id):
    user = UserActions.find_by_id(g.user['id'])
    friend = UserActions.find_by_id(friend_id)

    task = amazon_task.get_product.apply_async([friend])

    return jsonify(**{
        "data": {
            'task_id': task.id
        }
    })
Example #10
0
def contact_us():
    user = UserActions.find_by_id(g.user['id'])

    if request.method == 'POST':
        user = UserActions.find_by_id(g.user['id'])
        subject = comment.subject.data,
        feedback = comment.message.data,
        CommentActions.create(user, subject, feedback)
        return render_template('contact_us.html', success=True, user=user)

    elif request.method == 'GET':
        return render_template("contact_us.html", user=user)
Example #11
0
def contact_us():
    user = UserActions.find_by_id(g.user['id'])

    if request.method == 'POST':
        user = UserActions.find_by_id(g.user['id'])
        subject=comment.subject.data,
        feedback=comment.message.data,
        CommentActions.create(user, subject, feedback)
        return render_template('contact_us.html', success=True, user=user)

    elif request.method == 'GET':
        return render_template("contact_us.html", user=user)
Example #12
0
def taskstatus(task_id):
    task = amazon_task.get_product.AsyncResult(task_id)

    if task.status == "PROGRESS":
        response = {
            'state': task.state,
            'task_id': task_id,
            'current': task.info.get('current', 0),
            'total': task.info.get('total', 0),
            'status': 'Pending...'
        }

        friend = UserActions.find_by_id(task.info.get('user_id'))
        products = []
        user_products = UserProductActions.find_by_user(friend)
        result_to_json = Serializer("UserProduct", user_products).run()

        for user_product in result_to_json:
            product = redis.get(user_product['product_id'])
            product_dict = xmltodict.parse(product)
            user_product['product_details']= product_dict
        response['data'] = result_to_json

    elif task.status == 'SUCCESS':
        response = {
            'state': task.state,
            'task_id': task_id,
            'current': 3,
            'total': 3,
            'status': task.status,
        }

        friend = UserActions.find_by_id(task.info.get('user_id'))
        products = []
        user_products = UserProductActions.find_by_user(friend)
        result_to_json = Serializer("UserProduct", user_products).run()

        for user_product in result_to_json:
            product = redis.get(user_product['product_id'])
            product_dict = xmltodict.parse(product)
            user_product['product_details']= product_dict
        response['data'] = result_to_json
    else:
        response = {
            'state': task.state,
            'task_id': task_id,
            'current': 0,
            'total': 0,
            'status': 'Pending...'
        }

    return json.dumps(response)
Example #13
0
def taskstatus(task_id):
    task = amazon_task.get_product.AsyncResult(task_id)

    if task.status == "PROGRESS":
        response = {
            'state': task.state,
            'task_id': task_id,
            'current': task.info.get('current', 0),
            'total': task.info.get('total', 0),
            'status': 'Pending...'
        }

        friend = UserActions.find_by_id(task.info.get('user_id'))
        products = []
        user_products = UserProductActions.find_by_user(friend)
        result_to_json = Serializer("UserProduct", user_products).run()

        for user_product in result_to_json:
            product = redis.get(user_product['product_id'])
            product_dict = xmltodict.parse(product)
            user_product['product_details'] = product_dict
        response['data'] = result_to_json

    elif task.status == 'SUCCESS':
        response = {
            'state': task.state,
            'task_id': task_id,
            'current': 3,
            'total': 3,
            'status': task.status,
        }

        friend = UserActions.find_by_id(task.info.get('user_id'))
        products = []
        user_products = UserProductActions.find_by_user(friend)
        result_to_json = Serializer("UserProduct", user_products).run()

        for user_product in result_to_json:
            product = redis.get(user_product['product_id'])
            product_dict = xmltodict.parse(product)
            user_product['product_details'] = product_dict
        response['data'] = result_to_json
    else:
        response = {
            'state': task.state,
            'task_id': task_id,
            'current': 0,
            'total': 0,
            'status': 'Pending...'
        }

    return json.dumps(response)
Example #14
0
def user_feedback():
    user = UserActions.find_by_id(g.user['id'])
    form = ContactForm()

    if request.method == 'POST':
        user = UserActions.find_by_id(g.user['id'])
        subject=form.subject.data,
        feedback=form.message.data,
        CommentActions.create(user, subject, feedback)
        return render_template('user_feedback.html', success=True, user=user)

    elif request.method == 'GET':
        return render_template("user_feedback.html", form=form, user=user)
Example #15
0
def user_feedback():
    user = UserActions.find_by_id(g.user['id'])
    form = ContactForm()

    if request.method == 'POST':
        user = UserActions.find_by_id(g.user['id'])
        subject = form.subject.data,
        feedback = form.message.data,
        CommentActions.create(user, subject, feedback)
        return render_template('user_feedback.html', success=True, user=user)

    elif request.method == 'GET':
        return render_template("user_feedback.html", form=form, user=user)
Example #16
0
    def run(self):
        print("Get friends datas from facebook")

        user = UserActions.find_by_id('118600698523150')
        graph = GraphAPI(user.access_token)
        args = {'fields' : 'birthday, name, email'}
        friends = graph.get_object('me/friends', **args)

        for friend in friends['data']:
            UserActions.create(friend)
            posts = graph.get_connections(friend['id'], 'posts')
            for post in posts['data']:
                post = PostActions.create(post, friend)
                print(post)
        pass
Example #17
0
    def run(self):
        print("Get friends datas from facebook")

        user = UserActions.find_by_id('118600698523150')
        graph = GraphAPI(user.access_token)
        args = {'fields': 'birthday, name, email'}
        friends = graph.get_object('me/friends', **args)

        for friend in friends['data']:
            UserActions.create(friend)
            posts = graph.get_connections(friend['id'], 'posts')
            for post in posts['data']:
                post = PostActions.create(post, friend)
                print(post)
        pass
Example #18
0
def username(name="username", token=None):
    user_id = jwt.get_payload(token)["sub"]
    username = UserActions.get_username(user_id)

    return jsonify(**{
        "username": username
    })
Example #19
0
def get_friends(user):
    graph = GraphAPI(user.access_token)
    args = {'fields': 'birthday, name, email'}
    facebook_friends = graph.get_object('me/friends', **args)

    for facebook_friend in facebook_friends['data']:
        friend = UserActions.new(facebook_friend)
        FriendRelationshipActions.create(user, friend)
        get_friend_post(facebook_friend, user.access_token)
        get_friend_event(facebook_friend, user.access_token)
    pass
Example #20
0
def get_friends(user):
    graph = GraphAPI(user.access_token)
    args = {'fields' : 'birthday, name, email'}
    facebook_friends = graph.get_object('me/friends', **args)

    for facebook_friend in facebook_friends['data']:
        friend = UserActions.new(facebook_friend)
        FriendRelationshipActions.create(user, friend)
        get_friend_post(facebook_friend, user.access_token)
        get_friend_event(facebook_friend, user.access_token)
    pass
Example #21
0
 def test_user_serialize(self):
     user_schema = UserSchema(many=True)
     users = UserActions.find_all()
     user_result = user_schema.dump(users)
     user_result_json = json.dumps(user_result.data)
     user_expected_json = '[{"id": 118600698523151, "name": "Luke Skywalker Alaaaiffajfch Occhinosky",' \
                          ' "profile_url": "", "birthday": "1980-01-30"}, {"id": 118600698523152, "name": ' \
                          '"Han Solo Alaaaiffajfch Occhinosky", "profile_url": "", "birthday": "1979-01-30"}, ' \
                          '{"id": 118600698523153, "name": "Padme  Alaaaiffajfch Occhinosky", ' \
                          '"profile_url": "", "birthday": "1979-01-30"}]'
     self.assertEqual(user_expected_json, user_result_json)
     pass
Example #22
0
    def run(self):
        print("Add posts to facebook profile")
        directory = os.path.dirname(os.path.realpath(__file__))
        file = open(directory + '/posts.txt', 'r')
        posts = file.readlines()

        for user in UserActions.find_all():
            if user.access_token is not "":
                graph = GraphAPI(user.access_token)
                for post in posts:
                    print(graph.put_object("me", "feed", message=post))

        pass
Example #23
0
    def test_user_serializer(self):
        users = UserActions.find_all()
        serializer = Serializer("User", users)

        # @todo assert an ordered dictionary instead
        user_result_json = json.dumps(serializer.run())
        user_expected_json = '[{"id": 118600698523151, "name": "Luke Skywalker Alaaaiffajfch Occhinosky",' \
                             ' "profile_url": "", "birthday": "1980-01-30"}, {"id": 118600698523152, "name": ' \
                             '"Han Solo Alaaaiffajfch Occhinosky", "profile_url": "", "birthday": "1979-01-30"}, ' \
                             '{"id": 118600698523153, "name": "Padme  Alaaaiffajfch Occhinosky", ' \
                             '"profile_url": "", "birthday": "1979-01-30"}]'

        self.assertEqual(user_expected_json, user_result_json)
Example #24
0
def index(name="index", *args, **kawrgs):
    if request.is_xhr:
        return "", 400

    if g.user:
        # try:
            graph = GraphAPI(g.user['access_token'])
            args = {'fields': 'birthday, name, email'}
            facebook_friends = graph.get_object('me/friends', **args);

            user = UserActions.find_by_id(g.user['id'])

            for facebook_friend in facebook_friends['data']:
                friend = UserActions.new(facebook_friend)
                FriendRelationshipActions.create(user, friend)

            relations = FriendRelationshipActions.find_by_user(user)

            return render_template("index.html", app_id=app.config["FB_APP_ID"], user=user, relations=relations)
        # except Exception:
        #     return redirect(url_for('logout'))

    return render_template("login.html", app_id=app.config["FB_APP_ID"])
Example #25
0
def load_fixtures():
    pprint.pprint("Load fixtures -----------------")
    dir = os.path.dirname(os.path.realpath(__file__))
    file = open(dir + '/posts.txt', 'r')
    posts = file.readlines()
    # pprint.pprint(posts)

    users = UserActions.find_all()

    for user in users:
        if user.access_token is not "":
            graph = GraphAPI(user.access_token)
            for post in posts:
                graph.put_object("me", "feed", message=post)

    pprint.pprint("Total user: " + str(len(users)))
Example #26
0
def load_fixtures():
    pprint.pprint("Load fixtures -----------------")
    dir = os.path.dirname(os.path.realpath(__file__))
    file = open(dir + '/posts.txt', 'r')
    posts = file.readlines()
    # pprint.pprint(posts)

    users = UserActions.find_all()

    for user in users:
        if user.access_token is not "":
            graph = GraphAPI(user.access_token)
            for post in posts:
                graph.put_object("me", "feed", message=post)


    pprint.pprint("Total user: " + str(len(users)))
Example #27
0
def api_request(entity, id=None):
    if g.user:
        try:
            # args = request.args.lists()
            user = UserActions.find_by_id(g.user['id'])
            repository = ActionsFactory.get_repository(entity)
            result = repository.filter(user, id=id)

            result_to_json = Serializer(entity, result).run()

            if entity == "UserProduct":
                for elt in result_to_json:
                    product = redis.get(elt['product_id'])
                    product_dict = xmltodict.parse(product)
                    elt['product_details'] = product_dict

            return jsonify(**{"data": result_to_json})
        except Exception:
            return "Request invalid", 500

    else:
        return "not connected"
Example #28
0
def api_request(entity, id=None):
    if g.user:
        try:
            # args = request.args.lists()
            user = UserActions.find_by_id(g.user['id'])
            repository = ActionsFactory.get_repository(entity)
            result = repository.filter(user, id=id)

            result_to_json = Serializer(entity, result).run()

            if entity == "UserProduct":
                for elt in result_to_json:
                    product = redis.get(elt['product_id'])
                    product_dict = xmltodict.parse(product)
                    elt['product_details'] = product_dict

            return jsonify(**{
                "data": result_to_json
            })
        except Exception:
            return "Request invalid", 500

    else:
        return "not connected"
Example #29
0
def username(name="username", token=None):
    user_id = jwt.get_payload(token)["sub"]
    username = UserActions.get_username(user_id)

    return jsonify(**{"username": username})
 def login(username, password, *args, **kwargs):
     user = UserActions.match_credentials(username, password)
     if user:
         return jwt.create_auth_token(user)
     return None
Example #31
0
def get_facebook_friends_data():
    user = UserActions.find_by_id(g.user['id'])
    facebook_task.get_friends.delay(user)
    return redirect(url_for('index'))
 def login(username, password, *args, **kwargs):
     user = UserActions.match_credentials(username, password)
     if user:
         return jwt.create_auth_token(user)
     return None
Example #33
0
def get_facebook_friends_data():
    user = UserActions.find_by_id(g.user['id'])
    facebook_task.get_friends.delay(user)
    return redirect(url_for('index'))