This question has been flagged
3 Replies
45165 Views

I have seen this eval="[(6, 0, [ref('test_security.base_security_access)])]" and eval="[(4, [ref('test_security.base_security_access')])]" in openerp 7.0 code, what is the use of 6,0 and 4 in security and is there any other combination like this, please explain me.

Avatar
Discard
Best Answer

From openerp/osv/fields.py

# Values: (0, 0, { fields }) create

# (1, ID, { fields }) update (write fields to ID)

# (2, ID) remove (calls unlink on ID, that will also delete the relationship because of the ondelete)

# (3, ID) unlink (delete the relationship between the two objects but does not delete ID)

# (4, ID) link (add a relationship)

# (5, ID) unlink all

# (6, ?, ids) set a list of links


Avatar
Discard
Best Answer

Yes there are more about this syntax. Please take as a reference a docstring located in the source code of the odoo orm write method for explanation

Avatar
Discard
Author

Thank you so much for helping me and I got this.

Best Answer

For a many2many field, a list of tuples is expected. Here is the list of tuple that are accepted, with the corresponding semantics ::

  • (0, 0, { values }) link to a new record that needs to be created with the given values dictionary 
  • (1, ID, { values }) update the linked record with id = ID (write *values* on it) 
  • (2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well) 
  • (3, ID) cut the link to the linked record with id = ID (delete the relationship between the two objects but does not delete the target object itself) 
  • (4, ID) link to existing record with id = ID (adds a relationship) 
  • (5) unlink all (like using (3,ID) for all linked records) 
  • (6, 0, [IDs]) replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)

Example: [(6, 0, [8, 5, 6, 4])] sets the many2many to ids [8, 5, 6, 4]


For a one2many field, a lits of tuples is expected. Here is the list of tuple that are accepted, with the corresponding semantics ::

                

  • (0, 0, { values }) link to a new record that needs to be created with the given values dictionary 
  • (1, ID, { values }) update the linked record with id = ID (write *values* on it) 
  • (2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)
Avatar
Discard