Contract election_house
Created On | NaN secs ago - Invalid Date UTC+0 |
Contract Code
1
I = importlib
2
__policies = Hash(contract='election_house', name='policies')
3
policy_interface = [I.Func('vote', args=('vk', 'obj')), I.Func('current_value')
4
]
5
6
7
@__export('election_house')
8
def register_policy(contract: str):
9
if __policies[contract] is None:
10
p = I.import_module(contract)
11
assert I.owner_of(p
12
) == ctx.this, 'Election house must control the policy contract!'
13
assert I.enforce_interface(p, policy_interface
14
), 'Policy contract does not follow the correct interface'
15
__policies[contract] = True
16
else:
17
raise Exception('Policy already registered')
18
19
20
@__export('election_house')
21
def current_value_for_policy(policy: str):
22
assert __policies[policy] is not None, f'Invalid policy: {policy}.'
23
p = I.import_module(policy)
24
return p.current_value()
25
26
27
@__export('election_house')
28
def vote(policy: str, value: Any):
29
assert __policies[policy] is not None, 'Invalid policy.'
30
p = I.import_module(policy)
31
p.vote(vk=ctx.caller, obj=value)
32