2727import simplejson as json
2828import shlex
2929
30+ import threading
31+
3032from lcrs .master .plugins import CallbackFailed , BasePlugin
3133
34+ import logging
35+ logger = logging .getLogger ("lcrs" )
36+
3237class FairIDPlugin (BasePlugin ):
3338
3439 plugin_id = "fair"
@@ -80,16 +85,7 @@ def on_set_id(self, computer, input_id):
8085
8186 if fail_msg :
8287
83- def on_close (dialog , * args ):
84- dialog .destroy ()
85-
86- dialog = gtk .MessageDialog (parent = self .mainwindow_instance .win ,
87- type = gtk .MESSAGE_ERROR ,
88- buttons = gtk .BUTTONS_CLOSE ,
89- message_format = fail_msg )
90- dialog .connect ("response" , on_close )
91- dialog .show ()
92-
88+ self .show_error_msg (fail_msg )
9389 raise CallbackFailed ()
9490
9591 def on_ready_login (self , * args ):
@@ -149,39 +145,15 @@ def login(self, *args):
149145 self .mainwindow_instance .fair_username = username
150146 self .mainwindow_instance .fair_password = password
151147 self .win .destroy ()
152- #def on_close(dialog, *args):
153- # dialog.destroy()
154- # self.win.destroy()
155- #dialog = gtk.MessageDialog(parent=self.win,
156- # type=gtk.MESSAGE_INFO,
157- # buttons = gtk.BUTTONS_CLOSE,
158- # message_format="You are now logged in!",)
159- #dialog.set_modal(True)
160- #dialog.connect("response", on_close)
161- #dialog.show()
162-
163148 else :
164- self .glade .get_object ('buttonLogin' ).set_sensitive (True )
165149 fail_msg = r1 .read ()
166150 conn .close ()
167151 except :
168152 fail_msg = "Could not connect to FAIR server"
169153
170-
171154 if fail_msg :
172-
173- def on_close (dialog , * args ):
174- self .glade .get_object ('buttonLogin' ).set_sensitive (True )
175- dialog .destroy ()
176-
177- dialog = gtk .MessageDialog (parent = self .win ,
178- type = gtk .MESSAGE_ERROR ,
179- buttons = gtk .BUTTONS_CLOSE ,
180- message_format = fail_msg ,)
181- dialog .set_modal (True )
182- dialog .connect ("response" , on_close )
183- dialog .show ()
184-
155+ self .glade .get_object ('buttonLogin' ).set_sensitive (True )
156+ self .show_error_msg (fail_msg , parent = self .win )
185157
186158
187159 def on_auto_submit (self , computer ):
@@ -213,25 +185,27 @@ def on_auto_submit(self, computer):
213185 response = conn .getresponse ()
214186 data = response .read ()
215187 if response .status != 200 :
216- # TODO: Handle this in the log file
217- print "ERROR IN REGISTRATION: %s" % data
188+ errmsg = "autosubmit plugin failed: %s" % str (data )
189+ self .show_error_msg (errmsg )
190+ logger .critical (errmsg )
218191 conn .close ()
219192
220-
221193 def on_register (self , computer ):
222194
223- computer .is_registered = True
224- self .mainwindow_instance .update_computer (computer )
225- self .on_auto_submit (computer )
226-
227- if self .get_config ("use_https" ):
228- url = "https://%s%s%s" % (self .get_config ("fair_server" ), URL_REGISTER , computer .id )
229- else :
230- url = "http://%s%s%s" % (self .get_config ("fair_server" ), URL_REGISTER , computer .id )
231- username = os .getenv ("SUDO_USER" )
232-
233- if username :
234- subprocess .Popen (shlex .split ("su %s -c \" xdg-open %s\" " % (username , url )))
235- else :
236- subprocess .Popen (shlex .split ("xdg-open %s" % url ))
237-
195+ def register_thread ():
196+ self .on_auto_submit (computer )
197+ if self .get_config ("use_https" ):
198+ url = "https://%s%s%s" % (self .get_config ("fair_server" ), URL_REGISTER , computer .id )
199+ else :
200+ url = "http://%s%s%s" % (self .get_config ("fair_server" ), URL_REGISTER , computer .id )
201+ username = os .getenv ("SUDO_USER" )
202+
203+ if username :
204+ subprocess .Popen (shlex .split ("su %s -c \" xdg-open %s\" " % (username , url )))
205+ else :
206+ subprocess .Popen (shlex .split ("xdg-open %s" % url ))
207+
208+ t = threading .Thread (target = register_thread )
209+ t .setDaemon (True )
210+ t .start ()
211+
0 commit comments