Skip to content

Commit

Permalink
feat: added 'perm_write' and 'perm_call' fields to disable making cha…
Browse files Browse the repository at this point in the history
…nges to odoo
  • Loading branch information
RogueNAND committed Aug 21, 2020
1 parent 7cf7fa4 commit 6d56bf6
Showing 1 changed file with 24 additions and 6 deletions.
30 changes: 24 additions & 6 deletions odoo.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ def call(self, ids: IdsT, method: str, *args, **kwargs):

logger.debug(f"Call_Records ({self.model}:{ids}): {args} {kwargs}")

return self.env._exec(self.model, method, [ids] + list(args), kwargs)
if self.env._perm_call:
return self.env._exec(self.model, method, [ids] + list(args), kwargs)

def call_model(self, method: str, *args, **kwargs):
""" Calls a model method
Expand All @@ -85,7 +86,8 @@ def call_model(self, method: str, *args, **kwargs):

logger.debug(f"Call_Model ({self.model}): {args} {kwargs}")

return self.env._exec(self.model, method, args, kwargs)
if self.env._perm_call:
return self.env._exec(self.model, method, args, kwargs)

""" Read """

Expand Down Expand Up @@ -177,7 +179,8 @@ def create(self, fields: Dict[str, any]) -> int:

logger.info(f"Create ({self.model}): {fields}")

return self.env._exec(self.model, 'create', [fields])
if self.env._perm_write:
return self.env._exec(self.model, 'create', [fields])

def write(self, ids: IdsT, fields: Dict[str, any]) -> bool:
""" Updates existing records
Expand All @@ -192,7 +195,8 @@ def write(self, ids: IdsT, fields: Dict[str, any]) -> bool:

logger.info(f"Write ({self.model}): {ids} - {fields}")

return self.env._exec(self.model, 'write', [ids, fields])
if self.env._perm_write:
return self.env._exec(self.model, 'write', [ids, fields])

def delete(self, ids: IdsT) -> bool:
""" Deletes specified ids
Expand All @@ -207,7 +211,8 @@ def delete(self, ids: IdsT) -> bool:
logger.info(f"Unlink ({self.model}): {ids}")

try:
return self.env._exec(self.model, 'unlink', ids) or False
if self.env._perm_write:
return self.env._exec(self.model, 'unlink', ids) or False
# Return false if id doesn't exist
except xmlrpc.client.Fault as e:
# Record doesn't exist
Expand All @@ -224,7 +229,7 @@ def delete(self, ids: IdsT) -> bool:
class Odoo:
""" CRUD """

def __init__(self, database: str, username: str, password: str, url: str, port: int):
def __init__(self, database: str, username: str, password: str, url: str, port: int, perm_write=True, perm_call=True):
""" Create connection """

self.db = database
Expand All @@ -236,6 +241,19 @@ def __init__(self, database: str, username: str, password: str, url: str, port:
self.odoo_common = xmlrpc.client.ServerProxy(self.url_common)
self.odoo_models = xmlrpc.client.ServerProxy(self.url_models)

if perm_write:
logger.warning(f"Write permissions ENABLED for {database}")
else:
logger.warning(f"Write permissions DISABLED for {database}")

if perm_call:
logger.warning(f"Call permissions ENABLED for {database}")
else:
logger.warning(f"Call permissions DISABLED for {database}")

self._perm_write = perm_write
self._perm_call = perm_call

self._connect()

def _connect(self):
Expand Down

0 comments on commit 6d56bf6

Please sign in to comment.