Пример #1
0
    def __init__(self, *args, **kwargs):
        super(OdooRPCTest, self).__init__(*args, **kwargs)

        self.odoo = OdooRPC(
            ODOO_TEST_URL,
            ODOO_TEST_DB,
            ODOO_TEST_USERNAME,
            ODOO_TEST_PASSWORD,
        )
Пример #2
0
def install_x_rent_house_view():
    tree = load_view("x_rent_house_tree")
    form = load_view("x_rent_house_form")

    odoo = OdooRPC(
        ODOO_URL, ODOO_DB,
        ODOO_USERNAME,
        ODOO_PASSWORD
    )

    x_rent_house_view_tree = View(
        name="x_rent_house_view_tree",
        type="tree",
        model="x_rent_house",
        arch_base=tree
    )

    x_rent_house_view_form = View(
        name="x_rent_house_view_form",
        type="form",
        model="x_rent_house",
        arch_base=form
    )

    crud_create_view(odoo, x_rent_house_view_tree)
    crud_create_view(odoo, x_rent_house_view_form)
Пример #3
0
def crud_search_telegram_user(odoo: OdooRPC,
                              domain: List = [],
                              offset: int = 0,
                              limit: int = 20) -> List[int]:
    result = odoo.search(MODEL_NAME, domain, offset, limit)

    return result
Пример #4
0
def crud_search_action_window(odoo: OdooRPC,
                              domain: List = [],
                              offset: int = 0,
                              limit: int = 20) -> List[int]:
    result = odoo.search(MODEL_NAME, domain, offset, limit)

    return result
Пример #5
0
def crud_get_rent_house(odoo: OdooRPC, domain: List = [], offset: int = 0, limit: int = 20) -> List[RentHouse]:
    rent_houses: List[RentHouse] = []

    result = odoo.search_read(MODEL_NAME, domain, [], offset, limit)

    for row in result:
        rent_houses.append(RentHouse(**row))

    return rent_houses
Пример #6
0
def crud_search_attachment(odoo: OdooRPC,
                           domain: List = [],
                           offset: int = 0,
                           limit: int = 20) -> List[int]:
    result = odoo.search(MODEL_NAME, domain, offset, limit)

    print(result)

    return result
Пример #7
0
def uninstall_x_app_release_view():
    odoo = OdooRPC(ODOO_URL, ODOO_DB, ODOO_USERNAME, ODOO_PASSWORD)

    tree_id = crud_search_view(odoo,
                               [["name", "=", "x_app_release_view_tree"]])[0]

    form_id = crud_search_view(odoo,
                               [["name", "=", "x_app_release_view_form"]])[0]

    crud_delete_view(odoo, tree_id)
    crud_delete_view(odoo, form_id)
Пример #8
0
def crud_get_app_release(odoo: OdooRPC,
                         domain: List = [],
                         offset: int = 0,
                         limit: int = 20) -> List[AppRelease]:
    app_releases: List[AppRelease] = []

    result = odoo.search_read(MODEL_NAME, domain, [], offset, limit)

    for row in result:
        app_releases.append(AppRelease(**row))

    return app_releases
Пример #9
0
def crud_get_models(odoo: OdooRPC,
                    domain: List = [],
                    offset: int = 0,
                    limit: int = 20) -> List[Model]:
    models: List[Model] = []

    result = odoo.search_read(MODEL_NAME, domain, [], offset, limit)

    for row in result:
        models.append(Model(**row))

    return models
Пример #10
0
def crud_get_view(odoo: OdooRPC,
                  domain: List = [],
                  offset: int = 0,
                  limit: int = 20) -> List[View]:
    views: List[View] = []

    result = odoo.search_read(MODEL_NAME, domain, [], offset, limit)

    for row in result:
        views.append(View(**row))

    return views
Пример #11
0
def crud_get_action_window(odoo: OdooRPC,
                           domain: List = [],
                           offset: int = 0,
                           limit: int = 20) -> List[ActionWindow]:
    action_window: List[ActionWindow] = []

    result = odoo.search_read(MODEL_NAME, domain, [], offset, limit)

    for row in result:
        action_window.append(ActionWindow(**row))

    return action_window
Пример #12
0
def crud_create_telegram_user(odoo: OdooRPC,
                              telegram_user: TelegramUser) -> int:
    user = crud_get_telegram_users(
        odoo, [["x_user_id", "=", telegram_user.x_user_id]], change_id=False)

    if len(user) > 0:
        result = crud_update_telegram_user(odoo, user[0].x_user_id,
                                           telegram_user)
    else:
        result = odoo.create(MODEL_NAME, telegram_user.dict())

    return result
Пример #13
0
def crud_get_menu(odoo: OdooRPC,
                  domain: List = [],
                  offset: int = 0,
                  limit: int = 20) -> List[Menu]:
    menu: List[Menu] = []

    result = odoo.search_read(MODEL_NAME, domain, [], offset, limit)

    for row in result:
        menu.append(Menu(**row))

    return menu
Пример #14
0
def crud_get_attachment(odoo: OdooRPC,
                        domain: List = [],
                        offset: int = 0,
                        limit: int = 20) -> List[Attachment]:
    attachments: List[Attachment] = []

    result = odoo.search_read(MODEL_NAME, domain,
                              ["name", "type", "datas", "url", "mimetype"],
                              offset, limit)

    for row in result:
        attachments.append(Attachment(**row))

    return attachments
Пример #15
0
def crud_get_telegram_users(odoo: OdooRPC,
                            domain: List = [],
                            offset: int = 0,
                            limit: int = 20,
                            change_id=True) -> List[TelegramUser]:
    telegram_users: List[TelegramUser] = []

    result = odoo.search_read(MODEL_NAME, domain, [], offset, limit)

    for row in result:
        if change_id:
            row["id"] = row["x_user_id"]

        telegram_users.append(TelegramUser(**row))

    return telegram_users
Пример #16
0
def crud_create_attachment(odoo: OdooRPC, attachment: Attachment) -> int:
    result = odoo.create(MODEL_NAME, attachment.dict())

    return result
Пример #17
0
import os
from dotenv import load_dotenv
from core.odoorpc import OdooRPC

load_dotenv()

# Testing
ODOO_TEST_URL = os.getenv("ODOO_TEST_URL")
ODOO_TEST_DB = os.getenv("ODOO_TEST_DB")
ODOO_TEST_USERNAME = os.getenv("ODOO_TEST_USERNAME")
ODOO_TEST_PASSWORD = os.getenv("ODOO_TEST_PASSWORD")

# Odoo server setup
ODOO_URL = os.getenv("ODOO_URL")
ODOO_DB = os.getenv("ODOO_DB")
ODOO_USERNAME = os.getenv("ODOO_USERNAME")
ODOO_PASSWORD = os.getenv("ODOO_PASSWORD")

# Odoo RPC Client
odoo = OdooRPC(
    ODOO_URL,
    ODOO_DB,
    ODOO_USERNAME,
    ODOO_PASSWORD,
)
Пример #18
0
def crud_create_view(odoo: OdooRPC, view: View) -> int:
    result = odoo.create(MODEL_NAME, view.dict())

    return result
Пример #19
0
def crud_create_model_access(odoo: OdooRPC, model_access: ModelAccess) -> int:
    result = odoo.create(MODEL_NAME, model_access.dict())

    return result
Пример #20
0
def crud_create_menu(odoo: OdooRPC, menu: Menu) -> int:
    result = odoo.create(MODEL_NAME, menu.dict())

    return result
Пример #21
0
def crud_create_app_release(odoo: OdooRPC, app_release: AppRelease) -> int:
    result = odoo.create(MODEL_NAME, app_release.dict())

    return result
Пример #22
0
def crud_create_model(odoo: OdooRPC, model: Model) -> int:
    result = odoo.create(MODEL_NAME, model.dict())

    return result
Пример #23
0
class OdooRPCTest(TestCase):
    def __init__(self, *args, **kwargs):
        super(OdooRPCTest, self).__init__(*args, **kwargs)

        self.odoo = OdooRPC(
            ODOO_TEST_URL,
            ODOO_TEST_DB,
            ODOO_TEST_USERNAME,
            ODOO_TEST_PASSWORD,
        )

    def test_version(self):

        result = self.odoo.version()

        self.assertEqual(type(result), Version)

    def test_authenticate(self):
        result = self.odoo.authenticate()

        self.assertEqual(type(result), int)

    def test_check_access_right(self):
        result = self.odoo.check_access_rights("res.partner", ["read"])

        self.assertEqual(result, True)

    def test_search(self):
        result = self.odoo.search("res.partner")

        self.assertEqual(type(result), list)

    def test_search_limit(self):
        result = self.odoo.search("res.partner", limit=1)

        self.assertEqual(len(result), 1)

    def test_search_domain(self):
        result = self.odoo.search("res.partner", domain=[
                                  ["is_company", "=", True]])

        self.assertEqual(len(result), 1)

    def test_search_read(self):
        result = self.odoo.search_read("res.partner")

        self.assertEqual(type(result), list)

    def test_search_read_limit(self):
        result = self.odoo.search_read("res.partner", limit=1)

        self.assertEqual(len(result), 1)

    def test_search_read_domain(self):
        result = self.odoo.search_read(
            "res.partner", domain=[["is_company", "=", True]])

        self.assertEqual(len(result), 1)

    def test_search_read_fields(self):
        result = self.odoo.search_read(
            "res.partner", fields=["name", "email"], limit=1)

        self.assertEqual(str(result[0].keys()),
                         "dict_keys(['id', 'name', 'email'])")

    def test_read(self):
        result = self.odoo.read("res.partner", [3], fields=["name", "email"])

        self.assertEqual(len(result), 1)
        self.assertEqual(str(result[0].keys()),
                         "dict_keys(['id', 'name', 'email'])")

    def test_fields_get(self):
        result = self.odoo.fields_get("res.partner")

        self.assertEqual(type(result), dict)

    def test_create_write_unlink(self):
        id = self.odoo.create("res.partner", {
            "name": "New Partner"
        })

        self.assertEqual(type(id), int)

        result = self.odoo.write("res.partner", id, {
            "name": "Newer Parner",
            "email": "*****@*****.**",
        })

        self.assertEqual(result, True)

        result_delete = self.odoo.unlink("res.partner", id)

        self.assertEqual(result_delete, True)
Пример #24
0
def crud_create_rent_house(odoo: OdooRPC, rent_house: RentHouse) -> int:
    result = odoo.create(MODEL_NAME, rent_house.dict())

    return result
Пример #25
0
def crud_create_action_window(odoo: OdooRPC,
                              action_window: ActionWindow) -> int:
    result = odoo.create(MODEL_NAME, action_window.dict())

    return result
Пример #26
0
def crud_delete_action_window(odoo: OdooRPC, id: int) -> bool:
    result = odoo.unlink(MODEL_NAME, id)

    return result
Пример #27
0
def crud_delete_menu(odoo: OdooRPC, id: int) -> bool:
    result = odoo.unlink(MODEL_NAME, id)

    return result
Пример #28
0
def crud_delete_telegram_user(odoo: OdooRPC, id: int) -> bool:
    result = odoo.unlink(MODEL_NAME, id)

    return result
Пример #29
0
def crud_update_telegram_user(odoo: OdooRPC, user_id: int,
                              telegram_user: TelegramUser) -> bool:
    result = odoo.write(MODEL_NAME, user_id, telegram_user.dict())

    return result