[11:27] <lalo> hahahahahahaha... I think I broke my gentoo in a way that's going to be interesting to repair :-P
[11:29] <kiko> you use that word?
[11:29] <kiko> normally I say "disgraceful"!
[11:29] <lalo> interesting is the right word here
[11:30] <lalo> I, hmm, broke my gcc :-P so I can't install another gcc because, you see, I have no gcc... it's kind of like breaking dpkg in debian
[11:30] <lalo> you can get around a broken dpkg with "ar" and "tar"... and equivalently I'm pretty sure there is a way to get out of this situation... just have to think about it for 10 minutes
[11:31] <kiko> how broken, and how did you break it?
[11:32] <lalo> oh, I was trying to downgrade from 3.4 to 3.3; then I found that I had both installed (using slots), and just removed 3.4. But /usr/bin/gcc seemingly was part of the 3.4 package... so I have all the bits and pieces, except the thing that puts them together
[11:33] <kiko> lalo, just copy the gcc-3.4 binary from somewhere else
[11:33] <lalo> that's the plan
[11:51] <lalo> ah
[11:51] <lalo> as I expected, much simpler than that
[11:51] <lalo> just had to edit a config file to point to the right version
[11:52] <lalo> and now to compile directfb :-)
[11:52] <lalo> funny, where is everyone? we have a meeting in a few minutes
[11:56] <kiko> lalo, what timezone are you in?! the meeting is in 1:30h
[11:57] <lalo> 1:30? I thought it was 11:30
[11:57] <lalo> and rosetta's is 45m earlier, whatever time is the launchpad one
[11:58] <kiko> it *is* at 11:30, which is.. oh. 
[11:58] <kiko> well, I'm here (no sleep last night though :)
[11:59] <lalo> ah, you said "in" 1:30, I read "at" 1:30 :-) we're talking the same thing
[12:07] <lalo> carlos: good morning
[12:07] <carlos> morning
[12:39] <SteveA> aren't we ten minutes into a rosetta meeting now?
[12:40] <lalo> SteveA: just what I was thinking. Looks like something happened with daf 
[12:40] <carlos> SteveA: in 5 minutes
[12:40] <daf> morning all
[12:41] <carlos> daf: morning
[12:42] <SteveA> what happened?
[12:43] <daf> the meeting is scheduled for 10:45
[12:44] <daf> shall we start?
[12:45] <lalo> ok
[12:46] <carlos> daf: sure
[12:46] <daf> let's start off by discussing the Alpha release
[12:46] <daf> then what work we've done since the last meeting
[12:47] <daf> then what we're going to do for the rest of today
[12:47] <carlos> ok
[12:48] <daf> I think we're more or less ready for Alpha
[12:48] <daf> the two things I know I need to do are:
[12:49] <daf> - disable the advanced search page, since it doesn't work
[12:49] <daf> - send out the announcement email
[12:49] <daf> now's the time to list anything else that needs doing
[12:50] <carlos> daf: perhaps improve the message about the plural forms with a mailto: link 
[12:50] <carlos> so they know they should send use the information
[12:50] <carlos> so they could translate into that language?
[12:50] <daf> good idea
[12:50] <daf> where should they send it to?
[12:51] <daf> me? the Rosetta Testers list?
[12:51] <carlos> hmmm
[12:51] <carlos> perhaps to the list
[12:51] <SteveA> daf: rosetta.ubuntulinux.org goes to the launchpad front page.  this has links to soyuz and malone on it.
[12:51] <carlos> so anyone could add it?
[12:52] <SteveA> maybe the virtual hosting should be changed so that it goes to the rosetta front page only
[12:52] <daf> SteveA: good idea
[12:52] <SteveA> we can then use the package overrides system to put the special ubuntu front page as the default page for that rosetta
[12:52] <daf> I think it would be a good idea to hide away Malone andd Soyuz
[12:52] <SteveA> so, we can use an override for that
[12:53] <daf> can you either do that, or explain to one of us how to do it?
[12:53] <SteveA> that is, a file in override-includes that redefines the default page for the root object, and for the rosetta front page
[12:53] <lulu> can the link to launchpad be launchpad.ubuntulinux.org, rosetta = rosetta. ubuntulinux.org etc...
[12:53] <daf> SteveA: so it's a normal ZCML file?
[12:53] <SteveA> what do you mean "link to launchpad", lulu ?
[12:54] <SteveA> daf: yes, it is a normal zcml file.  Its directives override those already in the system.
[12:54] <lulu> so we have the 3 tools in launchpad.ubuntulinux.org instead of rosetta - isolate links
[12:54] <SteveA> for the rosetta alpha, we want just rosetta to appear at rosetta.ubuntulinux.org
[12:55] <lulu> yes agreed
[12:55] <SteveA> I don't see any reason to have a launchpad.ubuntulinux.org at this time
[12:55] <lulu> fine - but how can I publicly access all 3?
[12:56] <SteveA> you can't, because we're releasing only rosetta
[12:56] <daf> lulu: you can still acccess the development server
[12:56] <lulu> through rosetta.ubuntulinux.org?
[12:56] <SteveA> we're talking about a specific "override" for the rosetta.ubuntulinux.org site.  This is the site that uses the "alpha" database.
[12:56] <daf> through rosetta.warthogs.hbd.com
[12:56] <carlos> lulu: no, old url rosetta.warthogs...
[12:57] <SteveA> There's still rosetta.warthogs.hbd.com, that has all of launchpad on it
[12:57] <SteveA> and does not use the "alpha" database
[12:57] <SteveA> this is our "development server"
[12:57] <SteveA> and, it will not have any overrides in it
[12:57] <lulu> SteveA: currently when I type in https://rosetta.ubuntulinux.org/ I gte the 3 launchpad tools
[12:58] <SteveA> yes, we are discussing that you should not do so, and how to fix it
[12:58] <daf> lulu: right, and we're going to change that
[12:58] <lulu> daf: cool - that's why I suggested that to be launchpad.ubuntulinux.org.... - no worries
[12:59] <daf> so we have two extra tasks before the alpa
[01:00] <daf> - put an email address in the plural form error message
[01:00] <SteveA> is the "ubuntu linux package list" page finished?
[01:00] <daf> - hide/remove Malone and Soyuz from the alpha server
[01:01] <SteveA> what about the "ubuntu list of packages" front page?
[01:01] <daf> SteveA: we don't have a separate page for it
[01:01] <SteveA> I thought that was the plan
[01:02] <daf> right, for the Alpha it was decided that we have a very small number of packages
[01:02] <carlos> SteveA: we have only two packages for the alpha
[01:02] <daf> from discussions with Mark and from the practical didfficulty of importing many packages
[01:03] <carlos> SteveA: we are going to improve and expand that list before the beta
[01:03] <SteveA> ok
[01:03] <daf> the bug should have been updated with this information
[01:04] <carlos> daf: my fault
[01:04] <daf> carlos: mine also
[01:04] <daf> SteveA: bug #1915 is still marked as depending on #1907 and #1908, which are assigned to you
[01:05] <daf> SteveA: I don't think they block the release, but it would be nice to have them closed
[01:05] <SteveA> ok, noted
[01:05] <daf> thanks
[01:06] <daf> another thing:
[01:06] <SteveA> I propose for the alpha server, we make the front page of launchpad a redirect to /rosetta.  This will serve until the virtual hosting configuration is updated.   But, if the virtual hosting stuff can be updated now, there's no need to change the front page.
[01:06] <SteveA> because the front page will not be visible
[01:06] <daf> - I shuold apply Carlos' DB changes to the Alpha DB
[01:07] <daf> (sorry for typos, link is slow)
[01:07] <carlos> daf: not yet, I'm doing more testing today
[01:07] <daf> carlos: ok
[01:07] <carlos> and they could be added at any time
[01:07] <carlos> later
[01:07] <daf> carlos: I'd like to do it before the GNOME Panel import
[01:07] <carlos> I'm getting bad numbers today
[01:08] <carlos> and I need to understand why, I will know it after the meeting, my laptop is working now on it
[01:08] <daf> ok, perhaps I should make a task to test the changes on the development server
[01:08] <carlos> that will be good
[01:09] <daf> ok
[01:09] <daf> anything else that needs to be done?
[01:09] <daf> if not, let's discuss our tasks
[01:10] <carlos> nothing from here
[01:10] <daf> (we are scheduled to finish in 10 minutes)
[01:10] <daf> ok
[01:10] <daf> tasks done since yesterday's meeting?
[01:10] <daf> lalo: care to go first?
[01:11] <lalo> ok
[01:11] <lalo> I fixed #2022 in the few minutes after the meeting, or was it right before?
[01:12] <lalo> then I slept :-) when I woke up, I sanity-checked the fix and committed it
[01:12] <daf> great
[01:12] <daf> carlos?
[01:12] <carlos> lalo: I will test it after this meeting to confirm the fix
[01:12] <lalo> carlos: thanks
[01:13] <carlos> daf: I was working on more testing, I have almost finished the report SteveA asked yesterday
[01:13] <daf> great
[01:13] <carlos> daf: and answer your questions to the mailing list about the indexes
[01:13] <carlos> hmm, I think that's all
[01:13] <daf> ok
[01:13] <daf> I fixed #2023 last night
[01:14] <daf> and replaced the placeholder "About Rosetta" text with something useful
[01:14] <daf> (with input from Lu and Mark on that)
[01:15] <daf> ok, and very quickly -- what are we going to work on today?
[01:16] <carlos> I will work finishing the report, and will start doing more improvements to the queries
[01:16] <carlos> and use your profile information to try to improve it more
[01:16] <daf> I will work on completing the Alpha tasks
[01:16] <daf> carlos: do you need information from me about how I profiled it?
[01:16] <lalo> if no greater priorities arise, I'm going to work on 1944 (the dreaded import/export tests)
[01:17] <carlos> daf: not now, let me read your report and I will be back to you if I see I need it
[01:17] <daf> carlos: ok
[01:17] <daf> lalo: that's fine by me
[01:17] <daf> any other business?
[01:18] <carlos> daf: I suppose I will not have enough time
[01:18] <lalo> do you think 1944 has greater priority than 2021?
[01:18] <carlos> but If I'm able to finish my tasks, I want to start with the scripts we were talking last week
[01:18] <carlos> with steve
[01:19] <daf> lalo: actually, I think it would be nice to get #2021 fixed first
[01:19] <lalo> ok
[01:19] <daf> carlos: ok
[01:19] <lalo> I'm happier that way too :-)
[01:19] <daf> great :)
[01:19] <daf> right, I declare End Of Meeting
[01:19] <daf> thanks, it was a good one
[01:20] <daf> even if we ran a little over
[01:20] <carlos> :-)
[01:21] <lalo> me too
[01:22] <stub> Someone ping me for the meeting - I havn't got an alarm on this thing yet
[01:22] <SteveA> can you get to http://rince.africaninspace.com/mailman/listinfo/activity ?
[01:24] <kiko-fud> me2
[01:27] <stub> No, but my network has been shitting me all night
[01:29] <SteveA> it's okay, mark screwed up a server upgrade.  mail archives are off until it is sorted out.
[01:30] <SteveA> it is 14:30
[01:30] <SteveA> stub, kiko-fud: time for the meeting!
[01:30] <kiko-fud> do you know where your children are?
[01:30] <SteveA> or even what timezone they're in
[01:30] <kiko> behold the great debonzi has entered the room
[01:31] <debonzi> kiko, lol
[01:31] <kiko> soyuz is here
[01:31] <stub> Yo
[01:32] <SteveA> kiko, debonzi, spiv, cprov: all here?
[01:32] <kiko> [x]  yes
[01:32] <stub> And Malone, on his lonesome :-)
[01:32] <debonzi> [x]  yes
[01:32] <SteveA> stub, justdave: ?
[01:32] <spiv> Yep.
[01:32] <SteveA> we're starting a little early for justdave's timezone
[01:33] <SteveA> I'll catch up with him later
[01:33] <kiko> he pulled an all-nighter afaik
[01:33] <kiko> just like me
[01:33] <justdave> I'm here
[01:33] <SteveA> oh, hi!
[01:33] <SteveA> daf, carlos, lalo?
[01:33] <carlos> SteveA: I'm here
[01:34] <SteveA> limi will be traveling back to Norway from Vienna today
[01:34] <spiv> daf is in the middle of breakfast; he'll be here very shortly.
[01:34] <SteveA> lulu: ?
[01:34] <SteveA> let's start
[01:34] <SteveA> soyuz
[01:35] <SteveA> What's happened since last week?
[01:35] <kiko> yes
[01:35] <kiko> we've filed half a million bugs
[01:35] <kiko> fixed about half of them
[01:35] <cprov> kiko: aha
[01:35] <kiko> pestered people on the mailing list about the tough issues
[01:35] <lulu> SteveA: her :o)
[01:35] <kiko> had rosetta and malone integration meetings
[01:35] <lulu> here!
[01:35] <kiko> did QA and polished the UI of bits missing
[01:36] <SteveA> I'll be looking at the bugs you mailed me about during today
[01:36] <kiko> started sorting out the pickles that we got some traction on
[01:36] <SteveA> how did the integration meetings go?
[01:36] <kiko> which are the person identifying issue and some bits of package info that were missing
[01:37] <SteveA> what is the decision on the person identifying issue?
[01:37] <kiko> the integration meetings went well, stub was killer and let us file bugs on portlets that we need
[01:37] <kiko> stub is the man to answer that I suspect :)
[01:37] <stub> I'm just easy
[01:38] <kiko> we add a shortname/nick whatever to the database
[01:38] <kiko> stub and soyuz agree on that, I can't remember if we are waiting for approval of the gods before hitting the database
[01:38] <kiko> do you stub?
[01:38] <stub> Outcome of the Malone/Soyuz integration meeting was I make the relevant portlets in Malone and stick them into the relevant Soyuz pages. Three seperate portlets are needed.
[01:39] <SteveA> I think the nickname thing may have an implication on the plone websites / xml-rpc authserver
[01:39] <stub> Yes - I think we need a Person.name - unique, lowercase
[01:39] <SteveA> ok, so we integrate between launchpad applications at the portlet level.
[01:39] <SteveA> malone makes portlets available to soyuz
[01:39] <kiko> SteveA, at least between malone and soyuz.
[01:40] <kiko> SteveA, we don't know about rosetta well because the issues are a bit different
[01:40] <stub> SteveA: We don't have to use it for auth if we don't want to. That is a different use case for the same info
[01:40] <kiko> stub, is there an eta for the portlets
[01:40] <kiko> stub, yes, exactly what I was going to say
[01:40] <stub> Two days ago
[01:40] <SteveA> stub: sure, we don't need to use it for auth. but, is it an essential field?  will it need to be requested when people sign up with the ubuntu site?
[01:41] <kiko> SteveA, IMO it is essential and it is silly to skimper around this issue
[01:41] <kiko> SteveA, nobody wants to traverse on email or a number
[01:41] <stub> SteveA: We can generate one if we want to avoid that and we don't want to ask the question
[01:41] <kiko> so this is really the only solution. we can suggest one if we like
[01:42] <kiko> so kiko@async.com.br -> kiko for nick
[01:42] <SteveA> ok, so we can keep the plone stuff and xml-rpc stuff that is now deployed the same
[01:42] <SteveA> kiko1 if kiko is taken already?
[01:42] <cprov> I agree on automatic (safety) generation of a unique name 
[01:42] <stub> I have code lying around somewhere that can safely generate unique names from an email address.
[01:42] <kiko> or kiko_async or kiko_x or some options but yes
[01:43] <cprov> SteveA: whatever :)
[01:43] <SteveA> we need to decide on this before we make the change that we depend on this nick.
[01:43] <SteveA> let's not decide now, though
[01:43] <stub> Oh... sorry. It is givenname/surname/email so isn't appropriate
[01:43] <lulu> SteveA: Authentication - we're having problems with email from Zope/Plone
[01:44] <SteveA> but, someone must take responsibility for the issue
[01:44] <SteveA> any volunteers?
[01:44] <SteveA> lulu: we'll talk about the website/launchpad stuff in a bit
[01:44] <stub> I'll add the field to the table :-)
[01:44] <kiko> SteveA, well, if it's just adding a field, it's stub
[01:44] <kiko> SteveA, I have no idea where users are created or authenticated in this launchpad creature.
[01:44] <kiko> does anyone?
[01:45] <SteveA> that's ok.  but if it is adding a field and a constraint, then we need to decide how we are coming up with these nicknames
[01:45] <SteveA> the launchpad does not register users at present
[01:45] <kiko> we can just add the constraint later, can't we?
[01:45] <stub> The adduser script needs to do the username address validation though (and I don't know this either).
[01:46] <SteveA> stub: will you take on getting the nickname stuff sorted out thoroughly?
[01:46] <carlos> kiko: we have a script to create the users at rosetta/scripts/createuser.py
[01:46] <SteveA> (hmm, maybe it should be someone who will be at the soyuz sprint)
[01:46] <stub> kiko: It would be painful doing that.
[01:47] <SteveA> what I'm looking for is a library function to create suitable nicks, if none is given
[01:47] <kiko> oh.
[01:47] <SteveA> someone needs to decide on the policy for this, as in how it works, and then write it
[01:47] <SteveA> we'll all use the same function
[01:48] <kiko> I suspect mark will want to have input on this?
[01:48] <SteveA> also, who will check with mark that he is okay with the nickname thing?
[01:48] <stub> SteveA: It is a simple algorithm - take the bit before '@' from the email, remove any ugly characters, and add a number on the end until there are no conficts when you insert.
[01:48] <SteveA> I think a message to the launchpad list would be good
[01:48] <kiko> I can do that and pester sabdfl on irc
[01:49] <SteveA> I don't know that this is *urgent*.  so, a mail to the list should be sufficient.
[01:49] <SteveA> thanks kiko
[01:49] <SteveA> I think that wraps up nicknames, for now
[01:49] <kiko> yes
[01:50] <SteveA> do you think we should have another soyuz walkthrough this week, before the sprint?
[01:50] <SteveA> maybe tomorrow?
[01:50] <kiko> nah, not really.
[01:50] <kiko> we travel saturday.
[01:50] <SteveA> ok
[01:50] <SteveA> so, we can have one at the start of the sprint
[01:50] <SteveA> in person
[01:50] <kiko> yes, that would be perfect.
[01:50] <spiv> I think that's a better idea.
[01:51] <SteveA> ok.  are all travel arrangements to the sprint okay?
[01:51] <kiko> [x]  soyuz 
[01:51] <SteveA> any other issues?
[01:52] <kiko> uhm, let me try and recall
[01:52] <kiko> cprov, is there anything open?
[01:52] <SteveA> I still need to get you a zodb
[01:52] <kiko> yes, that's bugged on you IIRC
[01:53] <SteveA> it is at the top of my list
[01:53] <cprov> kiko: yep the complicated issues on person/team add action ...but I preffer to talk on sprint, I think
[01:53] <kiko> okay. 
[01:53] <SteveA> ok, let's move on to the plone<-->launchpad sites
[01:53] <kiko> debonzi, cprov, packaging issues perhaps?
[01:53] <SteveA> longer
[01:53] <cprov> I'll commit some changes today and would apreciatte SteveA and Spiv revision on that, ok ?
[01:54] <SteveA> cprov: send an email?
[01:54] <kiko> okay, cool.
[01:54] <spiv> cprov: sure; email or poke me on irc.
[01:54] <cprov> SteveA: of course
[01:54] <SteveA> ok
[01:54] <SteveA> ok, let's move on to the plone<-->launchpad integration
[01:55] <SteveA> lulu: you said there is an email problem
[01:55] <cprov> spiv: I think I need a private help after meeting (10 min, again) ? 
[01:55] <spiv> cprov: Sure.
[01:55] <lulu> yes - Roche is not getting plone emails
[01:55] <cprov> spiv: great
[01:55] <SteveA> what do you mean by "plone mails" ?
[01:55] <SteveA> mails sent out from plone?
[01:55] <kiko> okay, I'm on standby then
[01:55] <lulu> yes - once a user is registered, he is not getting the email 
[01:56] <lulu> saying welcome - but I did.
[01:56] <lulu> elmo says Gentoo is set up fine
[01:56] <SteveA> you got one to you @canonical.com address?
[01:56] <SteveA> it is conceivable that mail to @canonical.com addresses works while other addresses do not.
[01:57] <lulu> yes....
[01:57] <SteveA> do you know how the mail service on plone is configured?
[01:57] <cprov> spiv: if we have finished here, please join #soyuz. kiko you are suposed to be there too
[01:57] <SteveA> that is, which machine it uses to send email?
[01:57] <SteveA> ok, let's talk about this in detail after the meeting
[01:58] <lulu> have asked elmo to join in
[01:58] <SteveA> is there anything else amiss with the launchpad<-->plone site?
[01:58] <kiko> cprov, I am
[01:58] <kiko> ?
[01:58] <lulu> Roche couldn't test last night as a result
[01:59] <SteveA> ok, we'll get this diagnosed properly after this meeting.  anything else we need to do on the plone sites?
[01:59] <lulu> so we have to do extensive testing today to get it up
[01:59] <lulu> permissions are not great - but the plone workflow limits what we can do
[02:00] <lulu> i need Limi to do some work
[02:00] <lulu> otherwise - after testing we can assess what still needs to be done
[02:00] <SteveA> ok.
[02:00] <SteveA> can we move on to malone?
[02:01] <SteveA> stub: anything new with malone since the last meeting?
[02:01] <stub> I'm now on a new machine and started belting Malone back into shape after the changes made when I was away (schema changes and auth system).
[02:01] <SteveA> you know that andrew v. won't be working on it?
[02:01] <stub> I now need to know about the auth stuff since the next lot of exceptions to fix are all Unauthorized errors
[02:02] <stub> Yes - Andrew emailed me when I was in Japan
[02:02] <SteveA> ok, why don't you and I talk about auth stuff tomorrow morning my time?
[02:02] <elmo> hmm?  is andrew no longer contracting with us?
[02:02] <SteveA> elmo: yes
[02:02] <stub> Your at UTC+4? Sure.
[02:03] <SteveA> UTC+3
[02:03] <stub> elmo: Possibly short gigs. He is in the unfortunate position of having a new child and work coming out of his ears :-)
[02:04] <SteveA> I can manage 6am UTC onwards
[02:04] <stub> SteveA: Ok. I'll look out for you online.
[02:04] <SteveA> ok
[02:04] <SteveA> anything else other than auth?
[02:05] <stub> I don't think so
[02:06] <stub> Oh - anyone got an intelligent 'select a sourcepackage' widget written yet?
[02:06] <SteveA> let's talk tomorrow also about moving malone along the route to using it for bugtracking launchpad and then the warty team
[02:06] <stub> Something like the typeahead textbox in Bugzilla
[02:06] <kiko> stub, no, nothing like that at all.
[02:07] <kiko> stub, we want a package browser (with sections) but so far nothing.
[02:07] <SteveA> file a bug on limi
[02:07] <stub> And sabdfl is happy with the assignee stuff I mentioned back in London, and the schema mods are in.
[02:08] <SteveA> so, when will assignee be working?
[02:09] <stub> The screen I have to update to do it (assignee is mandatory - it will default to the package/product owner) is one of the ones raising an Unauthorized error :-)
[02:09] <SteveA> ok, let's do that tomorrow
[02:09] <SteveA> next, rosetta
[02:10] <stub> I want to have the malone basic functionality and the soyuz portlets done by my Monday.
[02:10] <SteveA> great.
[02:10] <kiko> stub, that would fit in nicely with the beginning of our sprint
[02:10] <SteveA> do you have bugs in bugzilla for "malone basic functionality" ?
[02:11] <stub> (although the soyuz portlets might get reprioritized since they are not essential)
[02:11] <SteveA> have you a clear idea on how the portlets will work with soyuz?
[02:11] <stub> SteveA: The use cases on the wiki - nothing formal in Bugzilla
[02:11] <SteveA> we can talk about portlets tomorrow too
[02:12] <SteveA> rosetta
[02:12] <SteveA> daf: progress of rosetta
[02:12] <stub> SteveA: Yes. I'm doing something similar in Malone already. The major problem is generating URLS - I don't want to use absolute URL's since it will screw up virtual malones down the road, so they are context sensitive.
[02:13] <daf> since the last meeting, we've mostly been working on improving the importer
[02:13] <SteveA> stub: we should make absolute url work with virtual malones
[02:13] <daf> we found some problems with it in the run up to the Alpha release
[02:13] <stub> (erm... I mean they can only be used on a single screen - not any page you feel like)
[02:13] <daf> we've fixed several bugs in it since then
[02:13] <SteveA> stub: but, I also talked with people about this at the sprint
[02:13] <SteveA> daf: what bugs remain before getting the alpha used by people?
[02:14] <stub> SteveA: Yes - we need IAbsoluteURL functioning to do that
[02:14] <daf> SteveA: in terms of bugs against Rosetta itself, none
[02:14] <SteveA> in terms of issues blocking rosetta alpha
[02:15] <daf> in terms of issues
[02:15] <daf> #2025 -- add option to user creation script to email the new user with account details
[02:16] <daf> we also need to make some changes to hide Soyuz and Malone on the Alpha Launchpad instance
[02:16] <SteveA> that's mainly a virtual hosting change.  can you mail elmo about it?
[02:16] <daf> I can
[02:16] <SteveA> ok
[02:17] <daf> but I think we can work around it if the virtual host is not changed
[02:17] <SteveA> who is doing the addition to the user creation script, and when?
[02:17] <daf> I'm working on that now
[02:17] <SteveA> when will it be done?
[02:17] <daf> I'm estimating about 20 minutes of work
[02:18] <SteveA> ok
[02:18] <SteveA> anything else on rosetta?
[02:18] <SteveA> I know there's been some work on profiling the database to add indexes
[02:18] <daf> there's a minor change outstanding to one page
[02:18] <daf> right
[02:19] <SteveA> what's the minor change?
[02:19] <carlos> daf: I could do it now, so we speed up the launch
[02:19] <daf> adding an email address to an error message
[02:19] <SteveA> ok
[02:19] <daf> carlos: you're going to do that?
[02:19] <carlos> daf: yes
[02:19] <daf> carlos: thanks
[02:19] <daf> indexes:
[02:19] <daf> in the run up to the Alpha, we discovered performance problems
[02:20] <daf> we've spent some time trying to analyze the problem
[02:20] <daf> and we have some ideas on how to improve things
[02:20] <SteveA> does it look like these are in the database itself, or in the launchpad application, or a mixture?
[02:20] <daf> most of the discussion is on #1973
[02:20] <daf> I think that part of it is the database itself
[02:20] <daf> and part of it is in the way the database is being used
[02:21] <daf> so part of it is that the queries are running slowly
[02:21] <daf> and part of it is that the queries could be improved
[02:21] <SteveA> we could run some specialized queries that do a lot of work at once 
[02:21] <SteveA> where we need to
[02:22] <daf> I think we understand the problem much better than we did a week ago, and we've learned things that will be useful in tackling future performance problems
[02:22] <daf> SteveA: right, that's definitely something we should look into
[02:22] <SteveA> UI issues on rosetta...
[02:22] <SteveA> there's still the "development legend" at the bottom of screens
[02:22] <SteveA> we can probably lose that with an override, but maybe it isn't still needed
[02:22] <daf> I don't consider that a problem, but it can be remvoed
[02:23] <lulu> and link to dashboards?
[02:23] <daf> yes, it might actually be redundant
[02:23] <SteveA> there are still tabs for soyuz and malone
[02:23] <daf> lulu: we have links to the dashboards in the top right-hand corner
[02:23] <daf> SteveA: yes, those are going to be removed
[02:23] <SteveA> do we want a "project maintainer dashboard" for rosetta?
[02:23] <SteveA> for the alpha
[02:24] <SteveA> are there bugs filed on tidying up the UI in this way for the alpha?
[02:24] <daf> no, there aren't
[02:24] <daf> let's do that
[02:24] <SteveA> there's site map and legal too, with no content
[02:25] <SteveA> I suggest to add a sober explanation of what should go there, or remove them
[02:25] <SteveA> or implement them properly
[02:25] <daf> agreed
[02:26] <lulu> I suggest all redundant links be reoved - site map and legal are covered in the ubuntu site
[02:26] <lulu> removed!
[02:26] <SteveA> when I search, a search with 1 or 2 characters gets a system error
[02:27] <daf> https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2026
[02:27] <SteveA> ok, thanks
[02:28] <SteveA> daf, let's you and I have a chat in a few hours, to see how things are going
[02:28] <daf> let's
[02:28] <lulu> SteveA: why is it conceivable for non- canonical emails not to be working?
[02:28] <SteveA> I'm concerned that we keep thinking we're almost ready to do the alpha, and then finding other things that need to be done.
[02:28] <carlos> should we create accounts for lulu to do also as alphatester?
[02:29] <SteveA> we need to spend a little time carefully going over everything we need to do.
[02:29] <daf> SteveA: you're right
[02:29] <lulu> carlos: yes please....
[02:29] <SteveA> lulu: want to translate into afrikaans?
[02:29] <carlos> and any other Canonical person?
[02:29] <lulu> mark should be on there too
[02:29] <carlos> ok
[02:29] <daf> carlos: I don't want to see code like this:
[02:29] <daf>  email = RosettaEmailAddress(person=person, email=options.email, status=1)
[02:30] <SteveA> ok, that's it
[02:30] <carlos> daf: to simplify things I will add them to the alphatesters list
[02:30] <daf> 1 is a constant that should be imported from the dbschema module
[02:30] <SteveA> end of meeting?
[02:30] <SteveA> any other business?
[02:30] <SteveA> 5
[02:30] <SteveA> 4
[02:30] <daf> carlos: Mark already has an account
[02:30] <SteveA> 3
[02:30] <SteveA> 2
[02:30] <carlos> SteveA: it's ok for me
[02:30] <SteveA> 1
[02:30] <carlos> daf: hmmm, I'm not completely sure how to use the python schema
[02:30] <SteveA> ok, done.  Thanks for coming.  we managed it in 1 hour this time
[02:30] <spiv> We can all sit down now ;)
[02:30] <carlos> daf: but without password
[02:31] <daf> carlos: ok, that's a special case, I think
[02:31] <carlos> spiv: upps, I forgot that :-P
[02:31] <daf> carlos: perhaps we need a script to change passwords
[02:31] <SteveA> lulu: I'll take a short break, and then we can look into why the email isn't working.  I note that elmo sent a test message to me at a non-@canonical address 
[02:31] <carlos> SteveA: should we handle the case when the password is NULL?
[02:32] <SteveA> carlos: is it defined what the meaning of password == NULL is?
[02:32] <carlos> SteveA: seems like rince mail is broken now
[02:32] <stub> spiv: More like stand up! I think I've been welded to the couch for two days :-)
[02:32] <lulu> SteveA: yes it appears to be fine our side - we need to change the webmaster address to be coming from webmaster@ubuntulinux.org rather than canonicla.com
[02:32] <SteveA> carlos: I think that means it is being fixed ;-)
[02:32] <carlos> SteveA: it's only because old sample data did not have a password
[02:32] <carlos> all accounts created with our script will have always a password
[02:32] <SteveA> maybe password as NULL means that there is no password that can work
[02:32] <carlos> and there is no way to reset it to null from the UI
[02:32] <SteveA> as in, the account it "locked"
[02:33] <spiv> Well, we will have that for people we "import", rather than people who sign up.
[02:33] <carlos> spiv: the script creates automatically a password
[02:33] <carlos> and will send an email
[02:33] <carlos> with it
[02:33] <stub> Some accounts will be created without passwords (such as when Malone gets an email from an unknown address it will create one). The NULL password flags this.
[02:33] <carlos> using pwgen
[02:34] <spiv> (e.g. package maintainers for debian packages.)
[02:34] <carlos> hmm, so we want to have a "disabled" account, ok
[02:34] <daf> carlos: from canonical.lp.dbschema import EmailAddressStatus
[02:35] <daf> carlos: int(EmailAddressStatus.NEW)
[02:35] <carlos> daf: ok
[02:35] <SteveA> justdave: please reply to my email about the top 100 bugzillas
[02:35] <spiv> We don't really want to send an email to every debian package maintainer, spamming them with a password for an account they might not care about at all, or have even heard of :)
[02:36] <carlos> spiv: ok
[02:36] <justdave> SteveA: will do
[02:36] <carlos> SteveA: mail lists seem to be alive again
[02:36] <lalo> "here's your password for Rosetta, a fabulous, completely free i18n system. You can also use this password to download photos of beautiful young women..."
[02:37] <carlos> daf: I will write an option to the createuser.py script to change the password so we can set it as admins
[02:37] <carlos> lalo: Sabrina!!!
[02:37] <carlos> :-P
[02:37] <daf> carlos: I think I'd prefer a new script
[02:37] <carlos> daf: ok
[02:37] <daf> carlos: changing a password is different to creating a user
[02:38] <daf> it might be useful to have an option to unset the password
[02:38] <daf> effectively locking the account
[02:38] <sabdfl> SteveA: lists back up i believe. blush
[02:38] <carlos> daf: ok
[02:42] <SteveA> sabdfl: works for me now, thanks
[02:45] <SteveA> lulu: from recent email, it looks like there is no problem with how the mail services are set up, but that there is some problem with how plone is using them.
[02:46] <SteveA> roche seems to be on the case.  thanks to elmo to checking into it.
[02:46] <lulu> yup - Roche is investigating now - please could you also impress on him that we HAVE to have this working today. 
[02:47] <lulu> Elmo has doen all his testing - fine our side
[02:49] <SteveA> in these situations, looking for a problem that shouldn't be there, extra pressure tends to make programmers work less well.  I'll offer roche a second pair of eyes if he wants them.  I'll ask him about a contingency plan if the usual plone mail just won't work in a resonable time.
[02:50] <SteveA> can I get an admin account on the plone server, so I can take a look around?
[03:00] <carlos> grr, my merge request were ignored because my mail server does not accept my mails from outside my home...
[03:07] <carlos> daf: The .po export takes also too long, perhaps we should think on some way to cache it
[03:09] <daf> carlos: file a bug :
[03:09] <daf> s/:/:)/
[03:09] <carlos> daf: I'm on it
[03:09] <carlos> :-D
[03:11] <SteveA> daf, carlos: I'll be turning the zodb on soon, so we can use that to cache these things.
[03:11] <SteveA> the important thing is to work out what the cache key should be
[03:11] <SteveA> that is, the things that, if they change, we need to re-generate the data
[03:12] <carlos> ok
[03:13] <carlos> lalo: did you changed your bugzilla id?
[03:14] <lalo> carlos: yes
[03:14] <carlos> ok, I see it now
[03:26] <carlos> daf: I sent the merge request to add the mailing information for the missing plural form data
[03:26] <carlos> lalo: which one is the code for the "other" language you know to translate?
[03:26] <carlos> lalo: I don't remember it, and I'm going to add its plural form information
[03:26] <lalo> hmm
[03:26] <daf> carlos: thanks
[03:27] <lalo> I don't remember either :-P let me check
[03:27] <carlos> lalo: the name is enough
[03:27] <carlos> :-)
[03:27] <carlos> lalo: it was "n = 0" right?
[03:27] <lalo> here's the whole sql statement I used: update language set pluralforms = 1, pluralexpression = '0' where englishname='Lojban';
[03:28] <lalo> damn, it doesn't have the code :-/
[03:28] <lalo> jbo
[03:28] <carlos> lalo: don't worry
[03:29] <carlos> are you sure 0 is correct?
[03:29] <lalo> yes
[03:29] <carlos> perhaps n >= 0
[03:29] <carlos> :-)
[03:29] <lalo> no, it's not a bool
[03:29] <lalo> the pluralexpression is not supposed to result a bool, but an int
[03:29] <lalo> (the index of the plural form you want)
[03:29] <daf> lalo: but C boolean expressions evaluaate to ints
[03:30] <lalo> yes
[03:30] <lalo> and a lot of pluralexpressions abuse this by returning a bool when there are only 2 forms :-)
[03:30] <carlos> lalo: the Spanish one is n !=1
[03:31] <lalo> carlos: as I just said :-) the correct would be something like "n != 1 ? 1 : 0" but this is silly in C
[03:31] <carlos> hmm, we don't have the information for pt_BR, could you give me it ?
[03:31] <carlos> lalo: ok
[03:32] <carlos> lalo: the code is 'jbo'
[03:32] <lalo> pt_BR is the same as Spanish although there is some controversy :-)
[03:33] <carlos> lalo: you said it's different 
[03:33] <carlos> Spanish == to portuguese
[03:33] <carlos> as pt
[03:33] <lalo> the fact is that we never say either "0 foo" or "0 foos", we say "no foo"
[03:33] <carlos> ok
[03:34] <carlos> lalo: for Lojban. npluralforms = 1 expression = 0
[03:34] <carlos> lunch time, we will continue later
[03:34] <lalo> so a translator who wants to be really strict would create a third plural form for the 0 and use "nenhum" for that case... but that's rare
[03:34] <lalo> carlos: (lojban) yes
[03:35] <carlos> lalo: so, should I use the same or not for pt_BR?
[03:35] <carlos> you decide :-)
[03:57] <spiv> carlos: Have you been crossing the streams or something?  You keep showing up in the PQM merge logs :)
[04:04] <kiko> spiv, carlos is the master, he hacks on all trees.
[04:06] <lalo> the problem seems to be that your tla doesn't think you have the patches... I ran sync-tree and it stopped appearing for me
[04:06] <lalo> IIRC something like tla sync-tree carlos.perello@canonical.com--2004/launchpad--devel--0
[04:43] <lulu> spiv:ping
[04:44] <spiv> lulu: pong
[04:45] <lulu> spiv: hi hon. Authentication  - I just sent u an email on password changing and forget your password functionality in launchpad - please could u get back to me on this urgently. tx
[04:46] <spiv> Ok.
[04:48] <lulu> spiv: cheers.
[04:50] <spiv> I haven't got it yet -- which address did you send it to?
[04:51] <spiv> lulu: ^
[04:53] <carlos> spiv: I had some problems with my smtp server and some merge requests were droped, I suppose it's that
[04:54] <lulu> spiv: my mistake - there now.
[04:54] <spiv> carlos: Ah, right... you merged rocketfuel into your archive before waiting for merge request finished?
[04:55] <carlos> spiv: technically, yes, I did not saw that my postfix was sending my merge requests to /dev/null until this morning
[04:59] <spiv> lulu: quick answer: Rroche is correct.  I'm mailing a full answer.
[05:05] <SteveA> spiv: can you extend the xml-rpc api to allow changes of password?
[05:05] <SteveA> this can be an optional arg in editUser
[05:06] <kiko> spiv's on the launchpad today, did you see cprov?
[05:06] <kiko> trying to catch a rockettail
[05:09] <spiv> SteveA: Heh, just sent mail.
[05:09] <spiv> SteveA: We have no editUser method.
[05:10] <spiv> I just proposed a changePassword method, but I'd be equally happy to implement it as an editUser method, that takes (login_id, current_ssha_digested_password) as positional arguments, and the new password (and potentially other fields) as keyword arguments.
[05:10] <SteveA> what about adding a changePassword(user_id, current_password, new_password)
[05:11] <spiv> That's what I proposed in email :)
[05:11] <spiv> But I think editUser is a little more forward-looking.
[05:11] <lulu> guys -  is it better for us to do it or for Roche to extend the API?
[05:11] <lulu> what is the long term fix and most robust?
[05:11] <spiv> lulu: he can't extend the API of the authserver, we have to do that.
[05:12] <spiv> SteveA: anyway, I'll start work on the guts of it right now, then, and worry about the interface later ;)
[05:12] <lulu> spiv: ok - let me read your mail :o)
[05:12] <SteveA> I'm on the phone to roche
[05:13] <SteveA> he is looking at what is needed on his end
[05:13] <lulu> thanks guys :o)
[05:18] <SteveA> spiv: roche can work with your api, so please make the change, and get it put on macquarie
[05:18] <SteveA> and on the test server too
[05:18] <spiv> Ok.
[05:21] <SteveA> roche will be testing the change password functionality on the test server, and then deploying it
[05:21] <SteveA> he asked when the new api would be on the test server, and I said you were expecting 1 hour
[05:22] <spiv> Ok.
[05:23] <SteveA> are you able to install it on macquarie, or does elmo need to do that?
[05:24] <spiv> I can do that.
[05:25] <spiv> I asked elmo to leave my access on there for a week or so, in case of problems :)
[05:25] <SteveA> great
[05:33] <dilys> Bug 2025 resolved: add option to user creation script to email the new user with account details
[05:34] <SteveA> daf: we are using the ++vh+ stuff on rosetta.ubuntulinux.org aren't we?
[05:34] <daf> ok, perhaps I worded it badly
[05:45] <daf> carlos: you are inserting tabs into things :)
[05:45] <carlos> daf: really?
[05:46] <carlos> daf: hmm
[05:46] <daf> yeah, the translation template was the last one
[05:46] <carlos> shit, I need to change the gvim mode for .pt
[05:46] <carlos> daf: true, it's done by gvim automatically :-(
[05:46] <carlos> I forgot it
[05:47] <spiv> We should add style guide, complete with vimrc settings, for .pt to the wiki...
[05:48] <carlos> daf: I have autocmd BufNewFile,BufRead *.py set tw=78 ts=4 sts=4 sw=4 expandtab for python
[05:48] <daf> spiv: s/We should/Who will/ :)
[05:48] <carlos> I suppose that the same with *.pt should be enough, right?
[05:48] <daf> carlos: I have something similar
[05:48] <daf> carlos: and I think the same for .pt, yes
[05:48] <carlos> ok
[05:49] <carlos> and the same for .zml
[05:49] <daf> by the way, the rosetta-testers list has been renamed to rosetta-users
[05:49] <carlos> zcml
[05:49] <daf> I'm changing the references in Rosetta
[05:49] <carlos> ok
[05:49] <carlos> daf: then, will you fix the tab?
[05:51] <daf> yep
[05:51] <carlos> ok
[05:53] <SteveA> daf: bookmarks are still enabled on the alpha server
[05:53] <daf> bookmarks?
[05:53] <SteveA> duh... I meant breadcrumbs
[05:53] <daf> oh, right
[05:53] <daf> well spotted
[05:54] <SteveA> but I see that rosetta.ubuntulinux.org now points at rosetta
[05:54] <daf> gosh, so it does
[05:54] <SteveA> nothing like sending a unified diff to motivate a sysadmin :-)
[05:54] <daf> :)
[05:55] <daf> that's something to bear in mind
[05:57] <daf> SteveA: ok, I think I've stripped off everything that needs to go for the alpha
[05:58] <daf> SteveA: did I miss anything that you can see?
[05:58] <SteveA> where should I look?
[05:59] <SteveA> devel server, or alpha server?
[06:01] <daf> alpha server
[06:01] <daf> I've been making the changes locally for now
[06:01] <daf> I've been considering the possibility of having a launchpad--rosetta-alpha--0 branch
[06:02] <dilys> Bug 2027 resolved: Default header comments for new pofiles created with Rosetta are wrong
[06:02] <SteveA> https://rosetta.ubuntulinux.org/rosetta/translator doesn't work
[06:02] <SteveA> https://rosetta.ubuntulinux.org/rosetta/prefs doesn't work
[06:02] <SteveA> I'm not logged in
[06:02] <daf> hmm, those links are wrong
[06:02] <SteveA> the link in the tab to "rosetta" doesn't work
[06:02] <daf> the /rosetta shouldn't be there
[06:03] <SteveA> the title for the "about rosetta" link shows an odd character / spaces
[06:03] <SteveA> in its tooltip
[06:03] <SteveA> https://rosetta.ubuntulinux.org/projects/gnome/gnome-panel doesn't work
[06:04] <SteveA> https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets works, but appears to be entirely unstyled
[06:04] <carlos> dilys: lalo?
[06:04] <SteveA> hmm, because the base href is wrong
[06:04] <SteveA> href="https://rosetta.ubuntulinux.org/rosetta/projects/gnome/gnome-applets/index"
[06:04] <lalo> carlos: hm?
[06:05] <dilys> carlos: I'm not lalo
[06:05] <carlos> dilys: did you fixed that bug?
[06:05] <lalo> dilys seems to be a bot of daf's
[06:06] <SteveA> and all manner of links are wrong
[06:06] <SteveA> ok, there's major breakage with the virtual hosting, and I'll need to find out why that is
[06:06] <carlos> lalo: I see it? as comming from daf's machine
[06:06] <carlos> and I'm still confused :-D
[06:06] <daf> SteveA: there's lots of hardcoding of "/rosetta/..." in the main template
[06:07] <SteveA> for now, I think we need to use the backup plan of asking the sysadmins to revert the change in the vhosting configuration, and adding a redirect on the front page...
[06:07] <lalo> which is why I suppose it's a bot :-)
[06:07] <SteveA> unless fixing the main template will help
[06:07] <daf> SteveA: I've made some changes -- is anything still broken?
[06:07] <SteveA> ah...
[06:07] <lalo> dilys: hello
[06:07] <SteveA> I think the vhosting directive is wrong
[06:07] <dilys> lalo: hola!
[06:08] <carlos> daf: your boot is not utf-8 friendly :-)
[06:08] <SteveA> I'm sure it is wrong
[06:08] <daf> carlos: yeah, that's weird
[06:08] <dilys> daf: donde estas?
[06:11] <carlos> daf: about our rosetta alpha release... I forgot to mention in the meeting that we need a bts for our alpha testers...
[06:12] <SteveA> daf: the rosetta part needs to be inside the virtual hosting thing
[06:12] <SteveA> http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Zope3Book/virtualhosting.html
[06:14] <SteveA> So, I think it should be http://localhost:9010/++vh++https:rosetta.ubuntulinux.org:443/rosetta/++/
[06:14] <SteveA> and not  http://localhost:9010/++vh++https:rosetta.ubuntulinux.org:443/++/rosetta/
[06:14] <SteveA> then the base hrefs will be correct
[06:15] <daf> ok
[06:15] <daf> so should I revert the changes I made to the main template, or leave them?
[06:15] <SteveA> depends what changes you made
[06:15] <daf> and will you send a diff to the admins, or shall I? :)
[06:15] <SteveA> there should be no hardcoded /rosetta/
[06:16] <sabdfl> is there a test account for rosetta.ubuntulinux.org?
[06:16] <SteveA> you can test this on rosetta running on your machine
[06:16] <daf> there's not only hardcoded /rosetta, there's hardcoded /soyuz and /malone also
[06:16] <daf> SteveA: who can test what?
[06:16] <SteveA> give rosetta a URL with the VH stuff in it, and then look at the source -- see if the base href is okay
[06:16] <daf> ah, right
[06:16] <daf> sabdfl: yes, there is
[06:16] <sabdfl> test@ and test?
[06:17] <SteveA> daf: why is there hardcoded /soyuz etc. in the main template for rosetta?
[06:17] <sabdfl> it no work
[06:17] <daf> sabdfl: foo.bar@canonical.com :)
[06:18] <daf> SteveA: presumably because the person who wrote it didn't know better
[06:18] <daf> SteveA: what's the correct solution?
[06:18] <SteveA> but I mean, where is it linking to?
[06:18] <SteveA> we don't want the tabs etc. in the rosetta alpha
[06:18] <daf> we don't, and I've removed them
[06:19] <SteveA> so, where is the hardoded soyuz ?
[06:19] <daf> it's not there on rosetta.ul.o
[06:19] <SteveA> then that is okay
[06:19] <daf> right
[06:20] <daf> what I meant was that the locations of Rosetta, Soyuz and Malone are hardcoded relative to /
[06:20] <SteveA> what does proxypassreverse do?
[06:20] <daf> no idea
[06:21] <dilys> New bug 2029 for Launchpad/Rosetta: Languages with country codes are not working
[06:21] <carlos> dilys: sshh, it's a secret
[06:21] <carlos> :-P
[06:21] <carlos> daf: is it the mozilla boot?
[06:21] <dilys> carlos: you shouldn't have filed a bug, then :)
[06:22] <daf> carlos: "boot"?
[06:22] <carlos> bot
[06:22] <carlos> :-P
[06:22] <daf> no, it's something I hacked up myself
[06:23] <SteveA> daf: are you happy with checking that the VH things work on your machine?
[06:23] <daf> SteveA: yep, about to do that
[06:25] <daf> SteveA: no, it doesn't seem to be working
[06:27] <SteveA> can you be more specific
[06:27] <daf> I can, and I will :)
[06:28] <daf> http://localhost:8085/++vh++http:localhost:8085/rosetta/++/ takes me to the Launchpad! page
[06:28] <SteveA> ok, try it with the /rosetta/ before
[06:28] <SteveA> as in, 
[06:28] <daf> before what?
[06:28] <SteveA>   http://localhost:8085/rosetta/++vh++http:localhost:8085/++
[06:29] <daf> yes, that works
[06:29] <SteveA> how have you tested that it works?
[06:29] <daf> I loaded it in my browser and it took me to the correct page
[06:29] <SteveA> it goes to the rosetta front page.  have you checked whether there is a base href given?
[06:30] <daf> checking...
[06:32] <SteveA> for example, on the rosetta alpha site, https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets has a stray "rosetta" in the base href
[06:32] <daf> where is the base href found?
[06:32] <SteveA> in the source
[06:32] <SteveA> just after <head>
[06:32] <daf> no, there isn't one
[06:33] <SteveA> https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets/index looks fine
[06:33] <SteveA> https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets doesn't
[06:34] <daf> <base href="http://localhost:8085/projects/gnome/evolution/index" />
[06:34] <SteveA> what was the URL ?
[06:34] <daf> for a GET of http://localhost:8085/rosetta/++vh++http:localhost:8085/++/projects/gnome/evolution
[06:34] <SteveA> can you try this GET:
[06:35] <SteveA>   http://localhost:8085/rosetta/++vh++http:localhost:9999/++/projects/gnome/evolution
[06:35] <SteveA> this should give you a base with :9999 in it
[06:35] <daf> <base href="http://localhost:9999/projects/gnome/evolution/index" />
[06:35] <SteveA> ok, great
[06:35] <daf> is the trailing "index" supposed to be there?
[06:36] <SteveA> so, you can send another diff to the admins, and this stuff should work
[06:36] <SteveA> yes, that's meant to be there
[06:36] <SteveA> that's the default page
[06:36] <daf> ok
[06:37] <daf> "signalizes"?!
[06:37] <daf> (from the VH doc)
[06:38] <SteveA> it is written by someone whose native language is german
[06:39] <daf> with contributions from Marius :)
[06:40] <SteveA> yes, marius implemented the virtual hosting, along with albert and vika iirc
[06:43] <daf> ok, I've sent another request
[06:45] <SteveA> spiv: can you delete my account from launchpad that I registered with the email address steve@cat-box.net ?  (if that's the done thing to do, I mean)
[06:49] <spiv> SteveA: ok.
[06:50] <SteveA> daf: might want to ping elmo too, to let him know to expect another udiff in the mail
[06:51] <spiv> SteveA: done.
[06:51] <SteveA> thanks
[06:56] <daf> SteveA: elmo *is* here, by the way :)
[06:56] <SteveA> here is where?  on this channel you mean?  
[06:57] <daf> yes
[06:57] <SteveA> I like the bootstrapping kind of thing where suggesting to ping someone actually pings them.
[06:59] <daf> elmo: ping?
[07:11] <SteveA> daf: do you want rosetta.ubuntulinux.org to be linked to as a tab from the UL website?
[07:11] <SteveA> do you want this during the alpha?
[07:11] <daf> lulu: did you say Limi was returning today?
[07:11] <daf> SteveA: I don't care much either way
[07:11] !lilo:*! Hi all.  Again I will mention that we are still behind on verifying group contact forms you've submitted, and that we've instituted a "squeaky wheel" policy to try to improve response time....if you want to get your service expedited, just message me and I'll try to up your priority.  Thanks!
[07:12] <SteveA> will random people be able to get value from rosetta.  is it clear that they need to apply to be a tester at this stage? 
[07:12] <SteveA> is it clear that there are a different set of logins?
[07:12] <SteveA> limi should be around tomorrow
[07:12] <daf> it is a matter of policy that people are approached for testerhood
[07:13] <ddaa> spiv: I need some help to get started with the twisted-in-pyarch problem.
[07:13] <spiv> ddaa: Ok
[07:13] <spiv> What can I do for you?
[07:13] <ddaa> help clarify my ideas
[07:14] <ddaa> roughly, pyarch uses synchronous interfaces
[07:14] <ddaa> problem has been found to occur even when the reactor is not running
[07:14] <ddaa> although that is probably only a concern in test cases
[07:15] <spiv> That's intriguing.  That means it's not related to the signal handlers.
[07:15] <ddaa> So, internal twisted support needs to be enable only when the reactor is running or some magic variable is set to mean "we are running a test case in a process which uses twisted"
[07:15] <spiv> I can't think of any other global-state influencing things Twisted does, though.
[07:15] <SteveA> daf: ok, but consider youself someone who saw an article in LWN, or slashdot, then came to ubuntulinux.org, and sees a "rosetta" tab
[07:16] <ddaa> spiv: that's the problem you tried to work around at Oxford.
[07:16] <SteveA> daf: if this person clicks there, will they be given something useful, if they're not a tester?
[07:16] <ddaa> The problem test cases did not use twisted themselves, that's why it was possible to segregate them.
[07:16] <spiv> So, the problem here is that we don't know what part of Twisted is interfering.
[07:16] <SteveA> if yes, then we should have a tab linking to rosetta
[07:16] <SteveA> if no, we should not
[07:16] <spiv> So we don't know how to test for its presence.
[07:17] <ddaa> spiv: that's the root of the problem yes
[07:17] <spiv> There's always the crude "if 'twisted' in sys.modules: ..." approach.
[07:17] <ddaa> but I'm looking for a low-risk solution that I can implement before saturday evening.
[07:17] <ddaa> twisted does magic things at module import?
[07:18] <spiv> Nope.
[07:18] <spiv> Well, there's minor magic for the import of twisted.internet.reactor, but otherwise, no.
[07:18] <spiv> (and I doubt that magic is the problem)
[07:18] <ddaa> So, a reasonable solution seems to test for reactor.running (real world) and some magic flag internal to pyarh (test cases)
[07:19] <spiv> But I don't know of any other meaningful way to test for the presence of Twisted, if reactor.running is apparently not enough.
[07:19] <ddaa> I'm going to brain dump random thoughts now. Do not try to make sense of them at first.
[07:20] <spiv> Ok :)
[07:20] <ddaa> One problem is that the pyarch code is essentially synchronous.
[07:20] <ddaa> So I will have to wrap the async twisted interfaces into a synchronous interface.
[07:21] <ddaa> Yes that's evil.
[07:21] <ddaa> Since it is synchrounous, it might be a reasonably assumption that if a reactor is running, the pyarch stuff is running in a thread.
[07:21] <daf> SteveA: oh!
[07:21] <daf> SteveA: no, there shouldn't be a Rosetta tab
[07:22] <ddaa> Also, I need my test cases to run in a running reactor.
[07:22] <daf> SteveA: the alpha is not going to be announced to the public
[07:22] <ddaa> Yet they essentially have nothing async to them.
[07:22] <ddaa> The running reactor is going to be needed for two things at least.
[07:23] <ddaa> To set the reactor.running flag so pyrach internal will know to use twisted.
[07:23] <spiv> (test cases involving Twisted rarely need to run the reactor; iterating it manually usually enough)
[07:23] <spiv> (and there are utility functions like deferredResult to help with this)
[07:23] <SteveA> daf: ok, then no need for links from the UL site at this time.
[07:23] <daf> SteveA: right
[07:24] <ddaa> Another relateh problem is the wrap-in-sync problem.
[07:24] <SteveA> daf: I think it would be good to send a mail to the LP list clearly pointing this out 
[07:24] <ddaa> One major idiom in pyrach is the use of iterators over tla stdout.
[07:25] <SteveA> otherwise, the enthusiastic UL website team might link to you, or add a tab
[07:25] <ddaa> Right now I can see two ways which might me able to do it.
[07:25] <daf> SteveA: good idea
[07:25] <ddaa> 1. assuming we are in a thread, and the reactor push the output in a syncqueue which is used in the iterator.
[07:26] <ddaa> 2. manipulate the process by hand, that might be possible if processes provide a nice deffered interface
[07:26] <spiv> 1. sounds reasonable to me.
[07:27] <ddaa> 3. use reactor.iterate, but that might not be possible if the reactor is already running somewhere else.
[07:27] <spiv> I'm not sure what you mean in 2 by "manipulate the process by hand", but it doesn't sound good :)
[07:27] <spiv> And 3 definitely sounds wrong.
[07:27] <spiv> I think 1 is the right approach here.
[07:27] <spiv> You u
[07:28] <ddaa> spiv: can you work with a process with an interface which is based only on deferreds?
[07:28] <daf> SteveA: ok, looks like r.ul.o's vhosting is working now
[07:28] <SteveA> daf: cool -- elmo made the change to VH.  rosetta pages now look correct.
[07:28] <spiv> ddaa: I think the answer is yes, but I'm not convinced the question makes sense ;)
[07:28] <daf> SteveA: ok, do you think #2026 can be closed?
[07:28] <ddaa> What I want to do barely make any sense to start with...
[07:29] <ddaa> I am thinking about using the twisted process handling code w/o involving the reactor at all.
[07:29] <spiv> Oh, I see.
[07:29] <ddaa> Since the code that need to work with process is synchronous to start with.
[07:29] <SteveA> daf: looks like all those things are done
[07:30] <spiv> No, the twistd process handling code very much depends on the reactor.
[07:30] <spiv> s/twistd/twisted/
[07:30] <spiv> SteveA: There is an IReactorCore :)
[07:30] <spiv> (which has a .crash method, even)
[07:31] <ddaa> Then, what if pyarch code is invoked from the reactor thread?
[07:31] <spiv> Well, it shouldn't be.  Just like blocking socket reads shouldn't be :)
[07:31] <ddaa> Can you think of any way that will not cause a deadlock?
[07:32] <dilys> Bug 2026 resolved: clean up UI for Rosetta alpha
[07:32] <spiv> I don't see what's wrong with option 1 -- pyarch is in its own happy thread, and twisted's event loop is in its own happy thread, and they communication via the usual inter-thread methods.
[07:32] <ddaa> Because, according to murphy's law, you can be pretty sure there is some code somewhere in production which calls pyrach from the reactor thread.
[07:32] <spiv> Well, that code is almost certainly buggy :)
[07:33] <ddaa> It's not buggy according to the current contract, which is "pyarch does not fuck around with reactors"
[07:33] <spiv> Right, the bug wouldn't lie in pyarch.
[07:34] <spiv> Or in twisted... it would be in the code that is incorrectly integrating them.
[07:34] <spiv> You can't stop people writing buggy software with your library ;)
[07:34] <ddaa> see, my goal is get production importd up and running as fast as possible, not to uncover new design flaw that will manifest themselves by random deadlocks...
[07:35] <spiv> Right.  So I don't see where the deadlocks are yet.
[07:35] <ddaa> Are you familiar with importd?
[07:35] <spiv> What makes you think deadlocks are a problem?
[07:35] <spiv> Somewhat.
[07:35] <ddaa> I have no specific idea.
[07:35] <spiv> Ok, so, forget about the reactor for a moment :)
[07:36] <ddaa> Just that currently, nothing prevents from calling pyarch from the reactor thread.
[07:36] <ddaa> So it's almost certainly done somewhere.
[07:36] <ddaa> Somewhere = in the canonical code
[07:36] <spiv> That's not too hard to fix.
[07:37] <spiv> give me a sec
[07:37] <ddaa> Okay. Forget about reactors. I think you have a pretty clear idea of the problem,
[07:37] <ddaa> What's your take on the problem?
[07:38] <spiv> Ok, twisted.python.threadable.isInIOThread() will tell you if you're in the reactor's thread.
[07:38] <ddaa> kewl
[07:38] <spiv> And should be safe to call even if the reactor isn't running.
[07:38] <ddaa> Okay. That's solving it.
[07:39] <spiv> (it probably should be a method on the reactor, but oh well...)
[07:39] <ddaa> wait a min...
[07:39] <ddaa> gotta meditate a bit about it. ..
[07:40] <spiv> Sure :)
[07:40] <spiv> Unfortunately, I'll have to go in a few minutes (same time as daf).
[07:41] <ddaa> When are you back?
[07:41] <spiv> After dinner, we're going out to a thai restaurant.
[07:42] <spiv> I'm not sure precisely how long it will be, sorry :(
[07:42] <ddaa> more like 4h than 8h
[07:43] <spiv> I hope to be sleeping 8h from now :)
[07:43] <ddaa> as you might guess, I'm not planning to go bed before that's fixed or I am unable to think...
[07:43] <spiv> Ah, right.
[07:45] <ddaa> (lightbulb)
[07:46] <ddaa> as a quick hack, I can degrade to "non-incremental" if reactor is running...
[07:46] <ddaa> i.e. just slurps the stdout
[07:46] <SteveA> spiv: roche has a question
[07:47] <ddaa> then I can build on top of that later
[07:48] <ddaa> spiv: is the reactor code reentrant?
[07:51] <ddaa> no... that would probably not make sense...
[08:50] <carlos> spiv: are you here?
[09:48] <carlos> funny
[09:48] <carlos> SteveA: ping?
[10:00] <kiko> spiv, is the auth bustage landed yours?
[10:45] <SteveA> carlos: hey
[10:45] <SteveA> I'm about to go to sleep
[10:51] <SteveA> I read your email about authentication
[10:51] <SteveA> I'll look into it tomorrow morning, if no-one else has tracked it down by then
[10:53] <daf> carlos: which server are you having trouble with?
[10:54] <daf> carlos: or is it both?
[11:04] <carlos> SteveA: ok
[11:04] <carlos> daf: with my local server
[11:04] <carlos> and with warthogs one
[11:05] <carlos> rosetta.warthogs.hbd.com
[11:05] <carlos> SteveA: night
[11:06] <carlos> spiv: I'm using alternateID instead of normal selectBy methods
[11:07] <carlos> spiv: I suppose it should improve the SQLObject use, right?
[11:07] <carlos> spiv: should I add it to the Wiki?
[11:07] <SteveA> carlos: can you file a bug on the authentication problems you're seeing?
[11:07] <carlos> SteveA: sure
[11:07] <SteveA> that way, it will be plain whether I need to look into it tomorrow, and what others have found out
[11:08] <carlos> ok
[11:08] <spiv> carlos: Yes, please.  I forgot about that feature!
[11:08] <carlos> spiv: also, I don't see a way to "map" a INNER JOIN inside SQLObject queries
[11:09] <carlos> spiv: do you know if it exists?
[11:09] <daf> carlos: what query do you want to do?
[11:09] <spiv> Because you want to return columns from multiple tables at once?
[11:10] <spiv> ddaa: No, the reactor is definitely not re-entrant!
[11:11] <carlos> results = RosettaPOMessageSet.select('''
[11:11] <carlos>             pofile = %d AND
[11:11] <carlos>             primemsgid = %d
[11:11] <carlos>             ''' % (self.id, msgid.id))
[11:11] <carlos> that query
[11:11] <carlos> with normal selects could be improved with INNER JOIN
[11:11] <carlos> hmmm
[11:12] <carlos> wait, bad example
[11:12] <carlos> seqzero = RosettaPOMessageSet.select('''
[11:12] <carlos>             poSet.pofile = %d AND
[11:12] <carlos>             poSet.primemsgid = potset.primemsgid AND
[11:12] <carlos>             poSet.potemplate = potset.potemplate AND
[11:12] <carlos>             potSet.pofile IS NULL AND
[11:12] <carlos>             poSet.sequence <> 0 AND
[11:12] <carlos>             potSet.sequence = 0''' % self.id,
[11:12] <carlos>             clauseTables = [
[11:12] <daf> grrrrrrrrr!
[11:12] <carlos>                 'POMsgSet poSet',
[11:12] <carlos>                 'POMsgSet potSet',
[11:12] <carlos>                 ] )
[11:12] <carlos> this one is better
[11:13] <daf> I can't wait for .sorted()
[11:13] <carlos> spiv: it's only to improve the queries, instead of a FROM with a list of tables
[11:13] <carlos> daf: what's the problem?
[11:13] <daf> carlos: I have to do
[11:14] <daf> somelist = blah.blarg()
[11:14] <daf> somelist.sort()
[11:14] <daf> return somelist
[11:14] <daf> instead of:
[11:14] <daf> return blah.blarg().sorted()
[11:15] <daf> this is one thing Ruby has right: .sort for non-destructive sorting, .sort! for destructive sorting
[11:15] <spiv> daf: return (lambda l=somelist: l.sort() or l)()   ;)
[11:16] <daf> spiv: :D
[11:16] <ddaa> spiv: yeah... I was high on crack...
[11:16] <spiv> (yes, that's unnecessarily compless :)
[11:16] <spiv> er, complex
[11:16] <ddaa> You know twisted is heavy crack ;-)
[11:17] <daf> I don't think Steve would approve :)
[11:17] <daf> what's the simpler version?
[11:17] <spiv> return somelist.sort() or somelist
[11:17] <daf> ewww
[11:17] <daf> that's still smelly
[11:18] <spiv> Well, yes :)
[11:18] <carlos> :-P
[11:18] <spiv> sorted = lambda l: l.sort() or l; return sorted(l)  is slightly better, but no longer one statement.
[11:18] <ddaa> somelist.sort() or return somelist
[11:18] <spiv> ddaa: return is statement, not an operator.
[11:19] <ddaa> right....
[11:19] <spiv> Oh, I get your point.  Yuck :P
[11:19] <ddaa> What about just using two statement?
[11:20] <daf> ddaa: that's what I'm doing :)
[11:20] <daf> ddaa: I'm just saying I don't like it :)
[11:20] <daf> bah!
[11:20] <daf> ForbiddenAttribute: ('sort', ...
[11:21] <ddaa> daf: I'm pretty there are for python programmers with weird fetishes, like ternary operators and sort return values :
[11:21] <ddaa> * there are clubs
[11:21] <daf> an aversion to destrcutivity is not a weird fetish :)
[11:23] <daf> Python does have a ternary operator -- it looks like this: [value1, value2] [condition] 
[11:23] <dilys> New bug 2030 for Launchpad/Launchpad: After authenticate, launchpad fails with a system error
[11:25] <daf> carlos: you say running on port 8089 doesn't work?
[11:25] <carlos> daf: it works
[11:25] <carlos> daf: but as anonymous
[11:25] <daf> or rather, it doesn't produce an error
[11:25] <carlos> so you cannot debug the problem
[11:25] <daf> hrm
[11:26] <carlos> same problem with ++skin++Debug
[11:26] <daf> I know why ++skin++Debug is a problem, but not the PDB
[11:26] <carlos> daf: you can try it, rosetta.warthogs.hbd.com has the same problem
[11:26] <carlos> hmm
[11:27] <carlos> well, I did not check the pdb with the rosetta server because I don't see a way to test it :-)
[11:27] <daf> of course :)
[11:27] <carlos> but I assume that as it has the same bug, you will get the same problem
[11:27] <carlos> :-)
[11:28] <daf> I do get the same problem
[11:28] <carlos> perfect, I thought I broke anything with my sqlobject changes
[11:28] <daf> one techique I use is to switch the ports around
[11:28] <elmo> eww, ternary operator's in python?  please tell me you guys aren't using that
[11:28] <ddaa> There is a widthdrawn pep about that.
[11:29] <daf> elmo: not really
[11:29] <daf> elmo: but ['foo', 'bar'] [True]  == 'bar' and ['foo', 'bar'] [False]  == 'foo'
[11:29] <daf> elmo: so you can emulate it
[11:30] <ddaa> Guido said "as people are unable to come to an agreement about ternary operators, I'll just reject the proposal"
[11:30] <ddaa> Or something just as smooth to the same effect.
[11:31] <daf> I didn't like any of the proposals
[11:31] <daf> they were all a bit ugly
[11:32] <ddaa> daf, btw methink that's a case for using a tuple instead of a list...
[11:32] <daf> spiv: any word on DISTINCT support in SQLObject?
[11:33] <spiv> daf: None yet... is it a performance problem yet?
[11:33] <daf> ddaa: yeah, a tuple would work, but is there any practical difference?
[11:33] <daf> spiv: no, merely annoying :)
[11:33] <ddaa> daf: no practical difference, but it's not intended to be mutable, so it should be a tuple. That's the most appropriate type for the use.
[11:33] <daf> need to do list(Set(Foo.select(...)))
[11:34] <daf> ddaa: agreed
[11:35] <spiv> carlos: Hmm, I think there's a better way to write that example without needing to change SQLObject.
[11:35] <daf> spiv: launchpad/lib/sqlobject/dbconnection.py(510)iterSelect(): TypeError: iteration over non-sequence
[11:35] <daf> spiv: this is the error behind #2030, I think
[11:36] <spiv> daf: Ok, I'll take ae look at that... I've got a workaround for that, but I want to think about it first :)
[11:36] <daf> spiv: actually, I might have got the location wrong -- this traceback is confusing
[11:36] <carlos> spiv: which one? Do you have it ? or where could I read about it?
[11:36] <spiv> carlos: Just a sec
[11:37] <carlos> sure
[11:37] <spiv> carlos: RosettaPOMessageSet.select('''
[11:37] <spiv>             POMsgSet.pofile = %d AND
[11:37] <spiv>             POMsgSet.iscomplete=TRUE AND
[11:37] <spiv>             POMsgSet.primemsgid = potset.primemsgid AND
[11:37] <spiv>             POMsgSet.potemplate = potset.potemplate AND
[11:37] <spiv>             potSet.pofile IS NULL AND
[11:37] <spiv>             potSet.sequence <> 0''' % self.id,
[11:37] <spiv>             clauseTables = [
[11:37] <spiv>                 'POMsgSet potSet',
[11:37] <spiv>                 ] )
[11:38] <spiv> EXPLAIN expects that to be twice as fast... I don't know if that's really the case or not :)
[11:38] <carlos> hmm, that change will speed the query?
[11:38] <spiv> It's also not as clear :(
[11:39] <carlos> spiv: interesting
[11:39] <spiv> Well, EXPLAIN in psql thinks so.  I'd appreciate testing :)
[11:40] <spiv> (In fact, I suspect the previous query might be outright buggy...)
[11:40] <daf> spiv: buggy?
[11:41] <carlos> spiv: no, it looks correct
[11:41] <carlos> but If it improves the speed... the postgres parser is really bad :-)
[11:42] <carlos> under my point of view, of course
[11:42] <spiv> carlos: No, it's SQLObject's fault...
[11:42] <spiv> If I'm correct, the currently generated query is:
[11:42] <spiv> select * from POMsgSet, POMsgSet poSet, POMsgSet potSet WHERE poSet.pofile = 1 AND poSet.primemsgid = potset.primemsgid AND poSet.potemplate = potset.potemplate AND potSet.pofile IS NULL AND poSet.sequence <> 0 AND potSet.sequence = 0;
[11:42] <spiv> vs.
[11:43] <spiv> select poSet.* from POMsgSet poSet, POMsgSet potSet WHERE poSet.pofile = 1 AND poSet.primemsgid = potset.primemsgid AND poSet.potemplate = potset.potemplate AND potSet.pofile IS NULL AND poSet.sequence <> 0 AND potSet.sequence = 0;
[11:43] <carlos> oohh, I see
[11:43] <spiv> (actually, my proposed change will generate a slightly different, but equivalent, query to the last one, I'm just too lazy to retype it ;)
[11:44] <carlos> spiv: I see your point
[11:44] <spiv> I admit to being mildly concerned that the origial query returns twice as many columns!
[11:45] <carlos> spiv: I'm looking at the logs now
[11:45] <carlos> spiv: to check for it
[11:45] <daf> spiv: oh, ouch
[11:45] <spiv> carlos: The reason I was initially confused is that it's my understanding that INNER JOIN is the default behaviour when you say "SELECT * FROM TableA WHERE TableA.b = TableB.id;"
[11:45] <daf> spiv: can you tell we're SQL amateurs? :)
[11:45] <spiv> I could be wrong, of course :)
[11:46] <spiv> daf: Well, the problem here is that SQLObject provides no nice way to do this, so it's easy to get confused :(
[11:46] <carlos> spiv: well, it's the same thing, but postgres manual says that it's faster with INNER JOIN
[11:46] <spiv> carlos: Ooh, where does it say that? :)
[11:46] <spiv> Now it's my turn to bitch about it's parser ;)
[11:47] <carlos> This is the query that sqlobject generates:
[11:47] <carlos> SELECT POMsgSet.id, POMsgSet.potemplate, POMsgSet.pofile, POMsgSet.primemsgid, POMsgSet.sequence, POMsgSet.iscomplete, POMsgSet.fuzzy, POMsgSet.obsolete, POMsgSet.commenttext, POMsgSet.filereferences, POMsgSet.sourcecomment, POMsgSet.flagscomment FROM POMsgSet poSet, POMsgSet potSet, POMsgSet WHERE
[11:47] <carlos>                     poSet.pofile = 2 AND
[11:47] <carlos>                     poSet.primemsgid = potset.primemsgid AND
[11:47] <carlos>                     poSet.potemplate = potset.potemplate AND
[11:47] <carlos>                     potSet.pofile IS NULL AND
[11:47] <carlos>                     poSet.sequence <> 0 AND
[11:47] <carlos>                     potSet.sequence = 0
[11:47] <carlos> spiv: so you are right we get a lot of extra rows
[11:47] <daf> s/rows/columns/
[11:47] <daf> ?
[11:47] <spiv> carlos: Extra rows, too?  Ouch.  I don't have the sampledata to test with, so I merely noticed extra columns.
[11:47] <spiv> (I'm not surprised, though...)
[11:49] <carlos> I think so
[11:49] <carlos> let me check it
[11:49] <daf> yeah, PDB claims the error is at
[11:49] <daf> 509             return iter(list(Iteration(self, self._connection,
[11:49] <daf> 510  ->                               select, keepConnection=True)))
[11:50] <daf> which looks vaguely familiar :)
[11:50] <carlos> hmmm, seems like I was wrong and we only get extra columns
[11:51] <carlos> I don't know why but I saw a way to get extra rows... but that's an offtopic now :-)
[11:51] <carlos> spiv: http://www.postgresql.org/docs/7.4/static/tutorial-join.html
[11:52] <carlos> spiv: a "normal" INNER JOIN is the same thing than a list of tables at FROM 
[11:52] <carlos> but you can handle it in a better way with INNER JOIN so the query is faster
[11:53] <carlos> with LEFT/RIGHT options
[11:53] <carlos> so you can select which table will be the pivot
[11:53] <daf> I thought LEFT and RIGHT are for OUTER joins only
[11:54] <carlos> daf: we have lots of those queries
[11:54] <carlos> about msgid and translations 
[11:54] <carlos> I should look at it closer
[11:55] <spiv> Except the SELECT * FROM TableA WHERE TableA.b = Tableb.value; case is a different case to SELECT * FROM TableA, TableB WHERE TableA.b = Tableb.value;
[11:57] <daf> humph -- even list.sort is a Forbidden value :(
[11:57] <carlos> spiv: From where do you get the Tableb for the first query?
[11:57] <carlos> daf: zope error?
[11:57] <daf> carlos: yeah :(
[11:57] <spiv> carlos: Nowhere -- I'm not selecting values from tableB.
[11:58] <spiv> carlos: I'm selecting rows on tableA by joining with tableB...
[11:58] <carlos> daf: you could try to wrap it inside a browser.py method
[11:58] <spiv> I think it's a dodgy shorthand, but it's a convenient one ;)
[11:58] <daf> carlos: this is inside browser.py :)
[11:59] <carlos> spiv: hmm, so you have that concrete value for Tableb before the query, right?
[11:59] <carlos> daf: then I don't understand why are you getting it :-)
[11:59] <spiv> carlos: Nope.
[11:59] <daf> carlos: browser.py runs under the same security restrictions as the page templates themselves
[12:00] <spiv> carlos: I believe it's equivalent to SELECT * FROM TableA INNER JOIN TableB ON (TableA.b = TableB.value);
[12:00] <carlos> spiv: are you telling me that if I execute that query from psql it will work?
[12:00] <spiv> carlos: Absolutely: