On 03/06/2015 06:38 PM, Thomas De Schampheleire wrote:
On March 6, 2015 5:35:45 PM CET, Mads Kiilerich <[email protected]> wrote:
On 03/06/2015 05:29 PM, Thomas De Schampheleire wrote:
[..]
diff --git a/kallithea/lib/helpers.py b/kallithea/lib/helpers.py
--- a/kallithea/lib/helpers.py
+++ b/kallithea/lib/helpers.py
@@ -469,7 +469,7 @@

     def fmt_date(date):
         if date:
-        _fmt = u"%a, %d %b %Y %H:%M:%S".encode('utf8')
Heh - making a const unicode string with all ascii chars and then
encoding
it to utf8 ... that seems a bit convoluted ;-)

It does however raise the question of how this function was
supposed to
handle locales where the name of the day or month had unicode
chars.
With your changes it will always only be ascii chars and it would
perhaps
be
more clear to use unicode(...) instead of .decode.

+        _fmt = u"%Y-%m-%d %H:%M:%S".encode('utf8')
             return date.strftime(_fmt).decode('utf8')
I'm not very familiar with unicode and didn't really understand
that
part of the original code, to be honest.

Do you mean this:

_fmt = "%Y-%m-%d %H:%M:%S"
return unicode(date.strftime(_fmt))

and thus finally simply:

return unicode(date.strftime(DATETIME_FORMAT))
Yes, i did.

That will however apparently also put an "invisible" constraint on
DATETIME_FORMAT; it must be unicode-able without specifying
encoding.
I think the big unknown for me is whether datetime.datatime strftime
ever
can be localized and return unicode strings or if it always will be
in
english and thus be pure ascii that trivially converts to unicode.
Perhaps
also whether it will return a unicode string if it is given a
unicode format
string.
The %c format key will return a localized date representation, so it
can be unicode.

Manual says:
'strftime() returns a locale depedent byte string; the result may be
converted to unicode by doing
strftime(<myformat>).decode(locale.getlocale()[1]).'
https://docs.python.org/2/library/time.html#time.strftime

However, on my PC, locale.getlocale()[1] returns None and decode
doesn't accept that.

I guess
return unicode(date.strftime(DATETIME_FORMAT))
should still be fine? Or should it be changed to something else?
Hmm ...

I think I will suggest just keeping the format string hardcoded so it
is
"obvious" what is going on. I will tweak your patch as
         return date.strftime("%Y-%m-%d %H:%M:%S").decode('utf8')

DATETIME_FORMAT and friends have apparently no purpose and should just
be removed.
Ok, do you expect an updated patch from me?

No - I have it in my queue and will push it in next round.

/Mads
_______________________________________________
kallithea-general mailing list
[email protected]
http://lists.sfconservancy.org/mailman/listinfo/kallithea-general

Reply via email to