Type hint for XML-ID strings
Opened this issue · 4 comments
I'm making this helper module
# -*- coding: utf-8 -*-
from ast import literal_eval
from odoo import api, models
from odoo.osv import expression
class CustomHelper(models.AbstractModel):
# Private attributes
_name = 'custom.helper'
_description = 'Custom Helper'
# Default methods
# Fields declaration
# Compute and search fields, in the same order of fields declaration
# Constraints and onchanges
# CRUD methods (and name_get, name_search, ...) overrides
# Action methods
# Business methods
@api.model
def str2dct(self, dct, key):
"""
:type key: str
:type dct: dict
"""
val = dct.get(key)
if isinstance(val, str):
val = literal_eval(val) # type: dict or list
dct[key] = val
@api.model
def list_recordset(self, rs, action):
"""
:type action: str
:type rs: models.BaseModel
"""
act_dct = rs.env["ir.actions.actions"]._for_xml_id(action) # type: dict
if len(rs) > 1:
self.str2dct(act_dct, 'domain')
domain = [act_dct.get('domain', []), [('id', 'in', rs.ids)]]
act_dct['domain'] = expression.AND(domain)
elif len(rs) == 1:
act_dct['res_id'] = rs.id
views = act_dct['views'] # type: list[tuple[int, str]]
for i, view_tpl in enumerate(views):
view_id, view_mode = view_tpl
if view_mode == 'form':
views.insert(0, views.pop(i))
break
else:
act_dct = {'type': 'ir.actions.act_window_close'}
self.str2dct(act_dct, 'context')
return act_dct
Could we add a new type hint when we want to specify that a parament/variable must have an Odoo XML-ID string?
self.env['custom.helper'].list_recordset(self, 'account.action_move_journal_line')
So if the XML-ID is not correctly typed, account.action_move_journal_linesssss
should be account.action_move_journal_line
we get a warning?
We already have:
odoo.model.xxx
for recordsetsodoo.values.xxx
for recordset dict values
Here are my ideas for external ids:
odoo.xid
for external idsodoo.xid.xxx
for external ids of modelxxx
Here are my ideas for external ids:
odoo.xid
for external idsodoo.xid.xxx
for external ids of modelxxx
Awesome, this feature will be great !!!
Could we have another one for field iterators? set, list, tuple, ...
Here are my ideas for external ids:
odoo.xid
for external idsodoo.xid.xxx
for external ids of modelxxx
Awesome, this feature will be great !!!
Could we have another one for field iterators?
set, list, tuple, ...
I also want to have a flexible type hints for field names. Here are my ideas:
odoo.fname.xxx
for field name of modelxxx
list[odoo.fname.xxx]
for list of field names- ...
The implementation will be more challenging, though.
Here are my ideas for external ids:
odoo.xid
for external idsodoo.xid.xxx
for external ids of modelxxx
Awesome, this feature will be great !!!
Could we have another one for field iterators?set, list, tuple, ...
I also want to have a flexible type hints for field names. Here are my ideas:
odoo.fname.xxx
for field name of modelxxx
list[odoo.fname.xxx]
for list of field names- ...
The implementation will be more challenging, though.
This will be great too. Can't wait to use it.