Tintumon M
Tintumon M

Reputation: 1164

Explain Security in OpenERP 7.0 and What is the use of (6,0) and (4)?

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.

Upvotes: 2

Views: 1117

Answers (2)

Usman Maqbool
Usman Maqbool

Reputation: 3371

A full list of options is in the documentation for the osv class.

(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)

Upvotes: 1

Tintumon M
Tintumon M

Reputation: 1164

Finally I found the answer in ORM write method.

  • 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)
    

    Example: [(0, 0, {'field_name':field_value_record1, ...}), (0, 0, {'field_name':field_value_record2, ...})]

  • For a many2one field, simply use the ID of target record, which must already exist, or False to remove the link.

  • For a reference field, use a string with the model name, a comma, and the target object id (example: 'product.product, 5')

Upvotes: 2

Related Questions