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()
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()
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()