source: lliurex-homework-harvester/trunk/fuentes/install-files/usr/bin/lliurex-homework-harvester @ 3950

Last change on this file since 3950 was 3950, checked in by Juanma, 3 years ago

Adapted for reflect the changes to TeacherShare? module (>=0.86)

  • Property svn:executable set to *
File size: 4.7 KB
Line 
1#!/usr/bin/env python
2# coding = utf-8
3
4import os.path
5import imp
6import gtk
7import gtk.glade
8import sys
9import getpass
10import locale
11import gettext
12
13from xmlrpclib import *
14
15locale.textdomain("lliurex-homework-harvester")
16gettext.textdomain("lliurex-homework-harvester")
17_=locale.gettext
18
19TEACHER_SIDE="TeacherSide.glade"
20
21class TeacherSide:
22       
23        def __init__(self,user,path):
24               
25                self.user=user
26                self.path=path
27               
28                self.server=ServerProxy("https://server:9779")
29               
30                if self.path[len(self.path)-1]!="/":
31                        self.path+="/"
32               
33                tmp=self.path.split("/")
34                self.name=tmp[len(tmp)-2]
35               
36                self.ip=self.get_my_ip()
37                self.read_glade()
38               
39        #def __init__
40       
41        def read_glade(self):
42               
43                if os.path.exists("./rsrc/" + TEACHER_SIDE):
44                        path="./rsrc/" + TEACHER_SIDE
45                else:
46                        path="/usr/share/lliurex-homework-harvester/rsrc/" + TEACHER_SIDE
47                       
48                glade=gtk.glade.XML(path)
49                self.window=glade.get_widget("window")
50                self.window.connect("destroy",gtk.main_quit)
51                self.apply_button=glade.get_widget("applyButton")
52                self.apply_button.connect("clicked",self.apply_clicked)
53                self.exit_button=glade.get_widget("exitButton")
54                self.exit_button.connect("clicked",self.exit_clicked)
55                self.remove_button=glade.get_widget("removeButton")
56                self.remove_button.connect("clicked",self.remove_clicked)
57                self.folder_entry=glade.get_widget("folderEntry")
58                self.name_entry=glade.get_widget("nameEntry")
59                self.name_entry.set_text(self.name)
60                self.user_entry=glade.get_widget("userEntry")
61                self.password_entry=glade.get_widget("passwordEntry")
62                self.password_entry.connect("activate",self.detect_enter)
63                self.msg_label=glade.get_widget("msgLabel")
64               
65                self.user_entry.set_text(self.user)
66                self.user_entry.set_sensitive(False)
67                self.folder_entry.set_text(self.path)
68                self.folder_entry.set_sensitive(False)
69               
70                self.window.show_all()
71               
72                try:
73                        ret=self.server.is_configured("","TeacherShareManager",self.user,self.path)
74                        print ret
75               
76                        if type(ret)==type(True):
77                                if ret:
78                                        self.apply_button.hide()
79                                        self.name_entry.set_sensitive(False)
80                                        self.msg_label.set_text(_("This folder is already configured to receive homeworks."))
81                                        path,name,ip,port=self.server.get_paths("","TeacherShareManager")[self.user]
82                                        self.name_entry.set_text(name)
83                                else:
84                                        self.remove_button.hide()
85                except Exception as e:
86                       
87                        print e
88                        self.msg_label.set_text(_("Error connecting to server"))
89                        self.apply_button.hide()
90                        self.remove_button.hide()
91                        self.password_entry.set_sensitive(False)
92                        self.name_entry.set_sensitive(False)
93               
94               
95        #def read_glade
96       
97        def exit_clicked(self,widget):
98               
99                gtk.main_quit()
100               
101        #def exit_clicked
102       
103        def apply_clicked(self,widget):
104               
105                ret=self.register_path()
106                if type(ret)==type(True):
107                        if ret:
108                                self.msg_label.set_text(_("Folder is ready to receive homeworks. You may close the window"))
109                                self.apply_button.hide()
110                                self.name_entry.set_sensitive(False)
111                                self.remove_button.show()
112                else:
113                        self.msg_label.set_text(ret)
114                       
115               
116        #def apply_clicked
117       
118        def remove_clicked(self,widget):
119               
120                user_info=(self.user,self.password_entry.get_text())
121                ret=self.server.remove_path(user_info,"TeacherShareManager",self.user)
122               
123               
124                self.msg_label.set_text(_("Folder has been removed from the service."))
125                self.remove_button.hide()
126                self.apply_button.show()
127                self.name_entry.set_sensitive(True)
128               
129               
130        #def remove_clicked
131       
132       
133        def get_my_ip(self):
134                '''
135                user_list=self.discover.discover()
136                print user_list
137                for user in user_list:
138                        if user==self.user:
139                                if user_list[user]!=None:
140                                        if ":" in user_list[user]:
141                                                return "server"
142                                        else:
143                                                return user_list[user]
144                                else:
145                                        return "server"
146                '''
147
148                try:
149                        client=ServerProxy("https://localhost:9779",allow_none=True)
150                        eth=client.get_variable("","VariablesManager","CLIENT_INTERNAL_INTERFACE")
151                        if eth==None:
152                                eth=client.get_variable("","VariablesManager","INTERNAL_INTERFACE")
153                               
154                        return client.get_ip(eth)
155                       
156                       
157                except:
158                        return None
159                                       
160        #def get_my_ip
161
162
163        def detect_enter(self,widget):
164                self.apply_clicked(None)
165
166        def register_path(self):
167               
168                if self.ip!=None:
169                        user_info=(self.user,self.password_entry.get_text())
170                        tmp_server=ServerProxy("https://"+self.ip+":9779")
171                        #port=tmp_server.request_socket(user_info,"SocketManager",self.user,True,self.path)
172                        #tmp_server.start_socket(user_info,"SocketManager",port)
173                        ret=self.server.add_path(user_info,"TeacherShareManager",self.user,self.path,self.name_entry.get_text(),self.ip,0)
174                        #Register user credentials
175                        if ret:
176                                tmp_server.register_share_info(user_info,"TeacherShare",user_info[0],user_info[1],self.path)
177                        return ret
178                else:
179                        return _("Error getting IP")
180               
181               
182        #def register_path
183
184
185#class TeacherSide
186
187
188if __name__=="__main__":
189       
190        ts=TeacherSide(getpass.getuser(),sys.argv[1])
191        gtk.main()
Note: See TracBrowser for help on using the repository browser.