Catalog PyPI
Back to packageRELEASE DETAILS

0.3.2

PyPI

aioalfacrm

Is an asynchronous implementation for AlfaCRM API

aioalfacrmalfacrmapiasynciowrapper
Published23 Nov 2021
Direct dependencies1
Transitive dependenciesNot calculated

README

Version 0.3.2 documentation

AIOAlfacrm

PyPi Package Version Supported python versions MIT License Downloads Codecov Tests

aioalfacrm - is an asynchronous implementation for the AlfaCRM API

Package is in development

Installation using pip

$ pip install aioalfacrm

Example:

import asyncio
from aioalfacrm import AlfaClient
from aioalfacrm.entities import Location

HOSTNAME = 'demo.s20.online'
EMAIL = 'api-email@email.example'
API_KEY = 'user-api-token'
BRANCH_ID = 1


async def main():
    alfa_client = AlfaClient(
        hostname=HOSTNAME,
        email=EMAIL,
        api_key=API_KEY,
        branch_id=BRANCH_ID,
    )
    try:
        # Check auth (Optionaly)
        if not await alfa_client.check_auth():
            print('Authentification error')
            return
        # Get branches
        branches = await alfa_client.branch.list(page=0, count=20)

        # Edit branch
        for branch in branches:
            branch.name = f'{branch.name} - Edited'
            # Save branch
            await alfa_client.branch.save(branch)

        # Create location
        location = Location(
            branch_id=1,
            is_active=True,
            name='New location',
        )
        await alfa_client.location.save(location)

    finally:
        # Close session
        await alfa_client.close()


asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())  # For Windows
asyncio.run(main())


Paginator

# Get all entities
for page in alfa_client. < object >.get_paginator():
    objects = page.items

Custom fields

To work with custom fields, do the following

from aioalfacrm import entities
from aioalfacrm import fields
from typing import Optional


# Extend existing model
class CustomCustomer(entities.Customer):
    custom_field: Optional[int] = fields.Integer()

    # For IDE init support
    def __init__(
            self,
            custom_field: Optional[int] = None,
            *args,
            **kwargs,
    ):
        super(CustomCustomer, self).__init__(custom_field=custom_field, *args, **kwargs)


# Create custom alfa client with new model
from aioalfacrm import AlfaClient
from aioalfacrm import managers


class CustomAlfaClient(AlfaClient):

    def __init__(self, *args, **kwargs):
        super(CustomAlfaClient, self).__init__(*args, **kwargs)

        self.customer = managers.Customer(
            api_client=self.api_client,
            entity_class=CustomCustomer,
        )


# Create custom alfa client
import asyncio

HOSTNAME = 'demo.s20.online'
EMAIL = 'api-email@email.example'
API_KEY = 'user-api-token'
BRANCH_ID = 1


async def main():
    alfa_client = CustomAlfaClient(hostname=HOSTNAME, email=EMAIL, api_key=API_KEY, branch_id=BRANCH_ID)
    try:
        customers = await alfa_client.customer.list()
        for customer in customers:
            print(customer.custom_field)
    finally:
        await alfa_client.close()


asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())  # For Windows
asyncio.run(main())

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 1

Native requirements
1 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
aiohttp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.7,<4.0",
  "evaluation": "NOT_EVALUATED"
}
aiohttp (>=3.8.0,<4.0.0)runtime

Distribution files

2 collected
aioalfacrm-0.3.2-py3-none-any.whl

bdist_wheel · 37.12 KB · Python py3

Source file
aioalfacrm-0.3.2.tar.gz

sdist · 41.73 KB · Python source

Source file

Repository

PENDING
stas12312/aioalfacrm

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 11:36 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:3bed7d387fcc482ae7d1b33d85bc62e7d4c2f0e64c9129f672725a04cfe4541d

Other collected versions

View all collected versions →