def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        cleaning_id = self.get_argument('cleaning_id', '')
        booking_id = self.get_argument('booking_id', '')

        mongo_logger = get_mongo_logger()

        ret = {}
        try:
            doc = self.db.find_one_and_update({'cleaning_id': cleaning_id}, {
                '$push': {
                    'booking_ids': booking_id
                },
                '$inc': {
                    'count': 1
                }
            })

            ret['response'] = Response.SUCCESS
            self.set_status(Response.RESULT_OK)

            mongo_logger.debug('web process booking')

        except Exception, e:
            add_err_message_to_response(ret, err_dict['err_mysql'])
            self.set_status(Response.RESULT_SERVERERROR)
            print_err_detail(e)
            mongo_logger.error('failed to web process booking')
    def get(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        ret = {}

        mongo_logger = get_mongo_logger()

        try:
            now = dt.datetime.now()
            r = redis.Redis(host = REDIS_HOST, port = REDIS_PORT, password = REDIS_PWD)

            event_on = r.get('free_event')

            event = True
            if event_on == None or event_on != 'on':
                event = False

            ret['response'] = event
            self.set_status(Response.RESULT_OK)

        except Exception, e:
            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', '*')

        master_id = self.get_argument('master_id', '')
        prize     = self.get_argument('prize', 0)
        prize_description = self.get_argument('prize_description', '')

        prize = int(prize)

        ret = {}

        mongo_logger = get_mongo_logger()

        try:
            session = Session()
            master_prize = MasterPrize(master_id = master_id, prize = prize, prize_description = prize_description, earn_date = dt.datetime.now())
            session.add(master_prize)

            session.commit()

            mongo_logger.debug('add point', extra = {'master_id' : master_id, 'prize' : prize, 'prize_description' : prize_description})

            ret['response'] = Response.SUCCESS
            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'])
            mongo_logger.error('add point error', extra = {'master_id' : master_id, 'prize' : prize, 'prize_description' : prize_description})
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        booking_id  = self.get_argument('booking_id', '')
        div_no      = self.get_argument('div_no', '')

        ret = {}
        mongo_logger = get_mongo_logger()

        try:
            session = Session()

            order_11st = OrderID11st(booking_id = booking_id, div_no = div_no,
                                    datetime = dt.datetime.now())
            session.add(order_11st)
            session.commit()

            ret['response'] = Response.SUCCESS
            mongo_logger.debug('link hm 11st', extra = {'div_no' : div_no, 'booking_id' : booking_id})

            self.set_status(Response.RESULT_OK)

        except Exception, e:
            session.rollback()
            add_err_message_to_response(ret, err_dict['err_mysql'])
            self.set_status(Response.RESULT_SERVERERROR)
            print_err_detail(e)
            mongo_logger.error('failed tolink hm 11st',
                        extra = {'div_no' : div_no, 'booking_id' : booking_id})
Пример #5
0
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        cleaning_id  = self.get_argument('cleaning_id', '')
        contact_cnt  = self.get_argument('contact_cnt', '1회')
        contact_memo = self.get_argument('contact_memo', '')

        ret = {}

        mongo_logger = get_mongo_logger()

        try:
            doc = self.db.find_one_and_update({'cleaning_id' : cleaning_id},
                                            {'$set' : {'contact_cnt' : contact_cnt,
                                            'contact_memo' : contact_memo}},
                                            return_document = ReturnDocument.AFTER)


            ret['response'] = Response.SUCCESS
            self.set_status(Response.RESULT_OK)

            mongo_logger.debug('web update web cleaning status',
                                            extra = {'cleaning_id' : cleaning_id,
                                                    'contact_cnt' : contact_cnt,
                                                    'contact_memo' : contact_memo})

        except Exception, e:
            add_err_message_to_response(ret, err_dict['err_mysql'])
            self.set_status(Response.RESULT_SERVERERROR)
            print_err_detail(e)
            mongo_logger.error('failed to web update web cleaning status',
                                                  extra = {'cleaning_id' : cleaning_id,
                                                            'contact_cnt' : contact_cnt,
                                                            'contact_memo' : contact_memo})
    def post(self):
        self.set_header("Content-Type", "application/json")

        ret = {}

        email = self.get_argument('email', '')

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        try:
            session = Session()

            try:
                row = session.query(User).filter(User.email == email,
                                                 User.active == 1).one()
            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_login_no_record'])
                mongo_logger.error('%s failed to logined' % email,
                                   extra={'err': str(e)})
                return

            except MultipleResultsFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_multiple_record'])
                mongo_logger.error('%s failed to logined' % email,
                                   extra={'err': str(e)})
                return
    def get(self, **params):
        self.set_header("Content-Type", "application/json")

        user_id = self.get_argument('id', '')
        mode = params['mode']

        ret = {}

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        try:
            session = Session()

            bookings = self.get_mybookings(session, user_id, mode)
            ret['response'] = bookings
            self.set_status(Response.RESULT_OK)

            mix.track(user_id, 'got booking info', {
                'time': dt.datetime.now(),
                'mode': mode
            })
            mongo_logger.debug('got booking info', extra={'uid': user_id})

            print user_id, 'successfully retrieved upcomming events...', dt.datetime.now(
            )

        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'])
Пример #8
0
    def post(self):
        self.set_header("Content-Type", "application/json")

        ret = {}

        uid = self.get_argument('user_id', '')
        mid = self.get_argument('master_id', '')
        memo = self.get_argument('memo', '')

        mongo_logger = get_mongo_logger()

        try:
            session = Session()

            memo = MasterMemo(user_id=uid,
                              master_id=mid,
                              memo=memo,
                              datetime=dt.datetime.now())
            session.add(memo)
            session.commit()

            ret['response'] = Response.SUCCESS
            self.set_status(Response.RESULT_OK)

            print mid, 'posted memo successfully'
            mongo_logger.debug('%s posted memo' % mid)

        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'])
            mongo_logger.error('%s failed to posted memo' % mid,
                               extra={'err': str(e)})
Пример #9
0
    def get(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        mongo_logger = get_mongo_logger()

        ret = {}
        web_bookings = []

        try:
            docs = self.db.find({'$where' : 'this.dates.length > this.count',
                                'payment' : {'$exists' : True},
                                'removed' : {'$exists' : False}}) \
                        .sort('request_time', pymongo.DESCENDING)
            for doc in docs:
                booking = {}
                booking['name'] = doc['name']
                booking['phone'] = doc['phone']
                booking['address'] = doc['address']
                booking['address_index'] = doc['address_index']
                booking['dates'] = doc['dates']
                booking['start_date'] = doc[
                    'start_date'] if 'start_date' in doc else ''
                booking['time'] = doc['time']
                booking['user_id'] = doc['user_id']
                booking['cleaning_id'] = doc['cleaning_id']
                booking['tasks'] = doc['tasks']
                booking['rooms'] = doc['rooms']
                booking['baths'] = doc['baths']
                booking['size'] = doc['size'] if 'size' in doc else 0
                booking['total_price'] = doc['total_price']
                booking['total_duration'] = doc['total_duration']
                booking['basic_price'] = doc['basic_price']
                booking['basic_duration'] = doc['basic_duration']
                booking['period'] = doc['period']
                booking['email'] = doc['email']
                booking['dirty'] = doc['dirty']
                booking['payment'] = doc['payment']
                booking['count'] = doc['count']
                booking['message'] = doc['message']
                booking['request_time'] = dt.datetime.strftime(
                    doc['request_time'], '%Y-%m-%d %H:%M')

                booking['contact_cnt'] = doc[
                    'contact_cnt'] if 'contact_cnt' in doc else '0회'
                booking['contact_memo'] = doc[
                    'contact_memo'] if 'contact_memo' in doc else ''

                web_bookings.append(booking)

            ret['response'] = web_bookings
            self.set_status(Response.RESULT_OK)

            mongo_logger.debug('web booking')

        except Exception, e:
            add_err_message_to_response(ret, err_dict['err_mysql'])
            self.set_status(Response.RESULT_SERVERERROR)
            print_err_detail(e)
            mongo_logger.error('failed to web booking')
    def get(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        user_id         = self.get_argument('user_id', '')

        ret = {}

        mongo_logger = get_mongo_logger()

        try:
            now = dt.datetime.now()
            session = Session()

            row = session.query(Booking, UserCard) \
                        .outerjoin(UserCard, and_(Booking.user_id == UserCard.user_id, Booking.card_idx == UserCard.user_card_index)) \
                        .filter(Booking.user_id == user_id) \
                        .filter(Booking.start_time < now) \
                        .filter(Booking.cleaning_status == BC.BOOKING_COMPLETED) \
                        .filter(Booking.payment_status != BC.BOOKING_PAID) \
                        .order_by(desc(Booking.start_time)) \
                        .first()

            if row:
                booking_id = row.Booking.id
                cleaning_price = row.Booking.price_with_task
                cleaning_time = convert_datetime_format2(row.Booking.start_time)
                card_alias   = row.UserCard.card_alias if row.UserCard != None else ''

                ret['response'] = {'unpaid_booking' : True,
                                   'card_alias' : card_alias,
                                   'booking_id' : booking_id,
                                   'cleaning_price' : cleaning_price,
                                   'cleaning_time' : cleaning_time}

                mongo_logger.debug('check unpaid booking', extra = {'user_id' : user_id,
                                                                    'dt' : now,
                                                                    'unpaid_booking' : True,
                                                                    'booking_id' : booking_id,
                                                                    'cleaning_price' : cleaning_price,
                                                                    'cleaning_time' : cleaning_time})
            else:
                ret['response'] = {'unpaid_booking' : False}

                mongo_logger.debug('check unpaid booking', extra = {'user_id' : user_id,
                                                                    'dt' : now,
                                                                    'unpaid_booking' : False})

            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'])
            mongo_logger.error('failed to check unpaid booking', extra = {'err' : str(e)})
    def post(self):
        self.set_header("Content-Type", "application/json")

        ret = {}

        email = self.get_argument('email', '')
        pwd = self.get_argument('pwd', '')

        print 'login', email, pwd

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        try:
            session = Session()
            userdao = UserDAO()

            try:
                row = session.query(User) \
                            .filter(User.email == email, User.password == pwd, User.active == 1) \
                            .one()

            except NoResultFound, e:
                try:
                    if len(email) == 11 and email.startswith('010'):
                        row = session.query(User) \
                                    .filter(func.aes_decrypt(func.from_base64(User.phone), \
                                    func.substr(User.salt, 1, 16)) == email,  \
                                    User.password == pwd, \
                                    User.active == 1) \
                                    .one()
                    else:
                        session.close()
                        self.set_status(Response.RESULT_OK)
                        add_err_message_to_response(
                            ret, err_dict['err_login_no_match'])
                        mongo_logger.error('%s failed to logined' % email,
                                           extra={'err': str(e)})
                        return

                except NoResultFound, e:
                    session.close()
                    self.set_status(Response.RESULT_OK)
                    add_err_message_to_response(ret,
                                                err_dict['err_login_no_match'])
                    mongo_logger.error('%s failed to logined' % email,
                                       extra={'err': str(e)})
                    return
                except MultipleResultsFound, e:
                    session.close()
                    self.set_status(Response.RESULT_OK)
                    add_err_message_to_response(ret,
                                                err_dict['err_dup_phone2'])
                    mongo_logger.error('%s failed to logined' % email,
                                       extra={'err': str(e)})
                    return
Пример #12
0
    def post(self):
        self.set_header("Content-Type", "application/json")

        ret = {}

        booking_id = self.get_argument('booking_id', '')
        caller_mdn = self.get_argument('caller_mdn', '')
        callee_mdn = self.get_argument('callee_mdn', '')

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        try:
            session = Session()
            row = session.query(Booking).filter(Booking.id == booking_id).one()

            data = {}
            data_header = {}
            data_body = {}

            text = convert_datetime_format3(row.start_time)
            if row.cleaning_status == 0:
                text += ' 예정'

            # data header
            data_header['VERSION']      = '1.0.0'
            data_header['CALLER_ID']    = PKG_MASTER

            # data body
            data_body['SERVICE_KEY']    = T_SERVICE_KEY
            data_body['SERVICE_NAME']   = "홈마스터"
            data_body['CALLER_MDN']     = caller_mdn
            data_body['CALLEE_MDN']     = callee_mdn
            data_body['TITLE']          = '[홈마스터] 담당 홈마스터입니다'
            data_body['TEXT']           = text
            data_body['APP_URL']        = 'homemaster://HMBookingList'
            data_body['WEB_URL']        = 'https://homemaster.co.kr'
            data_body['REQUEST_TYPE']   = '1'
            data_body['API_TYPE']       = '1'

            # post data
            data['HEADER'] = data_header
            data['BODY'] = data_body

            http_headers = {'Content-Type' : 'application/json; charset=utf-8', 'CPID' : CPID}
            response = requests.post(T_BETA_SERVER, data=json.dumps(data), headers=http_headers)
            print response.text

            ret['response'] = Response.SUCCESS
            self.set_status(Response.RESULT_OK)

        except Exception, e:
            print_err_detail(e)
            self.set_status(Response.RESULT_SERVERERROR)
            add_err_message_to_response(ret, err_dict['err_mysql'])
Пример #13
0
def request_charge(user_id, user_name, amount):
    try:
        request_url = '%s:%d/homemaster_payment/request_payment_new' % (
            PAYMENT_HOST, PAYMENT_PORT)
        params = {
            'id': user_id,
            'name': user_name,
            'price': amount,
            'product_name': 'charge_for_cancel'
        }

        response = requests.post(request_url, data=params)
        result = json.loads(response.text)

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        if result['response'] == Response.SUCCESS:
            # upate request payment record
            tid = result['tid']
            authdate = result['authdate']

            session = Session()

            charge_record = UserChargeRecord(user_id=user_id,
                                             tid=tid,
                                             amount=amount,
                                             auth_date=authdate)
            session.add(charge_record)
            session.commit()
            session.close()

            mix.people_track_charge(user_id, amount,
                                    {'time': dt.datetime.now()})
            mongo_logger.debug(
                '%s charged for canceling before passing 2 months' % user_id,
                extra={'amount': amount})

            return True, tid
        else:
            print 'An error occurred while charging processing...'
            print result['err_code'], result['err_msg']
            mongo_logger.error(
                '%s failed to charged for canceling before passing 2 months' %
                user_id,
                extra={'err': result['err_msg']})
            return False, result['err_msg']

    except Exception, e:
        print_err_detail(e)
        mongo_logger.error(
            '%s failed to charged for canceling before passing 2 months' %
            user_id,
            extra={'err': str(e)})
        return False, str(e)
Пример #14
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()

            results = session.query(UserCoupon) \
                             .filter(UserCoupon.user_id == user_id) \
                             .filter(func.date(UserCoupon.expire_date) >= now.date()) \
                             .filter(UserCoupon.used == 0) \
                             .order_by(UserCoupon.expire_date) \
                             .all()

            print "request user coupon sql query"

            user_coupons = []

            for result in results:
                user_coupon = {}
                user_coupon['id'] = result.id
                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['description'] = result.description
                user_coupon['title'] = result.title

                user_coupons.append(user_coupon)

            ret['response'] = user_coupons
            self.set_status(Response.RESULT_OK)

            mongo_logger.debug('request user coupon',
                               extra={'user_id': user_id})

        except Exception, e:
            session.rollback()
            add_err_message_to_response(ret, err_dict['err_mysql'])
            self.set_status(Response.RESULT_SERVERERROR)
            print_err_detail(e)
            mongo_logger.error('failed to request user coupon',
                               extra={
                                   'user_id': user_id,
                                   'err': str(e)
                               })
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        user_id = self.get_argument('id', '')
        tid = self.get_argument('tid', '')
        amount = self.get_argument('amount', 0)
        partial = self.get_argument('partial', 1)
        cancel_msg = self.get_argument('cancel_msg', '')

        amount = int(amount)

        if cancel_msg == '':
            cancel_msg = '취소'

        ret = {}

        try:
            mongo_logger = get_mongo_logger()
            mix = get_mixpanel()

            userdao = UserDAO()

            request_url = '%s:%d/homemaster_payment/cancel_payment' % (
                PAYMENT_HOST, PAYMENT_PORT)
            params = {}
            params['id'] = user_id
            params['tid'] = tid
            params['amount'] = amount
            params['partial'] = partial
            params['cancel_msg'] = cancel_msg

            response = requests.post(request_url, data=params)
            result = json.loads(response.text)

            if response.status_code == 200 and result['response'] != "":
                mix.track(user_id, 'cancel payment',
                          {'time': dt.datetime.now()})
                mongo_logger.debug('cancel payment',
                                   extra={'user_id': user_id})

                ret['response'] = result['response']
                self.set_status(Response.RESULT_OK)
            else:
                print 'An error occurred while register card'
                print result['err_msg']
                add_err_ko_message_to_response(ret, result['err_msg'])
                mix.track(user_id, 'cannot cancel payment',
                          {'time': dt.datetime.now()})
                mongo_logger.error('failed to cancel payment',
                                   extra={'user_id': user_id})
        except Exception, e:
            print_err_detail(e)
            self.set_status(Response.RESULT_SERVERERROR)
            add_err_message_to_response(ret, err_dict['err_mysql'])
Пример #16
0
    def get(self):
        self.set_header("Content-Type", "application/json")
        email = self.get_argument('email', '')

        ret = {}

        if email == '':
            self.set_status(Response.RESULT_BADREQUEST)
            add_err_message_to_response(ret, err_dict['invalid_param'])
            self.write(json.dumps(ret))
            return

        mongo_logger = get_mongo_logger()

        try:
            session = Session()

            try:
                row = session.query(User).filter(User.email == email).one()

            except NoResultFound, e:
                try:
                    if len(email) == 11 and email.startswith('010'):
                        row = session.query(User) \
                                    .filter(func.aes_decrypt(func.from_base64(User.phone), \
                                    func.substr(User.salt, 1, 16)) == email,  \
                                    User.active == 1) \
                                    .one()
                    else:
                        session.close()
                        self.set_status(Response.RESULT_OK)
                        add_err_message_to_response(
                            ret, err_dict['err_salt_no_match'])
                        mongo_logger.error('failed to get salt',
                                           extra={'err': str(e)})
                        return

                except NoResultFound, e:
                    session.close()
                    self.set_status(Response.RESULT_OK)
                    add_err_message_to_response(ret,
                                                err_dict['err_salt_no_match'])
                    mongo_logger.error('failed to get salt',
                                       extra={'err': str(e)})
                    return

                except MultipleResultsFound, e:
                    session.close()
                    self.set_status(Response.RESULT_OK)
                    add_err_message_to_response(ret,
                                                err_dict['err_dup_phone2'])
                    mongo_logger.error('failed to get salt',
                                       extra={'err': str(e)})
                    return
Пример #17
0
 def send(self, reg_ids, push_data):
     mongo_logger = get_mongo_logger()
     try:
         self.gcm.json_request(registration_ids=reg_ids, data=push_data)
         mongo_logger.debug('push notification was sent', extra=push_data)
         return True
     except Exception, e:
         print_err_detail(e)
         mongo_logger.error('push notification was failed to send',
                            extra={'err': str(e)})
         return False
    def post(self):

        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        ret = {}

        user_id              = self.get_argument('user_id', '')
        booking_id           = self.get_argument('booking_id', '')
        coupon_id            = self.get_argument('coupon_id', '')

        mongo_logger = get_mongo_logger()
        now = dt.datetime.now()

        try:
            session = Session()

            count = session.query(UserCoupon) \
                           .filter(UserCoupon.booking_id == booking_id) \
                           .count()

            if count > 0:
                self.set_status(Response.RESULT_OK)
                add_err_ko_message_to_response(ret, '이미 쿠폰이 적용된 예약 입니다.')
                return


            row = session.query(UserCoupon) \
                         .filter(UserCoupon.user_id == user_id) \
                         .filter(UserCoupon.id == coupon_id) \
                         .one()

            if row.expire_date <= now:
                self.set_status(Response.RESULT_OK)
                add_err_ko_message_to_response(ret, '사용 기한이 만료된 쿠폰 입니다.')
                return

            if row.used != 0:
                self.set_status(Response.RESULT_OK)
                add_err_ko_message_to_response(ret, '이미 사용한 쿠폰 입니다.')
                return

            ret['response'] = row.discount_price
            self.set_status(Response.RESULT_OK)

            mongo_logger.debug('apply user coupon', extra = {'user_id' : user_id, 'booking_id' : booking_id })

        except Exception, e:
            session.rollback()
            add_err_message_to_response(ret, err_dict['err_mysql'])
            self.set_status(Response.RESULT_SERVERERROR)
            print_err_detail(e)
            mongo_logger.error('failed to apply user coupon', extra = {'user_id' : user_id, 'booking_id' : booking_id, 'err' : str(e)})
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        ret = {}

        booking_id                  = self.get_argument('booking_id', '')

        uid                         = self.get_argument('uid', '')
        date                        = self.get_argument('date', dt.datetime.strftime(dt.datetime.now(), '%Y%m%d'))
        time                        = self.get_argument('time', '08:00')
        master_ids                  = self.get_argument('master_ids', [])
        apply_to_all_behind         = self.get_argument('apply_to_all_behind', 0)
        by_manager                  = self.get_argument('by_manager', 0)

        # convert parameters
        apply_to_all_behind         = int(apply_to_all_behind)
        selected_date_str           = date
        time_str                    = time
        selected_date               = dt.datetime.strptime(date, '%Y%m%d')
        master_ids                  = master_ids.split(',')
        by_manager                  = int(by_manager)

        # logging part
        mix = get_mixpanel()
        mongo_logger = get_mongo_logger()

        print 'update schedule'
        print selected_date_str, time_str, apply_to_all_behind
        print '*' * 100

        try:
            session = Session()

            booking_info = {}

            userdao     = UserDAO()
            masterdao   = MasterDAO()
            holder      = IntermediateValueHolder()

            try:
                row = session.query(Booking).filter(Booking.id == booking_id).one()
            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_record'])
                return

            except MultipleResultsFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_multiple_record'])
                return
Пример #20
0
def request_unpaid_charge(user_id, user_name, amount, interest, quota):
    try:
        request_url = '%s:%d/homemaster_payment/request_payment_quota' % (
            PAYMENT_HOST, PAYMENT_PORT)
        params = {
            'id': user_id,
            'name': user_name,
            'price': amount,
            'product_name': '미납결제',
            'interest': interest,
            'quota': quota
        }

        response = requests.post(request_url, data=params)
        result = json.loads(response.text)

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        if result['response'] == Response.SUCCESS:
            # upate request payment record
            tid = result['tid']
            authdate = result['authdate']

            session = Session()
            payment_record = ManualPaymentRecord(user_id=user_id,
                                                 amount=amount,
                                                 auth_date=authdate,
                                                 interest=interest,
                                                 quota=quota)
            session.add(payment_record)
            session.commit()
            session.close()

            mix.people_track_charge(user_id, amount,
                                    {'$time': dt.datetime.now()})
            mongo_logger.debug('%s paid for unpaid ' % user_id,
                               extra={'price': amount})

            return True, tid
        else:
            print 'An error occurred while request processing...'
            print result['err_code'], result['err_msg']
            mongo_logger.error('%s failed to paid for unpaid' % user_id,
                               extra={'err': result['err_msg']})
            return False, result['err_msg']

    except Exception, e:
        print_err_detail(e)
        mongo_logger.error('%s failed to paid for unpaid' % user_id,
                           extra={'err': str(e)})
        return False, str(e)
Пример #21
0
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        master_id = self.get_argument('master_id', '')
        category_idx = self.get_argument('category_idx', '')
        penalty_idx = self.get_argument('penalty_idx', '')
        penalty = self.get_argument('penalty', '')

        category_idx = int(category_idx)
        penalty_idx = int(penalty_idx)

        ret = {}

        mongo_logger = get_mongo_logger()
        try:
            session = Session()
            master_penalty = MasterPenalty(master_id=master_id,
                                           category_idx=category_idx,
                                           penalty_idx=penalty_idx,
                                           penalty=penalty,
                                           penalty_date=dt.datetime.now())
            session.add(master_penalty)

            session.commit()

            mongo_logger.debug('charge penalty',
                               extra={
                                   'master_id': master_id,
                                   'category_idx': category_idx,
                                   'penalty_idx': penalty_idx,
                                   'penalty': penalty
                               })

            ret['response'] = Response.SUCCESS
            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'])
            mongo_logger.error('charge penalty error',
                               extra={
                                   'master_id': master_id,
                                   'category_idx': category_idx,
                                   'penalty_idx': penalty_idx,
                                   'penalty': penalty
                               })
Пример #22
0
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        print "call change_circle_handler"

        ret = {}

        org_booking_id = self.get_argument('booking_id', '')

        new_booking_date = self.get_argument(
            'date', dt.datetime.strftime(dt.datetime.now(), '%Y%m%d'))
        new_booking_time = self.get_argument('time', '08:00')
        master_ids = self.get_argument('master_ids', [])
        new_appointment_type = self.get_argument('appointment_type', '')

        # convert parameters
        selected_date_str = new_booking_date
        time_str = new_booking_time
        new_booking_date = dt.datetime.strptime(new_booking_date, '%Y%m%d')
        master_ids = master_ids.split(',')
        new_appointment_type = int(new_appointment_type)

        # logging part
        mix = get_mixpanel()
        mongo_logger = get_mongo_logger()

        print 'change circle'
        print selected_date_str, time_str
        print '*' * 100

        try:
            session = Session()
            try:
                row = session.query(Booking).filter(
                    Booking.id == org_booking_id).one()
            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_record'])
                return

            except MultipleResultsFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_multiple_record'])
                return
    def post(self):
        ret = {}

        guid = self.get_argument('id', '')
        address = self.get_argument('address', '')
        index = self.get_argument('index', 0)
        size = self.get_argument('size', 0)
        kind = self.get_argument('kind', 1)
        rooms = self.get_argument('rooms', 1)
        baths = self.get_argument('baths', 1)

        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        index = int(index)

        print address, index

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        try:
            session = Session()
            userdao = UserDAO()

            try:
                row = session.query(UserAddress) \
                            .filter(and_(UserAddress.user_id == guid,
                            UserAddress.user_addr_index == index)) \
                            .one()
            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_record'])
                mongo_logger.error('%s failed to find address, no record' %
                                   email,
                                   extra={'err': str(e)})
                return

            except MultipleResultsFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_multiple_record'])
                mongo_logger.error(
                    '%s failed to find address, multiple record' % email,
                    extra={'err': str(e)})
                return
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        cleaning_id = self.get_argument('cleaning_id', '')
        cno = self.get_argument('cno', '')
        expy = self.get_argument('expy', '')
        expm = self.get_argument('expm', '')
        ssnf = self.get_argument('ssnf', '')
        cpftd = self.get_argument('cpftd', '')
        calias = self.get_argument('calias', '')

        ret = {}

        try:
            mongo_logger = get_mongo_logger()
            mix = get_mixpanel()

            userdao = UserDAO()

            doc = self.db.find_one_and_update(
                {'cleaning_id': cleaning_id}, {'$set': {
                    'payment': '선결제'
                }},
                return_document=ReturnDocument.AFTER)
            if doc == None:
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_no_cleaning_id'])
                return

            print cno

            try:
                uid = doc['user_id']
            except Exception, e:
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_user_id'])
                return

            try:
                amount = int(doc['total_price'])
            except Exception, e:
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_invalid_amount'])
                return
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        ret = {}

        user_id = self.get_argument('user_id', '')
        email = self.get_argument('email', '')
        name = self.get_argument('name', '')
        phone = self.get_argument('phone', '')
        devicetype = self.get_argument('devicetype', 'None')
        gender = self.get_argument('gender', 0)
        birthdate = self.get_argument('birthdate', '')

        self.set_header("Content-Type", "application/json")

        gender = int(gender)

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        try:
            session = Session()
            userdao = UserDAO()

            try:
                row = session.query(User) \
                            .filter(User.id == user_id) \
                            .one()
            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_record'])
                mongo_logger.error('%s failed to find user, no record' %
                                   user_id,
                                   extra={'err': str(e)})
                return

            except MultipleResultsFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_multiple_record'])
                mongo_logger.error('%s failed to find user, multiple record' %
                                   user_id,
                                   extra={'err': str(e)})
                return
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        ret = {}

        booking_id = self.get_argument('booking_id', '')
        additional_task = self.get_argument('additional_task', '')

        # convert parameters
        additional_task = int(additional_task)

        # logging part
        mix = get_mixpanel()
        mongo_logger = get_mongo_logger()

        print 'modify additional task'
        print '*' * 100

        try:
            session = Session()

            booking_info = {}

            userdao = UserDAO()
            masterdao = MasterDAO()

            try:
                row = session.query(Booking, UserAddress) \
                             .join(UserAddress, Booking.user_id == UserAddress.user_id) \
                             .filter(Booking.addr_idx == UserAddress.user_addr_index) \
                             .filter(Booking.id == booking_id) \
                             .one()

            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_record'])
                return

            except MultipleResultsFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_multiple_record'])
                return
    def post(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        phone = self.get_argument('phone', '')

        print 'phone', phone

        mongo_logger = get_mongo_logger()

        ret = {}

        try:
            session = Session()
            userdao = UserDAO()

            try:
                result = session.query(User) \
                            .filter(func.aes_decrypt(func.from_base64(User.phone), \
                            func.substr(User.salt, 1, 16)) == phone,  \
                            User.active == 1) \
                            .all()

            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_login_no_match'])
                mongo_logger.error('%s failed to get registerinfo' % phone,
                                   extra={'err': str(e)})
                return

            usersinfo = []

            for row in result:
                userinfo = {}
                userinfo['id'] = row.id
                userinfo['name'] = userdao.get_user_name(row.id)
                userinfo['phone'] = userdao.get_user_phone(row.id)
                userinfo['email'] = row.email
                usersinfo.append(userinfo)

            mongo_logger.debug('user registered info')

            ret['response'] = usersinfo
            self.set_status(Response.RESULT_OK)
    def post(self):

        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        master_id = self.get_argument('master_id', '')

        ret = {}

        mongo_logger = get_mongo_logger()

        try:
            session = Session()
            row = session.query(func.sum(MasterPrize.prize)) \
                        .filter(MasterPrize.master_id == master_id) \
                        .one()

            if int(row[0]) <= 0:
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_zero_point'])
                mongo_logger.debug('reset failed', extra = {'master_id' : master_id})
                return

            prize = -1 * int(row[0])
            prize_description = 'reset'

            print prize, prize_description

            master_prize = MasterPrize(master_id = master_id, prize = prize, prize_description = prize_description, earn_date = dt.datetime.now())
            session.add(master_prize)

            session.commit()

            mongo_logger.debug('reset point', extra = {'master_id' : master_id, 'prize' : prize, 'prize_description' : prize_description})

            ret['response'] = Response.SUCCESS
            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'])
            mongo_logger.error('reset point error', extra = {'master_id' : master_id, 'prize' : prize, 'prize_description' : prize_description})
    def post(self):
        ret = {}

        user_id = self.get_argument('user_id', '')
        index = self.get_argument('index', 0)

        index = int(index)

        print user_id, index

        self.set_header("Content-Type", "application/json")

        mongo_logger = get_mongo_logger()
        mix = get_mixpanel()

        try:
            session = Session()

            try:
                default_index = session.query(UserDefaultAddress) \
                    .filter(UserDefaultAddress.user_id == user_id) \
                    .one()

                # 기본 주소이면 삭제 안되도록 함
                if default_index.address_idx == index:
                    print 'default index'
                    session.close()
                    self.set_status(Response.RESULT_OK)
                    add_err_ko_message_to_response(ret, '기본 주소는 삭제 하실 수 없습니다.')
                    return

            except NoResultFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret, err_dict['err_no_record'])
                print_err_detail(e)
                return

            except MultipleResultsFound, e:
                session.close()
                self.set_status(Response.RESULT_OK)
                add_err_message_to_response(ret,
                                            err_dict['err_multiple_record'])
                print_err_detail(e)
                return
    def get(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        master_id = self.get_argument('master_id', '')

        ret = {}
        panalties = []

        mongo_logger = get_mongo_logger()
        try:
            session = Session()
            result = session.query(MasterPenalty) \
                            .filter(MasterPenalty.master_id == master_id) \
                            .order_by(desc(MasterPenalty.penalty_date)) \
                            .all()

            for row in result:
                panalties.append({
                    'master_id':
                    master_id,
                    'category_idx':
                    row.category_idx,
                    'penalty_idx':
                    row.penalty_idx,
                    'penalty':
                    row.penalty,
                    'datetime':
                    convert_datetime_format2(row.penalty_date)
                })

            mongo_logger.debug('get penalty', extra={'master_id': master_id})

            ret['response'] = panalties
            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'])
            mongo_logger.error('get penalty error',
                               extra={'master_id': master_id})