Beispiel #1
0
    def __init__(self, le2mserv):
        super(GuiServeur, self).__init__()

        self._le2mserv = le2mserv
        self._questcomp = None

        self.ui = servguimain.Ui_EcranServeur()
        self.ui.setupUi(self)
        self._create_menus()

        self.ui.label_le2m.setText(le2mtrans(u"LE2M\nExperimental Economics Software of Montpellier"))

        # tabs
        self.ui.onglets.setTabText(self.ui.onglets.indexOf(self.ui.tabInfos), le2mtrans(u"Informations"))
        self.ui.onglets.setTabText(self.ui.onglets.indexOf(self.ui.tabClients), le2mtrans(u"Remotes"))
        self.ui.onglets.setTabText(self.ui.onglets.indexOf(self.ui.tabExperience), le2mtrans(u"Experiment"))

        # picture on the first tab ---------------------------------------------
        try:
            img_labo_pix = QtGui.QPixmap(params.getp("LABLOGO"))
            self.ui.label_logo_laboratoire.setPixmap(img_labo_pix)
        except IOError:
            logger.warning(u"Error while loading LABLOGO picture")
            self.ui.label_logo_laboratoire.setText(le2mtrans(u"Here the logo of the lab"))
        try:
            img_leem_pix = QtGui.QPixmap(params.getp("LABPICTURE"))
            self.ui.label_image_centre.setPixmap(img_leem_pix)
        except IOError:
            logger.warning(u"Error while loading LABPICTURE picture")
            self.ui.label_image_centre.setText(le2mtrans(u"Here the main picture"))

        # icons for the waiting mode -------------------------------------------
        self._icon_rouge = QtGui.QIcon(os.path.join(params.getp("IMGDIR"), "red.png"))
        self._icon_vert = QtGui.QIcon(os.path.join(params.getp("IMGDIR"), "green.png"))
        self.ui.label_attente.setText(le2mtrans(u"Decisions"))
        self._players_wait_mode = list()

        # server infos ---------------------------------------------------------
        self.ui.label_infos_serveur.setText(
            u"OS: {} {} | Python version: {} | Hostname: {} | IP: {}".format(
                platform.uname()[0],
                platform.uname()[2],
                sys.version.split()[0],
                self._le2mserv.hostname,
                self._le2mserv.ip,
            )
        )

        # table on the second tab with connected remotes -----------------------
        # handle automatic and simulation modes as well as remotes' deconnection
        self.ui.label_connectedremotes.setText(le2mtrans(u"Connected remotes: 0"))
        self.tableJoueurs = TableModelJoueurs()
        self.ui.tv_clients_connectes.setModel(self.tableJoueurs)
        self.ui.tv_clients_connectes.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
        self.ui.tv_clients_connectes.horizontalHeader().setClickable(True)
        self.ui.tv_clients_connectes.horizontalHeader().sectionClicked[int].connect(self.tableJoueurs.inverse)
        self.ui.onglets.setCurrentIndex(0)

        self.setWindowTitle(le2mtrans(u"LE2M"))
Beispiel #2
0
    def __init__(self, parent=None):
        super(GuiPartLoad, self).__init__(parent)

        self.ui = servguipartsload.Ui_Dialog()
        self.ui.setupUi(self)

        # parts list
        self.ui.label_explication.setText(
            le2mtrans(u"Please select in the list below the parts you want "
                      u"to load"))
        self.ui.listView.setToolTip(
            QtCore.QString(le2mtrans(u"Select the part(s) you want to load")))

        # database directory
        self.ui.label_basepath.setText(
            le2mtrans(u"Directory in which to store the database"))
        self.ui.label_basepath1.setText(le2mtrans(u"Directory path (check)"))
        self.ui.label_basepath2.setText("...")

        # database name
        self.ui.label_basename.setText(
            le2mtrans(u"Database name (without the sqlite extension"))
        self.ui.lineEdit_nom_base.setText(u"data")
        self.ui.label_nom_base_extension.setText(u".sqlite")

        # test session
        self.ui.label_test.setText(le2mtrans(u"Test session"))
        self.ui.checkBox_test.setToolTip(
            le2mtrans(u"Uncheck if this is not a test session"))
        self.ui.checkBox_test.setChecked(True)

        self.ui.pushButton_base.setText(le2mtrans(u"Browse"))

        # connections
        self.ui.pushButton_base.clicked.connect(self._set_directorydatabase)
        self.ui.buttonBox.accepted.connect(self._accept)
        self.ui.buttonBox.rejected.connect(self.reject)

        # list of parts in the PARTSDIR directory
        partslist = [
            f for f in os.listdir(params.getp("PARTSDIR"))
            if os.path.isdir(os.path.join(params.getp("PARTSDIR"), f))
            and not f.startswith(".")
        ]
        partslist.sort()

        self._model = QtGui.QStandardItemModel()
        for p in partslist:
            item = QtGui.QStandardItem(p)
            item.setCheckState(QtCore.Qt.Unchecked)
            item.setCheckable(True)
            item.setEditable(False)
            self._model.appendRow(item)
        self._model.itemChanged.connect(self._onitemchanged)
        self.ui.listView.setModel(self._model)

        self.setWindowTitle(le2mtrans(u"List of parts that can be loaded"))
        self.adjustSize()
Beispiel #3
0
    def __init__(self, parent=None):
        super(GuiPartLoad, self).__init__(parent)

        self.ui = servguipartsload.Ui_Dialog()
        self.ui.setupUi(self)

        # parts list
        self.ui.label_explication.setText(
            le2mtrans(u"Please select in the list below the parts you want "
                      u"to load"))
        self.ui.listView.setToolTip(QtCore.QString(
            le2mtrans(u"Select the part(s) you want to load")))

        # database directory
        self.ui.label_basepath.setText(
            le2mtrans(u"Directory in which to store the database"))
        self.ui.label_basepath1.setText(le2mtrans(u"Directory path (check)"))
        self.ui.label_basepath2.setText("...")

        # database name
        self.ui.label_basename.setText(
            le2mtrans(u"Database name (without the sqlite extension"))
        self.ui.lineEdit_nom_base.setText(u"data")
        self.ui.label_nom_base_extension.setText(u".sqlite")

        # test session
        self.ui.label_test.setText(le2mtrans(u"Test session"))
        self.ui.checkBox_test.setToolTip(
            le2mtrans(u"Uncheck if this is not a test session"))
        self.ui.checkBox_test.setChecked(True)

        self.ui.pushButton_base.setText(le2mtrans(u"Browse"))

        # connections
        self.ui.pushButton_base.clicked.connect(self._set_directorydatabase)
        self.ui.buttonBox.accepted.connect(self._accept)
        self.ui.buttonBox.rejected.connect(self.reject)

        # list of parts in the PARTSDIR directory
        partslist = [f for f in os.listdir(params.getp("PARTSDIR")) if
                     os.path.isdir(os.path.join(params.getp("PARTSDIR"), f)) and
                     not f.startswith(".")]
        partslist.sort()

        self._model = QtGui.QStandardItemModel()
        for p in partslist:
            item = QtGui.QStandardItem(p)
            item.setCheckState(QtCore.Qt.Unchecked)
            item.setCheckable(True)
            item.setEditable(False)
            self._model.appendRow(item)
        self._model.itemChanged.connect(self._onitemchanged)
        self.ui.listView.setModel(self._model)

        self.setWindowTitle(le2mtrans(u"List of parts that can be loaded"))
        self.adjustSize()
Beispiel #4
0
 def start(self):
     """
     Démarrage du client, il se connecte au serveur, et récupère une
     instance de la partie visible sur le réseau du serveur (fonctions qui 
     commencent par remote)/
     Ensuite se connecte au serveur.
     """
     logger.info(u"{} Connection to le2m server".format(self))
     factory = pb.PBClientFactory()
     reactor.connectTCP(params.getp("SERVIP"), params.getp("SERVPORT"),
                        factory)
     defered = factory.getRootObject()
     defered.addCallback(self._connect)
     reactor.run()
Beispiel #5
0
 def start(self):
     """
     Démarrage du client, il se connecte au serveur, et récupère une
     instance de la partie visible sur le réseau du serveur (fonctions qui 
     commencent par remote)/
     Ensuite se connecte au serveur.
     """
     logger.info(u"{} Connection to le2m server".format(self))
     factory = pb.PBClientFactory()
     reactor.connectTCP(params.getp("SERVIP"), params.getp("SERVPORT"),
                        factory)
     defered = factory.getRootObject()
     defered.addCallback(self._connect)
     reactor.run()
Beispiel #6
0
def install():
    global le2mtrans
    try:
        le2mtrans = gettext.translation(
            "le2m", localedir, languages=[params.getp("LANG")]).ugettext
    except IOError:
        le2mtrans = gettext.translation("le2m", localedir).ugettext
Beispiel #7
0
    def __init__(self, **kwargs):

        # network infos
        self._port_ecoute = kwargs["port"]
        self._hostname = socket.gethostname()
        self._ip = socket.gethostbyname(self._hostname)
        logger.info("Hostname: {}".format(self._hostname))
        logger.info("IP: {}".format(self._ip))
        
        # création de la session
        self._heure_debut = strftime("%H:%M:%S")
        self._nom_session = strftime('%Y%m%d%H%M')
        logger.info("Session name: {}".format(self._nom_session))
        
        # les gestionnaires
        self.gestionnaire_graphique = GestionnaireGraphique(self)
        self.gestionnaire_base = GestionnaireBase(self)
        self.gestionnaire_joueurs = GestionnaireJoueurs(self)
        self.gestionnaire_groupes = GestionnaireGroupes(self)
        self.gestionnaire_experience = GestionnaireExperience(self)

        # we connect some slot now, after instanciating the other gestionnaires
        self.gestionnaire_graphique.screen.connect_slots()
        self.gestionnaire_graphique.screen.show()
        
        # if option -e in the command line
        if kwargs["parts"]:
            expeinfos = Experiment(
                kwargs["parts"],
                kwargs["dirbase"] or os.path.join(
                    params.getp("PARTSDIR"), kwargs["parts"][0]),
                kwargs["namebase"], kwargs["test"])
            self.gestionnaire_experience.load_experiment(expeinfos)
Beispiel #8
0
 def _display_help(self):
     """
     Display a dialog with some help on le2m
     """
     help_file = os.path.join(params.getp("HTMLDIR"), "le2m_aide.html")
     webscreen = DWebview(help_file, title=le2mtrans(u"Help"), parent=self)
     webscreen.show()
Beispiel #9
0
 def _display_help(self):
     """
     Display a dialog with some help on le2m
     """
     help_file = os.path.join(params.getp("HTMLDIR"), "le2m_aide.html")
     webscreen = DWebview(help_file, title=le2mtrans(u"Help"), parent=self)
     webscreen.show()
Beispiel #10
0
def install():
    global le2mtrans
    try:
        le2mtrans = gettext.translation("le2m",
                                        localedir,
                                        languages=[params.getp("LANG")
                                                   ]).ugettext
    except IOError:
        le2mtrans = gettext.translation("le2m", localedir).ugettext
Beispiel #11
0
 def _display_about(self):
     """
     Display a dialog with some infos about the authors of le2m
     """
     fichier_auteurs = os.path.join(
         params.getp("HTMLDIR"), "le2m_auteurs.html")
     screen = GuiInformation(
         parent=self, titre=le2mtrans(u"Developers"), size=(450, 180),
         html=True, text=utiltools.get_contenu_fichier(fichier_auteurs))
     screen.show()
Beispiel #12
0
 def _onitemchanged(self, item):
     """
     This is for setting a dir to the database
     We use the item just checked
     If the item is just unchecked then search for a checked one
     If no item we set ...
     """
     if item.checkState() == QtCore.Qt.Checked:
         part = str(item.text())
         self.ui.label_basepath2.setText(
             os.path.join(params.getp("PARTSDIR"), part))
     elif item.checkState() == QtCore.Qt.Unchecked:
         self.ui.label_basepath2.setText("...")
         i = 0
         while self._model.item(i):
             if self._model.item(i).checkState() == QtCore.Qt.Checked:
                 part = str(self._model.item(i).text())
                 self.ui.label_basepath2.setText(
                     os.path.join(params.getp("PARTSDIR"), part))
                 break
             i += 1
Beispiel #13
0
 def _onitemchanged(self, item):
     """
     This is for setting a dir to the database
     We use the item just checked
     If the item is just unchecked then search for a checked one
     If no item we set ...
     """
     if item.checkState() == QtCore.Qt.Checked:
         part = str(item.text())
         self.ui.label_basepath2.setText(
             os.path.join(params.getp("PARTSDIR"), part))
     elif item.checkState() == QtCore.Qt.Unchecked:
         self.ui.label_basepath2.setText("...")
         i = 0
         while self._model.item(i):
             if self._model.item(i).checkState() == QtCore.Qt.Checked:
                 part = str(self._model.item(i).text())
                 self.ui.label_basepath2.setText(
                     os.path.join(params.getp("PARTSDIR"), part))
                 break
             i += 1
Beispiel #14
0
 def _display_about(self):
     """
     Display a dialog with some infos about the authors of le2m
     """
     fichier_auteurs = os.path.join(params.getp("HTMLDIR"),
                                    "le2m_auteurs.html")
     screen = GuiInformation(
         parent=self,
         titre=le2mtrans(u"Developers"),
         size=(450, 180),
         html=True,
         text=utiltools.get_contenu_fichier(fichier_auteurs))
     screen.show()
Beispiel #15
0
 def _set_directorydatabase(self):
     """
     Permet de choisir le dossier dans lequel sera sauvegardée la base
     de données sqlite
     :return:
     """
     dirbase = str(QtGui.QFileDialog.getExistingDirectory(
         self,
         le2mtrans(u"Select the directory in which to store the database."),
         params.getp("PARTSDIR"))
     )
     if not dirbase:
         return
     else:
         self._databasepath = dirbase
         self.ui.label_basepath2.setText(dirbase)
Beispiel #16
0
 def _set_directorydatabase(self):
     """
     Permet de choisir le dossier dans lequel sera sauvegardée la base
     de données sqlite
     :return:
     """
     dirbase = str(
         QtGui.QFileDialog.getExistingDirectory(
             self,
             le2mtrans(
                 u"Select the directory in which to store the database."),
             params.getp("PARTSDIR")))
     if not dirbase:
         return
     else:
         self._databasepath = dirbase
         self.ui.label_basepath2.setText(dirbase)
Beispiel #17
0
    def __init__(self, defered, automatique, parent):
        super(GuiAccueil, self).__init__(parent)

        # variables
        self._defered = defered
        self._automatique = automatique

        # creation gui
        self.ui = cltguiwelc.Ui_Dialog()
        self.ui.setupUi(self)

        # centre écran avec image labo
        welcfont = self.ui.label_welcome.font()
        welcfont.setPointSize(20)
        welcfont.setBold(True)
        self.ui.label_welcome.setText(u"<font color='blue'>{}</font>".format(
            textes.ACCUEIL_label_welcome))
        try:
            img_labo_pix = QtGui.QPixmap(params.getp("WELCOMEPICTURE"))
            self.ui.label_image_accueil.setPixmap(img_labo_pix)
        except IOError:
            self.ui.label_image_accueil.setText(
                textes.ACCUEIL_label_image_accueil)

        self.ui.label_instructions.setText(
            le2mtrans(u"Please read the instructions that stand beside the "
                      u"computer. You are asked to click on the button below "
                      u"when you have finished."))

        # bouton
        self.ui.pushButton_valider.setText(le2mtrans(u"Instructions read"))
        self.ui.pushButton_valider.clicked.connect(self._accept)
        
        self.setWindowTitle(textes.ACCUEIL_titre)
        self.setFixedSize(900, 575)
    
        if self._automatique: 
            self._timer = QtCore.QTimer()
            self._timer.timeout.connect(self._accept)
            self._timer.start(7000)
Beispiel #18
0
    def __init__(self, defered, automatique, parent):
        super(GuiAccueil, self).__init__(parent)

        # variables
        self._defered = defered
        self._automatique = automatique

        # creation gui
        self.ui = cltguiwelc.Ui_Dialog()
        self.ui.setupUi(self)

        # centre écran avec image labo
        welcfont = self.ui.label_welcome.font()
        welcfont.setPointSize(20)
        welcfont.setBold(True)
        self.ui.label_welcome.setText(u"<font color='blue'>{}</font>".format(
            textes.ACCUEIL_label_welcome))
        try:
            img_labo_pix = QtGui.QPixmap(params.getp("WELCOMEPICTURE"))
            self.ui.label_image_accueil.setPixmap(img_labo_pix)
        except IOError:
            self.ui.label_image_accueil.setText(
                textes.ACCUEIL_label_image_accueil)

        self.ui.label_instructions.setText(
            le2mtrans(u"Please read the instructions that stand beside the "
                      u"computer. You are asked to click on the button below "
                      u"when you have finished."))

        # bouton
        self.ui.pushButton_valider.setText(le2mtrans(u"Instructions read"))
        self.ui.pushButton_valider.clicked.connect(self._accept)

        self.setWindowTitle(textes.ACCUEIL_titre)
        self.setFixedSize(900, 575)

        if self._automatique:
            self._timer = QtCore.QTimer()
            self._timer.timeout.connect(self._accept)
            self._timer.start(7000)
# -*- coding: utf-8 -*-
"""
Ce module contient les textes des écrans
"""
__author__ = "Dimitri DUBOIS"

import os
import logging
import configuration.configparam as params
from util.utiltools import get_pluriel
import PublicGoodLocalGlobalParams as pms
import gettext

logger = logging.getLogger("le2m")
localedir = os.path.join(params.getp("PARTSDIR"), "PublicGoodLocalGlobal",
                         "locale")
try:
    trans_PGLG = gettext.translation("PublicGoodLocalGlobal",
                                     localedir,
                                     languages=[params.getp("LANG")]).ugettext
except IOError:
    logger.critical(u"Translation file not found")
    trans_PGLG = lambda x: x  # if there is an error, no translation


def get_histo_head():
    return [
        trans_PGLG(u"Period"),
        trans_PGLG(u"Individual\naccount"),
        trans_PGLG(u"Local\naccount"),
        trans_PGLG(u"Global\naccount"),
Beispiel #20
0
# -*- coding: utf-8 -*-
"""
Ce module contient les textes des écrans
"""
__author__ = "Dimitri DUBOIS"

import os
import configuration.configparam as params
from collections import namedtuple
from util.utiltools import get_pluriel
import PublicGoodGameParams as pms
import gettext

localedir = os.path.join(params.getp("PARTSDIR"), "PublicGoodGame", "locale")
trans_PGG = gettext.translation("PublicGoodGame",
                                localedir,
                                languages=[params.getp("LANG")]).ugettext

TITLE_MSG = namedtuple("TITLE_MSG", "titre message")


def get_histo_head():
    return [
        trans_PGG(u"Period"),
        trans_PGG(u"Individual\naccount"),
        trans_PGG(u"Public\naccount"),
        trans_PGG(u"Public\naccount\ngroup"),
        trans_PGG(u"Period\npayoff"),
        trans_PGG(u"Cumulative\npayoff")
    ]
Beispiel #21
0
# -*- coding: utf-8 -*-
"""
Ce module contient les textes des écrans
"""
__author__ = "Dimitri DUBOIS"

import os
from collections import OrderedDict
import configuration.configparam as params
import gettext
localedir = os.path.join(params.getp("PARTSDIR"), "Dictator", "locale")
trans_DIC = gettext.translation(
    "Dictator", localedir, languages=[params.getp("LANG")], fallback=True).ugettext
from collections import namedtuple
from util.utiltools import get_pluriel
from parts.Dictator import DictatorParams as pms
import logging

logger = logging.getLogger("le2m")
TITLE_MSG = namedtuple("TITLE_MSG", "titre message")


# HISTO ========================================================================
histo_build = {}
def get_histo_build(role):
    global histo_build
    if not histo_build.get(role):
        hb = OrderedDict()
        if role == pms.PLAYER_A:
            hb["DIC_decision"] = trans_DIC(u"Decision")
        elif role == pms.PLAYER_B:
# -*- coding: utf-8 -*-

from util.utiltools import get_pluriel
import voteMajoriteParams as pms
import os
import configuration.configparam as params
import gettext
import logging


logger = logging.getLogger("le2m")
localedir = os.path.join(params.getp("PARTSDIR"), "voteMajorite", "locale")
trans_VM = gettext.translation(
  "voteMajorite", localedir, languages=[params.getp("LANG")]).ugettext


VOTES = {
    pms.IN_FAVOR: trans_VM("In favor"),
    pms.AGAINST: trans_VM("Against")
}


def get_vote(code_or_name):
    logger.debug(u"get_vote with arg {}".format(code_or_name))
    if type(code_or_name) is int:
        return VOTES.get(code_or_name, None)
    elif type(code_or_name) is str:
        for k, v in VOTES.viewitems():
            if v.lower() == code_or_name.lower():
                return k
    return None
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import MarketRiskInsuranceParams as pms
# from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
try:
    localedir = os.path.join(params.getp("PARTSDIR"), "MarketRiskInsurance",
                             "locale")
    trans_MRI = gettext.translation("MarketRiskInsurance",
                                    localedir,
                                    languages=[params.getp("LANG")]).ugettext
except (AttributeError, IOError):
    logger.critical(u"Translation file not found")
    trans_MRI = lambda x: x  # if there is an error, no translation


def get_histo_vars():
    return [
        "MRI_period", "MRI_endowment_triangle", "MRI_endowment_star",
        "MRI_triangle_number_of_purchase", "MRI_triangle_sum_of_purchase",
        "MRI_triangle_number_of_sell", "MRI_triangle_sum_of_sell",
        "MRI_star_number_of_purchase", "MRI_star_sum_of_purchase",
Beispiel #24
0
# -*- coding: utf-8 -*-
__author__ = "Dimitri DUBOIS"

from util.utili18n import le2mtrans
from util.utiltools import get_pluriel
from configuration import configparam as params

PERIODE_label = lambda periode: le2mtrans(u"Period {p}").format(p=periode)

# ECRAN ACCUEIL
ACCUEIL_label_welcome = le2mtrans(u"Welcome to {welctext}").format(
    welctext=params.getp("WELCOMETEXT"))
ACCUEIL_label_image_accueil = le2mtrans(u"Here the welcome picture")
ACCUEIL_titre = le2mtrans(u"Welcome to the LEEM")
ACCUEIL_bouton = le2mtrans(u"Instructions read")

# QUESTIONNAIRE_FINAL
QUESTFINAL_explication = \
    le2mtrans(u"Please fill in the questionnaire below.\nThis questionnaire "
              u"is anonymous, so please answer with sincerity.")


def get_payoff_text(pay_euros, pay_ecus=None):
    if pay_ecus is not None:
        txt = le2mtrans(u"You've earned {} which corresponds to {}.").format(
            get_pluriel(pay_ecus, u"ecu"), get_pluriel(pay_euros, u"euro"))
    else:
        txt = le2mtrans(u"You've earned {}.".format(
            get_pluriel(pay_euros, u"euro")))
    return txt
# -*- coding: utf-8 -*-

from util.utili18n import le2mtrans
from util.utiltools import get_pluriel
import PublicGoodGameSolidarityParams as pms
import os
import configuration.configparam as params
import gettext


localedir = os.path.join(
    params.getp("PARTSDIR"), "PublicGoodGameSolidarity", "locale")
trans_PGGS = gettext.translation(
  "PublicGoodGameSolidarity", localedir, languages=[params.getp("LANG")]).ugettext


VOTES = {
    pms.IN_FAVOR: trans_PGGS(u"In favor of"),
    pms.AGAINST: trans_PGGS(u"Against")
}


POLITICS = {
    0: u"Extrême gauche",
    1: u"Gauche",
    2: u"Centre",
    3: u"Droite",
    4: u"Extrême droite"
}

Beispiel #26
0
    def __init__(self, le2mserv):
        super(GuiServeur, self).__init__()

        self._le2mserv = le2mserv
        self._questcomp = None

        self.ui = servguimain.Ui_EcranServeur()
        self.ui.setupUi(self)
        self._create_menus()

        self.ui.label_le2m.setText(
            le2mtrans(u"LE2M\nExperimental Economics Software of Montpellier"))

        # tabs
        self.ui.onglets.setTabText(self.ui.onglets.indexOf(self.ui.tabInfos),
                                   le2mtrans(u"Informations"))
        self.ui.onglets.setTabText(self.ui.onglets.indexOf(self.ui.tabClients),
                                   le2mtrans(u"Remotes"))
        self.ui.onglets.setTabText(
            self.ui.onglets.indexOf(self.ui.tabExperience),
            le2mtrans(u"Experiment"))

        # picture on the first tab ---------------------------------------------
        try:
            img_labo_pix = QtGui.QPixmap(params.getp("LABLOGO"))
            self.ui.label_logo_laboratoire.setPixmap(img_labo_pix)
        except IOError:
            logger.warning(u"Error while loading LABLOGO picture")
            self.ui.label_logo_laboratoire.setText(
                le2mtrans(u"Here the logo of the lab"))
        try:
            img_leem_pix = QtGui.QPixmap(params.getp("LABPICTURE"))
            self.ui.label_image_centre.setPixmap(img_leem_pix)
        except IOError:
            logger.warning(u"Error while loading LABPICTURE picture")
            self.ui.label_image_centre.setText(
                le2mtrans(u"Here the main picture"))

        # icons for the waiting mode -------------------------------------------
        self._icon_rouge = QtGui.QIcon(
            os.path.join(params.getp("IMGDIR"), "red.png"))
        self._icon_vert = QtGui.QIcon(
            os.path.join(params.getp("IMGDIR"), "green.png"))
        self.ui.label_attente.setText(le2mtrans(u"Decisions"))
        self._players_wait_mode = list()

        # server infos ---------------------------------------------------------
        self.ui.label_infos_serveur.setText(
            u"OS: {} {} | Python version: {} | Hostname: {} | IP: {}".format(
                platform.uname()[0],
                platform.uname()[2],
                sys.version.split()[0], self._le2mserv.hostname,
                self._le2mserv.ip))

        # table on the second tab with connected remotes -----------------------
        # handle automatic and simulation modes as well as remotes' deconnection
        self.ui.label_connectedremotes.setText(
            le2mtrans(u"Connected remotes: 0"))
        self.tableJoueurs = TableModelJoueurs()
        self.ui.tv_clients_connectes.setModel(self.tableJoueurs)
        self.ui.tv_clients_connectes.horizontalHeader().\
            setResizeMode(QtGui.QHeaderView.Stretch)
        self.ui.tv_clients_connectes.horizontalHeader().setClickable(True)
        self.ui.tv_clients_connectes.horizontalHeader().sectionClicked[int]. \
            connect(self.tableJoueurs.inverse)
        self.ui.onglets.setCurrentIndex(0)

        self.setWindowTitle(le2mtrans(u"LE2M"))
Beispiel #27
0
# -*- coding: utf-8 -*-

import os
import configuration.configparam as params
from configuration.configconst import PILE
from collections import namedtuple
from util.utiltools import get_pluriel
import GneezyPotterParams as pms
import gettext


localedir = os.path.join(params.getp("PARTSDIR"), "GneezyPotter", "locale")
trans_GP = gettext.translation(
    "GneezyPotter", localedir, languages=[params.getp("LANG")]).ugettext

TITLE_MSG = namedtuple("TITLE_MSG", "titre message")


def get_histo_header():
    return [trans_GP(u"Investment\nin the risky\noption"),
            trans_GP(u"Result of\nthe random\ndraw"),
            trans_GP(u"Payoff")]




def get_text_explanation():
    txt = trans_GP(u"You have an endowment of {}. You can invest amount you want in the "
        u"risky option").format(get_pluriel(pms.DOTATION, pms.MONNAIE))
    return txt
Beispiel #28
0
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import murielle_jeu_params as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
try:
    localedir = os.path.join(params.getp("PARTSDIR"), "murielle_jeu", "locale")
    trans_GA = gettext.translation("murielle_jeu",
                                   localedir,
                                   languages=[params.getp("LANG")]).ugettext
except (AttributeError, IOError):
    logger.critical(u"Translation file not found")
    trans_GA = lambda x: x  # if there is an error, no translation

# ==============================================================================
# EXPLANATIONS
# ==============================================================================

INITIAL_EXTRACTION = trans_GA(u"Please choose an initial extraction level")

EXTRACTION = trans_GA(u"Please choose an extraction level")
Beispiel #29
0
# -*- coding: utf-8 -*-
__author__ = "Dimitri DUBOIS"

import os
import gettext

import configuration.configparam as params

localedir = os.path.join(params.getp("APPDIR"), "locale")
le2mtrans = None


def install():
    global le2mtrans
    try:
        le2mtrans = gettext.translation(
            "le2m", localedir, languages=[params.getp("LANG")]).ugettext
    except IOError:
        le2mtrans = gettext.translation("le2m", localedir).ugettext

install()
Beispiel #30
0
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import EXPERIENCE_NOMParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
localedir = os.path.join(params.getp("PARTSDIR"), "EXPERIENCE_NOM", "locale")
try:
    trans_EXPERIENCE_NOM_COURT = gettext.translation(
      "EXPERIENCE_NOM", localedir, languages=[params.getp("LANG")]).ugettext
except IOError:
    logger.critical(u"Translation file not found")
    trans_EXPERIENCE_NOM_COURT = lambda x: x  # if there is an error, no translation


def get_histo_vars():
    return ["EXPERIENCE_NOM_COURT_period", "EXPERIENCE_NOM_COURT_decision",
            "EXPERIENCE_NOM_COURT_periodpayoff",
            "EXPERIENCE_NOM_COURT_cumulativepayoff"]


def get_histo_head():
    return [le2mtrans(u"Period"), le2mtrans(u"Decision"),
Beispiel #31
0
def get_final_text(final_payoff):
    txt = le2mtrans(u"Your payoff for the experiment is equal to ") + \
        u" {}".format(get_pluriel(final_payoff, params.getp("CURRENCY")))
    return txt
Beispiel #32
0
def main():
    parser = argparse.ArgumentParser()

    # application language: by default the system language
    parser.add_argument("-l",
                        "--lang",
                        action="store",
                        default=params.getp("LANG"),
                        help=i18n.le2mtrans(u"Language of the application"))

    # automatic mode: with GUI and random decisions
    parser.add_argument(
        "-a",
        "--automatique",
        action="store_true",
        default=False,
        help=i18n.le2mtrans(u"Run the application in the automatic mode."))

    # simulation mode: random decisions without GUI
    parser.add_argument(
        "-s",
        "--simulation",
        action="store_true",
        default=False,
        help=i18n.le2mtrans(u"Run the application in the simulation mode"))

    # server ip
    parser.add_argument("-i",
                        "--ip",
                        action="store",
                        default=params.getp("SERVIP"),
                        help=i18n.le2mtrans(u"IP adress of the server"))

    # server port
    parser.add_argument("-p",
                        "--port",
                        action="store",
                        type=int,
                        default=params.getp("SERVPORT"),
                        help=i18n.le2mtrans(u"Server port"))

    # check the options ========================================================
    args = parser.parse_args()
    options = vars(args)
    params.setp("LANG", args.lang)
    i18n.install()
    params.setp("SERVIP", args.ip)
    params.setp("SERVPORT", args.port)

    # LOGGER  ------------------------------------------------------------------
    logger = logging.getLogger("le2m")
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter(
        params.getp("LOGGING_FORMATTER"),
        datefmt=params.getp("LOGGING_FORMATTER_DATE"))
    # file handler
    fichier_log = logging.FileHandler(
        os.path.join(params.getp("REMOTELOGDIR"), 'le2m.log'))
    fichier_log.setLevel(logging.INFO)
    fichier_log.setFormatter(formatter)
    logger.addHandler(fichier_log)
    # console handler
    console_log = logging.StreamHandler()
    console_log.setLevel(logging.DEBUG)
    console_log.setFormatter(formatter)
    logger.addHandler(console_log)

    # first log
    logger.info(30 * "~")
    logger.info(u"Logger LE2M created")
    logger.info("Command ligne options: {}".format(options))

    # start remote -------------------------------------------------------------
    from client import clt  # after appdir and le2mtrans

    client = clt.Client(args.automatique, args.simulation)
    client.start()
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import identiteConflitsParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
localedir = os.path.join(params.getp("PARTSDIR"), "identiteConflits", "locale")
try:
    trans_IC = gettext.translation(
      "identiteConflits", localedir, languages=[params.getp("LANG")]).ugettext
except IOError:
    logger.critical(u"Translation file not found")
    trans_IC = lambda x: x  # if there is an error, no translation


COM = 0
DIFF = 1


def get_txt_identity(identity):
    if identity == pms.ID1:
        return u"jaune"
    else:
Beispiel #34
0
def main():
    parser = argparse.ArgumentParser()

    # application language: by default the system language
    parser.add_argument(
        "-l", "--lang", action="store", default=params.getp("LANG"), help=i18n.le2mtrans(u"Language of the application")
    )

    # automatic mode: with GUI and random decisions
    parser.add_argument(
        "-a",
        "--automatique",
        action="store_true",
        default=False,
        help=i18n.le2mtrans(u"Run the application in the automatic mode."),
    )

    # simulation mode: random decisions without GUI
    parser.add_argument(
        "-s",
        "--simulation",
        action="store_true",
        default=False,
        help=i18n.le2mtrans(u"Run the application in the simulation mode"),
    )

    # server ip
    parser.add_argument(
        "-i", "--ip", action="store", default=params.getp("SERVIP"), help=i18n.le2mtrans(u"IP adress of the server")
    )

    # server port
    parser.add_argument(
        "-p", "--port", action="store", type=int, default=params.getp("SERVPORT"), help=i18n.le2mtrans(u"Server port")
    )

    # check the options ========================================================
    args = parser.parse_args()
    options = vars(args)
    params.setp("LANG", args.lang)
    i18n.install()
    params.setp("SERVIP", args.ip)
    params.setp("SERVPORT", args.port)

    # LOGGER  ------------------------------------------------------------------
    logger = logging.getLogger("le2m")
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter(params.getp("LOGGING_FORMATTER"), datefmt=params.getp("LOGGING_FORMATTER_DATE"))
    # file handler
    fichier_log = logging.FileHandler(os.path.join(params.getp("REMOTELOGDIR"), "le2m.log"))
    fichier_log.setLevel(logging.INFO)
    fichier_log.setFormatter(formatter)
    logger.addHandler(fichier_log)
    # console handler
    console_log = logging.StreamHandler()
    console_log.setLevel(logging.DEBUG)
    console_log.setFormatter(formatter)
    logger.addHandler(console_log)

    # first log
    logger.info(30 * "~")
    logger.info(u"Logger LE2M created")
    logger.info("Command ligne options: {}".format(options))

    # start remote -------------------------------------------------------------
    from client import clt  # after appdir and le2mtrans

    client = clt.Client(args.automatique, args.simulation)
    client.start()
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import controlOptimalParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
try:
    localedir = os.path.join(params.getp("PARTSDIR"), "controlOptimal",
                             "locale")
    trans_CO = gettext.translation("controlOptimal",
                                   localedir,
                                   languages=[params.getp("LANG")]).ugettext
except (AttributeError, IOError):
    logger.critical(u"Translation file not found")
    trans_CO = lambda x: x  # if there is an error, no translation

# ==============================================================================
# EXPLANATIONS
# ==============================================================================

INITIAL_EXTRACTION = trans_CO(u"Please choose an initial extraction level")

EXTRACTION = trans_CO(u"Please choose an extraction level")
Beispiel #36
0
# -*- coding: utf-8 -*-

import oathAndLiesParams as pms
import os
import configuration.configparam as params
import gettext


localedir = os.path.join(params.getp("PARTSDIR"), "oathAndLies", "locale")
trans_OL = gettext.translation(
  "oathAndLies", localedir, languages=[params.getp("LANG")]).ugettext


def get_histo_header(role):
    if role == pms.JOUEUR_A:
        return [u"Lancé de\ndé", u"Votre message\nà B", u"Decision de B",
                u"Option\nappliquée",u"Gain"]
    else:
        return [u"Message de A", u"Votre décision", u"Gain"]


def get_text_role(role):
    return u"Vous êtes joueur {}.".format(
        u"A" if role == pms.JOUEUR_A else u"B")


def get_text_summary(period_content, role):
    if role == pms.JOUEUR_A:
        txt = u"Option X: {}, Option Y: {}.".format(
            pms.CODES_PERIODES[pms.GAME][0], pms.CODES_PERIODES[pms.GAME][1])
        txt += u"<br />Résultat du lancé de dé: {}.<br />" \
Beispiel #37
0
# -*- coding: utf-8 -*-
"""
Ce module contient les textes des écrans
"""

import os
import configuration.configparam as params
from collections import namedtuple
from util.utiltools import get_pluriel
import CommonPoolResourceParams as pms
import gettext
from util.utili18n import le2mtrans

localedir = os.path.join(params.getp("PARTSDIR"), "CommonPoolResource",
                         "locale")
trans_CPR = gettext.translation("CommonPoolResource",
                                localedir,
                                languages=[params.getp("LANG")]).ugettext

TITLE_MSG = namedtuple("TITLE_MSG", "titre message")

# MULTI-ECRANS =================================================================
PERIODE_label = lambda periode: trans_CPR(u"Period {}").format(periode)

# ECRAN DECISION ===============================================================
DECISION_explication = \
    trans_CPR(u"You have two accounts: a private account and a public account. "
         u"The public account has {}. Each group member can extract a maximum "
         u"of {} from the public account to put on his/her private account. "
         u"The payoff of each member depends on the number of tokens he/she "
         u"has put on his/her private account as well as on the total number "
Beispiel #38
0
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import MarcheConcurrenceParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
localedir = os.path.join(params.getp("PARTSDIR"), "MarcheConcurrence",
                         "locale")
try:
    trans_MC = gettext.translation("MarcheConcurrence",
                                   localedir,
                                   languages=[params.getp("LANG")]).ugettext
except IOError:
    logger.critical(u"Translation file not found")
    trans_MC = lambda x: x  # if there is an error, no translation


def get_histo_vars(role):

    histo_vars = [
        "MC_period", "MC_value_or_cost", "MC_transaction_price",
        "MC_transaction_prime"
    ]
# -*- coding: utf-8 -*-

from util.utili18n import le2mtrans
from util.utiltools import get_pluriel
import prisonnersDilemmaParams as pms
import os
import configuration.configparam as params
import gettext


localedir = os.path.join(params.getp("PARTSDIR"), "prisonnersDilemma", "locale")
trans_DP = gettext.translation("prisonnersDilemma", localedir,
                          languages=[params.getp("LANG")]).ugettext


def get_text_explanation():
    return trans_DP(u"Choose option X or option Y")


def get_histo_head():
    return [le2mtrans(u"Period"), le2mtrans(u"Decision"),
            trans_DP(u"Decision other"), le2mtrans(u"Period\npayoff"),
            le2mtrans(u"Cumulative\npayoff")]


def get_text_summary(period_content):
    txt = trans_DP(u"You chose {} and the other player chose {}.").format(
        pms.get_option(period_content.get("DP_decision")),
        pms.get_option(period_content.get("DP_decisionother")))
    txt += u" " + trans_DP(u"Your payoff is {}.").format(
        get_pluriel(period_content.get("DP_periodpayoff"), pms.MONNAIE))
Beispiel #40
0
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import EXPERIENCE_NOMParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext


localedir = os.path.join(params.getp("PARTSDIR"), "EXPERIENCE_NOM", "locale")
trans_EXPERIENCE_NOM_COURT = gettext.translation(
  "EXPERIENCE_NOM", localedir, languages=[params.getp("LANG")]).ugettext


def get_histo_head():
    return [le2mtrans(u"Period"), le2mtrans(u"Decision"),
             le2mtrans(u"Period\npayoff"), le2mtrans(u"Cumulative\npayoff")]


def get_text_explanation():
    return trans_EXPERIENCE_NOM_COURT(u"")


def get_text_summary(period_content):
    txt = trans_EXPERIENCE_NOM_COURT(u"Summary text")
    return txt
# -*- coding: utf-8 -*-
"""
Ce module contient les textes des écrans
"""

import os
import configuration.configparam as params
from collections import namedtuple
from util.utiltools import get_pluriel
import CommonPoolResourceParams as pms
import gettext
from util.utili18n import le2mtrans


localedir = os.path.join(
    params.getp("PARTSDIR"), "CommonPoolResource", "locale")
trans_CPR = gettext.translation(
    "CommonPoolResource", localedir, languages=[params.getp("LANG")]).ugettext


TITLE_MSG = namedtuple("TITLE_MSG", "titre message")

# MULTI-ECRANS =================================================================
PERIODE_label = lambda periode: trans_CPR(u"Period {}").format(periode)

# ECRAN DECISION ===============================================================
DECISION_explication = \
    trans_CPR(u"You have two accounts: a private account and a public account. "
         u"The public account has {}. Each group member can extract a maximum "
         u"of {} from the public account to put on his/her private account. "
         u"The payoff of each member depends on the number of tokens he/she "
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import relativesRelationshipsParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
localedir = os.path.join(params.getp("PARTSDIR"), "relativesRelationships", "locale")
try:
    trans_RR = gettext.translation(
      "relativesRelationships", localedir, languages=[params.getp("LANG")]).ugettext
except IOError:
    logger.critical(u"Translation file not found")
    trans_RR = lambda x: x  # if there is an error, no translation


def get_text_explanation():
    return trans_RR(u"Pour chacun des 30 énoncés (répartis sur 6 pages), "
                    u"veuillez cliquer sur le numéro de l'échelle "
                    u"(de 1=pas du tout d'accord à 5=tout à fait d'accord) "
                    u"qui décrit le mieux la façon dont l'énoncé s'applique "
                    u"à vous et votre mère (à gauche), à vous et à votre père "
                    u"(à droite) durant les années où vous avez grandi à la "
                    u"maison. Il n'y a pas de bonne ou de mauvaise réponse. "
Beispiel #43
0
# -*- coding: utf-8 -*-
"""
Ce module contient les textes des écrans
"""
__author__ = "Dimitri DUBOIS"

import os
from collections import OrderedDict
import configuration.configparam as params
import gettext
localedir = os.path.join(params.getp("PARTSDIR"), "Dictator", "locale")
trans_DIC = gettext.translation("Dictator",
                                localedir,
                                languages=[params.getp("LANG")],
                                fallback=True).ugettext
from collections import namedtuple
from util.utiltools import get_pluriel
from parts.Dictator import DictatorParams as pms
import logging

logger = logging.getLogger("le2m")
TITLE_MSG = namedtuple("TITLE_MSG", "titre message")

# HISTO ========================================================================
histo_build = {}


def get_histo_build(role):
    global histo_build
    if not histo_build.get(role):
        hb = OrderedDict()
Beispiel #44
0
# -*- coding: utf-8 -*-
__author__ = "Dimitri DUBOIS"

import os
import gettext

import configuration.configparam as params

localedir = os.path.join(params.getp("APPDIR"), "locale")
le2mtrans = None


def install():
    global le2mtrans
    try:
        le2mtrans = gettext.translation("le2m",
                                        localedir,
                                        languages=[params.getp("LANG")
                                                   ]).ugettext
    except IOError:
        le2mtrans = gettext.translation("le2m", localedir).ugettext


install()
Beispiel #45
0
def get_final_text(final_payoff):
    txt = le2mtrans(u"Your payoff for the experiment is equal to ") + \
        u" {}".format(get_pluriel(final_payoff, params.getp("CURRENCY")))
    return txt
Beispiel #46
0
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import dynamicCPRParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
try:
    localedir = os.path.join(params.getp("PARTSDIR"), "dynamicCPR",
                             "locale")
    trans_DYNCPR = gettext.translation(
      "dynamicCPR", localedir, languages=[params.getp("LANG")]).ugettext
except (AttributeError, IOError):
    logger.critical(u"Translation file not found")
    trans_DYNCPR = lambda x: x  # if there is an error, no translation


# ==============================================================================
# EXPLANATIONS
# ==============================================================================

INITIAL_EXTRACTION = trans_DYNCPR(
    u"Please choose an initial extraction value")
# -*- coding: utf-8 -*-

from util.utili18n import le2mtrans
from util.utiltools import get_pluriel
import prisonnersDilemmaParams as pms
import os
import configuration.configparam as params
import gettext

localedir = os.path.join(params.getp("PARTSDIR"), "prisonnersDilemma",
                         "locale")
trans_DP = gettext.translation("prisonnersDilemma",
                               localedir,
                               languages=[params.getp("LANG")]).ugettext


def get_text_explanation():
    return trans_DP(u"Choose option X or option Y")


def get_histo_head():
    return [
        le2mtrans(u"Period"),
        le2mtrans(u"Decision"),
        trans_DP(u"Decision other"),
        le2mtrans(u"Period\npayoff"),
        le2mtrans(u"Cumulative\npayoff")
    ]


def get_text_summary(period_content):
# -*- coding: utf-8 -*-

from __future__ import unicode_literals
from util.utili18n import le2mtrans
from util.utiltools import get_pluriel
import PublicGoodGameSolidarityParams as pms
import os
import configuration.configparam as params
import gettext

try:
    localedir = os.path.join(params.getp("PARTSDIR"),
                             "PublicGoodGameSolidarity", "locale")
    trans_PGGS = gettext.translation("PublicGoodGameSolidarity",
                                     localedir,
                                     languages=[params.getp("LANG")]).ugettext
except (AttributeError, IOError):
    trans_PGGS = lambda x: x

VOTES = {
    pms.IN_FAVOR: trans_PGGS(u"In favor of"),
    pms.AGAINST: trans_PGGS(u"Against")
}

POLITICS = {
    0: u"Extrême gauche",
    1: u"Gauche",
    2: u"Centre",
    3: u"Droite",
    4: u"Extrême droite"
}
# -*- coding: utf-8 -*-
"""
Ce module contient les textes des écrans
"""
__author__ = "Dimitri DUBOIS"

import os
import configuration.configparam as params
from collections import namedtuple
from util.utiltools import get_pluriel
import PublicGoodGameParams as pms
import gettext


localedir = os.path.join(params.getp("PARTSDIR"), "PublicGoodGame", "locale")
trans_PGG = gettext.translation(
    "PublicGoodGame", localedir, languages=[params.getp("LANG")]).ugettext


TITLE_MSG = namedtuple("TITLE_MSG", "titre message")


def get_histo_head():
    return [trans_PGG(u"Period"), trans_PGG(u"Individual\naccount"),
            trans_PGG(u"Public\naccount"), trans_PGG(u"Public\naccount\ngroup"),
            trans_PGG(u"Period\npayoff"), trans_PGG(u"Cumulative\npayoff")]


def get_text_explanation():
    return trans_PGG(u"You have an endowment of {} tokens.").format(pms.DOTATION)
# -*- coding: utf-8 -*-
"""
This module contains the texts for the screens
"""
from util.utiltools import get_pluriel
import TeamCommunicationParams as pms
import os
import configuration.configparam as params
import gettext
from util.utili18n import le2mtrans


localedir = os.path.join(params.getp("PARTSDIR"), "TeamCommunication", "locale")
trans_TC = gettext.translation(
  "TeamCommunication", localedir, languages=[params.getp("LANG")]).ugettext


COUNTRY_RESIDENCE = {
    1: trans_TC(u"Germany"),
    2: trans_TC(u"Belgium"),
    3: trans_TC(u"France"),
    4: trans_TC(u"Luxembourg")
}

LANGUAGE_SKILLS = {
    1: trans_TC(u"No difficulty"),
    2: trans_TC(u"Some difficulty"),
    3: trans_TC(u"Considerable difficulty"),
    4: trans_TC(u"No notion")
}
Beispiel #51
0
def main():
    parser = argparse.ArgumentParser()

    # application language
    parser.add_argument("-l",
                        "--lang",
                        action="store",
                        default=params.getp("LANG"),
                        help=i18n.le2mtrans(u"Language of the application"))

    # directory for the database
    parser.add_argument("-db",
                        "--dirbase",
                        action="store",
                        default=None,
                        help=i18n.le2mtrans(
                            u"Directory in which to store the database. "
                            u"This argument is not an option if several "
                            u"parts are started with arg -e"))

    # database name
    parser.add_argument(
        "-nb",
        "--namebase",
        action="store",
        default="data.sqlite",
        help=i18n.le2mtrans(u"Name of the sqlite file, if not data"))

    # server port
    parser.add_argument("-p",
                        "--port",
                        action="store",
                        type=int,
                        default=params.getp("SERVPORT"))

    # names of parts to load directly
    parser.add_argument(
        "-e",
        "--parts",
        nargs='+',
        default=[],
        dest="parts",
        help=i18n.le2mtrans(u"The name(s) of the part(s) to load)."))

    # whether it is a test session or not
    test_parser = parser.add_mutually_exclusive_group(required=False)
    test_parser.add_argument('--test',
                             dest='test',
                             action='store_true',
                             help=i18n.le2mtrans(u"The session is launched in "
                                                 u"test mode"))
    test_parser.add_argument('--no-test',
                             dest='test',
                             action='store_false',
                             help=i18n.le2mtrans(
                                 u"The session is launched for "
                                 u"real (not test mode)"))
    parser.set_defaults(test=True)

    # check the options ========================================================
    args = parser.parse_args()
    params.setp("LANG", args.lang)
    i18n.install()

    if args.parts:
        for e in args.parts:
            if e not in os.listdir(params.getp("PARTSDIR")):
                parser.error(
                    i18n.le2mtrans(u"Part {} does not exist").format(e))
    # check database if several parts
    if len(args.parts) > 1 and not args.dirbase:
        parser.error(
            i18n.le2mtrans(
                u"The directory in which store the database has to be provided "
                u"with arg -db"))

    params.setp("SERVPORT", args.port)
    options = vars(args)  # we put the args in a dict

    # creation logger ==========================================================
    logger = logging.getLogger("le2m")
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter(
        params.getp("LOGGING_FORMATTER"),
        datefmt=params.getp("LOGGING_FORMATTER_DATE"))
    fichier_log = logging.FileHandler(
        os.path.join(params.getp("LOGDIR"), 'le2m.log'))
    fichier_log.setLevel(logging.INFO)
    fichier_log.setFormatter(formatter)
    logger.addHandler(fichier_log)
    console_log = logging.StreamHandler()
    console_log.setLevel(logging.DEBUG)
    console_log.setFormatter(formatter)
    logger.addHandler(console_log)
    logger.info(60 * "=")
    logger.info("Logger LE2M created")
    logger.info("APPDIR: {}".format(params.getp("APPDIR")))
    logger.info("PARTSDIR: {}".format(params.getp("PARTSDIR")))
    logger.info("Command line options: {}".format(options))

    # start server -------------------------------------------------------------
    from server.serv import Serveur

    serveur = Serveur(**options)
    serveur.start()
Beispiel #52
0
def main():
    parser = argparse.ArgumentParser()

    # application language
    parser.add_argument("-l", "--lang", action="store",
                        default=params.getp("LANG"),
                        help=i18n.le2mtrans(u"Language of the application"))

    # directory for the database
    parser.add_argument("-db", "--dirbase", action="store",
                        default=None,
                        help=i18n.le2mtrans(
                            u"Directory in which to store the database. "
                            u"This argument is not an option if several "
                            u"parts are started with arg -e"))

    # database name
    parser.add_argument("-nb", "--namebase", action="store",
                        default="data.sqlite",
                        help=i18n.le2mtrans(u"Name of the sqlite file, if not data"))

    # server port
    parser.add_argument("-p", "--port", action="store", type=int,
                        default=params.getp("SERVPORT"))

    # names of parts to load directly
    parser.add_argument("-e", "--parts", nargs='+', default=[],
                        dest="parts",
                        help=i18n.le2mtrans(u"The name(s) of the part(s) to load)."))

    # whether it is a test session or not
    test_parser = parser.add_mutually_exclusive_group(required=False)
    test_parser.add_argument('--test', dest='test', action='store_true',
                             help=i18n.le2mtrans(u"The session is launched in "
                                                 u"test mode"))
    test_parser.add_argument('--no-test', dest='test', action='store_false',
                             help=i18n.le2mtrans(u"The session is launched for "
                                                 u"real (not test mode)"))
    parser.set_defaults(test=True)
    # parser.add_argument("-nt", "--notest", action="store_false", default=True,
    #                     help=i18n.le2mtrans(
    #                         u"With this option the experiment is launched for "
    #                         u"real"))

    # check the options ========================================================
    args = parser.parse_args()
    params.setp("LANG", args.lang)
    i18n.install()

    if args.parts:
        for e in args.parts:
            if e not in os.listdir(params.getp("PARTSDIR")):
                parser.error(i18n.le2mtrans(u"Part {p} does not exist").format(p=e))
    # check database if several parts
    if len(args.parts) > 1 and not args.dirbase:
        parser.error(i18n.le2mtrans(
            u"The directory in which store the database has to be provided "
            u"with arg -db"))

    params.setp("SERVPORT", args.port)
    options = vars(args)  # we put the args in a dict

    # creation logger ==========================================================
    logger = logging.getLogger("le2m")
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter(
        params.getp("LOGGING_FORMATTER"),
        datefmt=params.getp("LOGGING_FORMATTER_DATE"))
    fichier_log = logging.FileHandler(
        os.path.join(params.getp("LOGDIR"), 'le2m.log'))
    fichier_log.setLevel(logging.INFO)
    fichier_log.setFormatter(formatter)
    logger.addHandler(fichier_log)
    console_log = logging.StreamHandler()
    console_log.setLevel(logging.DEBUG)
    console_log.setFormatter(formatter)
    logger.addHandler(console_log)
    logger.info(30 * "=")
    logger.info("Logger LE2M created")
    logger.info("APPDIR: {}".format(params.getp("APPDIR")))
    logger.info("PARTSDIR: {}".format(params.getp("PARTSDIR")))
    logger.info("Command ligne options: {}".format(options))

    # start server -------------------------------------------------------------
    from server.serv import Serveur

    serveur = Serveur(**options)
    serveur.start()
# -*- coding: utf-8 -*-
"""
This module contains the texts of the part (server and remote)
"""

from util.utiltools import get_pluriel
import socialvalueorientationParams as pms
from util.utili18n import le2mtrans
import os
import configuration.configparam as params
import gettext
import logging

logger = logging.getLogger("le2m")
try:
    localedir = os.path.join(params.getp("PARTSDIR"), "socialvalueorientation",
                             "locale")
    trans_SVO = gettext.translation(
      "socialvalueorientation", localedir, languages=[params.getp("LANG")]).ugettext
except (AttributeError, IOError):
    logger.critical(u"Translation file not found")
    trans_SVO = lambda x: x  # if there is an error, no translation


def get_text_explanation():
    return u"Vous devez décider de la répartition d'une somme d’argent entre " \
           u"vous et une personne de la salle. Vous ne pouvez pas identifier " \
           u"l'autre personne et elle ne peut pas vous identifier. Il n’y a pas " \
           u"de bonne ou de mauvaise réponse, et les données seront traitées " \
           u"de manière anonyme. Pour chacune des 15 questions, " \
           u"indiquez la répartition que vous préférez en " \
Beispiel #54
0
# -*- coding: utf-8 -*-
__author__ = "Dimitri DUBOIS"

from util.utili18n import le2mtrans
from util.utiltools import get_pluriel
from configuration import configparam as params

PERIODE_label = lambda periode: le2mtrans(u"Period {p}").format(p=periode)

# ECRAN ACCUEIL
ACCUEIL_label_welcome = le2mtrans(u"Welcome to {welctext}").format(
    welctext=params.getp("WELCOMETEXT"))
ACCUEIL_label_image_accueil = le2mtrans(u"Here the welcome picture")
ACCUEIL_titre = le2mtrans(u"Welcome to the LEEM")
ACCUEIL_bouton = le2mtrans(u"Instructions read")


# QUESTIONNAIRE_FINAL
QUESTFINAL_explication = \
    le2mtrans(u"Please fill in the questionnaire below.\nThis questionnaire "
              u"is anonymous, so please answer with sincerity.")


def get_payoff_text(pay_euros, pay_ecus=None):
    if pay_ecus is not None:
        txt = le2mtrans(u"You've earned {} which corresponds to {}.").format(
            get_pluriel(pay_ecus, u"ecu"), get_pluriel(pay_euros, u"euro"))
    else:
        txt = le2mtrans(u"You've earned {}.".format(
            get_pluriel(pay_euros, u"euro")))
    return txt
Beispiel #55
0
# -*- coding: utf-8 -*-

import oathAndLiesParams as pms
import os
import configuration.configparam as params
import gettext

localedir = os.path.join(params.getp("PARTSDIR"), "oathAndLies", "locale")
trans_OL = gettext.translation("oathAndLies",
                               localedir,
                               languages=[params.getp("LANG")]).ugettext


def get_histo_header(role):
    if role == pms.JOUEUR_A:
        return [
            u"Lancé de\ndé", u"Votre message\nà B", u"Decision de B",
            u"Option\nappliquée", u"Gain"
        ]
    else:
        return [u"Message de A", u"Votre décision", u"Gain"]


def get_text_role(role):
    return u"Vous êtes joueur {}.".format(u"A" if role ==
                                          pms.JOUEUR_A else u"B")


def get_text_summary(period_content, role):
    if role == pms.JOUEUR_A:
        txt = u"Option X: {}, Option Y: {}.".format(