30 |
30 |
31 def _change_state(session, x, oldstate, newstate): |
31 def _change_state(session, x, oldstate, newstate): |
32 nocheck = session.transaction_data.setdefault('skip-security', set()) |
32 nocheck = session.transaction_data.setdefault('skip-security', set()) |
33 nocheck.add((x, 'in_state', oldstate)) |
33 nocheck.add((x, 'in_state', oldstate)) |
34 nocheck.add((x, 'in_state', newstate)) |
34 nocheck.add((x, 'in_state', newstate)) |
35 # delete previous state first unless in_state isn't stored in the system |
35 # delete previous state first |
36 # source |
36 session.delete_relation(x, 'in_state', oldstate) |
37 fromsource = session.describe(x)[1] |
|
38 if fromsource == 'system' or \ |
|
39 not session.repo.sources_by_uri[fromsource].support_relation('in_state'): |
|
40 session.delete_relation(x, 'in_state', oldstate) |
|
41 session.add_relation(x, 'in_state', newstate) |
37 session.add_relation(x, 'in_state', newstate) |
42 |
38 |
43 |
39 |
44 # operations ################################################################### |
40 # operations ################################################################### |
45 |
41 |