32f0f2a03d02ebc3855e77d44d0c83377a21f788
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

1) #!/usr/bin/python
2) # -*- coding: utf-8 -*-
3) 
4) import json
5) import logging
6) log = logging.getLogger(__name__)
7) import MySQLdb
Benjamin Renard Implementation of groups ob...

Benjamin Renard authored 10 years ago

8) from mycoserver import group
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

9) 
10) class DB(object):
11) 
12) 	def __init__(self,host,user,pwd,db):
13) 		self.host = host
14) 		self.user = user
15) 		self.pwd  = pwd
16) 		self.db   = db
17) 		self.con  = 0
18) 
19) 	def connect(self):
20) 		if self.con == 0:
21) 			try:
22) 				con = MySQLdb.connect(self.host,self.user,self.pwd,self.db)
23) 				self.con = con
24) 				return True
25) 			except Exception, e:
26) 				log.fatal('Error connecting to database : %s' % e)
27) 				return
28) 
29) 	def do_sql(self,sql):
30) 		try:
31) 			c=self.con.cursor()
32) 			c.execute(sql)
33) 			self.con.commit()
34) 			return c
35) 		except Exception,e:
36) 			log.error('Error executing request %s : %s' % (sql,e))
37) 			return False
38) 
39) 	def select(self,sql):
40) 		ret=self.do_sql(sql)
41) 		if ret!=False:
42) 			return ret.fetchall()
43) 		return ret
44) 
45) 	def login(self,email,password):
46) 		ret=self.select("SELECT email,name,password FROM users WHERE email='%s' AND password='%s'" % (email,password))
47) 		log.debug(ret)
48) 		if ret:
49) 			if len(ret)==1:
50) 				return {
51) 					'email': ret[0][0],
52) 					'name': ret[0][1]
53) 				}
54) 			elif len(ret)>=1:
55) 				log.warning('Duplicate user %s in database' % email)
56) 		elif ret==():
57) 			return { 'loginerror': 'Utilisateur inconnu' }
58) 		return { 'loginerror': 'Erreur inconnu' }
59) 
Benjamin Renard Add subscribe method

Benjamin Renard authored 10 years ago

60) 	def subscribe(self,email,name,password):
61) 		ret=self.select("SELECT count(*) as count FROM users WHERE email='%s'" % (email))
62) 		log.debug(ret)
63) 		if ret[0][0]!=0:
64) 			return {'subscribeerror': u'Cette adresse mail est déjà associés a un compte !'}
65) 		else:
66) 			if self.do_sql("INSERT INTO users (email,name,password) VALUES ('%s','%s','%s')" % (email,name,password)):
67) 				return {
68) 					'email': email,
69) 					'name': name,
70) 					'password': password
71) 				}
72) 		return {'subscribeerror': u'Une erreur est survenue durant votre inscription :('}
73) 
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

74) 	def sync_group(self,email,groups):
75) 		db_groups=self.get_group(email)
76) 		if db_groups!=False:
Benjamin Renard Implementation of groups ob...

Benjamin Renard authored 10 years ago

77) 			db_grouplist=group.GroupList()
78) 			db_grouplist.load(db_groups)
79) 			grouplist=group.GroupList()
80) 			grouplist.load(groups)
81) 			synced_grouplist=db_grouplist.sync(grouplist)
82) 			if self.set_group(email,synced_grouplist.export()):
83) 				log.debug('Groups successfuly synchronized, return result')
84) 				return {'groups': synced_grouplist.export()}
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

85) 			else:
Benjamin Renard Implementation of groups ob...

Benjamin Renard authored 10 years ago

86) 				return {'syncerror': 'Erreur en modifiant les informations de la base de donnees'}
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

87) 		return {'syncerror': 'Erreur inconnu'}
88) 
89) 	def get_group(self,email):
90) 		ret=self.select("SELECT groups FROM groups WHERE email='%s'" % email)
91) 		if ret!=False:
92) 			if len(ret)==1:
93) 				return json.loads(ret[0][0])
94) 			else:
Benjamin Renard Support lastChange field in...

Benjamin Renard authored 10 years ago

95) 				return {'groups': {}}
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

96) 		else:
97) 			return False