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 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)
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
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
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
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
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)
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
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
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
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
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
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
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
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
def crud_create_attachment(odoo: OdooRPC, attachment: Attachment) -> int: result = odoo.create(MODEL_NAME, attachment.dict()) return result
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, )
def crud_create_view(odoo: OdooRPC, view: View) -> int: result = odoo.create(MODEL_NAME, view.dict()) return result
def crud_create_model_access(odoo: OdooRPC, model_access: ModelAccess) -> int: result = odoo.create(MODEL_NAME, model_access.dict()) return result
def crud_create_menu(odoo: OdooRPC, menu: Menu) -> int: result = odoo.create(MODEL_NAME, menu.dict()) return result
def crud_create_app_release(odoo: OdooRPC, app_release: AppRelease) -> int: result = odoo.create(MODEL_NAME, app_release.dict()) return result
def crud_create_model(odoo: OdooRPC, model: Model) -> int: result = odoo.create(MODEL_NAME, model.dict()) return result
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)
def crud_create_rent_house(odoo: OdooRPC, rent_house: RentHouse) -> int: result = odoo.create(MODEL_NAME, rent_house.dict()) return result
def crud_create_action_window(odoo: OdooRPC, action_window: ActionWindow) -> int: result = odoo.create(MODEL_NAME, action_window.dict()) return result
def crud_delete_action_window(odoo: OdooRPC, id: int) -> bool: result = odoo.unlink(MODEL_NAME, id) return result
def crud_delete_menu(odoo: OdooRPC, id: int) -> bool: result = odoo.unlink(MODEL_NAME, id) return result
def crud_delete_telegram_user(odoo: OdooRPC, id: int) -> bool: result = odoo.unlink(MODEL_NAME, id) return result
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