def create_cocktail_mary_post():
    user = Session.query(User).filter(User.username == 'Fat Larry').first()
    category = (Session.query(Category).filter(
        Category.name == 'Коктейли').one_or_none())
    receipt_text = '''Налить водку и томатный сок в охлаждённый высокий
        стакан. Добавить лимонный сок. После по вкусу насыпать перец и соль.
        Всё тщательно перемешать и украсить веточкой сельдерея, можно долькой
        лимона.
    '''
    receipt = Receipt(
        user_id=user.id,
        category_id=category.id,
        title='Коктейль Кровавая Мэри',
        text=receipt_text,
        is_published=True,
        category=category,
        picture='mary.jpg',
        picture_min='mary-small.jpg',
    )
    ingredients = [
        ('водка', 'охлаждённая', 75, 'мл'),
        ('томатный сок', '', 100, 'мл'),
    ]
    for item in ingredients:
        ingredient = Session.query(Ingredient).filter(
            Ingredient.name == item[0]).first()
        a = IngredientsAssociation(correction=item[1],
                                   quantity=item[2],
                                   measure=item[3])
        a.ingredient = ingredient
        receipt.ingredients.append(a)
    Session.flush()
    Session.add(receipt)
    Session.commit()
Example #2
0
def monitor_receipt_and_contract():
    """
    监听 kafka 交易数据,出现新数据时,从 web3 获取 receipt
    :return:
    """
    if not config.get('kafka', 'transaction_topic', fallback=None):
        logger_err.error(
            'config.ini 中没有 transaction_topic 参数,退出 monitor_receipt_and_contract 任务'
        )
        return
    elif not config.get('kafka', 'receipt_topic', fallback=None):
        logger_err.error(
            'config.ini 中没有 receipt_topic 参数,退出 monitor_receipt_and_contract 任务'
        )
        return
    elif not config.get('kafka', 'contract_topic', fallback=None):
        logger_err.error(
            'config.ini 中没有 contract_topic 参数,退出 monitor_receipt_and_contract 任务'
        )
        return
    consumer = kafka_consumer(config.get('kafka', 'transaction_topic'),
                              group_id='monitor_receipt')
    last_block_height = None
    tx_cnt = 0  # 已处理的交易数
    for msg in consumer:
        tx = msg.value

        current_block_height = tx["block_number"]
        if last_block_height != current_block_height:
            logger.info(f'区块 {last_block_height} 共处理交易 {tx_cnt} 笔')
            logger.info(f'开始处理区块高度 {current_block_height} 下各交易的 receipt')
            last_block_height = current_block_height
            tx_cnt = 1
        else:
            tx_cnt += 1

        try:
            receipt = w3.eth.getTransactionReceipt(tx['hash'])
        except TransactionNotFound:
            logger_err.error(
                f'在区块高度 {current_block_height} 中找不到交易 {tx["hash"]}')
            continue

        Receipt(data=receipt).save()
        if receipt.get('contractAddress'):
            logger.info(f'在区块高度为 {current_block_height} 的交易 {tx["hash"]} 中'
                        f'发现新创建合约 {receipt.get("contractAddress")}')
            Contract(data=receipt,
                     block_number=receipt.get('blockNumber')).save()
def create_omelet_post():
    user = (Session.query(User).filter(
        User.username == 'Fat Larry').one_or_none())
    category = (Session.query(Category).filter(
        Category.name == 'Завтраки').one_or_none())
    receipt_text = '''Нагрейте оливковое масло в маленькой сковороде на
        среднем огне. Добавьте лук и бекон, жарьте 2-3 минуты, постоянно
        помешивая компоненты. Взбейте два яйца, разбавьте небольшим
        количеством холодной воды. Приправьте специями, тщательно перемешайте.
        Постепенно выливайте яичную смесь на сковороду с луком и беконом.
        Жарьте яичницу с беконом на протяжении 3-4 минут, подавайте с
        французским багетом. Декорируйте листьями салата, пряными веточками
        душистых трав (укропом, петрушкой).
    '''
    receipt = Receipt(
        user_id=user.id,
        category_id=category.id,
        title='Омлет с беконом',
        text=receipt_text,
        is_published=True,
        category=category,
        picture='omelette.jpeg',
        picture_min='omelette-small.jpeg',
    )
    ingredients = [
        ('яйцо', 'куриное', 3, 'шт'),
        ('бекон', 'тонкий', 125, 'гр'),
        ('масло оливковое', '', 1, 'ст. ложка'),
        ('сыр', 'тёртый', 85, 'гр'),
        ('лук', 'красный', 1, 'шт'),
        ('соль', 'по вкусу', 1, 'щепотка'),
        ('перец', 'по вкусу', 1, 'щепотка'),
        ('специи', 'по вкусу', 1, 'щепотка'),
    ]
    for item in ingredients:
        ingredient = Session.query(Ingredient).filter(
            Ingredient.name == item[0]).first()
        a = IngredientsAssociation(correction=item[1],
                                   quantity=item[2],
                                   measure=item[3])
        a.ingredient = ingredient
        receipt.ingredients.append(a)
    Session.flush()
    Session.add(receipt)
    Session.commit()
def create_chicken_post():
    user = (Session.query(User).filter(
        User.username == 'Child of spices').first())
    category = (Session.query(Category).filter(
        Category.name == 'Вторые блюда').one_or_none())
    receipt_text = '''Голени посолить, поперчить и обжарить до румяной
        корочки. Уложить в форму, смазанную маслом. Помидоры и один сладкий
        перец нарезать кубиками, другой перец — средними полосками, лук —
        полукольцами, чеснок измельчить. Там же, где жарилась курица,
        обжарить лук, затем добавить помидоры и перец кубиком, готовить на
        большом огне 5 минут. Под конец добавить чеснок и листики 1 веточки
        розмарина (я добавляла сушёный), посолить, поперчить. Выложить соус
        на курицу. Сверху положить полоски перца, целые помидорки черри и 2
        веточки розмарина. Печь около 25 минут при 200 градусах.
    '''
    receipt = Receipt(
        user_id=user.id,
        category_id=category.id,
        title='Курица с овощами',
        text=receipt_text,
        is_published=True,
        category=category,
        picture='chicken.jpg',
        picture_min='chicken-small.jpg',
    )
    ingredients = [
        ('курица', '', 500, 'гр'),
        ('розмарин', 'по вкусу', 1, 'веточка'),
        ('сметана', '', 1, 'столовая ложка'),
        ('соль', 'по вкусу', 1, 'щепотка'),
        ('перец', 'по вкусу', 1, 'щепотка'),
    ]
    for item in ingredients:
        ingredient = Session.query(Ingredient).filter(
            Ingredient.name == item[0]).first()
        a = IngredientsAssociation(correction=item[1],
                                   quantity=item[2],
                                   measure=item[3])
        a.ingredient = ingredient
        receipt.ingredients.append(a)
    Session.flush()
    Session.flush()
    Session.add(receipt)
    Session.commit()
Example #5
0
def confirm_ticket(ticket_id, user_id, quantity, price):
    receipt = Receipt(user_id=user_id)
    db.session.add(receipt)
    db.session.commit()
    # db.session.close()
    # session = db.Session()
    # receipt_created = session.query(Receipt).filter(Receipt.user_id==user_id)
    receipt_detail = ReceiptDetail(receipt_id=receipt.id,
                                   ticket_id=ticket_id,
                                   quantity=quantity,
                                   price=price * quantity)
    db.session.add(receipt_detail)

    try:
        db.session.commit()
        return True
    except Exception as e:
        print(e)
        db.session.rollback()
        return False
def create_banana_cocktail_post():
    user = (Session.query(User).filter(
        User.username == 'Child of spices').first())
    category = (Session.query(Category).filter(
        Category.name == 'Коктейли').one_or_none())
    receipt_text = '''Бананы очистить, нарезать кусочками, шоколад разломить
        на несколько частей. В кастрюлю влить молоко, положить бананы и
        поставить на медленный огонь. Постоянно помешивая, довести почти до
        кипения. Как только шоколад расплавится, снять с огня. Блендером
        взбить полученную смесь до появления пены. Разлить по стаканам и
        посыпьте корицей.
    '''
    receipt = Receipt(
        user_id=user.id,
        category_id=category.id,
        title='Молочный коктейль с бананом и шоколадом',
        text=receipt_text,
        is_published=True,
        category=category,
        picture='banana.jpg',
        picture_min='banana-small.jpg',
    )
    ingredients = [
        ('молоко', '', 500, 'мл'),
        ('банан', 'свежий', 1, 'шт'),
        ('шоколад', 'молочный', 80, 'гр'),
        ('сахар', 'по вкусу', 2, 'столовые ложки'),
    ]
    for item in ingredients:
        ingredient = Session.query(Ingredient).filter(
            Ingredient.name == item[0]).first()
        a = IngredientsAssociation(correction=item[1],
                                   quantity=item[2],
                                   measure=item[3])
        a.ingredient = ingredient
        receipt.ingredients.append(a)
    Session.flush()
    Session.add(receipt)
    Session.commit()