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