def main():
    bus = bootstrap.bootstrap()
    pubsub = r.pubsub(ignore_subscribe_messages=True)
    pubsub.subscribe('change_batch_quantity')

    for m in pubsub.listen():
        handle_change_batch_quantity(m, bus)
Example #2
0
def bootstrap_test_app():
    return bootstrap.bootstrap(
        start_orm=False,
        uow=FakeUnitOfWork(),
        notifications=FakeNotifications(),
        publish=lambda *args: None,
    )
Example #3
0
def main():
    logger.info("Redis pubsub starting")
    bus = bootstrap.bootstrap()
    pubsub = r.pubsub(ignore_subscribe_messages=True)
    pubsub.subscribe("change_batch_quantity")

    for m in pubsub.listen():
        handle_change_batch_quantity(m, bus)
def messagebus():
    bus = bootstrap.bootstrap(
        start_orm=False,
        uow=FakeUnitOfWork(),
        send_mail=lambda *args, **kwargs: None,
        publish=lambda *args, **kwargs: None,
    )
    return bus
def sqlite_bus(sqlite_session_factory):
    bus = bootstrap.bootstrap(
        start_orm=True,
        uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory),
        notifications=mock.Mock(),
        publish=lambda *args: None)
    yield bus
    clear_mappers()
def main():
    messagebus = bootstrap.bootstrap()
    pubsub = redis_client.pubsub(ignore_subscribe_messages=True)
    pubsub.subscribe("change_batch_quantity")

    for message in pubsub.listen():
        logger.debug(f"Received message: {message}")
        handle_change_batch_quantity(message, messagebus)
Example #7
0
def messagebus(session_factory):
    bus = bootstrap.bootstrap(
        start_orm=False,
        uow=unit_of_work.SqlAlchemyUnitOfWork(session_factory),
        send_mail=lambda *args, **kwargs: None,
        publish=lambda *args, **kwargs: None,
    )
    return bus
Example #8
0
def main():
    logger.debug('Redis pubsub starting')

    bus = bootstrap.bootstrap()
    pubsub = r.pubsub(ignore_subscribe_messages=True)
    pubsub.subscribe('change_batch_quantity')

    for m in pubsub.listen():
        handle_change_batch_quantity(m, bus)
Example #9
0
def sqlite_bus(sqlite_session_factory):
    bus = bootstrap.bootstrap(
        start_orm=True,
        uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory),
        send_mail=lambda *args: None,
        publish=lambda *args: None,
    )
    yield bus
    clear_mappers()
Example #10
0
def bus(sqlite_session_factory):
    bus = bootstrap.bootstrap(
        start_orm=True,
        uow=unit_of_work.SqlAlchemyUnitOfWork(sqlite_session_factory),
        notifications=notifications.EmailNotifications(),
        publish=lambda *args: None,
        update_readmodel=lambda *args: None)
    yield bus
    clear_mappers()
Example #11
0
 def test_sends_email_on_out_of_stock_error(self):
     fake_notifs = FakeNotifications()
     bus = bootstrap.bootstrap(
         start_orm=False,
         uow=FakeUnitOfWork(),
         notifications=fake_notifs,
         publish=lambda *args: None,
     )
     bus.handle(commands.CreateBatch("b1", "POPULAR-CURTAINS", 9, None))
     bus.handle(commands.Allocate("o1", "POPULAR-CURTAINS", 10))
     assert fake_notifs.sent['*****@*****.**'] == [
         f"Out of stock for POPULAR-CURTAINS",
     ]
Example #12
0
def main():
    logger.info('Redis pubsub starting')
    bus = bootstrap.bootstrap()
    pubsub = r.pubsub(ignore_subscribe_messages=True)
    pubsub.subscribe('change_batch_quantity')
from datetime import datetime
from flask import Flask, jsonify, request
from allocation.domain import commands
from allocation.service_layer.handlers import InvalidSku
from allocation import bootstrap, views

app = Flask(__name__)
bus = bootstrap.bootstrap()


<<<<<<< HEAD
@app.route("/add_batch", methods=['POST'])
def add_batch():
    eta = request.json['eta']
    if eta is not None:
        eta = datetime.fromisoformat(eta).date()
    cmd = commands.CreateBatch(
        request.json['ref'], request.json['sku'], request.json['qty'], eta,
    )
    bus.handle(cmd)
    return 'OK', 201


@app.route("/allocate", methods=['POST'])
def allocate_endpoint():
    try:
        cmd = commands.Allocate(
            request.json['orderid'], request.json['sku'], request.json['qty'],
        )
        bus.handle(cmd)
    except InvalidSku as e:
from datetime import datetime

from allocation import bootstrap, views
from allocation.domain import commands
from allocation.service_layer import handlers, unit_of_work
from flask import Flask, jsonify, request

app = Flask(__name__)
messagebus = bootstrap.bootstrap()


@app.route("/add_batch", methods=["POST"])
def add_batch_endpoint():
    eta = request.json.get("eta")

    if eta is not None:
        eta = datetime.fromisoformat(eta).date()

    message = commands.CreateBatch(
        request.json["reference"],
        request.json["sku"],
        request.json["qty"],
        eta=eta,
    )

    messagebus.handle(message)

    return {"message": "OK"}, 201


@app.route("/allocate", methods=["POST"])