Skip to content

Instantly share code, notes, and snippets.

View pelid's full-sized avatar

Evgeny Evseev pelid

View GitHub Profile

Cryptomus и статусы платежей

Платёжная система Cryptomus имеет особую логику, связанную со статусами платежей. Ниже описана логика нового Python бэкенда в зависимости от того, какой статус получен в вебхуке.

Документация по статусам платежей.

Статус paid

Платеж прошел успешно, и клиент заплатил ровно столько, сколько требовалось. Как обычно, фиксируем новый необработанный платёж, отгружаем клиенту API.

Пробема: События бывают разных типов с разной полезкой инфой по ним VS Хотим общую таблицу событий

Вариант 1. Сделать в таблице кучу колонок, чтобы хватило всем типам событий.

Каждому типу события -- свой набор колонок.

Все колонки будут опциональными, почти все -- пустыми.

Вариант 2. Отказаться от реляции, хранить вариативную часть данных в виде JSON вместо ForeignKey, GenericForeignKey

@pelid
pelid / readme.md
Created September 21, 2023 17:54
-

PUBLIC

@pelid
pelid / README.md
Last active March 26, 2020 11:12
Скрипт для копирования кода с GitHub
@pelid
pelid / README.md
Created December 23, 2019 12:42
Test simultaniously write to file from two scripts

Запустить в одной консоли:

python3 test_write.py A

Во второй консоли:

python3 test_write.py B
@pelid
pelid / main.py
Last active June 7, 2019 12:33
Пример использования модуля logging.
import test_b
import logging
logging.basicConfig(level=logging.DEBUG)
test_b.log_something()
@pelid
pelid / animation.py
Last active March 27, 2019 12:30
Асинхронная анимация
import curses
import asyncio
async def blink(canvas, row, column, symbol='*'):
'''Анимация мерцающей звезды.'''
while True:
canvas.addstr(row, column, symbol, curses.A_DIM)
await asyncio.sleep(0)
canvas.addstr(row, column, symbol)
@pelid
pelid / module-card.scss
Created March 11, 2019 18:32
Пример верстки
.module-card {
position: relative;
width: calc(50% - 15px);
padding-top: 36px;
padding-right: 36px;
padding-left: 36px;
padding-bottom: 36px;
background: #fff;
border-radius: 8px;
margin-bottom: 30px;
@pelid
pelid / README.md
Last active March 28, 2019 15:21
Комбинация функций

Комбинация функций

Функция — это маленькая программа. Она выполняет свою работу и возвращает результат: число, строку или другой формат данных, все зависит от функции.

При этом функция может принимать входные данные — аргументы. Благодаря этому работает комбинация двух функций print и capwords:

from string import capwords

print(capwords('петр иванович')) # выведет Петр Иванович
@pelid
pelid / README.md
Last active February 21, 2019 16:15
Объекты и атрибуты

Объекты и атрибуты

Часто можно услышать, что в Python всё является объектом, и это правда. Но что такое объект? И из чего складывается это "всё"?

Когда переменных в коде становится много, их объединяют в группы — объекты. Добраться до переменной, прикрепленной к объекту можно через точку .. Выглядит это похоже на вызов метода. Для сравнения, вызовем метод __len__ и вычислим длину строки:

print('строка это тоже объект'.__len__())  # выведет 22