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)
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')
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
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
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)
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)
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)