Skip to content

Commit 6ac5c4f

Browse files
author
Justus Pendleton
committed
i18n for hyperdb and backend errors
I got all of the hyperdb exceptions. There were some ValueErrors in some of the backends that I left untouched. I wasn't sure how to regenerate the roundup.pot file so that still needs to be done I think this takes care of [SF#1069258]
1 parent aab12a7 commit 6ac5c4f

File tree

5 files changed

+52
-43
lines changed

5 files changed

+52
-43
lines changed

roundup/backends/back_anydbm.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
#$Id: back_anydbm.py,v 1.207 2007-09-16 06:51:48 jpend Exp $
18+
#$Id: back_anydbm.py,v 1.208 2007-09-27 06:18:53 jpend Exp $
1919
'''This module defines a backend that saves the hyperdatabase in a
2020
database chosen by anydbm. It is guaranteed to always be available in python
2121
versions >2.1.1 (the dumbdbm fallback in 2.1.1 and earlier has several
@@ -215,7 +215,8 @@ def determine_db_type(self, path):
215215
if os.path.exists(path):
216216
db_type = whichdb.whichdb(path)
217217
if not db_type:
218-
raise hyperdb.DatabaseError, "Couldn't identify database type"
218+
raise hyperdb.DatabaseError, \
219+
_("Couldn't identify database type")
219220
elif os.path.exists(path+'.db'):
220221
# if the path ends in '.db', it's a dbm database, whether
221222
# anydbm says it's dbhash or not!
@@ -241,8 +242,8 @@ def opendb(self, name, mode):
241242
dbm = __import__(db_type)
242243
except ImportError:
243244
raise hyperdb.DatabaseError, \
244-
"Couldn't open database - the required module '%s'"\
245-
" is not available"%db_type
245+
_("Couldn't open database - the required module '%s'"\
246+
" is not available")%db_type
246247
if __debug__:
247248
logging.getLogger('hyperdb').debug("opendb %r.open(%r, %r)"%(db_type, path,
248249
mode))
@@ -791,7 +792,7 @@ def create_inner(self, **propvalues):
791792
raise KeyError, '"id" is reserved'
792793

793794
if self.db.journaltag is None:
794-
raise hyperdb.DatabaseError, 'Database open read-only'
795+
raise hyperdb.DatabaseError, _('Database open read-only')
795796

796797
if propvalues.has_key('creation') or propvalues.has_key('activity'):
797798
raise KeyError, '"creation" and "activity" are reserved'
@@ -1066,7 +1067,7 @@ def set_inner(self, nodeid, **propvalues):
10661067
raise KeyError, '"id" is reserved'
10671068

10681069
if self.db.journaltag is None:
1069-
raise hyperdb.DatabaseError, 'Database open read-only'
1070+
raise hyperdb.DatabaseError, _('Database open read-only')
10701071

10711072
node = self.db.getnode(self.classname, nodeid)
10721073
if node.has_key(self.db.RETIRED_FLAG):
@@ -1263,7 +1264,7 @@ def retire(self, nodeid):
12631264
to modify the "creation" or "activity" properties cause a KeyError.
12641265
'''
12651266
if self.db.journaltag is None:
1266-
raise hyperdb.DatabaseError, 'Database open read-only'
1267+
raise hyperdb.DatabaseError, _('Database open read-only')
12671268

12681269
self.fireAuditors('retire', nodeid, None)
12691270

@@ -1281,7 +1282,7 @@ def restore(self, nodeid):
12811282
Make node available for all operations like it was before retirement.
12821283
'''
12831284
if self.db.journaltag is None:
1284-
raise hyperdb.DatabaseError, 'Database open read-only'
1285+
raise hyperdb.DatabaseError, _('Database open read-only')
12851286

12861287
node = self.db.getnode(self.classname, nodeid)
12871288
# check if key property was overrided
@@ -1327,7 +1328,7 @@ def destroy(self, nodeid):
13271328
support the session storage of the cgi interface.
13281329
'''
13291330
if self.db.journaltag is None:
1330-
raise hyperdb.DatabaseError, 'Database open read-only'
1331+
raise hyperdb.DatabaseError, _('Database open read-only')
13311332
self.db.destroynode(self.classname, nodeid)
13321333

13331334
def history(self, nodeid):
@@ -1897,7 +1898,7 @@ def import_list(self, propnames, proplist):
18971898
Return the nodeid of the node imported.
18981899
'''
18991900
if self.db.journaltag is None:
1900-
raise hyperdb.DatabaseError, 'Database open read-only'
1901+
raise hyperdb.DatabaseError, _('Database open read-only')
19011902
properties = self.getprops()
19021903

19031904
# make the new node's property map

roundup/backends/back_metakit.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: back_metakit.py,v 1.117 2007-08-31 15:44:02 jpend Exp $
1+
# $Id: back_metakit.py,v 1.118 2007-09-27 06:18:53 jpend Exp $
22
'''Metakit backend for Roundup, originally by Gordon McMillan.
33
44
Known Current Bugs:
@@ -51,6 +51,7 @@
5151
import locking
5252
from roundup.date import Range
5353
from blobfiles import files_in_dir
54+
from roundup.i18n import _
5455

5556
# view modes for opening
5657
# XXX FIXME BPK -> these don't do anything, they are ignored
@@ -563,7 +564,7 @@ def set_inner(self, nodeid, **propvalues):
563564
if propvalues.has_key('id'):
564565
raise KeyError, '"id" is reserved'
565566
if self.db.journaltag is None:
566-
raise hyperdb.DatabaseError, 'Database open read-only'
567+
raise hyperdb.DatabaseError, _('Database open read-only')
567568
view = self.getview(READWRITE)
568569

569570
# node must exist & not be retired
@@ -830,7 +831,7 @@ def retire(self, nodeid):
830831
methods, and other nodes may reuse the values of their key properties.
831832
'''
832833
if self.db.journaltag is None:
833-
raise hyperdb.DatabaseError, 'Database open read-only'
834+
raise hyperdb.DatabaseError, _('Database open read-only')
834835
self.fireAuditors('retire', nodeid, None)
835836
view = self.getview(READWRITE)
836837
ndx = view.find(id=int(nodeid))
@@ -862,7 +863,7 @@ def restore(self, nodeid):
862863
Make node available for all operations like it was before retirement.
863864
'''
864865
if self.db.journaltag is None:
865-
raise hyperdb.DatabaseError, 'Database open read-only'
866+
raise hyperdb.DatabaseError, _('Database open read-only')
866867

867868
# check if key property was overrided
868869
key = self.getkey()
@@ -1597,7 +1598,7 @@ def import_list(self, propnames, proplist):
15971598
Return the nodeid of the node imported.
15981599
'''
15991600
if self.db.journaltag is None:
1600-
raise hyperdb.DatabaseError, 'Database open read-only'
1601+
raise hyperdb.DatabaseError, _('Database open read-only')
16011602
properties = self.getprops()
16021603

16031604
d = {}

roundup/backends/rdbms_common.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
#$Id: rdbms_common.py,v 1.191 2007-09-27 06:12:57 jpend Exp $
18+
#$Id: rdbms_common.py,v 1.192 2007-09-27 06:18:53 jpend Exp $
1919
""" Relational database (SQL) backend common code.
2020
2121
Basics:
@@ -54,6 +54,7 @@
5454
Multilink, DatabaseError, Boolean, Number, Node
5555
from roundup.backends import locking
5656
from roundup.support import reversed
57+
from roundup.i18n import _
5758

5859
# support
5960
from blobfiles import FileStorage
@@ -1316,7 +1317,7 @@ def create_inner(self, **propvalues):
13161317
raise KeyError, '"id" is reserved'
13171318

13181319
if self.db.journaltag is None:
1319-
raise DatabaseError, 'Database open read-only'
1320+
raise DatabaseError, _('Database open read-only')
13201321

13211322
if propvalues.has_key('creator') or propvalues.has_key('actor') or \
13221323
propvalues.has_key('creation') or propvalues.has_key('activity'):
@@ -1545,7 +1546,7 @@ def set_inner(self, nodeid, **propvalues):
15451546
raise KeyError, '"id" is reserved'
15461547

15471548
if self.db.journaltag is None:
1548-
raise DatabaseError, 'Database open read-only'
1549+
raise DatabaseError, _('Database open read-only')
15491550

15501551
node = self.db.getnode(self.classname, nodeid)
15511552
if self.is_retired(nodeid):
@@ -1751,7 +1752,7 @@ def retire(self, nodeid):
17511752
methods, and other nodes may reuse the values of their key properties.
17521753
"""
17531754
if self.db.journaltag is None:
1754-
raise DatabaseError, 'Database open read-only'
1755+
raise DatabaseError, _('Database open read-only')
17551756

17561757
self.fireAuditors('retire', nodeid, None)
17571758

@@ -1771,7 +1772,7 @@ def restore(self, nodeid):
17711772
Make node available for all operations like it was before retirement.
17721773
"""
17731774
if self.db.journaltag is None:
1774-
raise DatabaseError, 'Database open read-only'
1775+
raise DatabaseError, _('Database open read-only')
17751776

17761777
node = self.db.getnode(self.classname, nodeid)
17771778
# check if key property was overrided
@@ -1824,7 +1825,7 @@ def destroy(self, nodeid):
18241825
if there are any references to the node.
18251826
"""
18261827
if self.db.journaltag is None:
1827-
raise DatabaseError, 'Database open read-only'
1828+
raise DatabaseError, _('Database open read-only')
18281829
self.db.destroynode(self.classname, nodeid)
18291830

18301831
def history(self, nodeid):
@@ -2432,7 +2433,7 @@ def import_list(self, propnames, proplist):
24322433
Return the nodeid of the node imported.
24332434
"""
24342435
if self.db.journaltag is None:
2435-
raise DatabaseError, 'Database open read-only'
2436+
raise DatabaseError, _('Database open read-only')
24362437
properties = self.getprops()
24372438

24382439
# make the new node's property map

roundup/backends/sessions_dbm.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#$Id: sessions_dbm.py,v 1.8 2007-09-27 06:12:57 jpend Exp $
1+
#$Id: sessions_dbm.py,v 1.9 2007-09-27 06:18:53 jpend Exp $
22
"""This module defines a very basic store that's used by the CGI interface
33
to store session and one-time-key information.
44
@@ -9,6 +9,7 @@
99

1010
import anydbm, whichdb, os, marshal, time
1111
from roundup import hyperdb
12+
from roundup.i18n import _
1213

1314
class BasicDatabase:
1415
''' Provide a nice encapsulation of an anydbm store.
@@ -45,7 +46,8 @@ def cache_db_type(self, path):
4546
if os.path.exists(path):
4647
db_type = whichdb.whichdb(path)
4748
if not db_type:
48-
raise hyperdb.DatabaseError, "Couldn't identify database type"
49+
raise hyperdb.DatabaseError, \
50+
_("Couldn't identify database type")
4951
elif os.path.exists(path+'.db'):
5052
# if the path ends in '.db', it's a dbm database, whether
5153
# anydbm says it's dbhash or not!
@@ -156,3 +158,4 @@ class Sessions(BasicDatabase):
156158
class OneTimeKeys(BasicDatabase):
157159
name = 'otks'
158160

161+
# vim: set sts ts=4 sw=4 et si :

roundup/hyperdb.py

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,20 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
# $Id: hyperdb.py,v 1.130 2007-09-27 06:12:56 jpend Exp $
18+
# $Id: hyperdb.py,v 1.131 2007-09-27 06:18:53 jpend Exp $
1919

2020
"""Hyperdatabase implementation, especially field types.
2121
"""
2222
__docformat__ = 'restructuredtext'
2323

2424
# standard python modules
25-
import sys, os, time, re, shutil, weakref
25+
import os, re, shutil, weakref
2626
from sets import Set
2727

2828
# roundup modules
2929
import date, password
3030
from support import ensureParentsExist, PrioList, sorted, reversed
31+
from roundup.i18n import _
3132

3233
#
3334
# Types
@@ -73,15 +74,17 @@ def from_raw(self, value, **kw):
7374
p = password.Password()
7475
p.scheme = m.group(1)
7576
if p.scheme not in 'SHA crypt plaintext'.split():
76-
raise HyperdbValueError, 'property %s: unknown encryption '\
77-
'scheme %r'%(kw['propname'], p.scheme)
77+
raise HyperdbValueError, \
78+
('property %s: unknown encryption scheme %r') %\
79+
(kw['propname'], p.scheme)
7880
p.password = m.group(2)
7981
value = p
8082
else:
8183
try:
8284
value = password.Password(value)
8385
except password.PasswordValueError, message:
84-
raise HyperdbValueError, 'property %s: %s'%(kw['propname'], message)
86+
raise HyperdbValueError, \
87+
_('property %s: %s')%(kw['propname'], message)
8588
return value
8689
def sort_repr (self, cls, val, name):
8790
if not val:
@@ -101,8 +104,8 @@ def from_raw(self, value, db, **kw):
101104
try:
102105
value = date.Date(value, self.offset(db))
103106
except ValueError, message:
104-
raise HyperdbValueError, 'property %s: %r is an invalid '\
105-
'date (%s)'%(kw['propname'], value, message)
107+
raise HyperdbValueError, _('property %s: %r is an invalid '\
108+
'date (%s)')%(kw['propname'], value, message)
106109
return value
107110
def range_from_raw(self, value, db):
108111
"""return Range value from given raw value with offset correction"""
@@ -118,8 +121,8 @@ def from_raw(self, value, **kw):
118121
try:
119122
value = date.Interval(value)
120123
except ValueError, message:
121-
raise HyperdbValueError, 'property %s: %r is an invalid '\
122-
'date interval (%s)'%(kw['propname'], value, message)
124+
raise HyperdbValueError, _('property %s: %r is an invalid '\
125+
'date interval (%s)')%(kw['propname'], value, message)
123126
return value
124127
def sort_repr (self, cls, val, name):
125128
if not val:
@@ -213,8 +216,8 @@ def from_raw(self, value, db, klass, propname, itemid, **kw):
213216
try:
214217
curvalue.remove(itemid)
215218
except ValueError:
216-
raise HyperdbValueError, 'property %s: %r is not ' \
217-
'currently an element'%(propname, item)
219+
raise HyperdbValueError, _('property %s: %r is not ' \
220+
'currently an element')%(propname, item)
218221
else:
219222
newvalue.append(itemid)
220223
if itemid not in curvalue:
@@ -257,7 +260,7 @@ def from_raw(self, value, **kw):
257260
try:
258261
value = float(value)
259262
except ValueError:
260-
raise HyperdbValueError, 'property %s: %r is not a number'%(
263+
raise HyperdbValueError, _('property %s: %r is not a number')%(
261264
kw['propname'], value)
262265
return value
263266
#
@@ -270,7 +273,7 @@ def splitDesignator(designator, dre=re.compile(r'([^\d]+)(\d+)')):
270273
'''
271274
m = dre.match(designator)
272275
if m is None:
273-
raise DesignatorError, '"%s" not a node designator'%designator
276+
raise DesignatorError, _('"%s" not a node designator')%designator
274277
return m.group(1), m.group(2)
275278

276279
class Proptree(object):
@@ -943,15 +946,15 @@ def setlabelprop(self, labelprop):
943946
resolution order.
944947
"""
945948
if labelprop not in self.getprops():
946-
raise ValueError, "Not a property name: %s" % labelprop
949+
raise ValueError, _("Not a property name: %s") % labelprop
947950
self._labelprop = labelprop
948951

949952
def setorderprop(self, orderprop):
950953
"""Set the order property. Used for override of orderprop
951954
resolution order
952955
"""
953956
if orderprop not in self.getprops():
954-
raise ValueError, "Not a property name: %s" % orderprop
957+
raise ValueError, _("Not a property name: %s") % orderprop
955958
self._orderprop = orderprop
956959

957960
def getkey(self):
@@ -1234,11 +1237,11 @@ def convertLinkValue(db, propname, prop, value, idre=re.compile('^\d+$')):
12341237
try:
12351238
value = linkcl.lookup(value)
12361239
except KeyError, message:
1237-
raise HyperdbValueError, 'property %s: %r is not a %s.'%(
1240+
raise HyperdbValueError, _('property %s: %r is not a %s.')%(
12381241
propname, value, prop.classname)
12391242
else:
1240-
raise HyperdbValueError, 'you may only enter ID values '\
1241-
'for property %s'%propname
1243+
raise HyperdbValueError, _('you may only enter ID values '\
1244+
'for property %s')%propname
12421245
return value
12431246

12441247
def fixNewlines(text):
@@ -1267,7 +1270,7 @@ def rawToHyperdb(db, klass, itemid, propname, value, **kw):
12671270
try:
12681271
proptype = properties[propname]
12691272
except KeyError:
1270-
raise HyperdbValueError, '%r is not a property of %s'%(propname,
1273+
raise HyperdbValueError, _('%r is not a property of %s')%(propname,
12711274
klass.classname)
12721275

12731276
# if we got a string, strip it now

0 commit comments

Comments
 (0)