Skip to main content

ORM for Bitrix24 REST API

Project description

PyPI - Downloads

ORM-система для работы с Bitrix24

Работа библиотеки находится в стадии разработки. (рекомендуется только для локальной разработки)

Библиотека для удобной работы с API Bitrix24 в объектно-ориентированном стиле.

Особенности

  • ORM-подобный доступ к данным через точечную нотацию
  • Удобные методы для создания, обновления и поиска сущностей
  • Поддержка связанных объектов и отношений между ними
  • Поддержка пользовательских полей
  • Работа с товарными позициями сделок
  • Асинхронный подход для лучшей производительности

Установка

uv add orm-bitrix24

Запуск тестов

cd tests
uv run pytest

Использование

Инициализация

from fast_bitrix24 import Bitrix
from entity import Deal

# Инициализация Bitrix клиента
bitrix = Bitrix('https://your-domain.bitrix24.ru/rest/1/your_webhook_token/')

# Инициализация менеджера сущностей
Deal.get_manager(bitrix)

Получение сделок

# Получение всех сделок
deals = await Deal.objects.get_all()

# Фильтрация сделок
deals = await Deal.objects.filter(type_id="SALE", stage_id="NEW")

# Получение сделки по ID
deal = await Deal.get_by_id(bitrix, "123")

Работа со сделкой

# Чтение полей
print(deal.title)
print(deal.opportunity)
print(deal.created_at)  # Автоматически преобразуется в datetime объект

# Чтение связанных объектов (необходимо использовать await)
company = await deal.company
if company:
    print(company.name)

# Изменение значений
deal.title = "Новое название"
deal.opportunity = 15000
deal.tags.append("новый_тег")
await deal.save()

# Создание примечаний
note = await deal.notes.create(text="Примечание к сделке")

Создание новой сделки

# Создание через менеджер объектов
deal = await Deal.objects.create(
    title="Новая сделка",
    opportunity=10000,
    currency_id="RUB",
    stage_id="NEW"
)

# Альтернативный способ создания
deal = Deal(bitrix)
deal.title = "Новая сделка"
deal.opportunity = 10000
deal.currency_id = "RUB"
deal.stage_id = "NEW"
await deal.save()

Работа с товарами сделки

# Получение товаров сделки
products = await deal.products.get_all()
print(f"В сделке {len(products)} товаров")

# Добавление товара
product = deal.products.add(
    product_id=123,  # ID товара из каталога Bitrix24
    price=1000,
    quantity=2,
    discount_rate=10  # 10% скидка
)

# Изменение параметров товара
product.quantity = 3
product.discount_sum = 500  # Скидка фиксированной суммой

# Сохранение товаров сделки
await deal.save()

Пользовательские поля

from entity import Deal, CustomField, TextCustomField, SelectCustomField

# Добавление пользовательских полей напрямую в класс Deal
Deal.add_custom_field('utm_source', CustomField("UTM_SOURCE"))
Deal.add_custom_field('delivery_address', TextCustomField("UF_CRM_DELIVERY_ADDRESS"))
Deal.add_custom_field('delivery_type', SelectCustomField("UF_CRM_DELIVERY_TYPE"))

# Инициализация менеджера
Deal.get_manager(bitrix)

# Использование пользовательских полей
deals = await Deal.objects.get_all()
deal = deals[0]
deal.delivery_address = "ул. Примерная, д. 1, кв. 2"
await deal.save()

Работа со связанными объектами

Важно! Связанные объекты (company, contact и др.) возвращают корутины, которые нужно ожидать с помощью await:

# Получение связанной компании
company = await deal.company
if company:
    print(f"Компания: {company.title}")

# Получение связанного контакта
contact = await deal.contact
if contact:
    print(f"Контакт: {contact.full_name}")

# Изменение связанного объекта произойдет только после сохранения сделки
deal.company_id = 5  # Смена компании
await deal.save()

Перемещение лида в сделку

для переноса лида в сделку необходимо создать компанию и контакт, если они не существуют. И привязать их к лиду

from orm_bitrix24.entity import _Lead, Company
# Инициализация клиента Bitrix24
webhook = os.environ.get("WEBHOOK")
if not webhook:
    print("Необходимо установить переменную окружения WEBHOOK")
    return

bitrix = Bitrix(webhook)

# Инициализация менеджеров сущностей
Lead.get_manager(bitrix)
leads = await Lead.objects.get_all()
print(f"Найдено лидов: {len(leads)}")
lead = leads[0]

deal=await lead.move_to_deal(isCreateCompany=True, isCreateContact=False)
print(deal)

Работа с активностями

на данный момент поддерживаются только email-активности создает дело письмо и отправляет его контакту из сделки (если email несколько то только на первый)

email_activity = await deal.activity.mail(
    subject="Коммерческое предложение из ORM просто ответьте",
    message="Добрый день! Высылаем коммерческое предложение через новую ORM-систему.",
    contact_id=deal.contact_id,
    from_email="почта@из.битрикса")

Требования

  • Python 3.12+
  • fast-bitrix24

Лицензия

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orm_bitrix24-0.1.2.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orm_bitrix24-0.1.2-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file orm_bitrix24-0.1.2.tar.gz.

File metadata

  • Download URL: orm_bitrix24-0.1.2.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for orm_bitrix24-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8bf6522cbd29afd6a16b73b78a2f04c654f91405581ad034976b433eca17bc85
MD5 ca7d9274cce99994f58ffce742c890fe
BLAKE2b-256 bc92260e7316d68fe93b536d5bc89f4cad7c84575254d52b4a30e7243262c9f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for orm_bitrix24-0.1.2.tar.gz:

Publisher: python-publish.yml on darkClaw921/orm_bitrix24

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file orm_bitrix24-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: orm_bitrix24-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for orm_bitrix24-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0f6a8e604e15db84c6cfaa19b64da092f1608f08d01aa2299f3baad37f3fc049
MD5 aab71104be906c0e5391c951048503de
BLAKE2b-256 28e80b9067f045ee72d6d779de1633c6ce78245099e704980a94af34d5e370a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for orm_bitrix24-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on darkClaw921/orm_bitrix24

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page