def render_POST(self, request, conn): if conn.account.trust == TRUST.MASTER: message = ["Non è possibile modificare le opzioni di config da parte di Amministratori con trust %s" % conn.account.trust] return json.dumps(message, separators=(',',':')) write_config = False if "write_config" in request.args and request.args["write_config"][0] == "1": write_config = True # Si copia gli attributi del config attuale, cosicché se quelli nuovi # sono stati impostati erroneamente dal client verranno sostituiti # da questi qui original_config_attrs = copy.copy(config.__dict__) # Impostata tutte le opzioni di config come le ha scelte il client for option in CONFIG_OPTIONS: if option.getter in ("get", "getemail"): if option.name not in request.args: log.bug("opzione %s non inviata al server." % option.name) continue setattr(config, option.name, request.args[option.name][0]) elif option.getter in ("getint", "getfloat"): if option.name not in request.args: log.bug("opzione %s non inviata al server." % option.name) continue try: if option.getter == "getint": value = int(request.args[option.name][0]) else: value = float(request.args[option.name][0]) except ValueError: log.bug("opzione %s con un valore non numerico: %s" % (option.name, request.args[option.name])) continue setattr(config, option.name, value) elif option.getter == "getboolean": if option.name in request.args: setattr(config, option.name, True) else: setattr(config, option.name, False) else: log.bug("getter non definito per l'opzione %s: %s" % (option.name, option.getter)) continue # Finalizza il file di config e se vi sono degli errori li invia #ritornando allo stadio iniziale config.finalize() errors = list(config.iter_all_error_messages()) if errors: config.__dict__ = original_config_attrs return json.dumps(errors, separators=(',',':')) if write_config: config.save() log.save("Salvataggio del file di configurazione %s effettuato dall'apposita pagina web." % config.filename) return json.dumps("[]", separators=(',',':'))
def OnClose(self, event): """Program exit event handler""" # If changes have taken place save of old grid if self.main_window.changed_since_save: save_choice = self.interfaces.get_save_request_from_user() if save_choice is None: # Cancelled close operation return elif save_choice: # User wants to save content post_command_event(self.main_window, self.main_window.SaveMsg) # Save the AUI state config["window_layout"] = repr(self.main_window._mgr.SavePerspective()) # Uninit the AUI stuff self.main_window._mgr.UnInit() # Save config config.save() # Close main_window self.main_window.Destroy() # Set file mode to 600 to protect GPG passwd a bit sp = wx.StandardPaths.Get() pyspreadrc_path = sp.GetUserConfigDir() + "/." + config.config_filename try: os.chmod(pyspreadrc_path, 0600) except OSError: dummyfile = open(pyspreadrc_path, "w") dummyfile.close() os.chmod(pyspreadrc_path, 0600)
def render_POST(self, request, conn): if conn.account.trust == TRUST.MASTER: message = [ "Non è possibile modificare le opzioni di config da parte di Amministratori con trust %s" % conn.account.trust ] return json.dumps(message, separators=(',', ':')) write_config = False if "write_config" in request.args and request.args["write_config"][ 0] == "1": write_config = True # Si copia gli attributi del config attuale, cosicché se quelli nuovi # sono stati impostati erroneamente dal client verranno sostituiti # da questi qui original_config_attrs = copy.copy(config.__dict__) # Impostata tutte le opzioni di config come le ha scelte il client for option in CONFIG_OPTIONS: if option.getter in ("get", "getemail"): if option.name not in request.args: log.bug("opzione %s non inviata al server." % option.name) continue setattr(config, option.name, request.args[option.name][0]) elif option.getter in ("getint", "getfloat"): if option.name not in request.args: log.bug("opzione %s non inviata al server." % option.name) continue try: if option.getter == "getint": value = int(request.args[option.name][0]) else: value = float(request.args[option.name][0]) except ValueError: log.bug("opzione %s con un valore non numerico: %s" % (option.name, request.args[option.name])) continue setattr(config, option.name, value) elif option.getter == "getboolean": if option.name in request.args: setattr(config, option.name, True) else: setattr(config, option.name, False) else: log.bug("getter non definito per l'opzione %s: %s" % (option.name, option.getter)) continue # Finalizza il file di config e se vi sono degli errori li invia #ritornando allo stadio iniziale config.finalize() errors = list(config.iter_all_error_messages()) if errors: config.__dict__ = original_config_attrs return json.dumps(errors, separators=(',', ':')) if write_config: config.save() log.save( "Salvataggio del file di configurazione %s effettuato dall'apposita pagina web." % config.filename) return json.dumps("[]", separators=(',', ':'))
def stop(self): """ Esegue lo shutdown del gioco. """ from src.log import log self.shutdown_time = time.time() self.shutdown = True from src.config import config log.shutdown("Salva tutte le opzioni di configurazione del file %s." % config.filename) config.save() from src.calendar import calendar log.shutdown("Salva la data gdr del gioco.") calendar.save() log.shutdown("Chiude le connessioni e scollega dal gioco tutti i giocatori.") from src.connection import close_all_connections close_all_connections() from src.game import game_loop from src.maintenance import maintenance_loop from src.behaviour import room_behaviour_loop from src.fight import fight_loop from src.entitypes.corpse import decomposer_loop from src.loops.aggressiveness import aggressiveness_loop from src.loops.blob import blob_loop from src.loops.digestion import digestion_loop log.shutdown("Ferma tutti i loop.") game_loop.stop() maintenance_loop.stop() room_behaviour_loop.stop() fight_loop.stop() aggressiveness_loop.stop() blob_loop.stop() digestion_loop.stop() decomposer_loop.stop() from src.reset import stop_all_reset_events log.shutdown("Mette in pausa i reset di tutte le aree.") stop_all_reset_events() from src.gamescript import triggering_on_shutdown log.shutdown("Attivazione dei trigger on_shutdown") triggering_on_shutdown() from src.reset import stop_all_repops log.shutdown("Ferma tutti i repop in corso") stop_all_repops() if not self.test_inputs_mode: from src.database import database log.shutdown("Esegue il backup del contenuto della cartella dei dati") database.backup("shutdown_before_save") if config.save_persistence: log.shutdown("Salva il Database:") database.save() from src.forum_db import forum_db log.shutdown("Salva il Forum") forum_db.save() if config.track_behaviours: from src.behaviour import write_behaviour_tracker log.shutdown("Salva le esecuzioni dei behaviour su un file di log") write_behaviour_tracker() if config.track_triggers: from src.gamescript import write_trigger_tracker log.shutdown("Salva le esecuzioni dei gamescript su un file di log") write_trigger_tracker() log.shutdown("Cancella tutti i file compilati per una maggiore pulizia") remove_compiled_files() log.shutdown("Esecuzione dello shutdown in %d secondi" % (time.time() - self.shutdown_time))
def stop(self): """ Esegue lo shutdown del gioco. """ from src.log import log self.shutdown_time = time.time() self.shutdown = True from src.config import config log.shutdown("Salva tutte le opzioni di configurazione del file %s." % config.filename) config.save() from src.calendar import calendar log.shutdown("Salva la data gdr del gioco.") calendar.save() log.shutdown( "Chiude le connessioni e scollega dal gioco tutti i giocatori.") from src.connection import close_all_connections close_all_connections() from src.game import game_loop from src.maintenance import maintenance_loop from src.behaviour import room_behaviour_loop from src.fight import fight_loop from src.entitypes.corpse import decomposer_loop from src.loops.aggressiveness import aggressiveness_loop from src.loops.blob import blob_loop from src.loops.digestion import digestion_loop log.shutdown("Ferma tutti i loop.") game_loop.stop() maintenance_loop.stop() room_behaviour_loop.stop() fight_loop.stop() aggressiveness_loop.stop() blob_loop.stop() digestion_loop.stop() decomposer_loop.stop() from src.reset import stop_all_reset_events log.shutdown("Mette in pausa i reset di tutte le aree.") stop_all_reset_events() from src.gamescript import triggering_on_shutdown log.shutdown("Attivazione dei trigger on_shutdown") triggering_on_shutdown() from src.reset import stop_all_repops log.shutdown("Ferma tutti i repop in corso") stop_all_repops() if not self.test_inputs_mode: from src.database import database log.shutdown( "Esegue il backup del contenuto della cartella dei dati") database.backup("shutdown_before_save") if config.save_persistence: log.shutdown("Salva il Database:") database.save() from src.forum_db import forum_db log.shutdown("Salva il Forum") forum_db.save() if config.track_behaviours: from src.behaviour import write_behaviour_tracker log.shutdown("Salva le esecuzioni dei behaviour su un file di log") write_behaviour_tracker() if config.track_triggers: from src.gamescript import write_trigger_tracker log.shutdown( "Salva le esecuzioni dei gamescript su un file di log") write_trigger_tracker() log.shutdown( "Cancella tutti i file compilati per una maggiore pulizia") remove_compiled_files() log.shutdown("Esecuzione dello shutdown in %d secondi" % (time.time() - self.shutdown_time))