mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2024-11-23 03:38:08 -06:00
119 lines
4.0 KiB
Python
119 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
import shutil
|
|
import widgetUtils
|
|
import platform
|
|
import output
|
|
if platform.system() == "Windows":
|
|
import wxUI as view
|
|
from controller import settings
|
|
elif platform.system() == "Linux":
|
|
import gtkUI as view
|
|
import paths
|
|
import time
|
|
import os
|
|
import logging
|
|
import session
|
|
import manager
|
|
import config_utils
|
|
import config
|
|
|
|
log = logging.getLogger("sessionmanager.sessionManager")
|
|
|
|
class sessionManagerController(object):
|
|
def __init__(self, started=False):
|
|
super(sessionManagerController, self).__init__()
|
|
log.debug("Setting up the session manager.")
|
|
self.started = started
|
|
manager.setup()
|
|
self.view = view.sessionManagerWindow()
|
|
widgetUtils.connect_event(self.view.new, widgetUtils.BUTTON_PRESSED, self.manage_new_account)
|
|
widgetUtils.connect_event(self.view.remove, widgetUtils.BUTTON_PRESSED, self.remove)
|
|
if self.started == False:
|
|
widgetUtils.connect_event(self.view.configuration, widgetUtils.BUTTON_PRESSED, self.configuration)
|
|
else:
|
|
self.view.hide_configuration()
|
|
self.new_sessions = {}
|
|
self.removed_sessions = []
|
|
|
|
def fill_list(self):
|
|
sessionsList = []
|
|
reserved_dirs = ["dicts"]
|
|
log.debug("Filling the sessions list.")
|
|
self.sessions = []
|
|
for i in os.listdir(paths.config_path()):
|
|
if os.path.isdir(paths.config_path(i)) and i not in reserved_dirs:
|
|
log.debug("Adding session %s" % (i,))
|
|
strconfig = "%s/session.conf" % (paths.config_path(i))
|
|
config_test = config_utils.load_config(strconfig)
|
|
if len(config_test) == 0:
|
|
try:
|
|
log.debug("Deleting session %s" % (i,))
|
|
shutil.rmtree(paths.config_path(i))
|
|
continue
|
|
except:
|
|
output.speak("An exception was raised while attempting to clean malformed session data. See the error log for details. If this message persists, contact the developers.",True)
|
|
os.exception("Exception thrown while removing malformed session")
|
|
continue
|
|
name = config_test["twitter"]["user_name"]
|
|
if config_test["twitter"]["user_key"] != "" and config_test["twitter"]["user_secret"] != "":
|
|
sessionsList.append(name)
|
|
self.sessions.append(i)
|
|
else:
|
|
try:
|
|
log.debug("Deleting session %s" % (i,))
|
|
shutil.rmtree(paths.config_path(i))
|
|
except:
|
|
output.speak("An exception was raised while attempting to clean malformed session data. See the error log for details. If this message persists, contact the developers.",True)
|
|
os.exception("Exception thrown while removing malformed session")
|
|
self.view.fill_list(sessionsList)
|
|
|
|
def show(self):
|
|
if self.view.get_response() == widgetUtils.OK:
|
|
self.do_ok()
|
|
# else:
|
|
self.view.destroy()
|
|
|
|
def do_ok(self):
|
|
log.debug("Starting sessions...")
|
|
for i in self.sessions:
|
|
if session.sessions.has_key(i) == True: continue
|
|
s = session.Session(i)
|
|
s.get_configuration()
|
|
if i not in config.app["sessions"]["ignored_sessions"]:
|
|
s.login()
|
|
session.sessions[i] = s
|
|
self.new_sessions[i] = s
|
|
# self.view.destroy()
|
|
|
|
def manage_new_account(self, *args, **kwargs):
|
|
if self.view.new_account_dialog() == widgetUtils.YES:
|
|
location = (str(time.time())[-6:])
|
|
log.debug("Creating session in the %s path" % (location,))
|
|
s = session.Session(location)
|
|
manager.manager.add_session(location)
|
|
s.get_configuration()
|
|
# try:
|
|
s.authorise()
|
|
self.sessions.append(location)
|
|
self.view.add_new_session_to_list()
|
|
s.settings.write()
|
|
# except:
|
|
# log.exception("Error authorising the session")
|
|
# self.view.show_unauthorised_error()
|
|
# return
|
|
|
|
def remove(self, *args, **kwargs):
|
|
if self.view.remove_account_dialog() == widgetUtils.YES:
|
|
selected_account = self.sessions[self.view.get_selected()]
|
|
self.view.remove_session(self.view.get_selected())
|
|
self.removed_sessions.append(selected_account)
|
|
self.sessions.remove(selected_account)
|
|
shutil.rmtree(path=paths.config_path(selected_account), ignore_errors=True)
|
|
|
|
|
|
def configuration(self, *args, **kwargs):
|
|
""" Opens the global settings dialogue."""
|
|
d = settings.globalSettingsController()
|
|
if d.response == widgetUtils.OK:
|
|
d.save_configuration()
|