source: lliurex-homework-harvester/trunk/fuentes/install-files/usr/share/nautilus-python/extensions/lliurex-homework-harvester-extension.py @ 1863

Last change on this file since 1863 was 1863, checked in by daduve, 4 years ago

Adding new files

File size: 3.3 KB
Line 
1import urllib
2from gi.repository import Nautilus,GObject
3import pwd
4import getpass
5import grp
6import subprocess
7import os
8import os.path
9
10import locale
11import gettext
12
13#locale.textdomain("lliurex-homework-harvester")
14#gettext.textdomain("lliurex-homework-harvester")
15#_=locale.gettext
16
17def get_translation(line):
18       
19        try:
20       
21                trans={}
22                trans["Set this folder to receive homeworks"]={}
23                trans["Set this folder to receive homeworks"]["es"]="Marcar esta carpeta para recibir trabajos"
24                trans["Set this folder to receive homeworks"]["qcv"]="Establix esta carpeta per a rebre els treballs"
25                trans["Send file to teacher"]={}
26                trans["Send file to teacher"]["es"]="Enviar fichero a profesor/a"
27                trans["Send file to teacher"]["qcv"]="Envia el fitxer al professor o professor/a"
28               
29                lng=os.getenv("LANG")
30               
31               
32               
33                if lng.find("ca")==0 or lng.find("qcv")==0:
34                        try:
35                                ret_line=trans[line]["qcv"]
36                                return ret_line
37                        except:
38                                return line
39                               
40                if lng.find("es")==0:
41                        try:
42                                ret_line=trans[line]["es"]
43                                return ret_line
44                        except:
45                                return line
46                else:
47                        return line
48               
49        except:
50                return line
51       
52       
53#def get_translation
54
55
56_=get_translation
57
58
59
60
61
62class LliurexHomeworkExtension(GObject.GObject,Nautilus.MenuProvider):
63       
64        def __init__(self):
65               
66                self.file_list=[]
67               
68        #def init
69               
70        def get_groups(self,user):
71               
72                groups=[]
73                for g in grp.getgrall():
74                        if user in g.gr_mem:
75                                groups.append(g.gr_name)
76                return groups
77               
78               
79        #def get_groups
80       
81        def check_ownership(self,user,path):
82               
83                info=os.stat(path)
84               
85                path_user_owner=info[4]
86                path_group_owner=info[5]
87               
88                info=pwd.getpwnam(user)
89               
90                user_uid=info[2]
91                group_uid=info[3]
92               
93                if path_user_owner==user_uid or path_group_owner==group_uid:
94                        return True
95                else:
96                        return False
97               
98        #def check_ownership
99       
100       
101        def teachers_cb(self,menu,path):
102               
103                command=[]
104                command.append("/usr/bin/lliurex-homework-harvester")
105                command.append(path)
106                subprocess.Popen(command,stdout=subprocess.PIPE)               
107
108        #def teachers_cb
109               
110        def students_cb(self,menu,files):
111               
112                command=[]
113                command.append("/usr/bin/lliurex-homework-sender")
114                for file in files:
115                        command.append(file)
116                subprocess.Popen(command,stdout=subprocess.PIPE)
117               
118        #def students_cb
119
120        def get_file_items(self, window, files):
121               
122                file_list=[]
123                for file in files:
124                        filename = urllib.unquote(file.get_uri()[7:])
125                        file_list.append(str(filename))
126       
127                user=getpass.getuser()
128                group_list=self.get_groups(user)
129       
130                if "teachers" in group_list:
131
132                        #one item only
133                        if len(file_list)>1 or len(file_list)==0:
134                                return
135                        #folders only
136                        if not os.path.isdir(file_list[0]):
137                                return
138                       
139                        if not self.check_ownership(user,file_list[0]):
140                                return
141
142                       
143                        item = Nautilus.MenuItem(name='Nautilus::set_harverst_folder',
144                                                 label=_('Set this folder to receive homeworks')+"...",
145                                                 tip=_('Set this folder to receive homeworks'),
146                                                 icon='go-jump')
147                        item.connect('activate', self.teachers_cb, file_list[0])
148                       
149                       
150                        return item,                           
151                       
152                elif "students" in group_list:
153                        #STUDENT SIDE
154                        #files only
155                       
156                        for item in file_list:
157                                if not os.path.isfile(item):
158                                        return
159                       
160                       
161                        item = Nautilus.MenuItem(name='Nautilus::send_homework',
162                                                 label=_('Send file to teacher')+"...",
163                                                 tip=_('Send file to teacher'),
164                                                 icon='go-jump')
165                        item.connect('activate', self.students_cb, file_list)
166                        return item,
167                       
168               
169                       
170                else:
171                        return
172
173
174
Note: See TracBrowser for help on using the repository browser.