Exemplo n.º 1
0
    def get(self):
        self.set_header("Content-Type", "application/json")
        self.set_header('Access-Control-Allow-Origin', '*')

        ret = {}

        try:
            session = Session()
            masterdao = MasterDAO()

            masters = []

            master_ids = masterdao.get_all_master_ids()
            for mid in master_ids:
                master_info = {}

                basic = masterdao.get_master_basic_info(mid)
                rating_clean, rating_master = masterdao.get_master_rating(mid)
                total_salary = masterdao.get_master_total_granted_salary(mid)
                last_month_salary = masterdao.get_master_last_month_granted_salary(
                    mid)
                prefered_area = masterdao.get_master_prefered_area(mid)
                start_times, end_times = masterdao.get_master_working_time(mid)

                working_startdate = masterdao.get_master_working_start_date(
                    mid)
                completed_cleaning_count = masterdao.get_master_completed_cleaning_count(
                    mid)

                bank_name, bank_code, account_no = masterdao.get_master_account(
                    mid)

                master_info['master_id'] = mid
                master_info['name'] = basic['name']
                master_info['phone'] = basic['phone']
                master_info['img'] = basic['img']
                master_info['age'] = basic['age']
                master_info['gender'] = basic['gender']
                master_info['address'] = basic['address']
                master_info['pet_alergy'] = basic['pet_alergy']
                master_info['manager_name'] = basic['manager_name']
                master_info['manager_phone'] = basic['manager_phone']
                master_info['cardinal'] = basic['cardinal']
                master_info['level'] = basic['level']
                master_info['need_route'] = basic['need_route']
                master_info['t_size'] = basic['t_size']
                master_info['rating_clean'] = float(rating_clean)
                master_info['rating_master'] = float(rating_master)
                master_info['total_salary'] = int(total_salary)
                master_info['last_month_salary'] = int(last_month_salary)
                master_info['prefered_area'] = prefered_area
                master_info['prefered_area_list'] = [
                    area for area in prefered_area.split(',')
                ]
                master_info['start_times'] = start_times
                master_info['end_times'] = end_times
                master_info['active'] = basic['active']

                master_info['working_startdate'] = working_startdate
                master_info['cleaning_count'] = completed_cleaning_count
                master_info['account'] = {
                    'name': bank_name,
                    'code': bank_code,
                    'account_no': account_no
                }

                masters.append(master_info)

            ret['response'] = masters
            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")

        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'])
Exemplo n.º 3
0
    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 = {}

        try:
            session = Session()
            masterdao = MasterDAO()

            try:
                row = session.query(Master, Manager, func.group_concat(MasterPreferedArea.prefered_gu)) \
                         .join(Manager, Master.manager_id == Manager.id) \
                         .outerjoin(MasterPreferedArea, MasterPreferedArea.master_id == Master.id) \
                         .filter(Master.id == master_id) \
                         .group_by(Master.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

            result = session.query(Master, MasterTimeSlot) \
                            .join(MasterTimeSlot, Master.id == MasterTimeSlot.master_id) \
                            .filter(Master.id == master_id) \
                            .order_by(MasterTimeSlot.day_of_week) \
                            .all()

            mid = row.Master.id

            rating_clean, rating_master = masterdao.get_master_rating(mid)
            total_salary = masterdao.get_master_total_granted_salary(mid)
            last_month_salary = masterdao.get_master_last_month_granted_salary(
                mid)
            prefered_area = masterdao.get_master_prefered_area(mid)

            start_times = ['', '', '', '', '', '', '']
            end_times = ['', '', '', '', '', '', '']

            for r in result:
                dow = int(r.MasterTimeSlot.day_of_week)
                start_times[dow] = str(r.MasterTimeSlot.start_time.hour)
                end_times[dow] = str(r.MasterTimeSlot.end_time.hour)

            working_startdate = masterdao.get_master_working_start_date(mid)
            completed_cleaning_count = masterdao.get_master_completed_cleaning_count(
                mid)

            master_info = {}
            master_info['master_id'] = row.Master.id
            master_info['name'] = row.Master.name
            master_info['phone'] = row.Master.phone
            master_info['img'] = row.Master.img_url
            master_info['age'] = row.Master.age
            master_info['gender'] = row.Master.gender
            master_info['pet_alergy'] = row.Master.pet_alergy
            master_info['address'] = row.Master.address
            master_info['manager_name'] = row.Manager.name
            master_info['manager_phone'] = row.Manager.phone
            master_info['cardinal'] = row.Master.cardinal
            master_info['level'] = row.Master.level
            master_info['rating_clean'] = float(rating_clean)
            master_info['rating_master'] = float(rating_master)
            master_info['total_salary'] = int(total_salary)
            master_info['last_month_salary'] = int(last_month_salary)
            master_info[
                'prefered_area'] = prefered_area  # comma separated area
            master_info['cs_prefered_area'] = row[2]  # comma separated area
            master_info['start_times'] = ','.join(
                start_times)  # comma start_time
            master_info['end_times'] = ','.join(end_times)  # comma end_time

            master_info['working_startdate'] = working_startdate
            master_info['cleaning_count'] = completed_cleaning_count

            ret['response'] = master_info
            self.set_status(Response.RESULT_OK)
Exemplo n.º 4
0
    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()
            masterdao = MasterDAO()

            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

            print 'searching master term : ' + search_term

            masters = []
            results  = session.query(Master) \
                                    .filter(or_(Master.phone.like(search_term + '%'), Master.name.like('%' + search_term + '%'))) \
                                    .filter(Master.active != 0) \
                                    .all()

            print results

            total_counts = 0
            for result in results:
                mid = result.id
                print mid
                master_info = {}

                basic = masterdao.get_master_basic_info(mid)
                rating_clean, rating_master = masterdao.get_master_rating(mid)
                total_salary = masterdao.get_master_total_granted_salary(mid)
                last_month_salary = masterdao.get_master_last_month_granted_salary(mid)
                prefered_area = masterdao.get_master_prefered_area(mid)
                start_times, end_times = masterdao.get_master_working_time(mid)

                working_startdate = masterdao.get_master_working_start_date(mid)
                completed_cleaning_count = masterdao.get_master_completed_cleaning_count(mid)

                bank_name, bank_code, account_no = masterdao.get_master_account(mid)

                master_info['master_id']    = mid
                master_info['name']         = basic['name']
                master_info['phone']        = basic['phone']
                master_info['img']          = basic['img']
                master_info['age']          = basic['age']
                master_info['gender']       = basic['gender']
                master_info['address']      = basic['address']
                master_info['pet_alergy']   = basic['pet_alergy']
                master_info['manager_name'] = basic['manager_name']
                master_info['manager_phone'] = basic['manager_phone']
                master_info['cardinal']     = basic['cardinal']
                master_info['level']        = basic['level']
                master_info['need_route']    = basic['need_route']
                master_info['t_size']        = basic['t_size']
                master_info['rating_clean'] = float(rating_clean)
                master_info['rating_master'] = float(rating_master)
                master_info['total_salary'] = int(total_salary)
                master_info['last_month_salary'] = int(last_month_salary)
                master_info['prefered_area'] = prefered_area
                master_info['prefered_area_list'] = [area for area in prefered_area.split(',')]
                master_info['start_times']  = start_times
                master_info['end_times']    = end_times
                master_info['active']       = basic['active']

                master_info['working_startdate']    = working_startdate
                master_info['cleaning_count']    = completed_cleaning_count
                master_info['account'] = {'name' : bank_name, 'code' : bank_code, 'account_no' : account_no}

                masters.append(master_info)
                total_counts += 1

            print masters

            ret['response'] = {'counts' : total_counts, 'masters' : masters }
            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'])