示例#1
0
	def end_trip(self):
		if self.__trip_status != trip_status.TRIP_STARTED:
			return standard_response.get_standard_api_response(False, "Trip not started", ApplicationErrorCodes.REQUEST_NOT_FULFILLED)

		self.__trip_status = trip_status.TRIP_COMPLETED		
		self.__cab_action.deallocate_cab()
		self.__cab_action.update_cab_location(self.__request.get_trip_end_location())
		self.__trip_distance = utils.get_trip_distance(self.__request.get_trip_start_location(), self.__request.get_trip_end_location())
		self.__trip_duration = utils.get_trip_timing(self.__trip_distance)  # self.__trip_end_time - self.__trip_start_time
		self.__trip_end_time = self.__trip_start_time + datetime.timedelta(minutes = int(self.__trip_duration)) # datetime.now()
		self.__order = Order(self.__trip_id, self.__request.get_trip_customer(), self.__trip_distance, self.__trip_duration, self.__request.get_trip_preference().get_cab_color())

		return standard_response.get_standard_api_response(True, "", ApplicationErrorCodes.SUCCESS, self.to_dict())
示例#2
0
def get_order(id_):
    existing_order = Order.objects(user_id=request.current_user['id'],
                                   id=id_).first()

    if not existing_order:
        raise NotFoundError('Order not found')

    return existing_order.response()
示例#3
0
def get_service_type_label():
    """
    **薪资支付计划**
    """
    order_id = request.args.get('order_id', None)
    if not order_id:
        abort(400, "请求参数不完整")
    order = Order.get(order_id)
    return jsonify(status='success',
                   code=1,
                   data=order_schema_data.dump(order).data)
示例#4
0
def create_order():
    req_val_bd = request.valid_body.dict()
    existing_ticket = Ticket.objects(id=req_val_bd['ticket_id']).first()

    if not existing_ticket:
        raise NotFoundError("Ticket not found")

    if existing_ticket.is_reserved():
        raise BadRequestError("Ticket is reserved")

    new_order = Order(
        user_id=request.current_user['id'], ticket=existing_ticket)
    new_order.save()

    publish_event(publish_channel, OrderCreatedEvent(
        data={
            "id": str(new_order.id),
            "user_id": request.current_user['id'],
            "expires_at": str(new_order.expires_at),
            "ticket": {
                "id": str(existing_ticket.id),
                "price": existing_ticket.price
            },
            "version": new_order.version
        }))
    publish_event(publish_channel, ExpirationStartCounterEvent(data={
        "id": str(new_order.id),
        "user_id": request.current_user['id'],
        "expires_at": str(new_order.expires_at),
        "ticket": {
            "id": str(existing_ticket.id),
            "price": existing_ticket.price
        },
        "version": new_order.version
    }))
    resp = new_order.response()
    return resp
示例#5
0
 def real_make_order(self):
     self.sock.send('add_orders'.encode())
     try:
         datetime.datetime.strptime(self.t_deadline_input.get(), '%d.%m.%Y')
     except ValueError:
         messagebox.showerror(message='Введена неправильная дата. Формат даты: ##.##.####')
         return
     order = Order(self.account,
           self.t_platform_input.get(),
           self.t_deadline_input.get(),
           self.t_topic_input.get(),
           self.t_description_input.get(1.0, END),
           self.is_promotion_enabled.get() == 0)
     self.sock.send(dumps(order))
     self.call_user_menu()
示例#6
0
def expiration_complete_callback(ch, method, props, body):
    body = json.loads(body)
    print("inside order expiration complete callback", flush=True)
    print(body, flush=True)
    existing_order = Order.objects(id=body['data']['order_id']).first()

    if not existing_order:
        raise Exception('Order not found')

    existing_order.modify(status=EventType.Order.CANCELLED)
    existing_order.save()

    publish_event(publish_channel,
                  OrderCancelledEvent(data=existing_order.response()))

    ch.basic_ack(delivery_tag=method.delivery_tag)
示例#7
0
def purchase():
    if request.method == 'POST':
        order = Order(event_id = request.form['event_id'], user_id=current_user.id)
        db.session.add(order)
        db.session.commit()
        event = Event.query.get(request.form['event_id'])
        for ticket in event.tickets():
            selected_ticket = request.form['ticket_id_{0}'.format(ticket.id)]
            selected_ticket_quantity = request.form['ticket_count_{0}'.format(ticket.id)]
            if selected_ticket and int(selected_ticket_quantity) > 0:
                numberrrr = int(request.form['ticket_count_{0}'.format(ticket.id)])
                for number in range(0, numberrrr):
                    order_item = OrderItem(order_id=order.id, ticket_id=ticket.id)
                    ticket.quantity -= 1
                    db.session.add(order_item)
                    db.session.commit()
                ticket.quantity -= numberrrr
    return redirect(url_for('user.orders'))
示例#8
0
def schedule():
    if request.method == 'POST':
        data = request.get_json()['order']
        check_serv = Service.query.filter_by(
            service_name=data['servicetype']).first()
        print(check_serv, 'service here')
        # addr = Location.query.filter_by(location_pickup = data['address']).first()
        # if not addr:
        address = Location(user_id=current_user.id,
                           location_pickup=data['address'])
        db.session.add(address)
        db.session.commit()
        order_items = Order(user_id=current_user.id,
                            service_id=check_serv.id,
                            dateandtime=data['dateandtime'],
                            location_id=address.id)
        db.session.add(order_items)
        db.session.commit()
        return jsonify({'success': 'success'})
示例#9
0
def delete_order(id_):
    existing_order = Order.objects(id=id_).first()

    if not existing_order:
        raise NotFoundError('Order not found')

    existing_order.status = EventType.Order.CANCELLED
    existing_order.save()

    publish_event(
        publish_channel,
        OrderCancelledEvent(
            data={
                "id": str(existing_order.id),
                "ticket": {
                    "id": str(existing_order.ticket.id),
                },
                "version": existing_order.version
            }))

    return {}, 204
示例#10
0
def purchase():
    if request.method == 'POST':
        event = Event.query.get(request.form['event_id'])
        order = Order(
            event_id = event.id, 
            user_id=current_user.id
            )
        db.session.add(order)
        db.session.commit()
        order_items = []
        for ticket in event.tickets():
            quantity = int(request.form[ticket.title])
            if quantity > 0:
                for _ in range(quantity):
                    order_item = OrderItem(
                        order_id=order.id, 
                        ticket_id=ticket.id
                        )
                    ticket.quantity -= 1
                    order_items.append(order_item)
        db.session.add_all(order_items)
        db.session.commit()
    return redirect(url_for('user.orders'))
示例#11
0
def get_orders():
    all_orders = Order.objects(user_id=request.current_user['id'])
    return jsonify([orders.response() for orders in all_orders])
示例#12
0
class Trip(object):
	def __init__(self, trip_request, cab_action, trip_registry, *args, **kwargs):
		self.__request = trip_request
		self.__cab_action = cab_action
		self.__order = None

		self.__trip_id = utils.get_id()
		self.__trip_start_time = None
		self.__trip_end_time = None
		self.__trip_duration = None
		self.__trip_status = trip_status.TRIP_DISPATCHED # Initial stage of the trip
		self.__trip_allocation_time = datetime.datetime.now()
		self.__trip_distance = 0.0 # Assumed to be in Kilometers

		self.__args = args
		self.__kwargs = kwargs

		trip_registry.register_trip(self)

	def get_trip_id(self):
		return self.__trip_id

	def start_trip(self):
		if self.__trip_status != trip_status.TRIP_DISPATCHED:
			return standard_response.get_standard_api_response(False, "Trip not requested / dispatched", ApplicationErrorCodes.REQUEST_NOT_FULFILLED)

		self.__trip_start_time = datetime.datetime.now()
		self.__trip_status = trip_status.TRIP_STARTED

		return standard_response.get_standard_api_response(True, "", ApplicationErrorCodes.SUCCESS, self.to_dict())

	def cancel_trip(self):
		if not self.__is_trip_cancellable():
			return standard_response.get_standard_api_response(False, "Trip not requested, not dispatched or already started", ApplicationErrorCodes.REQUEST_NOT_FULFILLED)

		self.__trip_status = trip_status.TRIP_CANCELLED
		self.__cab_action.deallocate_cab()

		return standard_response.get_standard_api_response(True, "", ApplicationErrorCodes.SUCCESS, self.to_dict())

	def __is_trip_cancellable(self):
		if self.__trip_status == trip_status.TRIP_DISPATCHED:
			return True

		return False

	def end_trip(self):
		if self.__trip_status != trip_status.TRIP_STARTED:
			return standard_response.get_standard_api_response(False, "Trip not started", ApplicationErrorCodes.REQUEST_NOT_FULFILLED)

		self.__trip_status = trip_status.TRIP_COMPLETED		
		self.__cab_action.deallocate_cab()
		self.__cab_action.update_cab_location(self.__request.get_trip_end_location())
		self.__trip_distance = utils.get_trip_distance(self.__request.get_trip_start_location(), self.__request.get_trip_end_location())
		self.__trip_duration = utils.get_trip_timing(self.__trip_distance)  # self.__trip_end_time - self.__trip_start_time
		self.__trip_end_time = self.__trip_start_time + datetime.timedelta(minutes = int(self.__trip_duration)) # datetime.now()
		self.__order = Order(self.__trip_id, self.__request.get_trip_customer(), self.__trip_distance, self.__trip_duration, self.__request.get_trip_preference().get_cab_color())

		return standard_response.get_standard_api_response(True, "", ApplicationErrorCodes.SUCCESS, self.to_dict())

	def generate_order_details(self):
		pass

	def to_dict(self):
		order_summary = {}

		if self.__order is not None:
			order_summary = self.__order.to_dict()

		return {"trip_request" : self.__request.to_dict(), "trip_id" : str(self.__trip_id), "trip_start_time" : str(self.__trip_start_time), "trip_end_time" : str(self.__trip_end_time), "trip_duration" : str(self.__trip_duration), "trip_status" : trip_status.get_trip_status(self.__trip_status), "trip_allocation_time: " : repr(self.__trip_allocation_time), "trip_distance" : str(self.__trip_distance), "cab_info" : self.__cab_action.get_cab_info(), "order_summary" : order_summary}

	def get_standard_trip_response(self):
		return standard_response.get_standard_api_response(True, "", ApplicationErrorCodes.SUCCESS, self.to_dict())