class TourBookingCreateRequestSchema(BaseRequestSchema): tour_id = Integer(data_key='tourId', required=True) start_date = DateTime(data_key='startDate', format='%d-%m-%Y', required=True) note = String(validate=[ValidateLength(max=255)]) user_id = String(data_key='userId', required=True, validate=[ValidateLength(min=1, max=255)]) guests = Integer(required=True) price_per_participant = Integer(data_key='pricePerParticipant', required=True) grand_total = Integer(data_key='grandTotal', required=True) guest_name = String(data_key='guestName', required=True, validate=[ValidateLength(min=1, max=255)]) guest_phone_number = String(data_key='guestPhoneNumber', required=True, validate=[ValidateLength(min=1, max=255)]) guest_email = String(data_key='guestEmail', required=True, validate=[ValidateLength(min=1, max=255)]) @post_load() def refine_data(self, data, **kwargs): data['start_date'] = data.get('start_date').strftime('%Y-%m-%d') data['status'] = 'PENDING_PAYMENT' return data
class TourPaymentInformationCreateRequestSchema(BaseRequestSchema): bank_code = String(data_key='bankCode', required=True, validate=[ValidateEnum(Bank)]) tour_id = Integer(data_key='tourId', required=True) account_number = String(data_key='accountNumber', required=False, validate=[ValidateLength(min=1, max=255)]) account_name = String(data_key='accountName', required=False, validate=[ValidateLength(min=1, max=255)])
class HotelPaymentInformationCreateRequestSchema(BaseRequestSchema): bank_code = String(data_key=HotelCamelKey.mapping['bank_code'], required=True, validate=[ValidateEnum(Bank)]) hotel_id = Integer(data_key=HotelCamelKey.mapping['hotel_id'], required=True) account_number = String(data_key=HotelCamelKey.mapping['account_number'], required=False, validate=[ValidateLength(min=1, max=255)]) account_name = String(data_key=HotelCamelKey.mapping['account_name'], required=False, validate=[ValidateLength(min=1, max=255)])
class TourUpdateRequestSchema(BaseRequestSchema): name = String(required=False, validate=[ValidateLength(min=1, max=255)]) is_active = Boolean(data_key='isActive', required=False) description = String(required=False, validate=[ValidateLength(min=1, max=5000)]) city_or_province = String(data_key='cityOrProvince', required=False, validate=[ValidateLength(min=1, max=10)]) common_address = String(data_key='commonAddress', required=False, validate=[ValidateLength(min=1, max=255)]) duration = Integer(required=False) min_size = Integer(data_key='minSize', required=False) max_size = Integer(data_key='maxSize', required=False) price_per_participant = Integer(data_key='pricePerParticipant', required=False) transportations = String(required=False, validate=[ValidateLength(min=1, max=255)]) images = String(required=False, validate=[ValidateLength(min=1, max=500)]) organizer_name = String(data_key='organizerName', required=False, validate=[ValidateLength(min=1, max=255)]) organizer_phone_number = String(data_key='organizerPhoneNumber', required=False, validate=[ValidateLength(min=1, max=255)]) organizer_email = String(data_key='organizerEmail', required=False, validate=[ValidateLength(min=1, max=255)]) organizer_avatar = String(data_key='organizerAvatar', required=False, validate=[ValidateLength(min=1, max=255)])
class HotelBookingSchema(Schema): id = Integer(required=True) status = String(required=True) note = String() checkin_date = DateTime(data_key='checkinDate', format='%d-%m-%Y', required=True) checkout_date = DateTime(data_key='checkoutDate', format='%d-%m-%Y', required=True) room_type = String(data_key='roomType', required=True, validate=[ ValidateLength(min=1, max=10) ]) note = String() user_id = String(data_key='userId') rooms = Integer() guests = Integer() room_price = Integer(data_key='roomPrice') room_tax = Float(data_key='roomTax') grand_total = Integer(data_key='grandTotal') guest_name = String(data_key='guestName') guest_phone_number = String(data_key='guestPhoneNumber') guest_email = String(data_key='guestEmail') bank_code = String(data_key='bankCode') painded = Integer() image_witness = String(data_key='imageWitness')
class HotelBookingCreateRequestSchema(BaseRequestSchema): hotel_id = Integer(data_key='hotelId', required=True) checkin_date = DateTime(data_key='checkinDate', format='%d-%m-%Y', required=True) checkout_date = DateTime(data_key='checkoutDate', format='%d-%m-%Y', required=True) room_type = String(data_key='roomType', required=True, validate=[ ValidateLength(min=1, max=10) ]) note = String(validate=[ ValidateLength(max=255) ]) user_id = String(data_key='userId', required=True, validate=[ ValidateLength(min=1, max=255) ]) rooms = Integer(required=True) guests = Integer(required=True) room_price = Integer(data_key='roomPrice', required=True) room_tax = Float(data_key='roomTax', required=True) grand_total = Integer(data_key='grandTotal', required=True) guest_name = String(data_key='guestName', required=True, validate=[ ValidateLength(min=1, max=255) ]) guest_phone_number = String(data_key='guestPhoneNumber', required=True, validate=[ ValidateLength(min=1, max=255) ]) guest_email = String(data_key='guestEmail', required=True, validate=[ ValidateLength(min=1, max=255) ]) bank_code = String(data_key='bankCode', allow_none=True) painded = Integer(allow_none=True) image = String(allow_none=True) @post_load() def refine_data(self, data, **kwargs): data['checkin_date'] = data.get('checkin_date').strftime('%Y-%m-%d') data['checkout_date'] = data.get('checkout_date').strftime('%Y-%m-%d') data['status'] = 'PENDING_PAYMENT' return data
class HotelUpdateRequestSchema(BaseRequestSchema): name = String(required=False, validate=[ValidateLength(min=1, max=255)]) is_active = Boolean(data_key=HotelCamelKey.mapping['is_active'], required=False) description = String(required=False, validate=[ValidateLength(min=1, max=1000)]) city_or_province = String( data_key=HotelCamelKey.mapping['city_or_province'], required=False, validate=[ValidateLength(min=1, max=10)]) address = String(required=False, validate=[ValidateLength(min=1, max=255)]) longitude = Float(required=False) latitude = Float(required=False) checkin = DateTime(format='%H:%M', required=False) checkout = DateTime(format='%H:%M', required=False) utilities = String(required=False, validate=[ValidateLength(min=1, max=255)]) room_types = String(data_key=HotelCamelKey.mapping['room_types'], required=False, validate=[ValidateLength(min=1, max=255)]) phone_number = String(data_key=HotelCamelKey.mapping['phone_number'], required=False, validate=[ValidateLength(min=1, max=255)]) email = String(required=False, validate=[ValidateLength(min=1, max=255), ValidateEmail()]) image = String(required=False, validate=[ValidateLength(min=1, max=255)]) price_standard = Float(data_key=HotelCamelKey.mapping['price_standard'], required=False, allow_none=True) available_room_standard = Integer( data_key=HotelCamelKey.mapping['available_room_standard'], required=False, allow_none=True) tax_standard = Float(data_key=HotelCamelKey.mapping['tax_standard'], required=False, allow_none=True) image_standard = String(data_key=HotelCamelKey.mapping['image_standard'], validate=[ValidateLength(min=1, max=255)], required=False, allow_none=True) price_deluxe = Float(data_key=HotelCamelKey.mapping['price_deluxe'], required=False, allow_none=True) available_room_deluxe = Integer( data_key=HotelCamelKey.mapping['available_room_deluxe'], required=False, allow_none=True) tax_deluxe = Float(data_key=HotelCamelKey.mapping['tax_deluxe'], required=False, allow_none=True) image_deluxe = String(data_key=HotelCamelKey.mapping['image_deluxe'], validate=[ValidateLength(min=1, max=255)], required=False, allow_none=True) @post_load() def refine_data(self, data, **kwargs): for field in ['name', 'email', 'phone_number']: if field not in data: continue if data[field]: data[field] = StringUtils.remove_duplicate_space(data[field]) if data.get('checkin'): data['checkin'] = data.get('checkin').strftime('%H:%M:%S') if data.get('checkin'): data['checkout'] = data.get('checkout').strftime('%H:%M:%S') return data
class HotelsSearchRequestSchema(BaseRequestSchema): city_or_province = String( data_key=HotelCamelKey.mapping['city_or_province'], required=True, validate=[ValidateLength(min=1, max=10)])
class ToursSearchRequestSchema(BaseRequestSchema): city_or_province = String(data_key='cityOrProvince', required=True, validate=[ValidateLength(min=1, max=10)])