コード例 #1
0
 def wrapper(**kwargs):
     from app.models import Utils
     #TODO move it to check app version or some other reliable source
     user_data = session.get('_user', None)
     if (Utils.getParam(request.form, 'ref') == 'web'
             and (user_data is None or
                  (user_data and user_data['user_id'] != Utils.getParam(
                      request.form, 'user_id', 'int')))):
         return Utils.errorResponse({'status': 'false'},
                                    'HTTP_STATUS_CODE_CLIENT_ERROR')
     return func(**kwargs)
コード例 #2
0
ファイル: search.py プロジェクト: shivamgupta211/Ostrich
def searchFail():
    #NOTE deprecated. Done directly from backend
    return jsonify(status='true')

    user_id = Utils.getParam(request.form, 'user_id', 'int')
    q = Utils.getParam(request.form, 'q')
    q_type = Utils.getParam(request.form, 'type')
    flow = Utils.getParam(request.form, 'flow', default='borrow')

    Search(q, {'user_id': user_id}, flow).reportFail(True, True, q_type)
    return jsonify(status='true')
コード例 #3
0
    def editReview(self, review_data):
        conn = mysql.connect()
        cursor = conn.cursor()
        cursor.execute(
            """INSERT INTO reviews_edit_log (review_id, title, description, rating) VALUES (%s, %s, %s, %s)""",
            (self.review_id, self.title, self.description, self.rating))
        conn.commit()

        title = Utils.getParam(review_data, 'title')
        description = Utils.getParam(review_data, 'description')
        rating = Utils.getParam(review_data, 'rating')

        #TODO delete review if data missing

        cursor.execute(
            """UPDATE reviews SET title = %s, description = %s, rating = %s, edited = 1, date_edited = CURRENT_TIMESTAMP WHERE review_id = %s""",
            (title, description, rating, self.review_id))
        conn.commit()
        return True
コード例 #4
0
    def submitReview(review_data):
        user_id = Utils.getParam(review_data, 'user_id')
        item_id = Utils.getParam(review_data, 'item_id')
        order_id = Utils.getParam(review_data, 'order_id')
        if not (user_id and item_id and order_id):
            return False

        title = Utils.getParam(review_data, 'title')
        description = Utils.getParam(review_data, 'description')
        rating = Utils.getParam(review_data, 'rating')

        conn = mysql.connect()
        cursor = conn.cursor()

        cursor.execute(
            """SELECT review_id FROM reviews WHERE user_id = %s AND item_id = %s""",
            (user_id, item_id))
        present_review_id = cursor.fetchone()
        if present_review_id:
            review_data['review_id'] = present_review_id[0]
            review = Review(review_id=review_data['review_id'])
            review.editReview(review_data)
            return review_data['review_id']

        cursor.execute(
            """INSERT INTO reviews (user_id, item_id, order_id, title, description, rating) VALUES (%s,%s,%s,%s,%s,%s)""",
            (user_id, item_id, order_id, title, description, rating))
        conn.commit()
        review_id = cursor.lastrowid

        #TODO Index item again with review
        return review_id
コード例 #5
0
    def wrapper(**kwargs):
        from app.models import Utils
        if Utils.getParam(request.args, 'session', default=None):
            user_data = session.get('_user', None)
            if user_data and user_data['is_admin']:
                session.clear()

        user_data = session.get('_user', None)
        kwargs['props'] = {
            'user': user_data,
            'cdn': webapp.config['S3_HOST'] + 'website/',
            'host': webapp.config['HOST'] + '/'
        }
        return func(**kwargs)
コード例 #6
0
def getRelatedItemsApi():
    client = MongoClient(webapp.config['MONGO_DB'])
    db = client.ostrich

    item_id = Utils.getParam(request.args, 'item_id', 'int')

    related_items_cursor = db.related_item_ids.find({'_id': item_id})
    related_item_ids = [_ for _ in related_items_cursor]

    if len(related_item_ids) == 0:
        #check redis queue
        getRelatedItemsAsyncWrapper(item_id)
        return jsonify({'status': 'wait', 'message': 'Crawling in progress'})

    related_item_ids = related_item_ids[0]['item_ids']
    items = Search().getById(related_item_ids)
    return json.dumps(items)
コード例 #7
0
ファイル: search.py プロジェクト: shivamgupta211/Ostrich
def searchString():
    response = {'status': 'False'}
    results = {}

    query = Utils.getParam(request.args, 'q')
    page = Utils.getParam(request.args, 'page', var_type='int', default=1)
    search_type = Utils.getParam(request.args, 'type', default='free')
    user_id = Utils.getParam(request.args, 'userId', 'int')
    flow = Utils.getParam(request.args, 'flow', default='borrow')
    gcm_id = Utils.getParam(request.args, 'gcm_id', default=None)
    uuid = Utils.getParam(request.args, 'distinct_id', default=None)
    ref = Utils.getParam(request.args, 'ref', default='mobile')

    if not query:
        return Utils.errorResponse(response, 'HTTP_STATUS_CODE_DATA_MISSING')

    if ref == 'web':
        return json.dumps(WebUtils.fetchSearchResults(query, search_type,
                                                      page))

    user_info = {'user_id': user_id, 'gcm_id': gcm_id, 'uuid': uuid}
    search = Search(query, user_info, flow)
    if search_type == 'free':
        results = search.basicSearch(page=page - 1)
    elif search_type == 'category':
        results = search.categorySearch(page=page - 1)
    elif search_type == 'collections':
        results = search.collectionsSearch(page=page - 1)
    elif search_type == 'isbn':
        results = search.isbnSearch(page=page - 1)
    elif search_type == 'auto':
        results = search.autoComplete()
    elif search_type == 'custom':
        results = search.customQuery()
        return results
    #log
    if user_id not in Utils.getAdmins():
        Search.logSearch({_: request.args.get(_)
                          for _ in request.args}, search_type)

    return jsonify(results) if flow != 'admin' else jsonp(results)