[02:35] <mhall119> nigelb: cjohnston: http://www.youtube.com/watch?v=AqwJejqdQRk
[02:37] <cjohnston> that your stupid usb thing
[03:16] <mhall119> no, that's my awesome usb thing
[14:19] <nigelb> mhall119: Its *awesome*
[15:24] <cjohnston> ?
[15:35] <nigelb> cjohnston: the awesome usb thing ;)
[19:19] <mhall119> cjohnston: nigelb: https://code.launchpad.net/~mhall119/django-openid-auth/fixes-642132/+merge/54193 has landed in trunk!
[19:20] <mhall119> now we just have to wait for the package to be built, and then sweet-talk IS into installing it
[19:21] <mhall119> hopefully my other code, to give a friendlier explanation of why login fails, will land and be part of that build
[19:22] <nigelb> \o/
[19:23] <mhall119> I'll need to propose my LD changes and make similar ones to summit
[19:24] <nigelb> mhall119: do you remember which bit of changes caused the % failure?
[19:24] <mhall119> in summit?
[19:24] <nigelb> mhall119: I'd like to try and figure out where to start fixing render.py :\
[19:24] <mhall119> nigelb: start from orbit, with a nuke
[19:24] <nigelb> mhall119: hahah.  After getting 2 fixes into LP, render.py seems like a good starting point :p
[19:26] <mhall119> true
[19:26] <mhall119> nigelb: so the problem is that render.py builds up a string, using a combination of static strings and db values
[19:26] <mhall119> then it takes the whole combined string and runs it through the built-in string formatting
[19:27] <mhall119> which means that if you have a % in one of those db values, it's going to think it's a string formatting variable
[19:27] <nigelb> so we need more escaping?
[19:27] <nigelb> or is there a different solution to the problem
[19:28] <nigelb> I mean, we can rewrite render.py but how can we do things differently is my question
[19:29] <mhall119> so the easiest way is, whenever you are pulling in a value from the db, do a .replace('%', '%%')
[19:30] <nigelb> mhall119: ah.  But the way that render.py does things is not not wrong per se.
[19:30] <mhall119> on the db value before you append it to the string
[19:30] <mhall119> nigelb: everything about render.py is wrong
[19:32] <nigelb> mhall119: haha, that's why I asked how would I fix it if I were interested in rewriting it.
[19:32] <mhall119> if you're interested in rewriting it, use templates
[19:32] <nigelb> (I am interested in rewriting it from scratch if that would give it more love)
[19:33] <nigelb> mhall119: explain more?
[19:33] <mhall119> instead of manually building up the entire page with a series a string concatenations, just build up the data as context variables and pass it to a template
[19:34] <nigelb> mhall119: Are you free on Friday for a call to explain how to start?
[19:34] <mhall119> only after noon my time
[19:35] <mhall119> Michelle voluntold me to help out at the school in the morning
[19:35] <nigelb> around this time?
[19:35] <nigelb> 1400 UTC that is
[19:36] <nigelb> bahhh
[19:36] <nigelb> 1400 your time
[19:36] <nigelb> mhall119: ^^
[19:36] <mhall119> I should be home then,  yes
[19:37] <mhall119> we can see if cjohnston is available to join in too
[19:38] <mhall119> geez, I really need to convert readfeeder over to postgres, mysql is sloooow
[19:38] <mhall119> (for writes anyway)
[19:39] <nigelb> awesome
[19:44] <nigelb> heh
[19:44] <nigelb> yeah
[19:45] <nigelb> postgres is awesome.
[21:22] <cjohnston> get me to do what
[21:31] <nigelb> cjohnston: call at 1400 tomorrow.
[21:31] <nigelb> 1400 your time
[21:31] <cjohnston> I should be able to
[21:31] <cjohnston> whats it for? render.py?
[21:33] <cjohnston> skype or somethign else?