/
bienPublicKateRemote.py
112 lines (99 loc) · 4.05 KB
/
bienPublicKateRemote.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# -*- coding: utf-8 -*-
from client.cltremote import IRemote
from twisted.internet import defer
from client.cltgui.cltguidialogs import GuiRecapitulatif
import logging
import random
import bienPublicKateParams as pms
import bienPublicKateTexts as txt
from bienPublicKateGui import DDecision, GuiDesapprobation
logger = logging.getLogger("le2m.{}".format(__name__))
class RemoteBPK(IRemote):
def __init__(self, le2mclt):
IRemote.__init__(self, le2mclt)
self._payoffs = {}
self._histo_vars = []
def remote_configure(self, params, currentsequence):
logger.info(u"{} configure".format(self.le2mclt.uid))
self._currentsequence = currentsequence
for k, v in params.viewitems():
setattr(pms, k, v)
self._histo_vars = ["BPK_periode", "BPK_individuel", "BPK_collectif",
"BPK_collectif_groupe", "BPK_gain_individuel",
"BPK_gain_collectif", "BPK_periodpayoff",
"BPK_cumulativepayoff"]
def remote_new_period(self, periode):
logger.info(u"{} Period {}".format(self.le2mclt.uid, periode))
self.currentperiod = periode
if self.currentperiod == 1:
del self.histo[:]
self.histo.append(txt.get_histo_headers())
def remote_display_contribution(self):
"""
Affichage de l'ecran de décision.
"""
logger.info(u"Affichage de l'écran de décision")
if self._le2mclt.simulation:
renvoi = random.randint(pms.MIN, pms.MAX)
logger.info(u"Renvoi {}".format(renvoi))
return renvoi
else:
defered = defer.Deferred()
ecran_decision = DDecision(
defered, self.le2mclt.automatique,
self.le2mclt.screen, self.histo, self.currentperiod)
ecran_decision.show()
return defered
def remote_display_desapprobation(self, explication,
decisions_membres):
"""
Affiche l'écran de désapprobations
:param decisions_membres:
:return:
"""
logger.info("Ecran désapprobation")
logger.debug("decisions_membres: {}".format(decisions_membres))
if self.le2mclt.simulation:
renvoi = dict()
for k in decisions_membres.viewkeys():
renvoi[k] = random.randint(
0, pms.DESAPPROBATION_MAX)
logger.info(u"Renvoi: {}".format(renvoi))
return renvoi
else:
defered = defer.Deferred()
ecran_desapprobation = GuiDesapprobation(
defered, self.le2mclt.automatique,
self.le2mclt.screen, self.histo, self.currentperiod,
explication, decisions_membres)
ecran_desapprobation.show()
return defered
def remote_display_summary(self, period_content):
"""
:param texte_recap:
:param historique:
:param periode:
:return:
"""
logger.info(u'Récapitulatif')
self.histo.append([period_content.get(k) for k in self._histo_vars])
if self.le2mclt.simulation:
return 1
else:
defered = defer.Deferred()
txt_summary = txt.get_txt_summary(period_content)
ecran_recap = GuiRecapitulatif(
defered,
self.le2mclt.automatique, self.le2mclt.screen,
self.currentperiod, self.histo, txt_summary)
ecran_recap.show()
return defered
def remote_set_payoffs(self, in_euros, in_ecus=None):
logger.info(u"{} set_payoffs".format(self.le2mclt.uid))
self._payoffs[self._currentsequence] = {
"euros": in_euros, "ecus": in_ecus,
"txt": txt.get_txt_final(in_euros, in_ecus)}
def remote_display_payoffs_BPK(self, sequence):
logger.info(u"{} display_payoffs".format(self.le2mclt.uid))
return self.le2mclt.get_remote("base").remote_display_information(
self._payoffs[sequence]["txt"])