Mercurial > p > roundup > code
annotate roundup/backends/sessions_rdbms.py @ 5543:bc3e00a3d24b
MySQL backend fixes for Python 3.
With Python 2, text sent to and from MySQL is treated as bytes in
Python. The database may be recorded by MySQL as having some other
encoding (latin1 being the default in some MySQL versions - Roundup
does not set an encoding explicitly, unlike in back_postgresql), but
as long as MySQL's notion of the connection encoding agrees with its
notion of the database encoding, no conversions actually take place
and the bytes are stored and returned as-is.
With Python 3, text sent to and from MySQL is treated as Python
Unicode strings. When the database and connection encoding is latin1,
that means the bytes stored in the database under Python 2 are
interpreted as latin1 and converted from that to Unicode, producing
incorrect results for any non-ASCII characters; furthermore, if trying
to store new non-ASCII data in the database under Python 3, any
non-latin1 characters produce errors.
This patch arranges for both the connection and database character
sets to be UTF-8 when using Python 3, and documents a need to export
and import the database when moving from Python 2 to Python 3 with
this backend.
| author | Joseph Myers <jsm@polyomino.org.uk> |
|---|---|
| date | Sun, 16 Sep 2018 16:19:20 +0000 |
| parents | 62de601bdf6f |
| children | abee2c2c822e |
| rev | line source |
|---|---|
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 """This module defines a very basic store that's used by the CGI interface |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 to store session and one-time-key information. |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 Yes, it's called "sessions" - because originally it only defined a session |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 class. It's now also used for One Time Key handling too. |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 """ |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 __docformat__ = 'restructuredtext' |
|
5319
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
8 import os, time, logging |
|
4585
033a550812fc
Fix another XSS with the "otk" parameter.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
9 from cgi import escape |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 class BasicDatabase: |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 ''' Provide a nice encapsulation of an RDBMS table. |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 Keys are id strings, values are automatically marshalled data. |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 ''' |
|
5252
0b154486ed38
Make sure that the name property is initialized to none.
John Rouillard <rouilj@ieee.org>
parents:
5213
diff
changeset
|
16 name = None |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 def __init__(self, db): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 self.db = db |
|
5319
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
19 self.conn, self.cursor = self.db.sql_open_connection() |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 def clear(self): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 self.cursor.execute('delete from %ss'%self.name) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 |
|
2169
12cd4fa91eb7
OTK generation was busted (thanks Stuart D. Gathman)
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
24 def exists(self, infoid): |
|
12cd4fa91eb7
OTK generation was busted (thanks Stuart D. Gathman)
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
25 n = self.name |
|
12cd4fa91eb7
OTK generation was busted (thanks Stuart D. Gathman)
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
26 self.cursor.execute('select count(*) from %ss where %s_key=%s'%(n, |
|
12cd4fa91eb7
OTK generation was busted (thanks Stuart D. Gathman)
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
27 n, self.db.arg), (infoid,)) |
|
2244
ac4f295499a4
fixed journal marshalling in RDBMS backends [SF#943627]
Richard Jones <richard@users.sourceforge.net>
parents:
2169
diff
changeset
|
28 return int(self.cursor.fetchone()[0]) |
|
2169
12cd4fa91eb7
OTK generation was busted (thanks Stuart D. Gathman)
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
29 |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 _marker = [] |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 def get(self, infoid, value, default=_marker): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 n = self.name |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 self.cursor.execute('select %s_value from %ss where %s_key=%s'%(n, |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 n, n, self.db.arg), (infoid,)) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 res = self.cursor.fetchone() |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 if not res: |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 if default != self._marker: |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 return default |
|
4585
033a550812fc
Fix another XSS with the "otk" parameter.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
39 raise KeyError('No such %s "%s"'%(self.name, escape(infoid))) |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 values = eval(res[0]) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 return values.get(value, None) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 def getall(self, infoid): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 n = self.name |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 self.cursor.execute('select %s_value from %ss where %s_key=%s'%(n, |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 n, n, self.db.arg), (infoid,)) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 res = self.cursor.fetchone() |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 if not res: |
|
4585
033a550812fc
Fix another XSS with the "otk" parameter.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
49 raise KeyError('No such %s "%s"'%(self.name, escape (infoid))) |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 return eval(res[0]) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 def set(self, infoid, **newvalues): |
|
5213
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
53 """ Store all newvalues under key infoid with a timestamp in database. |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
54 |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
55 If newvalues['__timestamp'] exists and is representable as a floating point number |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
56 (i.e. could be generated by time.time()), that value is used for the <name>_time |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
57 column in the database. |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
58 """ |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 c = self.cursor |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 n = self.name |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 a = self.db.arg |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 c.execute('select %s_value from %ss where %s_key=%s'%(n, n, n, a), |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 (infoid,)) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 res = c.fetchone() |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 if res: |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 values = eval(res[0]) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 else: |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 values = {} |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
69 values.update(newvalues) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
70 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
71 if res: |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
72 sql = 'update %ss set %s_value=%s where %s_key=%s'%(n, n, |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
73 a, n, a) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
74 args = (repr(values), infoid) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
75 else: |
|
5213
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
76 if '__timestamp' in newvalues: |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
77 try: |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
78 # __timestamp must be represntable as a float. Check it. |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
79 timestamp = float(newvalues['__timestamp']) |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
80 except ValueError: |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
81 timestamp = time.time() |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
82 else: |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
83 timestamp = time.time() |
|
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
84 |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
85 sql = 'insert into %ss (%s_key, %s_time, %s_value) '\ |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 'values (%s, %s, %s)'%(n, n, n, n, a, a, a) |
|
5213
bf13b28156f3
This change didn't make it into the last commit. Allow the user to
John Rouillard <rouilj@ieee.org>
parents:
4585
diff
changeset
|
87 args = (infoid, timestamp, repr(values)) |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 c.execute(sql, args) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 |
|
4390
936bd9bf732d
session API consistency
Richard Jones <richard@users.sourceforge.net>
parents:
4362
diff
changeset
|
90 def list(self): |
|
936bd9bf732d
session API consistency
Richard Jones <richard@users.sourceforge.net>
parents:
4362
diff
changeset
|
91 c = self.cursor |
|
936bd9bf732d
session API consistency
Richard Jones <richard@users.sourceforge.net>
parents:
4362
diff
changeset
|
92 n = self.name |
|
936bd9bf732d
session API consistency
Richard Jones <richard@users.sourceforge.net>
parents:
4362
diff
changeset
|
93 c.execute('select %s_key from %ss'%(n, n)) |
|
936bd9bf732d
session API consistency
Richard Jones <richard@users.sourceforge.net>
parents:
4362
diff
changeset
|
94 return [res[0] for res in c.fetchall()] |
|
936bd9bf732d
session API consistency
Richard Jones <richard@users.sourceforge.net>
parents:
4362
diff
changeset
|
95 |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
96 def destroy(self, infoid): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 self.cursor.execute('delete from %ss where %s_key=%s'%(self.name, |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 self.name, self.db.arg), (infoid,)) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 def updateTimestamp(self, infoid): |
|
3848
7ad206564007
Use """ instead of ''' in comments, or emacs python-mode bails out.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3606
diff
changeset
|
101 """ don't update every hit - once a minute should be OK """ |
|
3606
04dc3eef67b7
reduced frequency of session timestamp update
Richard Jones <richard@users.sourceforge.net>
parents:
2244
diff
changeset
|
102 now = time.time() |
|
04dc3eef67b7
reduced frequency of session timestamp update
Richard Jones <richard@users.sourceforge.net>
parents:
2244
diff
changeset
|
103 self.cursor.execute('''update %ss set %s_time=%s where %s_key=%s |
|
04dc3eef67b7
reduced frequency of session timestamp update
Richard Jones <richard@users.sourceforge.net>
parents:
2244
diff
changeset
|
104 and %s_time < %s'''%(self.name, self.name, self.db.arg, |
|
04dc3eef67b7
reduced frequency of session timestamp update
Richard Jones <richard@users.sourceforge.net>
parents:
2244
diff
changeset
|
105 self.name, self.db.arg, self.name, self.db.arg), |
|
04dc3eef67b7
reduced frequency of session timestamp update
Richard Jones <richard@users.sourceforge.net>
parents:
2244
diff
changeset
|
106 (now, infoid, now-60)) |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
107 |
|
3989
0112e9e1d068
improvements to session management
Richard Jones <richard@users.sourceforge.net>
parents:
3920
diff
changeset
|
108 def clean(self): |
|
0112e9e1d068
improvements to session management
Richard Jones <richard@users.sourceforge.net>
parents:
3920
diff
changeset
|
109 ''' Remove session records that haven't been used for a week. ''' |
|
0112e9e1d068
improvements to session management
Richard Jones <richard@users.sourceforge.net>
parents:
3920
diff
changeset
|
110 now = time.time() |
|
0112e9e1d068
improvements to session management
Richard Jones <richard@users.sourceforge.net>
parents:
3920
diff
changeset
|
111 week = 60*60*24*7 |
|
0112e9e1d068
improvements to session management
Richard Jones <richard@users.sourceforge.net>
parents:
3920
diff
changeset
|
112 old = now - week |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
113 self.cursor.execute('delete from %ss where %s_time < %s'%(self.name, |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
114 self.name, self.db.arg), (old, )) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
115 |
|
5319
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
116 def commit(self): |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
117 logger = logging.getLogger('roundup.hyperdb.backend') |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
118 logger.info('commit %s' % self.name) |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
119 self.conn.commit() |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
120 self.cursor = self.conn.cursor() |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
121 |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
122 def close(self): |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
123 self.conn.close() |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5252
diff
changeset
|
124 |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
125 class Sessions(BasicDatabase): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
126 name = 'session' |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
127 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
128 class OneTimeKeys(BasicDatabase): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
129 name = 'otk' |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 |
|
3920
416606b09b27
fix vim modelines
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3918
diff
changeset
|
131 # vim: set et sts=4 sw=4 : |
