...
Gibt alle Inhalte von language und deren ids zurück.
Sektionen sollen beliebig weit verschachtelbar sein. Dies wird durch Rekussion erreicht. Zusätlich sollen beim löschen einer Sektion auch alle darunterliegenden Sektione gelöscht werden.
In name_get ist die Rekursion definiert, es wird die id und eine Liste der Untersektionen in umgekehrter Reihenfolge zurückgegeben.
Codeblock | ||||
---|---|---|---|---|
| ||||
@api.multi
def name_get(self):
def get_names(section):
res = []
while section:
res.append(section.name)
section = section.parent_id
return res
return [(section.id, " / ".join(reversed(get_names(section)))) for section in self]
def _name_get_fnc(self):
res = self.name_get()
names = []
for i in res:
names.append(i[1])
for id, name in itertools.izip(self, names):
id.complete_name = name
return res |
Um alle Untersektionen einer Sektion zu löschen muss die unlink Methode überschrieben werden.
Codeblock | ||||
---|---|---|---|---|
| ||||
@api.multi
def unlink(self):
for section in self:
section_pool = self.env['requirement.sections']
section_objs = section_pool.search([('parent_id', '=', section.id)])
for section_obj in section_objs:
section_obj.unlink()
return super(sections, self).unlink() |
Dies wird in der Tree view angezeigt.
requirement_sections_view.xml
Codeblock | ||||
---|---|---|---|---|
| ||||
<record id="requirement_section_tree_view" model="ir.ui.view">
<field name="name">line treeview</field>
<field name="model">requirement.sections</field>
<field name= "arch" type = "xml">
<tree string="lines" default_order="write_date desc">
<field name="complete_name"/>
<field name="write_date"/>
</tree>
</field>
</record> |
Das Ergbnis sieht dann so aus.