Example #1
0
    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'])
Example #2
0
    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'])
Example #5
0
    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'])
Example #6
0
    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'])