29
30
from lernid import ConnectDialog
30
31
from lernid.PasswordDialog import PasswordDialog
31
32
from lernid.lernidconfig import save_cache_path
33
from lernid.lernidconfig import __lernid_data_directory__
32
34
from lernid.CouchDBPreferences import Preferences
33
35
from lernid.Event import Event
34
36
from lernid.LernidOptions import Options
74
76
homepage: https://wiki.ubuntu.com/Classroom
75
77
classroom: ubuntu-classroom-es
76
78
Chat: ubuntu-classroom-chat-es
77
80
icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
83
# Make sure that these names are lower case
79
84
self.classbotnames = ['classbot', 'classroombot']
81
self._configtext = self._read_config()
83
Statusbar.push_message(_('Cannot retrieve configuration'))
84
self._configtext = self._defaultconfig
85
self._config.readfp(io.StringIO(unicode(self._configtext)))
85
if Options.get('config'):
87
self._configtext = self._read_config()
89
Statusbar.push_message(_('Cannot retrieve configuration'))
90
self._configtext = self._defaultconfig
91
self._config.readfp(io.StringIO(unicode(self._configtext)))
93
if __lernid_data_directory__.startswith('/'):
94
path = '/etc/lernid-classrooms.d'
96
path = os.path.join(os.path.dirname(__file__),'../etc/lernid-classrooms.d')
97
path = os.path.abspath(path)
98
self._config.read([path+'/'+i for i in os.listdir(path)])
88
101
def get_instance(cls):
92
105
return _instance_object
94
107
def _read_config(self):
95
if Options.get('config'):
96
uri = Options.get('config')
97
if uri.startswith('http://') or uri.startswith('https://'):
98
return urllib2.urlopen(uri,None,30).read()
101
return open(uri).read()
103
logging.critical("Unable to read configuration file "+uri)
108
uri = Options.get('config')
109
if uri.startswith('http://') or uri.startswith('https://'):
110
return urllib2.urlopen(uri,None,30).read()
106
return urllib2.urlopen('http://ubuntu-owl.org/lernid/ubuntu.lernid',None,30).read()
113
return open(uri).read()
115
logging.critical("Unable to read configuration file "+uri)
108
118
def _connect_event(self, event, nick):
109
119
if self.is_connected():
126
136
icalurl = "http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics"
128
138
classroom = self._config.get(event, 'classroom')
139
if classroom[0] not in '#&!+':
140
classroom = '#' + classroom
130
classroom = "ubuntu-classroom"
142
classroom = "#ubuntu-classroom"
132
144
chat = self._config.get(event, 'chat')
134
chat = "ubuntu-classroom-chat"
145
if chat[0] not in '#&!+':
148
chat = "#ubuntu-classroom-chat"
150
locale = self._config.get(event, 'locale')
154
server = self._config.get(event, 'server')
158
question_token = self._config.get(event, 'question_token')
160
question_token = None
136
162
self._event = Event(
168
197
if not self._connectdialog:
169
198
self._connectdialog = ConnectDialog.NewConnectDialog()
170
199
self._connectdialog.set_transient_for(parent)
171
self._connectdialog.connect('response', self._connect_dialog_reponse)
200
self._connectdialog.connect('response', self._connect_dialog_first_response)
172
201
self._connectdialog.set_nick(Preferences.get('nick'))
173
202
self._connectdialog.set_transient_for(widget)
174
203
self._connectdialog.show()
176
def _connect_dialog_reponse(self, dialog, response):
205
def _connect_dialog_first_response(self, dialog, response):
177
206
if response == gtk.RESPONSE_OK:
178
event = self._connectdialog.get_event()
179
nick = self._connectdialog.get_nick()
180
Preferences.set('nick', nick)
181
self._connect_event(event, nick)
182
password = self._connectdialog.get_password()
184
self._identify_nick(nick, password)
207
self._connectdialog.hide()
208
glib.idle_add(self._connect_dialog_response, dialog, response)
210
def _connect_dialog_response(self, dialog, response):
211
event = self._connectdialog.get_event()
212
nick = self._connectdialog.get_nick()
213
Preferences.set('nick', nick)
214
self._connect_event(event, nick)
215
password = self._connectdialog.get_password()
217
self._identify_nick(nick, password)
186
219
def disconnect(self):
187
220
if not self.is_connected():