def get(self): self.set_header("Content-Type", "application/json") ret = {} try: session = Session() ratings = [] userdao = UserDAO() result = session.query(Rating, Booking, User, Master) \ .join(Booking, Rating.booking_id == Booking.id) \ .join(Master, Rating.master_id == Master.id) \ .join(User, Booking.user_id == User.id) \ .order_by(desc(Rating.review_time)) \ .all() for row in result: key = userdao.get_user_salt(row.User.email)[:16] crypto = aes.MyCrypto(key) rating = {} rating['user_name'] = crypto.decodeAES(row.User.name) rating['master_name'] = row.Master.name rating['appointment_type'] = row.Booking.appointment_type rating['start_time'] = dt.datetime.strftime( row.Booking.start_time, '%Y-%m-%d %H:%M') rating['estimated_end_time'] = dt.datetime.strftime( row.Booking.estimated_end_time, '%Y-%m-%d %H:%M') rating['end_time'] = dt.datetime.strftime( row.Booking.end_time, '%Y-%m-%d %H:%M') rating['clean_rating'] = float(row.Rating.rate_clean) rating['clean_review'] = row.Rating.review_clean rating['master_rating'] = float(row.Rating.rate_master) rating['master_review'] = row.Rating.review_master rating['review_time'] = dt.datetime.strftime( row.Rating.review_time, '%Y-%m-%d %H:%M') ratings.append(rating) ret['response'] = ratings self.set_status(Response.RESULT_OK) except Exception, e: session.rollback() print_err_detail(e) self.set_status(Response.RESULT_SERVERERROR) add_err_message_to_response(ret, err_dict['err_mysql'])
def get(self): self.set_header("Content-Type", "application/json") self.set_header('Access-Control-Allow-Origin', '*') ret = {} print "test-intro" try: session = Session() result = session.query(UserClaim, Booking, User, Master) \ .join(Booking, UserClaim.booking_id == Booking.id) \ .join(Master, Master.id == Booking.master_id) \ .join(User, User.id == Booking.user_id) \ .all() claims = [] Userdao = UserDAO() print result for record in result: key = Userdao.get_user_salt(record.User.email)[:16] if key == None or key == '': continue crypto = aes.MyCrypto(key) claim_info = {} claim_info['cleanning_date'] = dt.datetime.strftime( record.Booking.start_time, '%Y-%m-%d %H:%M') claim_info['user_name'] = crypto.decodeAES(record.User.name) claim_info['user_phone'] = crypto.decodeAES(record.User.phone) claim_info['master_name'] = record.Master.name claim_info['claim_comment'] = record.UserClaim.comment claim_info['claim_reg_time'] = dt.datetime.strftime( record.UserClaim.register_time, '%Y-%m-%d %H:%M') claims.append(claim_info) ret['response'] = claims self.set_status(Response.RESULT_OK) except Exception, e: session.rollback() print_err_detail(e) self.set_status(Response.RESULT_SERVERERROR) add_err_message_to_response(ret, err_dict['err_mysql'])
def get(self): self.set_header("Content-Type", "application/json") ret = {} try: session = Session() users = [] userdao = UserDAO() for row in session.query(User, UserAddress) \ .outerjoin(UserDefaultAddress, UserDefaultAddress.user_id == User.id) \ .outerjoin(UserAddress, and_(UserDefaultAddress.user_id == UserAddress.user_id, UserDefaultAddress.address_idx == UserAddress.user_addr_index)) \ .order_by(desc(User.dateofreg)) \ .all(): key = userdao.get_user_salt(row.User.email)[:16] crypto = aes.MyCrypto(key) user_info = {} user_info['user_id'] = row.User.id user_info['dateofreg'] = dt.datetime.strftime(row.User.dateofreg, '%Y-%m-%d %H:%M') user_info['devicetype'] = row.User.devicetype user_info['name'] = crypto.decodeAES(row.User.name) user_info['email'] = row.User.email user_info['phone'] = crypto.decodeAES(row.User.phone) user_info['gender'] = row.User.gender user_info['birthdate'] = crypto.decodeAES(row.User.dateofbirth) user_info['default_address'] = crypto.decodeAES(row.UserAddress.address) if row.UserAddress != None else '' user_info['default_address_size'] = row.UserAddress.size if row.UserAddress != None else '' user_info['default_address_kind'] = row.UserAddress.kind if row.UserAddress != None else '' users.append(user_info) ret['response'] = users self.set_status(Response.RESULT_OK) except Exception, e: session.rollback() print_err_detail(e) self.set_status(Response.RESULT_SERVERERROR) add_err_message_to_response(ret, err_dict['err_mysql'])
def get(self): self.set_header("Content-Type", "application/json") self.set_header('Access-Control-Allow-Origin', '*') ret = {} try: session = Session() result = session.query(Booking, User) \ .join(User, and_(Booking.user_id == User.id, and_(or_(Booking.cleaning_status == 1, Booking.cleaning_status == 2), or_(Booking.payment_status == 0, Booking.payment_status == -3)))) \ .filter(not_(User.email.like('*****@*****.**'))) \ .all() unpaid_datas = [] Userdao = UserDAO() for record in result: key = Userdao.get_user_salt(record.User.email)[:16] if key == None or key == '': continue crypto = aes.MyCrypto(key) unpaid_info = {} unpaid_info['booking_id'] = record.Booking.id unpaid_info[ 'appointment_type'] = record.Booking.appointment_type unpaid_info['cleanning_date'] = dt.datetime.strftime( record.Booking.start_time, '%Y-%m-%d %H:%M') unpaid_info['user_name'] = crypto.decodeAES(record.User.name) unpaid_info['user_phone'] = crypto.decodeAES(record.User.phone) unpaid_info['price_with_task'] = record.Booking.price_with_task unpaid_datas.append(unpaid_info) ret['response'] = unpaid_datas self.set_status(Response.RESULT_OK) except Exception, e: session.rollback() print_err_detail(e) self.set_status(Response.RESULT_SERVERERROR) add_err_message_to_response(ret, err_dict['err_mysql'])
def post(self): self.set_header("Content-Type", "application/json") mode = self.get_argument('mode', 'week') # today, week, all search_term = self.get_argument('search_term', '') ret = {} now = dt.datetime.now().date() week_ago = now - dt.timedelta(days = 7) try: session = Session() users = [] userdao = UserDAO() total_cnt = session.query(User).count() query = session.query(User, UserAddress, UserMemo) \ .outerjoin(UserDefaultAddress, UserDefaultAddress.user_id == User.id) \ .outerjoin(UserAddress, and_(UserDefaultAddress.user_id == UserAddress.user_id, UserDefaultAddress.address_idx == UserAddress.user_addr_index)) \ .outerjoin(UserMemo, User.id == UserMemo.user_id) if mode == 'week': query = query.filter(func.date(User.dateofreg) >= week_ago) elif mode == 'today': query = query.filter(func.date(User.dateofreg) == now) if search_term != '': print 'searching term : ' + search_term #search_term = search_term.lower() query = query.filter(or_(func.aes_decrypt(func.from_base64(User.name), func.substring(User.salt, 1, 16)).like('%' + search_term + '%'), func.aes_decrypt(func.from_base64(User.phone), func.substring(User.salt, 1, 16)).like(search_term + '%'), User.email.like(search_term + '%'), User.id == search_term)) result = query.order_by(desc(User.dateofreg)).all() for row in result: key = userdao.get_user_salt(row.User.email)[:16] if key == None or key == '': print row.User.email continue crypto = aes.MyCrypto(key) user_info = {} user_info['user_id'] = row.User.id user_info['dateofreg'] = dt.datetime.strftime(row.User.dateofreg, '%Y-%m-%d %H:%M') user_info['devicetype'] = row.User.devicetype user_info['name'] = crypto.decodeAES(row.User.name) user_info['email'] = row.User.email user_info['phone'] = crypto.decodeAES(row.User.phone) user_info['gender'] = row.User.gender user_info['birthdate'] = crypto.decodeAES(row.User.dateofbirth) user_info['default_address'] = crypto.decodeAES(row.UserAddress.address) if row.UserAddress != None else '' user_info['default_address_size'] = row.UserAddress.size if row.UserAddress != None else '' user_info['default_address_kind'] = row.UserAddress.kind if row.UserAddress != None else '' user_info['memo'] = row.UserMemo.memo if row.UserMemo != None else '' #if search_term != '': # if search_term.lower() in user_info['name'].lower() or user_info['phone'] == search_term or user_info['email'] == search_term: users.append(user_info) #if search_term != '': # users = filter(lambda x : search_term.lower() in x['name'].lower() or x['phone'] == search_term or x['email'] == search_term, users) ret['response'] = {'count' : total_cnt, 'users' : users} self.set_status(Response.RESULT_OK) except Exception, e: session.rollback() print_err_detail(e) self.set_status(Response.RESULT_SERVERERROR) add_err_message_to_response(ret, err_dict['err_mysql'])
def get(self): self.set_header("Content-Type", "application/json") self.set_header('Access-Control-Allow-Origin', '*') ret = {} user_id = self.get_argument('user_id', '') mongo_logger = get_mongo_logger() now = dt.datetime.now() try: session = Session() userdao = UserDAO() try: result = session.query(User) \ .filter(User.id == user_id) \ .one() except NoResultFound, e: session.close() self.set_status(Response.RESULT_OK) add_err_ko_message_to_response(ret, '등록되지 않은 고객 입니다.') return key = userdao.get_user_salt(result.email)[:16] crypto = aes.MyCrypto(key) name = crypto.decodeAES(result.name) user_coupons = {} user_coupons['user_name'] = name results = session.query(UserCoupon) \ .filter(UserCoupon.user_id == user_id) \ .order_by(UserCoupon.expire_date) \ .all() print "request user coupon sql query for adminweb" coupons = [] for result in results: user_coupon = {} user_coupon['issue_date'] = dt.datetime.strftime( result.issue_date, '%Y.%m.%d') user_coupon['expire_date'] = dt.datetime.strftime( result.expire_date, '%Y.%m.%d') user_coupon['discount_price'] = result.discount_price user_coupon['used'] = 1 if result.used == 1 else 0 user_coupon['is_expired'] = 1 if result.expire_date.date( ) <= now.date() else 0 user_coupon['title'] = result.title user_coupon[ 'booking_id'] = '' if result.booking_id == None else result.booking_id coupons.append(user_coupon) user_coupons['coupons'] = coupons ret['response'] = user_coupons self.set_status(Response.RESULT_OK) mongo_logger.debug('request user coupon for adminweb', extra={'user_id': user_id})
def get(self): self.set_header("Content-Type", "application/json") master_id = self.get_argument('master_id', '') only_5 = self.get_argument('only_5', 1) only_5 = int(only_5) ret = {} try: session = Session() ratings = [] userdao = UserDAO() masterdao = MasterDAO() result = session.query(Rating, Booking, User, Master) \ .join(Booking, Rating.booking_id == Booking.id) \ .join(Master, Rating.master_id == Master.id) \ .join(User, Booking.user_id == User.id) \ .filter(Master.id == master_id) if only_5 == 1: result = result.filter(and_(Rating.rate_clean == 5.0, Rating.rate_master == 5.0)) \ result = result.order_by(desc(Booking.start_time)).all() for row in result: key = userdao.get_user_salt(row.User.email)[:16] crypto = aes.MyCrypto(key) rating = {} rating['user_name'] = crypto.decodeAES(row.User.name) rating['start_date'] = dt.datetime.strftime( row.Booking.start_time, '%Y-%m-%d') rating['rating_date'] = dt.datetime.strftime( row.Rating.review_time, '%Y-%m-%d %H:%M') rating['start_time'] = convert_time_format( row.Booking.start_time.time()) rating['booking_id'] = row.Booking.id rating['clean_rating'] = float(row.Rating.rate_clean) rating['clean_review'] = row.Rating.review_clean rating['master_rating'] = float(row.Rating.rate_master) rating['master_review'] = row.Rating.review_master ratings.append(rating) cleaning_avg_rating, master_avg_rating = masterdao.get_master_rating( master_id) master_name = masterdao.get_master_name(master_id) ret['response'] = { 'cleaning_avg_rating': cleaning_avg_rating, 'master_avg_rating': master_avg_rating, 'ratings': ratings, 'master_id': master_id, 'master_name': master_name } self.set_status(Response.RESULT_OK) except Exception, e: session.rollback() print_err_detail(e) self.set_status(Response.RESULT_SERVERERROR) add_err_message_to_response(ret, err_dict['err_mysql'])
def post(self): self.set_header("Content-Type", "application/json") self.set_header('Access-Control-Allow-Origin', '*') search_term = self.get_argument('search_term', '') ret = {} try: session = Session() users = [] userdao = UserDAO() if search_term == None or search_term == '' or len( search_term) == 1 or search_term == '010': self.set_status(Response.RESULT_OK) add_err_ko_message_to_response(ret, '잘못된 파라미터 입니다.') return total_cnt = session.query(User).count() now = dt.datetime.now() query = session.query(User, UserAddress, UserMemo) \ .outerjoin(UserDefaultAddress, UserDefaultAddress.user_id == User.id) \ .outerjoin(UserAddress, and_(UserDefaultAddress.user_id == UserAddress.user_id, UserDefaultAddress.address_idx == UserAddress.user_addr_index)) \ .outerjoin(UserMemo, User.id == UserMemo.user_id) if search_term != '': print 'searching term : ' + search_term #search_term = search_term.lower() query = query.filter( or_( func.aes_decrypt( func.from_base64(User.name), func.substring(User.salt, 1, 16)).like('%' + search_term + '%'), func.aes_decrypt(func.from_base64(User.phone), func.substring(User.salt, 1, 16)).like(search_term + '%'), User.email.like(search_term + '%'), User.id == search_term)) result = query.order_by(desc(User.dateofreg)).all() for row in result: key = userdao.get_user_salt(row.User.email)[:16] if key == None or key == '': continue crypto = aes.MyCrypto(key) user_info = {} user_info['user_id'] = row.User.id user_info['dateofreg'] = dt.datetime.strftime( row.User.dateofreg, '%Y-%m-%d %H:%M') user_info['devicetype'] = row.User.devicetype user_info['name'] = crypto.decodeAES(row.User.name) user_info['email'] = row.User.email user_info['authsource'] = row.User.authsource user_info['phone'] = crypto.decodeAES(row.User.phone) user_info['gender'] = row.User.gender user_info['active'] = row.User.active user_info['birthdate'] = crypto.decodeAES(row.User.dateofbirth) user_info['default_address'] = crypto.decodeAES( row.UserAddress.address) if row.UserAddress != None else '' user_info[ 'default_address_size'] = row.UserAddress.size if row.UserAddress != None else '' user_info[ 'default_address_kind'] = row.UserAddress.kind if row.UserAddress != None else '' user_info[ 'memo'] = row.UserMemo.memo if row.UserMemo != None else '' user_info['is_b2b'] = row.User.is_b2b #user_info['all_addresses'] = userdao.get_all_user_addresses(row.User.id) users.append(user_info) ret['response'] = {'count': total_cnt, 'users': users} self.set_status(Response.RESULT_OK) except Exception, e: session.rollback() print_err_detail(e) self.set_status(Response.RESULT_SERVERERROR) add_err_message_to_response(ret, err_dict['err_mysql'])