def add_user(username, password, email, head_image_url, token): if usersdb.find_one({'email': email}): return JSONResponseUserAlreadyExist tmpusers = usersdb.find().sort([('user_id', -1)]).limit(1) lastuser = None for user in tmpusers: lastuser = user new_user_id = 1 if lastuser is not None and 'user_id' in lastuser: new_user_id = int(lastuser['user_id']) + 1 tmpuser = { 'user_id': new_user_id, 'username': username, 'email': email, 'head_image_url': head_image_url, 'password': password, 'deactivated': False } usersdb.insert(tmpuser) changeTokenUser(token, new_user_id) log("User %s created, username = %s, password = %s, email = %s, head_image_url = %s" % (new_user_id, username, password, email, head_image_url)) return JSONResponse(dumps(tmpuser))
def add_user(username, password, email, head_image_url, token): if usersdb.find_one({'email': email}): return JSONResponseUserAlreadyExist tmpusers = usersdb.find().sort([('user_id', -1)]).limit(1) lastuser = None for user in tmpusers: lastuser = user new_user_id = 1 if lastuser is not None and 'user_id' in lastuser: new_user_id = int(lastuser['user_id'])+1 tmpuser = { 'user_id': new_user_id, 'username': username, 'email': email, 'head_image_url': head_image_url, 'password': password, 'deactivated': False } usersdb.insert(tmpuser) changeTokenUser(token, new_user_id) log("User %s created, username = %s, password = %s, email = %s, head_image_url = %s" % (new_user_id, username, password, email, head_image_url)) return JSONResponse(dumps(tmpuser))
def del_user(user_id): tmpuser = usersdb.find_one({'user_id': user_id}) if tmpuser is None: return JSONResponseUserNotFound tmpuser = usersdb.update({'user_id': user_id}, {'$set': {'deactivated': True}}) log("User %s deactivated" % user_id) return JSONResponse(dumps(tmpuser))
def save_upload_file(file, user_id, subdir): if isAllowedFile(file.filename): if file is not None: UPLOAD_SUBFOLDER = str(user_id) + '/' + subdir UPLOAD_FOLDER = os.getcwd() + '/uploads' UPLOAD_FOLDER = os.path.join(UPLOAD_FOLDER, UPLOAD_SUBFOLDER) if not os.path.exists(UPLOAD_FOLDER): os.makedirs(UPLOAD_FOLDER) savepath = os.path.join(UPLOAD_FOLDER, secure_filename(file.filename)) log("User %s uploaded %s to %s" % (user_id, secure_filename(file.filename), savepath)) file.save(savepath) if subdir == COVER_IMAGES_SUBDIR: return JSONResponse( dumps({ 'cover_image_url': "%s%s/%s" % (BASE_URL, UPLOAD_SUBFOLDER, secure_filename(file.filename)) })) else: return JSONResponse( dumps({ 'head_image_url': "%s%s/%s" % (BASE_URL, UPLOAD_SUBFOLDER, secure_filename(file.filename)) })) else: return JSONResponse(dumps({'message': "Null file provided."}), 400) else: return JSONResponse(dumps({'message': 'Not allowed file format.'}), 400)
def get_new_token(): randomToken = generateAccessToken() expire_time = int(time.time()) + expire_seconds tmptoken = {'token': randomToken, 'user_id': 0, 'expire_time': expire_time} tokensdb.insert_one(tmptoken) log("Token %s generated, expired when %s seconds" % (randomToken, expire_time)) return JSONResponse(dumps(tmptoken), 201)
def __init__(self, response_dict_or_string="", response_code=200): if type(response_dict_or_string) is dict: self.response_message = dumps(response_dict_or_string) elif type(response_dict_or_string) is list: self.response_message = dumps(response_dict_or_string) else: self.response_message = response_dict_or_string self.response_code = response_code log("Created JSON response, return code=%s, message=%s" % (self.response_code, self.response_message))
def del_book(user_id, book_id): if not isBookExist(user_id, book_id): return JSONResponse(jsonify({'message': "book %s not found." % (book_id)}), 404) allcategories = categorysdb.find({'$and': [{'user_id': user_id}, {'book_list': book_id}]}).sort('category_id', 1) for category in allcategories: del_books_from_category(user_id, category['category_id'], book_id) updateResult = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'deleted': True}}) log("User %s deleted book %s" % (user_id, book_id)) return JSONResponse(updateResult)
def add_book(user_id, bookname, author="", publisher="", publish_date="", price=0, ISBN="", tags=[], cover_image_url='http://i.imgur.com/zNPKpwk.jpg', category=[]): new_book_id = 1 tmpbooks = booksdb.find().sort([('book_id', -1)]).limit(1) for book in tmpbooks: lastbook = book if lastbook['user_id'] is not None: new_book_id = int(lastbook['book_id']) + 1 nowtime = time.time() if price == "": price = 0 tmpbook = { 'book_id': new_book_id, 'bookname': bookname, 'author': author, 'publisher': publisher, 'publish_date': publish_date, 'price': float(price), 'ISBN': ISBN, 'user_id': user_id, 'tags': tags, 'cover_image_url': cover_image_url, 'deleted': False, 'create_time': nowtime, 'update_time': nowtime, } booksdb.insert(tmpbook) if type(category) is list: addresult = JSONResponse() for category_id in category: addresult = add_books_to_category(user_id, category_id, new_book_id) elif type(category) is int: addresult = add_books_to_category(user_id, category, new_book_id) if int(addresult.response_code) / 100 != 2: return addresult if type(category) is list: tmpbook[ 'category_id'] = category # category data is stored in categorysdb, so it is not inserted to booksdb. elif type(category) is int: tmpbook['category_id'] = list() tmpbook['category_id'].append(category) log("User %s created a book, id=%s, bookname=\"%s\", author=\"%s\", publisher=\"%s\", publish_date=\"%s\", price=\"%s\", ISBN=\"%s\" tags=\"%s\", create_time=\"%s\", update_time=\"%s\", categoey=\"%s\"" % (user_id, new_book_id, bookname, author, publisher, publish_date, price, ISBN, tags, nowtime, nowtime, category)) return JSONResponse(dumps(tmpbook), 201)
def del_user(user_id): tmpuser = usersdb.find_one({'user_id': user_id}) if tmpuser is None: return JSONResponseUserNotFound tmpuser = usersdb.update({'user_id': user_id}, {'$set': { 'deactivated': True }}) log("User %s deactivated" % user_id) return JSONResponse(dumps(tmpuser))
def get_new_token(): randomToken = generateAccessToken() expire_time = int(time.time()) + expire_seconds tmptoken = { 'token': randomToken, 'user_id': 0, 'expire_time': expire_time } tokensdb.insert_one(tmptoken) log("Token %s generated, expired when %s seconds" % (randomToken, expire_time)) return JSONResponse(dumps(tmptoken), 201)
def del_category(user_id, category_id): if not isCategoryExist(user_id, category_id): return JSONResponse( jsonify({'message': "category %s not found." % category_id}), 404) updateResult = categorysdb.update( {'$and': [{ 'user_id': user_id }, { 'category_id': category_id }]}, {'$set': { 'deleted': True }}) log("User %s deleted category %s" % (user_id, category_id)) return JSONResponse(updateResult)
def add_books_to_category(user_id, category_id, book_list_or_int): if not isCategoryExist(user_id, category_id): return JSONResponse(jsonify({'message': 'category not found'}), 404) if type(book_list_or_int) is list: for book_id in book_list_or_int: if not isBookExist(user_id, book_id): return JSONResponse( jsonify({ 'message': 'User %s doesn\'t own book %s' % (user_id, book_id) })) categorysdb.update( {'$and': [{ 'user_id': user_id }, { 'category_id': category_id }]}, {'$addToSet': { 'book_list': { '$each': book_list_or_int } }}) if type(book_list_or_int) is int: if not isBookExist(user_id, book_list_or_int): return JSONResponse( jsonify({ 'message': 'User %s doesn\'t own book %s' % (user_id, book_list_or_int) })) categorysdb.update( {'$and': [{ 'user_id': user_id }, { 'category_id': category_id }]}, {'$addToSet': { 'book_list': book_list_or_int }}) else: return JSONResponse( jsonify({'message': 'Wrong book_id data type provided.'}), 400) tmpcategory = categorysdb.find_one( {'$and': [{ 'user_id': user_id }, { 'category_id': category_id }]}) log("User %s added books %s to category %s" % (user_id, book_list_or_int, category_id)) return JSONResponse(dumps(tmpcategory), 200)
def add_book(user_id,bookname, author="", publisher="", publish_date="", price=0, ISBN="", tags=[], cover_image_url='http://i.imgur.com/zNPKpwk.jpg', category=[]): new_book_id = 1 tmpbooks = booksdb.find().sort([('book_id', -1)]).limit(1) for book in tmpbooks: lastbook = book if lastbook['user_id'] is not None: new_book_id = int(lastbook['book_id'])+1 nowtime = time.time() if price == "": price = 0 tmpbook = { 'book_id': new_book_id, 'bookname': bookname, 'author': author, 'publisher': publisher, 'publish_date': publish_date, 'price': float(price), 'ISBN': ISBN, 'user_id': user_id, 'tags': tags, 'cover_image_url': cover_image_url, 'deleted': False, 'create_time': nowtime, 'update_time': nowtime, } booksdb.insert(tmpbook) if type(category) is list: addresult = JSONResponse() for category_id in category: addresult = add_books_to_category(user_id, category_id, new_book_id) elif type(category) is int: addresult = add_books_to_category(user_id, category, new_book_id) if int(addresult.response_code)/100 != 2: return addresult if type(category) is list: tmpbook['category_id'] = category # category data is stored in categorysdb, so it is not inserted to booksdb. elif type(category) is int: tmpbook['category_id'] = list() tmpbook['category_id'].append(category) log("User %s created a book, id=%s, bookname=\"%s\", author=\"%s\", publisher=\"%s\", publish_date=\"%s\", price=\"%s\", ISBN=\"%s\" tags=\"%s\", create_time=\"%s\", update_time=\"%s\", categoey=\"%s\"" % (user_id, new_book_id, bookname, author, publisher, publish_date, price, ISBN, tags, nowtime, nowtime, category)) return JSONResponse(dumps(tmpbook), 201)
def login(email, password, token): log ("user %s is logging in, password = %s, token = %s" % (email, password, token)) if time.time() > getTokenExpireTime(token): log("token %s expired" % (token)) return JSONREsponseTokenExpired tmpuser = usersdb.find_one({'email': email}) if tmpuser is None: log("User %s not found." % email) return JSONResponseUserNotFound if tmpuser['deactivated'] is True: return JSONResponseUserDeactivated if tmpuser['password'] == password: changeTokenUser(token, tmpuser['user_id']) log("User %s logged in with token %s" % (email, token)) tmpuser["message"] = "Login successful" return JSONResponse(dumps(tmpuser)) else: log("User %s logged in with wrong password" % email) return JSONResponseWrongPassword
def login(email, password, token): log("user %s is logging in, password = %s, token = %s" % (email, password, token)) if time.time() > getTokenExpireTime(token): log("token %s expired" % (token)) return JSONREsponseTokenExpired tmpuser = usersdb.find_one({'email': email}) if tmpuser is None: log("User %s not found." % email) return JSONResponseUserNotFound if tmpuser['deactivated'] is True: return JSONResponseUserDeactivated if tmpuser['password'] == password: changeTokenUser(token, tmpuser['user_id']) log("User %s logged in with token %s" % (email, token)) tmpuser["message"] = "Login successful" return JSONResponse(dumps(tmpuser)) else: log("User %s logged in with wrong password" % email) return JSONResponseWrongPassword
def update_category(user_id, cataogry_id, category_name=""): if not isCategoryExist(user_id, cataogry_id): return JSONResponse( jsonify({'message': "category %s not found." % (cataogry_id)}), 404) updated = None if category_name != "": oldCatagory = categorysdb.find_one({ '$and': [{ 'user_id': user_id }, { 'category_name': category_name }, { 'deleted': False }] }) if oldCatagory is not None: return JSONResponse( jsonify( {'message': "Catagory %s already exist." % category_name})) updated = categorysdb.update( {'$and': [{ 'user_id': user_id }, { 'category_id': cataogry_id }]}, {'$set': { 'category_name': category_name }}) if updated is not None: log("Updated user %s's category %s's category_name to %s" % (user_id, cataogry_id, category_name)) tmpbook = categorysdb.find_one( {'$and': [{ 'user_id': user_id }, { 'category_id': cataogry_id }]}) # Get updated data. return JSONResponse(dumps(tmpbook))
def del_book(user_id, book_id): if not isBookExist(user_id, book_id): return JSONResponse( jsonify({'message': "book %s not found." % (book_id)}), 404) allcategories = categorysdb.find({ '$and': [{ 'user_id': user_id }, { 'book_list': book_id }] }).sort('category_id', 1) for category in allcategories: del_books_from_category(user_id, category['category_id'], book_id) updateResult = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'deleted': True }}) log("User %s deleted book %s" % (user_id, book_id)) return JSONResponse(updateResult)
def add_category(user_id, category_name): oldCatagory = categorysdb.find_one({ '$and': [{ 'user_id': user_id }, { 'category_name': category_name }, { 'deleted': False }] }) if oldCatagory is not None: return JSONResponse( jsonify({'message': "Catagory %s already exist." % category_name}), 403) new_category_id = 1 lastcata = dict() lastcata['category_id'] = 1 tmpcatas = categorysdb.find().sort([('category_id', -1)]).limit(1) for cata in tmpcatas: lastcata = cata if lastcata['category_id'] is not None: new_category_id = int(lastcata['category_id']) + 1 category = { 'category_id': new_category_id, 'category_name': category_name, 'user_id': user_id, 'book_list': [], 'deleted': False } categorysdb.insert(category) log("User %s created a category, category_id = %s , category_name = %s" % (user_id, new_category_id, category_name)) return JSONResponse(dumps(category), 201)
def update_user(user_id, username="", password="", head_image_url=""): tmpuser = usersdb.find_one({'user_id': user_id}) if tmpuser is None: return JSONResponseUserNotFound if username != "": usersdb.update({'user_id': user_id}, {'$set': {'username': username}}) log("Updated user %s's username to %s" % (user_id, username)) if password != "": usersdb.update({'user_id': user_id}, {'$set': {'password': password}}) log("Updated user %s's password to %s" % (user_id, password)) if head_image_url != "": usersdb.update({'user_id': user_id}, {'$set': {'head_image_url': head_image_url}}) log("Updated user %s's head_image_url to %s" % (user_id, head_image_url)) tmpuser = usersdb.find_one({'user_id': user_id}) #Get updated data. return JSONResponse(dumps(tmpuser))
def update_user(user_id, username="", password="", head_image_url=""): tmpuser = usersdb.find_one({'user_id': user_id}) if tmpuser is None: return JSONResponseUserNotFound if username != "": usersdb.update({'user_id': user_id}, {'$set': {'username': username}}) log("Updated user %s's username to %s" % (user_id, username)) if password != "": usersdb.update({'user_id': user_id}, {'$set': {'password': password}}) log("Updated user %s's password to %s" % (user_id, password)) if head_image_url != "": usersdb.update({'user_id': user_id}, {'$set': { 'head_image_url': head_image_url }}) log("Updated user %s's head_image_url to %s" % (user_id, head_image_url)) tmpuser = usersdb.find_one({'user_id': user_id}) #Get updated data. return JSONResponse(dumps(tmpuser))
# Parses configuration file. config_parser = SafeConfigParser() config_parser.read(args['config_file']) path_pre_processed_positive = config_parser.get( 'data', 'path_pre_processed_positive') path_pre_processed_negative = config_parser.get( 'data', 'path_pre_processed_negative') path_svm_hog_detector = config_parser.get('data', 'path_svm_hog_detector') path_svm_binary_detector = config_parser.get('data', 'path_svm_binary_detector') image_width = int(config_parser.get('training', 'image_width')) image_height = int(config_parser.get('training', 'image_height')) # Load images for training. logger = Logger() logger.log(Logger.INFO, "Loading images to train SVM classifier.") positive_images = Files(path_pre_processed_positive) negative_images = Files(path_pre_processed_negative) samples = [] responses = [] for file_path in positive_images.paths: # Load image. image = Image(file_path) # Convert and equalize image. image.convert_to_gray() # Add image for training. samples.append(image) responses.append(1)
def update_book(user_id, book_id, bookname="", author="", publisher="", publish_date="", price=0, ISBN="", tags=[], cover_image_url=""): if not isBookExist(user_id, book_id): return JSONResponse(jsonify({'message': "book %s not found." % (book_id)}), 404) updated = 0 if bookname != "": updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'bookname': bookname}}) log("Updated user %s's book %s's bookname to %s" % (user_id, book_id, bookname)) if author != "": updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'author': author}}) log("Updated user %s's book %s's author to %s" % (user_id, book_id, author)) if publisher != "": updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'publisher': publisher}}) log("Updated user %s's book %s's publisher to %s" % (user_id, book_id, publisher)) if publish_date != "": updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'publish_date': publish_date}}) log("Updated user %s's book %s's publish_date to %s" % (user_id, book_id, publish_date)) if price != 0: updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'price': float(price)}}) log("Updated user %s's book %s's price to %s" % (user_id, book_id, price)) if ISBN != "": updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'ISBN': ISBN}}) log("Updated user %s's book %s's ISBN to %s" % (user_id, book_id, ISBN)) if tags: updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'tags': tags}}) log("Updated user %s's book %s's tags to %s" % (user_id, book_id, tags)) if cover_image_url != "": updated = booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'cover_image_url': cover_image_url}}) log("Updated user %s's book %s's cover_image_url to %s" % (user_id, book_id, cover_image_url)) if updated: nowtime = time.time() booksdb.update({'$and': [{'user_id': user_id}, {'book_id': book_id}]}, {'$set': {'update_time': nowtime}}) log("Updated user %s's book %s's update_time to %s" % (user_id, book_id, nowtime)) return get_book_by_id(user_id, book_id)
def logout(token): changeTokenUser(token, 0) log("user %s with token %s is logouted." % (get_user_id_by_token(token), token)) return JSONResponseUserLogoutSuccessful
def update_book(user_id, book_id, bookname="", author="", publisher="", publish_date="", price=0, ISBN="", tags=[], cover_image_url=""): if not isBookExist(user_id, book_id): return JSONResponse( jsonify({'message': "book %s not found." % (book_id)}), 404) updated = 0 if bookname != "": updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'bookname': bookname }}) log("Updated user %s's book %s's bookname to %s" % (user_id, book_id, bookname)) if author != "": updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'author': author }}) log("Updated user %s's book %s's author to %s" % (user_id, book_id, author)) if publisher != "": updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'publisher': publisher }}) log("Updated user %s's book %s's publisher to %s" % (user_id, book_id, publisher)) if publish_date != "": updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'publish_date': publish_date }}) log("Updated user %s's book %s's publish_date to %s" % (user_id, book_id, publish_date)) if price != 0: updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'price': float(price) }}) log("Updated user %s's book %s's price to %s" % (user_id, book_id, price)) if ISBN != "": updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'ISBN': ISBN }}) log("Updated user %s's book %s's ISBN to %s" % (user_id, book_id, ISBN)) if tags: updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'tags': tags }}) log("Updated user %s's book %s's tags to %s" % (user_id, book_id, tags)) if cover_image_url != "": updated = booksdb.update( {'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'cover_image_url': cover_image_url }}) log("Updated user %s's book %s's cover_image_url to %s" % (user_id, book_id, cover_image_url)) if updated: nowtime = time.time() booksdb.update({'$and': [{ 'user_id': user_id }, { 'book_id': book_id }]}, {'$set': { 'update_time': nowtime }}) log("Updated user %s's book %s's update_time to %s" % (user_id, book_id, nowtime)) return get_book_by_id(user_id, book_id)