diff roundup/hyperdb.py @ 7464:82bbb95e5690 issue2550923_computed_property

merge from tip into issue2550923_computed_property
author John Rouillard <rouilj@ieee.org>
date Thu, 08 Jun 2023 00:10:32 -0400
parents ca90f7270cd4 76a21cf791b9
children 14a8e11f3a87
line wrap: on
line diff
--- a/roundup/hyperdb.py	Mon Nov 07 22:58:38 2022 -0500
+++ b/roundup/hyperdb.py	Thu Jun 08 00:10:32 2023 -0400
@@ -179,10 +179,12 @@
             return None
         try:
             return password.Password(encrypted=value, scheme=self.scheme,
-                                     strict=True)
+                                     strict=True,
+                                     config=kw['db'].config)
         except password.PasswordValueError as message:
-            raise HyperdbValueError(_('property %s: %s') %
-                                    (kw['propname'], message))
+            raise HyperdbValueError(_('property %(property)s: %(errormsg)s') %
+                                    {'property': kw['propname'],
+                                     'errormsg':  message})
 
     def sort_repr(self, cls, val, name):
         if not val:
@@ -208,9 +210,11 @@
         try:
             value = date.Date(value, self.offset(db))
         except ValueError as message:
-            raise HyperdbValueError(_('property %s: %r is an invalid '
-                                      'date (%s)') % (kw['propname'],
-                                                      value, message))
+            raise HyperdbValueError(_(
+                'property %(property)s: %(value)r is an invalid '
+                'date (%(errormsg)s)') % {'property': kw['propname'],
+                                          'value': value,
+                                          'errormsg': message})
         return value
 
     def range_from_raw(self, value, db):
@@ -229,9 +233,12 @@
         try:
             value = date.Interval(value)
         except ValueError as message:
-            raise HyperdbValueError(_('property %s: %r is an invalid '
-                                      'date interval (%s)') %
-                                    (kw['propname'], value, message))
+            raise HyperdbValueError(_(
+                'property %(property)s: %(value)r is an invalid '
+                'date interval (%(errormsg)s)') %
+                                    {'property': kw['propname'],
+                                     'value': value,
+                                     'errormsg': message})
         return value
 
     def sort_repr(self, cls, val, name):
@@ -483,8 +490,10 @@
         try:
             value = float(value)
         except ValueError:
-            raise HyperdbValueError(_('property %s: %r is not a number') %
-                                    (kw['propname'], value))
+            raise HyperdbValueError(_(
+                'property %(property)s: %(value)r is not a number') %
+                                    {'property': kw['propname'],
+                                     'value': value})
         return value
 
 
@@ -495,8 +504,10 @@
         try:
             value = int(value)
         except ValueError:
-            raise HyperdbValueError(_('property %s: %r is not an integer') %
-                                    (kw['propname'], value))
+            raise HyperdbValueError(_(
+                'property %(property)s: %(value)r is not an integer') % {
+                    'property': kw['propname'],
+                    'value': value})
         return value
 
 
@@ -739,7 +750,8 @@
                 else:
                     assert not isinstance(p.val, Exact_Match)
                     filterspec[p.name] = p.val
-        self.set_val(self.cls._filter(search_matches, filterspec, sort and self,
+        self.set_val(self.cls._filter(search_matches, filterspec,
+                                      sort and self,
                                       retired=retired,
                                       exact_match_spec=exact_match_spec))
         return self.val
@@ -1237,8 +1249,9 @@
         db.addclass(self)
 
         actions = "create set retire restore".split()
-        self.auditors = dict([(a, PrioList()) for a in actions])
-        self.reactors = dict([(a, PrioList()) for a in actions])
+        skey = lambda x: x[:2]
+        self.auditors = dict([(a, PrioList(key=skey)) for a in actions])
+        self.reactors = dict([(a, PrioList(key=skey)) for a in actions])
 
     def __repr__(self):
         """Slightly more useful representation
@@ -2027,8 +2040,12 @@
             try:
                 value = linkcl.lookup(value)
             except KeyError:
-                raise HyperdbValueError(_('property %s: %r is not a %s.') % (
-                    propname, value, prop.classname))
+                raise HyperdbValueError(_(
+                    'property %(property)s: %(value)r '
+                    'is not a %(classname)s.') % {
+                        'property': propname,
+                        'value': value,
+                        'classname': prop.classname})
         else:
             raise HyperdbValueError(_('you may only enter ID values '
                                       'for property %s') % propname)
@@ -2064,8 +2081,10 @@
     try:
         proptype = properties[propname]
     except KeyError:
-        raise HyperdbValueError(_('%r is not a property of %s') % (
-            propname, klass.classname))
+        raise HyperdbValueError(_(
+            '%(property)r is not a property of %(classname)s') % {
+                'property': propname,
+                'classname': klass.classname})
 
     # if we got a string, strip it now
     if isinstance(value, type('')):

Roundup Issue Tracker: http://roundup-tracker.org/