source: lliurex-moodle/trunk/fuentes/lliurex-moodle.install-files/usr/share/n4d/hooks/golem/51_moodle_create-cohorte.py @ 283

Last change on this file since 283 was 283, checked in by mabarracus, 5 years ago

Copy trusty code to xenial

File size: 4.4 KB
Line 
1import MySQLdb 
2import ConfigParser
3import time
4import os
5
6class Moodle_updater:
7        def __init__(self,state,args):
8                list_functions = {
9                        'add_to_group':self.join_group,
10                        'remove_from_group':self.drop_group,
11                        'add_group':self.add_group,
12                        'gescen_full':self.gesita,
13                        'gescen_partial':self.gesita,
14                        'add_generic_users': self.add_generic_group
15                }
16                self.user = False
17                self.password = False
18                try:
19                        self.function_to_execute = list_functions[state]
20                except:
21                        self.function_to_execute = None
22                self.args = args
23        #def __init__
24       
25        def connect(self):
26                try:
27                        self.connection=MySQLdb.connect(host="localhost",user=self.user,passwd=self.password,db='moodle')
28                        return True
29                except:
30                        print "[!] Error connecting to MySQL [!]"
31                        return False
32        #def connect
33
34        def readPassword(self): 
35                try:
36                        config = ConfigParser.ConfigParser()
37                        config.read('/root/.my.cnf')
38                        self.user = config.get("mysql","user")
39                        self.password= config.get("mysql","password")
40                except:
41                        self.user = False
42                        self.password = False
43        #def readPassword
44       
45        def gesita(self):
46                tmp_file = open("/tmp/gesita_import",'r')
47                lines_file = tmp_file.readlines()
48                for aux_process in lines_file:
49                        action_list = aux_process.split(';')
50                        if action_list[0] == 'add':
51                                self._add_group(action_list[1].rstrip())
52                        elif action_list[0] == 'join':
53                                self._join_group(action_list[1],action_list[2].rstrip())
54                        elif action_list[0] == 'drop':
55                                self._drop_group(action_list[1],action_list[2].rstrip())
56                os.remove('/tmp/gesita_import')
57        #def gesita
58       
59        def add_generic_group(self):
60                try:
61                        self._join_group(self.args['group'],self.args['user']['uid'])
62                        print "Todo va bien !!!!!!!!!!!!!!!!!"
63                except Exception as e:
64                        print "********************explotando******************"
65                        print e
66
67
68        def join_group(self):
69                self._join_group(self.args['group']['cn'],self.args['user']['uid'])
70        #def join_group
71       
72        def _join_group(self,group_name,user_name):
73                self.readPassword()
74
75                if self.connect():
76                        sql = "Select id from mdl_cohort where name='"+group_name+"'"
77                        cursor = self.connection.cursor()
78                        cursor.execute(sql)
79                        output = cursor.fetchone()
80                        if output != None and len(output) > 0:
81                                id_group = output[0]
82                                sql = "Select id from mdl_user where username='"+user_name+"'"
83                                cursor.execute(sql)
84                                output = cursor.fetchone()
85                                if output != None and len(output) > 0:
86                                        aux_time = time.time()
87                                        id_user = output[0]
88                                        try:
89                                                sql = "INSERT into mdl_cohort_members (cohortid,userid,timeadded) VALUES ("+str(id_group)+","+str(id_user)+","+str(aux_time)+")"
90                                                cursor.execute(sql)
91                                                self.connection.commit()
92                                        except Exception as e:
93                                                print e
94                                        cursor.close()
95        #def join_group
96       
97        def drop_group(self):
98                self._drop_group(self.args['group']['cn'],self.args['user']['uid'])
99        #def drop_group
100       
101        def _drop_group(self,group_name,user_name):
102                self.readPassword()
103                if self.connect():
104                        sql = "Select id from mdl_cohort where name='"+group_name+"'"
105                        cursor = self.connection.cursor()
106                        cursor.execute(sql)
107                        output = cursor.fetchone()
108                        if output != None and len(output) > 0:
109                                id_group = output[0]
110                                sql = "Select id from mdl_user where username='"+user_name+"'"
111                                cursor.execute(sql)
112                                output = cursor.fetchone()
113                                if output != None and len(output) > 0:
114                                        aux_time = time.time()
115                                        id_user = output[0]
116                                        sql = "DELETE FROM mdl_cohort_members WHERE cohortid="+str(id_group)+" AND userid="+str(id_user)
117                                        cursor.execute(sql)
118                                        self.connection.commit()
119                                        cursor.close()         
120        #def _drop_group
121       
122        def add_group(self):
123                self._add_group(self.args['group']['cn'])
124        #def add_group
125       
126        def _add_group(self,group_name):
127                self.readPassword()
128                if self.connect():
129                        aux_time = time.time()
130                        cursor = self.connection.cursor()
131                        sql = "select count(*) from mdl_cohort where name = '"+ group_name +"';"
132                        cursor.execute(sql)
133                        output = cursor.fetchone()
134                        if output == None or (len(output) > 0 and output[0] < 1):
135                                sql = "INSERT into mdl_cohort(contextid,name,idnumber,description,descriptionformat,component,timecreated,timemodified) VALUES (1,'"+group_name+"','','',1,'',"+str(aux_time)+","+str(aux_time)+")"
136                                cursor.execute(sql)
137                                self.connection.commit()
138                        cursor.close()
139        #def _add_group
140       
141        def execute(self):
142                print self.function_to_execute
143                if self.function_to_execute != None:
144                        self.function_to_execute()
145        #def execute
146
147aux = Moodle_updater(NEVERLAND_VAR,ARGV)
148print "*********************"
149print NEVERLAND_VAR, ARGV
150print "*********************"
151aux.execute()
Note: See TracBrowser for help on using the repository browser.