Mercurial > p > roundup > code
diff roundup/cgi/templating.py @ 3165:d2eb7af1b55b maint-0.8
merge from HEAD
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Mon, 14 Feb 2005 04:58:18 +0000 |
| parents | 124638970f0a |
| children | f412ae175b4d |
line wrap: on
line diff
--- a/roundup/cgi/templating.py Mon Feb 14 04:37:37 2005 +0000 +++ b/roundup/cgi/templating.py Mon Feb 14 04:58:18 2005 +0000 @@ -326,6 +326,7 @@ ''' def __init__(self, client): self._client = client + self._ = client._ self._db = client.db # we want config to be exposed @@ -441,6 +442,7 @@ ''' def __init__(self, client, classname, anonymous=0): self._client = client + self._ = client._ self._db = client.db self._anonymous = anonymous @@ -657,7 +659,7 @@ def history(self): if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') return self._('New node - no history') def renderWith(self, name, **kwargs): @@ -776,7 +778,7 @@ def history(self, direction='descending', dre=re.compile('^\d+$')): if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') # pre-load the history with the current state current = {} @@ -1064,6 +1066,7 @@ anonymous=0): self._client = client self._db = client.db + self._ = client._ self._classname = classname self._nodeid = nodeid self._prop = prop @@ -1149,7 +1152,7 @@ addresses and designators ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: return '' @@ -1170,7 +1173,7 @@ This requires the StructureText module to be installed separately. ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') s = self.plain(escape=escape) if not StructuredText: @@ -1214,7 +1217,7 @@ ''' Render the value of the property as an obscured email address ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: value = '' @@ -1236,7 +1239,7 @@ ''' Render a "plain" representation of the property ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: return '' @@ -1270,7 +1273,7 @@ ''' Render a "plain" representation of the property ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: return '' @@ -1309,7 +1312,7 @@ ''' Render a "plain" representation of the property ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: return '' @@ -1360,7 +1363,7 @@ ''' Render a "plain" representation of the property ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: return '' @@ -1377,7 +1380,7 @@ DateHTMLProperty. ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') ret = date.Date('.', translator=self._client) @@ -1421,7 +1424,7 @@ elif isinstance(default, DateHTMLProperty): raw_value = default._value else: - raise ValueError, _('default value for ' + raise ValueError, self._('default value for ' 'DateHTMLProperty must be either DateHTMLProperty ' 'or string date representation.') elif isinstance(value, str) or isinstance(value, unicode): @@ -1453,7 +1456,7 @@ If the "pretty" flag is true, then make the display pretty. ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if not self._value: return '' @@ -1473,7 +1476,7 @@ for the situatin when a date only specifies a month and a year. ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if not self._value: return '' @@ -1486,7 +1489,7 @@ ''' Return the date/time as a local (timezone offset) date/time. ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') return DateHTMLProperty(self._client, self._classname, self._nodeid, self._prop, self._formname, self._value, offset=offset) @@ -1503,7 +1506,7 @@ ''' Render a "plain" representation of the property ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: return '' @@ -1513,7 +1516,7 @@ ''' Render the interval in a pretty format (eg. "yesterday") ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') return self._value.pretty() @@ -1554,7 +1557,8 @@ ''' return a new HTMLItem ''' #print 'Link.getattr', (self, attr, self._value) if not self._value: - raise AttributeError, "Can't access missing value" + msg = self._('Attempt to look up %(attr)s on a missing value') + return MissingValue(msg%locals()) i = HTMLItem(self._client, self._prop.classname, self._value) return getattr(i, attr) @@ -1562,7 +1566,7 @@ ''' Render a "plain" representation of the property ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') if self._value is None: return '' @@ -1729,7 +1733,7 @@ ''' Render a "plain" representation of the property ''' if not self.is_view_ok(): - return _('[hidden]') + return self._('[hidden]') linkcl = self._db.classes[self._prop.classname] k = linkcl.labelprop(1) @@ -2294,4 +2298,29 @@ raise AttributeError, name return self.client.instance.templating_utils[name] +class MissingValue: + def __init__(self, description, **kwargs): + self.__description = description + for key, value in kwargs.items(): + self.__dict__[key] = value + + def __call__(self, *args, **kwargs): return MissingValue(self.__description) + def __getattr__(self, name): + # This allows assignments which assume all intermediate steps are Null + # objects if they don't exist yet. + # + # For example (with just 'client' defined): + # + # client.db.config.TRACKER_WEB = 'BASE/' + self.__dict__[name] = MissingValue(self.__description) + return getattr(self, name) + + def __getitem__(self, key): return self + def __nonzero__(self): return 0 + def __str__(self): return '[%s]'%self.__description + def __repr__(self): return '<MissingValue 0x%x "%s">'%(id(self), + self.__description) + def gettext(self, str): return str + _ = gettext + # vim: set et sts=4 sw=4 :
