Is an asynchronous implementation for AlfaCRM API
Project description
Alfacrm
Асинхронный Python‑клиент для AlfaCRM REST API v2.
Библиотека построена на aiohttp и pydantic v2, предоставляет удобные менеджеры сущностей (list/get/save) и асинхронную пагинацию.
Требования
- Python >= 3.12
- Зависимости устанавливаются автоматически:
aiohttp,pydantic
Установка
pip install alfacrm
Быстрый старт
import asyncio
import os
from alfacrm import AlfaClient
ALFACRM_API_KEY = os.getenv("ALFACRM_API_KEY")
ALFACRM_EMAIL = os.getenv("ALFACRM_EMAIL")
ALFACRM_BASE_URL = os.getenv("ALFACRM_BASE_URL") # например: "demo.s20.online" или полный URL
ALFACRM_DEFAULT_BRANCH_ID = 1
async def main():
client = AlfaClient(
hostname=ALFACRM_BASE_URL,
email=ALFACRM_EMAIL,
api_key=ALFACRM_API_KEY,
branch_id=ALFACRM_DEFAULT_BRANCH_ID,
)
try:
# Проверка авторизации (опционально)
if not await client.check_auth():
print("Auth error")
return
# Пример: получить урок с id=1
lesson = await client.lesson.get(1)
print(lesson)
# Пример: изменить и сохранить филиалы
branches = await client.branch.list(page=0, count=20)
for b in branches:
b.name = f"{b.name} - Edited"
await client.branch.save(b)
finally:
await client.close()
if __name__ == "__main__":
# На Windows может понадобиться политика цикла событий
# import asyncio; asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
asyncio.run(main())
Клиент и аутентификация
- Параметры клиента:
hostname,email,api_key,branch_id. - Токен авторизации обновляется автоматически через
AuthManager. - Метод
check_auth()возвращаетTrue/Falseбез исключений. - Закрывайте соединение вызовом
await client.close().
Операции с сущностями
Каждая сущность доступна через менеджер, например client.customer, client.branch и т.д.
- list:
items = await client.customer.list(page=0, count=100, **filters) - get:
customer = await client.customer.get(123) - save:
await client.customer.save(model)— создаёт или обновляет по наличиюidв модели
Модели — это Pydantic‑классы (v2). Метод serialize() формирует JSON‑совместимый payload; поля дат/времени преобразуются автоматически.
Пагинация
Асинхронный итератор страниц:
async for page in client.customer.paginator(page_size=100, is_study=True):
for customer in page.items:
print(customer.id, customer.name)
Где page.items — элементы текущей страницы, page.total — всего записей, page.count — элементов на странице.
Кастомные модели (пользовательские поля)
Вы можете расширять встроенные модели и подменять их в менеджерах.
from alfacrm import AlfaClient, managers
from alfacrm.entities import Customer
class CustomCustomer(Customer):
custom_field: int | None = None
class CustomAlfaClient(AlfaClient):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Подменяем модель в соответствующем менеджере
self.customer = managers.Customer(
api_client=self.api_client,
entity_class=CustomCustomer,
)
Доступные сущности
- Branch, Location, Customer, StudyStatus, Subject
- LeadStatus, LeadSource, LeadReject, Communication, Log
- Group, Lesson, LessonType, RegularLesson, Room, Task
- Tariff, CustomerTariff, Discount
- Pay, PayAccount, PayItem, PayItemCategory
- CGI
Доступ к ним через одноимённые менеджеры client.<name>.
Обработка ошибок
Исключения (все наследуются от ApiException):
- BadRequest (400), Unauthorized (401), Forbidden (403), NotFound (404), MethodNotAllowed (405)
Полезно оборачивать вызовы в try/except при интеграции и логировать str(e).
Примечания
hostnameможно указывать как короткое имя (demo) или полный хост/URL — клиент приведёт к*.s20.onlineавтоматически.- Параметр
branch_idвключается в путьv2api/{branch_id}/...(глобальные методы вызываются без него).
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alfacrm-0.1.3.tar.gz.
File metadata
- Download URL: alfacrm-0.1.3.tar.gz
- Upload date:
- Size: 46.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78b9d8f8f3c0ffdaed1510a7a1046830e43b598d384ddfdfd5db59fbe99e84c3
|
|
| MD5 |
37324aae346fe812a3fc38423617fc17
|
|
| BLAKE2b-256 |
f7679404543d9dbe09b19cd2f833087d37832b79baefe6e63465ab697fb3a607
|
File details
Details for the file alfacrm-0.1.3-py3-none-any.whl.
File metadata
- Download URL: alfacrm-0.1.3-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b2d7aaf5cdcb96afcb6d4c5eb6b7207e5bc877d4ebbcf08264d97b71fc368ab
|
|
| MD5 |
a78c4e94bd7cd6f60de45c162740ff74
|
|
| BLAKE2b-256 |
4505a8aa7c5a57613eea28182fda28ebe9d69ce73050d61ad3003b7607d8d6a1
|