[03:14] <salgado> hi stub 
[03:15] <stub> Morning
[03:17] <salgado> stub: can we test the shipit exports on staging before it goes to rocketfuel?
[03:17] <stub> salgado: Sure. Is it just web ui, or do I need to run something?
[03:18] <stub> Oh.. you mean I need to rollout a particular branch
[03:18] <stub> Sure
[03:18] <salgado> stub: yes, get the changes from my branch 
[03:18] <stub> salgado: What is the branch?
[03:18] <salgado> you would need to run the cronscript
[03:19] <salgado> stub: guilherme.salgado@canonical.com/launchpad--shipit-exports--0
[03:24] <stub> salgado: The staging is currently being rebuilt so I will need to wait until that is complete.
[03:26] <salgado> stub: sure. no problem at all
[03:26] <salgado> stub: btw, what patch number should I use for that db patch?
[03:26] <stub> salgado: It will probably be another hour before I can start. If you let me know the cronscript to run and any special instructions you can go to bed ;)
[03:27] <stub> 25-34-0
[03:30] <salgado> stub: you need to run cronscripts/shipit-exports.py with both --priority=high and --priority=normal
[03:31] <salgado> that should be everything that needs to be done
[03:38] <stub> ok
[03:38] <salgado> I mean, need to run it two times
[04:17] <dilys> Merge to rocketfuel@canonical.com/launchpad--production--1.34: Cherry pick patch-2560 into production 1.34 (patch-20: rocketfuel@canonical.com, guilherme.salgado@canonical.com)
[04:48] <dilys> Merge to rocketfuel@canonical.com/launchpad--production--1.35: Cherry pick patch-2560 into production 1.35 (patch-2: rocketfuel@canonical.com, guilherme.salgado@canonical.com)
[06:26] <tritium> Hi.  I merged two launchpad accounts (rimbert and mrimbert) into rimbert.  I'd like to change my launchpad name to mrimbert, but can't, as it says the name is already in use.
[06:26] <lifeless> tritium: it preserves the old name. can you do me a favour and file a bug on launchpad in launchpad..
[06:27] <lifeless> stub and I had a discussion about this, and this is the proof I needed ;0
[06:27] <tritium> Okay, lifeless.  Thanks.
[06:27] <tritium> :)
[06:31] <tritium> lifeless, actually, how do I file a bug against launchpad itself?  I can only seem to file against launchpad-integration
[06:31] <lifeless> https://launchpad.net/products/launchpad/+bugs
[06:31] <tritium> thanks
[07:49] <lifeless> stub: 14:26 < tritium> Hi.  I merged two launchpad accounts (rimbert and mrimbert) into rimbert.  I'd like to change my launchpad name to mrimbert, but can't, as it 
[07:50] <lifeless>                  says the name is already in use.
[07:50] <tritium> lifeless, I did file a bug, by the way
[07:50] <lifeless> tritium: sweet, thanks
[07:51] <tritium> thank you too :)
[07:58] <stub> tritium: Fixed. When did you merge the accounts by the way? This issue should no longer be happening.
[07:59] <tritium> stub, wow, that was fast!  This was 1.5-2 months ago
[07:59] <tritium> Thanks for the rapid response!
[07:59] <stub> tritium: ok. before the bug fix. Ta ;)
[07:59] <tritium> :)
[08:01] <tritium> you guys rock
[08:12] <tritium> good night!
[08:19] <sabdfl> morning all
[08:24] <Burgundavia> bradb, grumble. Your malone has dumb bug mail. It causes dumb things like the email I am forwarding to you know
[08:26] <Kinnison> Morning all
[08:26] <Kinnison> sabdfl: Dude, what time do people tend to get to the office?
[08:27] <sabdfl> by 9 usually
[08:27] <Kinnison> okay. Scott woke me with an SMS at 06:20
[08:27] <Kinnison> (which was nice)
[08:27] <Kinnison> and my first shower failed to have hot water due to me being so damned sleepy as a result
[08:28] <SteveA> hi
[08:29] <SteveA> builds character dude
[08:29] <Kinnison> SteveA: \U{TWO FINGERED SALUTE}
[08:33] <SteveA> a friend of mine went to an english boarding school: they said the same about buggery in the dormitories. "builds character"
[08:34] <Kinnison> This could only be #launchpad
[08:35] <Kinnison> <fx:sound src="fading footsteps" />
[08:48] <ddaa> mh, gotta go fetch some eclipse glasses, there's a partial sun eclipse starting in half an hour here
[09:19] <Kinnison> What is the correct way to ensure a librarian is running for a given doctest?
[09:28] <bob2> you're in london?
[09:56] <Kinnison> bob2: aye
[10:01] <jordi> I need help from a Launchpad admin.
[10:01] <Kinnison> what do you need?
[10:02] <jordi> 23:44 < jordi> https://launchpad.net/products/xqf/+series/main/+pots/quicktour/+admin <--- can't access this, can you do an operation here?
[10:02] <jordi> 23:45 < jordi> this quicktour thing needs to be reassigned to the ubuntu-docs product. Can you do this?
[10:04] <Kinnison> jordi: ubuntu-doc/main ?
[10:05] <stub> Kinnison: Make sure LibrarianTestSetup().setUp() and LibrariaTestSetup().tearDown() is invoked. If you mean the tests in launchpad/doc, most of them that need the Librarian do this explicitly
[10:05] <Kinnison> stub: thanks dude
[10:07] <jordi> damn, sorry Kinnison 
[10:07] <jordi> Kinnison: I think so, yes.
[10:08] <ajmitch> hey jordi 
[10:08] <Kinnison> Is that right? xqf's template reassigned to ubuntu-doc ?
[10:08] <jordi> lety me conform something
[10:09] <jordi> confirm even
[10:10] <jordi> Kinnison: it's ubuntu-docs in the breezy distro
[10:10] <Burgundavia> jordi, wondering why the quicktour is not listed here? https://launchpad.net/products/ubuntu-doc/+translations <-- do I need to wait for something to happen server-side?
[10:11] <jordi> Burgundavia: we're doing it right now
[10:11] <Burgundavia> jordi, cheers, thanks very much
[10:12] <Kinnison> jordi: done
[10:12] <jordi> Burgundavia: I don't understand too well why we have ubuntu-docs and a ubuntu-doc product though
[10:13] <jordi> Kinnison: thanks mate
[10:41] <SteveA> jamesh: hi, around?
[10:43] <jamesh> SteveA: yeah?
[10:44] <SteveA> hi.  so, there's a bug in DPoT that mpt reported recently.  i was wondering what's in your queue of stuff to do, and if there's space for you to look at it?
[10:45] <jamesh> SteveA: I'm looking at Bjorn's PreDefinedBugReports branch right now, but I can take a quick look now
[10:45] <jamesh> what is the bug #?
[10:45] <SteveA> just a sec, i'll get it
[10:46] <SteveA> also, can you add your travel details to https://wiki.canonical.com/UbuntuBelowZero ?
[10:47] <jamesh> sure
[10:49] <SteveA>  https://launchpad.net/malone/bugs/1421  but, it looks different...
[10:49] <SteveA> seems mpt various work and produced a test case
[10:49] <SteveA> but then retracted it
[10:49] <SteveA> "Failing test in mpt@canonical.com/launchpad--dpot--0509"
[10:49] <SteveA> that was in the bug status whiteboard, but now it is changed to something else
[10:49] <jamesh> SteveA: also, I saw https://launchpad.net/products/launchpad/+bug/2606, and I don't think it is a bug -- flush_database_updates() and transaction.commit() have quite different semantics
[10:50] <SteveA> on database commits: i'd have thought that commit() ought to do the equivalent of flushing updates
[10:50] <SteveA> so flushing updates flushes updates, and committing flushes updates and commits
[10:51] <jamesh> flush_database_updates() causes all live SQLObjects to write their changes to the database
[10:51] <jamesh> transaction commit does the same and empties the SQLObject caches (you aren't meant to make use of any SQLObjects created before the commit after the commit)
[10:52] <SteveA> hmm
[10:53] <SteveA> so, i see two options here
[10:53] <jamesh> the bugs.txt test does make use of the SQLObjects after flush_database_updates(), so SQLObject would get confused if you changed to transaction.commit()
[10:53] <SteveA>  one is to do as the zodb does, which is that after a commit(), objects that are still around are considered to be part of the next transaction, implicitly
[10:53] <SteveA>  the other is to make sure that after a commit(), the sqlobjects give a clear and early error if they are used
[10:54] <SteveA>  in which case, commit() is reserved for the end of transactions, and flush_updates() is for any time you want to sync with the database
[10:54] <jamesh> then maybe the commit() operation should be changed to expire the live SQLObjects rather than just removing them from the cache
[10:54] <SteveA> that is the safest option right now
[10:54] <Kinnison> Not being able to iterate a results set committing as you go would be annoying as hell
[10:54] <SteveA> as making them get transfered to the next transactions sounds tricky
[10:54] <SteveA> it certainly has caused problems in zodb before
[10:55] <SteveA> (as in, there were subtle bugs that needed fixing)
[10:55] <SteveA> Kinnison: you'd need to take the list of ids out of there
[10:55] <SteveA> Kinnison: iterating a result set while mutataing sounds like it would have underfined semantics
[10:56] <jamesh> Kinnison: the result set isn't guaranteed to be valid after the commit
[10:56] <SteveA> like, in python, it has specific errors if you try to mutate the underlying object of an iterator while you are iterating
[10:56] <SteveA> so, you *should* already be taking a list of the ids you're interested in, and using that
[10:56] <jamesh> some other transaction could be executed that removes half the rows between your transactions
[10:57] <Kinnison> That's fine
[10:57] <SteveA> what's fine?
[10:57] <Kinnison> each loop can be protected
[10:57] <Kinnison> but it feels natural to do:
[10:57] <Kinnison> for thing in resultset:
[10:57] <Kinnison>    stuff_involving_thing
[10:57] <Kinnison>    commit()
[10:58] <SteveA> you'd need to say
[10:58] <SteveA> for thing in list(resultset):
[10:58] <SteveA> 
[10:58] <SteveA> i coudl understand that
[10:58] <Kinnison> That'd be acceptable
[10:58] <Kinnison> but having to do bizarre ID extraction would be annoying
[10:59] <Kinnison> Also, I have to (for example) commit transactions to the DB in order to get librarian files committed so that I can pass them to the slave
[10:59] <Kinnison> to not be able to carry on doing stuff after such a commit with the objects I already have would be an utter utter pain
[11:00] <SteveA> so, i can understand how keeping an object around between transactions makes sense
[11:00] <SteveA> and how you can expect its state to be taken from the new state in the database, transparently, after transaction commit
[11:00] <SteveA> the keeping a result set iteration going across transactions is crack
[11:01] <SteveA> now, we need to ask whether we want to support this "keeping an object around across transactions thing"
[11:01] <SteveA> as a party to the "george bailey object" issues with the zodb a while ago
[11:01] <SteveA> i think we should not support this right now
[11:01] <SteveA> seeing as sqlobject doesn't properly support it
[11:01] <SteveA> and i'd rather have an early failure, and predictable processing, rather than stuff that doesn't work as expected
[11:02] <Kinnison> I *think* the buildd queue builder relies on it working (and does work)
[11:02] <SteveA> and leave the "keep objects between transactions" thing as a feature request
[11:02] <SteveA> Kinnison: it may well work right now.  who is to say if an update to sqlobject will break it for the case you're using it?
[11:02] <Kinnison> Right
[11:02] <SteveA> it is a very fragile thing you're depending on
[11:02] <SteveA> how much effort is it to make the buildd queue builder do something more explicit?
[11:03] <Kinnison> okay, when cprov gets in I'll ask him about that
[11:03] <SteveA> okay
[11:03] <SteveA> jamesh: what do you think about all this?
[11:03] <SteveA> at some point in the future, i want to investigate using the zodb as the object layer for launchpad, keeping the same RDB at the back end
[11:04] <SteveA> because with features like this, it makes sqlobject go towards where the zodb is already
[11:04] <SteveA> but, that's for the way future
[11:04] <SteveA> plenty of things to do before that, and perhaps even keeping objects sanely across transactions, especially if sqlobject upstream does it well
[11:06] <jamesh> SteveA: at the moment, it looks like slightly different things happen in the zopeless case and main launchpad case.  The zopeless case looks like it leaves all objects live if the transaction is not aborted.
[11:11] <SteveA> jamesh: what do you recommend doing?
[11:12] <carlos> morning
[11:13] <jamesh> SteveA: given the current implementation, it probably makes sense to explicitly expire() all objects on transaction commit
[11:13] <jamesh> SteveA: that will probably cause problems with various zopeless scripts, but I wouldn't be surprised if it fixed the memory issue with carlos's whitespace script
[11:13] <SteveA> i'm all in favour of the minimal difference between the behaviour when running with zope and with zopeless
[11:14] <jamesh> it's probably worth expiring the cached objects in the zope case too
[11:14] <SteveA> jamesh: okay.  i think this is a good thing to do.  we must be careful about scripts that aren't sufficiently tested.
[11:14] <carlos> jamesh, well, we rewrote the script to reduce the memory needs
[11:14] <SteveA> yes, i think so too
[11:15] <SteveA> jamesh: will you take on the task of doing this?
[11:15] <jamesh> okay
[11:15] <SteveA> Kinnison: will you talk with cprov about any scripts for the buildds etc. that this may cause problems for?
[11:16] <SteveA> here's an idea: an iterator helper that will remember the ids from a resultset but still issue up-to-date objects
[11:17] <Kinnison> That could be handy
[11:17] <Kinnison> SteveA: I'll talk with cprov later
[11:17] <SteveA> thus moving the issue up to the application level
[11:17] <SteveA> it should also be possible to get the id of an expired object
[11:17] <SteveA> jamesh: do you know if that is possible?
[11:19] <SteveA> jamesh: i don't see your name there yet: https://wiki.canonical.com/UbuntuBelowZero
[11:23] <jamesh> SteveA: if we aren't clearing the cache, such an iterator would just need to call sync() on objects that are expired when it gets to them
[11:24] <SteveA> what has clearing the cache got to do with it?
[11:26] <jamesh> SteveA: if we just expire() all items in the cache, the objects can be used again after calling sync() on them
[11:26] <SteveA> i would expect these semantics to work regardless if whether we have a cache or not
[11:26] <SteveA> if i have a reference to an expired object
[11:26] <SteveA> then i can call sync() on it
[11:26] <jamesh> they get moved to a weak dict, so that they can get garbage collected
[11:26] <jamesh> yeah.
[11:27] <jamesh> so a wrapper for a result set would convert the result set to a list, and iterate through it
[11:27] <SteveA> this part of sqlobject, with a cache with ref and weakref buckets, is unnecessarily complex
[11:27] <jamesh> before returning an object, check if it is expired, and if so call sync() on it to get new values
[11:28] <SteveA> what does sync() do if the object in question has been deleted?
[11:28] <SteveA> (not so much a problem in launchpad, i guess)
[11:28] <jamesh> raises SQLObjectNotFound
[11:28] <SteveA> ok
[11:28] <SteveA> we need to watch out for security issues
[11:29] <SteveA> the main one being that we don't rely on stopping people getting to an object
[11:29] <SteveA> but, i think we're okay on that count anyway
[11:29] <SteveA> although i haven't examined the embargo stuff with that in mind
[11:29] <SteveA> i know there is specific embarg-related code to stop you getting at an object
[11:30] <SteveA> i don't know if there is also standard security authorization policy code for embargoed objects
[11:30] <SteveA> Kinnison: care to comment?
[11:30] <Kinnison> erm, urgh
[11:31] <SteveA> okay
[11:31] <Kinnison> what is the question?
[11:31] <SteveA> my question is pretty simple
[11:31] <SteveA> i have seen the code in the database classes that ensures that you can't retrieve an embargoed object
[11:31] <Kinnison> Aye, unless you really mean it
[11:32] <SteveA> i'm asking whether there is also standard authorization policy code (security.py) that will stop you seeing the attributes of that object
[11:32] <SteveA> if you do manage to get it
[11:32] <jamesh> stuff in database/publishing.py?
[11:32] <Kinnison> SteveA: Not yet
[11:32] <SteveA> Kinnison: okay, that needs fixing
[11:32] <SteveA> the check in the database class is the braces
[11:32] <SteveA> but we need the standard issue belt too
[11:33] <Kinnison> SteveA: Right. I don't know how to do that
[11:33] <Kinnison> SteveA: file a bug for it to be done
[11:33] <SteveA> for now, can you file a bug on it?
[11:33] <Kinnison> SteveA: It's not critical until we open dapper's security stuff in six months from now
[11:33] <SteveA> or tell me the details to go in such a bug
[11:34] <Kinnison> For now, just file a bug saying "need to implement embargo protection for security proxied objects" or something
[11:34] <Kinnison> and say what you mean by "standard authorization policy code (security.py)" too
[11:34] <SteveA> what kind of objects need this protection?
[11:34] <SteveA> SPs and BPs?
[11:35] <Kinnison> SteveA: Just Secure{Source,Binary}PackagePublishingHistory
[11:35] <Kinnison> Other than those, there's no way to know about embargo
[11:35] <Kinnison> SPPH.SPP,BPPH,BPP don't admit to embargoed packages at all
[11:35] <Kinnison> at the DB level
[11:35] <Kinnison> (I.E. in the VIEW definition)
[11:36] <SteveA> ok
[11:36] <SteveA> this is all good
[11:37] <SteveA> i'm not going to mark the bug "private"
[11:37] <SteveA> because i am certain it isn't exploitable in any way without changing source code in a deliberate and convoluted way
[11:38] <SteveA> and anyone who can change source code can do other easier things
[11:39] <Kinnison> thanks
[11:39] <SteveA> jamesh: please add your flight details to the UBZ wiki page right away
[11:40] <jamesh> SteveA: added.
[11:40] <SteveA> thanks
[11:44] <jamesh> SteveA: looking at the custom selectBy() routines in database/publishing.py, you wouldn't be able to create a result set containing embargoed objects (at the time of the query) unless you use selectByWithEmbargoedEntries()
[11:45] <SteveA> right, but if i get an source package publishing history, commit, and in some other transaction it is embargoed, and i sync it (or cause it to be synced)
[11:45] <SteveA> then i have an embargoed SPPH object
[11:46] <SteveA> now, that isn't really going to happen in any meaningfully bad way
[11:46] <SteveA> but, i like the security system to not have such cracks in it
[11:47] <jamesh> yeah. I agree that the objects themselves should have their own security
[11:48] <jamesh> at the same time, if a package gets the embargo removed part way through iteration, it will be missed from the result set
[11:48] <SteveA> yeah
[11:48] <jamesh> so anything that relies on being able to iterate through all non-embargoed objects would have trouble if it commits part way through
[11:49] <SteveA> people need to be careful iterating over collections of objects across commits
[11:55] <lifeless> be nice if it failed loudly
[11:56] <SteveA> lifeless: yep.  that is the plan.
[11:57] <SteveA> 1. make implicitly holding an object across a commit fail loudly.
[11:58] <SteveA> 2. (maybe) provide a way to explicitly say "i want to use the ids from this resultset across commits, and see them as fresh objects"
[12:07] <salgado> is there anything wrong with staging? I can't seem to login there
[12:09] <Kinnison> fricking workrave, mumble mumble
[12:09] <SteveA> salgado: i can't get the front page of staging
[12:09] <SteveA> stub: ?
[12:15] <carlos> stub, same problem here
[12:19] <SteveA> salgado: can we talk about shipit?
[12:23] <salgado> SteveA: not right now. I'm going to do a presentation at the univ in 30m. can we talk when I come back? (aprox 4h)
[12:23] <SteveA> salgado: okay
[12:24] <salgado> SteveA: also, if you have some time, it would be great if you can review my shipit-exports branch. (seeing that kiko won't be back until mid-afternoon and I'm not sure if he'll be able to review it today)
[12:25] <salgado> stub did run the export script on staging and everything went fine. I'm waiting to see if the generated exports are okay
[12:25] <stub> asuka is pretty locked
[12:25] <stub> I have a shell that is responding slowly, but havn't been able to shutdown launchpad or run top or ps to see what the problem is
[12:25] <SteveA> salgado: can you add it to my place on PendingReviews ?
[12:26] <stub> Znarl: ping
[12:28] <salgado> SteveA: done
[12:28] <salgado> see you later guys
[12:28] <Znarl> stub : Hello!
[12:29] <stub> Znarl: Are you able to remotely reboot asuka (probably require a power cycle)? 
[12:29] <Znarl> Yes, wish me to do it now?
[12:29] <SteveA> i wonder if logging in as root would do?  doesn't root shell run at top priority?
[12:30] <stub> Znarl: I have a shell that responds slowly, but can't even run ps to see what the culprit is. So reboot it please unless you have any suggestions for diagnostics before rebooting it.
[12:30] <SteveA> stub: is that because the shell responds too slowly?
[12:31] <SteveA> or does ps give an error when you run it?
[12:31] <Znarl> I think rebooting may be the fastest way, I can't login.
[12:31] <stub> ps just hangs. I suspect it is thrashing really badly.
[12:32] <stub> It takes several seconds for my shell to process Ctrl-C or Ctrl-Z
[12:32] <stub> Znarl: restart it please
[12:32] <stub> Maybe the logs or cricket graphs will tell me something useful
[12:34] <Znarl> stub : Done!  If it doesn't come back in 5 minutes I'll rush over to the DC and kick it.
[12:35] <Znarl> OK, it's back.
[12:35] <stub> Znarl: rushing isn't required - it is the staging server so we can have downtime. Salgado will want to see it running in about 4 hours though.
[12:35] <stub> ok
[12:36] <SteveA> stub: thought we were running important rosetta stuff on it
[12:37] <stub> Nope - we were testing some data migration stuff on there a week or three ago, but that is finished. Now we are testing shipit functionality ;)
[12:40] <stub> Bah - no hints on what happened :-(
[12:44] <Znarl> stub : I have a spare machine I can bring up quickly if it's a hardware fault.
[12:44] <Znarl> ...and if it happens again.
[12:45] <stub> If it was hardware it would still be screwed. Seems fine now so I think something just ran away.
[12:58] <Kinnison> Noone minds if I upgrade dogfood?
[01:05] <carlos> SteveA, I just got a problem with Rosetta that I'm not 100% sure how to solve. Do you have sometime to talk about it?
[01:05] <SteveA> carlos: yes, in 5 mins
[01:05] <carlos> SteveA, ok, thanks
[01:10] <SteveA> carlos: ok
[01:12] <carlos> SteveA, ok
[01:12] <carlos> so
[01:13] <carlos> we have a module (control-center)
[01:13] <carlos> that had a message
[01:13] <carlos> with a plural form. Say msgid "Foo" msgid_Plural "Bar"
[01:14] <carlos> now, they changed the plural form so the message is: msgid "Foo" msgid_Plural "New Bar"
[01:14] <carlos> but the .po files have the old one
[01:14] <carlos> so we have a small problem as we cannot represent both at the same time with our current db model and I'm not sure how to solve that 
[01:15] <SteveA> so, the pot file has the same msgid but a different msgid_Plural than before.  But, the .po files still have the msgid and old msgid_Plural
[01:15] <carlos> right
[01:15] <SteveA> why did the authors change the .pot file like this?
[01:15] <carlos> SteveA, usually it's due a typo fix
[01:16] <carlos> SteveA, in fact is the first time I see this problem since we started with Rosetta....
[01:16] <SteveA> so, the root cause is the design of gettext, in that pot files don't have opaque ids but actual important strings
[01:17] <carlos> sort of, yes
[01:18] <carlos> my first idea was to ignore the plural form from the .po file
[01:18] <carlos> and set that message as fuzzy
[01:18] <carlos> that means that a translator has to review it
[01:19] <carlos> it's more or less the same behaviour gettext does when the .pot and .po files are merged
[01:20] <carlos> but that prevents us to get the original .po file back from the db
[01:20] <SteveA> all we can know, automatically, is that the message id changed.  it could have changed trivially, or it could have changed totally.  we can assume that as it is just the plural form, that it changed trivially.
[01:20] <carlos> it should not be a big deal as we don't need it for anything, but the original idea was that we should be able to get an exported .po file with exactly the same data we had when it was imported
[01:23] <SteveA> but getting a po file exported with the same data in it isn't useful when the pot file has been updated like this, is it?
[01:24] <SteveA> jamesh: feature requrest for pending-reviews: add a meta-refresh to the page that refreshes it automatically after the next run date + typical run time + a bit.  (or something like that)
[01:25] <carlos> SteveA, yeah, as I said, we are not using that feature, but we could get it without merging that .po file with the new .pot file
[01:25] <carlos> but atm we do the merge always
[01:26] <SteveA> okay.  are there any other downsides to this than not being able to exactly export the .po file
[01:26] <SteveA> ?
[01:26] <carlos> nothing that I can think on
[01:27] <SteveA> will you know if this kind of thing happens again?
[01:27] <SteveA> how did you find out this time?
[01:31] <carlos> SteveA, I found it looking at the error logs
[01:32] <SteveA> was it an error that jumped out at you?
[01:32] <carlos> because a bug in our code
[01:32] <carlos> SteveA, It's one of the poimport errors we get every day
[01:33] <carlos> I can fix it without changing any code updating hte .po files by hand
[01:33] <carlos> and if it happens again, I will get the error again
[01:33] <SteveA> right.  i think that as this situation occurs so infrequently, that this time around you should sort it out and move on
[01:33] <carlos> ok
[01:33] <SteveA> and make sure that it will be clear to see if it happens again
[01:34] <SteveA> so, if it starts happening a lot, we can think about accommodating it better in the system
[01:34] <SteveA> i think that software maintainers who are aware of the translation process are very conservative about changing message id strings.
[01:35] <SteveA> i think that's why in zope and plone they tend to use symbolic message ids
[01:35] <SteveA> and then have an english translation of that
[01:37] <carlos> SteveA, hmm, I could update the code to raise a RuntimeError if that problem appears, what do you think?
[01:38] <carlos> SteveA, the problem with zope and plone solution is that sometimes, you need to update a message and the translators will not know that because the message will not set as fuzzy/untranslated
[01:39] <SteveA> carlos: use a specific error, and document the details of it in that error.
[01:40] <carlos> ok
[02:07] <mpt> Gooooooooooooooooood morning
[02:07] <SteveA> hi matthew
[02:12] <mpt> hi SteveA, did you see bug 1749?
[02:12] <mpt> (actually that's probably a silly question given the amount of bugspam I generated from it)
[02:12] <SteveA> yes, and no
[02:12] <SteveA> yes, i saw it
[02:12] <SteveA> then i got confused with the other menus bug you were spamming about
[02:12] <SteveA> jamesh: https://launchpad.net/products/launchpad/+bug/1749
[02:13] <SteveA> there's the actual issue i meant to point out earlier
[02:13] <mpt> SteveA: There's another text-to-html bug that I don't know how to solve
[02:13] <mpt> or at least, I don't yet know what the result should be
[02:14] <mpt> foo\n
[02:14] <mpt> bar\n
[02:14] <mpt> \n
[02:14] <mpt> hum\n
[02:14] <mpt> zog\n
[02:15] <mpt> If foo didn't exist then bar could be a <p>, and vice versa; and if hum didn't exist then zog could be a <p>, and vice versa
[02:16] <mpt> but since they all exist, making them all <div>s will eliminate the blank line between them
[02:17] <SteveA> why not use two <p>s with <br>s in them ;-)
[02:18] <mpt> yeah, I suspect it might be necessary to start using <br />s instead of <div>s
[02:18] <SteveA> or <p><span> ... <span> ...</p>
[02:19] <mpt> <span class="outrageous hack" style="display: block;">
[02:19] <ddaa> that makes two classes
[02:19] <mpt> I'm aware of that, ddaa :-)
[02:20] <mpt> .hack {text-decoration: blink;}
[02:20] <mpt> .outrageous {color: pink; background-color: yellow;}
[02:20] <ddaa> I'm not sure I have all the context, but I think you are talking about text-to-html conversion, right?
[02:21] <ddaa> Why not put the whole block in a div and individual paragraphs there in <p
[02:21] <ddaa> for things like source code snippets, if pre is not acceptable, the only right thing is <br>...
[02:22] <mpt> yeah
[02:22] <ddaa> though, you can hack with an enclosing div, that sets vertical paragraph margins to 0, but I think that's less semantically correct than br.
[02:24] <mpt> Due to bug 1749, the example I posted above is currently rendering as something like <div>foo</div> <p>bar hum</p> <div>zog</div>, which is even wronger
[02:25] <SteveA> mpt: what's the simplest thing we can do?
[02:26] <ddaa> gah, text-to-html is just confuddled...
[02:27] <mpt> SteveA: start using <br /> everywhere
[02:27] <mpt> SteveA: Shall I rewrite the tests?
[02:27] <SteveA> yes
[02:27] <ddaa> mpt++
[02:27] <SteveA> work on a branch
[02:27] <ddaa> something more wiki-like would be better, but more complicated
[02:28] <mpt> yes, I'll use the same branch as the tests for bug 1749

[02:29] <niemeyer> Morning!
[02:29] <ddaa> niemeyer: Afternoon!
[02:29] <SteveA> ddaa: we're going to put moin formatting into launchpad for some things, but not for bug comments
[02:30] <mpt> ddaa: we can't expect people copying-and-pasting info from READMEs, changelogs, etc to format them wiki-style
[02:30] <ddaa> Right.
[02:31] <SteveA> we could insist that any wiki-style comments start with = some title =
[02:31] <mpt> I'd rather that bug comments *never* started with = some title = :-)
[02:44] <SteveA> bradb: hi
[02:44] <bradb> SteveA: hi
[02:45] <SteveA>  _get_task_for_context
[02:46] <SteveA> did you consider making getNullBugTask() a method on a bugtarget ?
[02:47] <bradb> no
[02:49] <zyga> hello
[02:49] <zyga> I'm trying to translate disks-admin
[02:50] <zyga> could someone give me a hint when will rosetta show all translatable packages so that translators can do their work?
[02:50] <SteveA> bradb: do you think it would be an improvement?
[02:51] <ddaa> gah
[02:51] <ddaa> I think the python import has hit a filesystem limitation...
[02:51] <bradb> SteveA: I don't think so. It would mean writing, testing and maintaining more code without sufficient ROI, IMHO.
[02:51] <WaterSevenUb> zyga, hi zyga;)
[02:52] <zyga> WaterSevenUb: hi :)
[02:52] <zyga> WaterSevenUb: what's up? :)
[02:52] <WaterSevenUb> zyga, do you know about the FAQ guide? when will it be last generated for distro inclusion?
[02:52] <WaterSevenUb> zyga, the translations... i mean.
[02:53] <zyga> WaterSevenUb: no, I've lost track of stuff here recently (real life work)
[02:53] <zyga> what FAQ guide is that?
[02:53] <WaterSevenUb> ubuntu-docs
[02:53] <SteveA> bradb: from my casual looking, it would seem to mean keeping about the same amount of code as in the latter part of _get_task_for_context, but splitting it up better, without the 'if' statements.
[02:54] <SteveA> bradb: we already have the concept of a bug target.  this is something that is done for each bug target, but done differently.  so, it makes sense to make this a service provided by a bugtarget.  and not an if-elif-elif-else block of code.
[02:54] <zyga> uhhh
[02:54] <zyga> rosetta keeps crashing :/
[02:54] <zyga> darn
[02:55] <SteveA> bradb: also, mark was quite adamant that he wants these "null whatever" things to go with the database code, not in components.
[02:55] <SteveA> carlos: zyga says rosetta keeps crashing
[02:55] <zyga> rosetta lacks following stuff that are badly needed:
[02:55] <zyga> string search within a .po
[02:56] <zyga> string search within all .pots
[02:56] <zyga> working export/import
[02:56] <zyga> :/
[02:56] <SteveA> zyga: carlos is at lunch now.  talk with him when he gets back.
[02:57] <zyga> SteveA: sure, thanks :-)
[02:57] <WaterSevenUb> zyga, and I have a few more ideas! :-) A team administrator should be able to "lock" a translation when it's done.... We should be able to "subscribe" to a translation and check updates (bugzilla like)..... 
[02:57] <zyga> bon apetit :)
[02:57] <bradb> SteveA: I'll change it if you want me to. ;)
[02:57] <zyga> WaterSevenUb: that's secondary stuff - I totally agree but today rosetta is not usefull for translators at all IMHO
[02:58] <zyga> and since breezy is out in a week this makes me feel bad :/
[02:58] <WaterSevenUb> zyga, well... ubuntu-docs was translated through rosetta.... a few applications too.... 
[02:58] <zyga> WaterSevenUb: when it works
[02:58] <WaterSevenUb> zyga, but i generally agree... I also don't feel confortable with adding new applications like SMEG without demanding translation support from the beggining.
[02:59] <WaterSevenUb> zyga, since they are pretty basic applications.
[02:59] <WaterSevenUb> :)
[02:59] <zyga> a page with all requested delayed operations and their status is a must too
[03:00] <zyga> like exports/imports
[03:00] <zyga> I'm often waiting for something to happen when and I get no notification of an error
[03:00] <WaterSevenUb> zyga, the subscription thing is not secondary... it happens for example finishing a translation in a given application, a few weeks after, it's not finished anymore and there are strings changed and added.
[03:08] <cprov> SteveA: ping
[03:13] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  fixing builddUI bits, limit distrorelease/distroarchrelease +builds pages results until define some batching style. (patch-2561: celso.providelo@canonical.com)
[03:28] <verwilst> hellow!
[03:28] <verwilst> is there a packager with a bit of time on his hands? :d 
[03:28] <verwilst> if so, plz check out http://bugzilla.ubuntu.com/show_bug.cgi?id=16367
[03:28] <verwilst> phpmyadmin works just fine with php5, but the deb depends on 4 :(
[03:29] <verwilst> it's a one-word fix, but i don't have access :d
[03:29] <verwilst> would be cool to have this solved by the release ;)
[03:30] <mpt> verwilst: What does that have to do with Launchpad?
[03:31] <mpt> If you want things packaged, probably your best bet is #ubuntu-motu
[03:31] <mpt> like Matt said in the bug report, even
[03:32] <verwilst> oh, in the bug it said to go to that site
[03:32] <verwilst> and on the site, there was a link to this channel :d
[03:32] <mpt> yes it did
[03:32] <mpt> I suggest following the instructions Matt gave you in the bug report
[03:32] <verwilst> hehe i am ;)
[03:32] <mpt> they're good instructions
[03:33] <mpt> So have you reported the bug in Malone?
[03:33] <verwilst> working on it
[03:37] <verwilst> done
[03:37] <verwilst> https://launchpad.net/distros/ubuntu/+sources/phpmyadmin/+bug/2799 ;)
[03:39] <mpt> good
[03:45] <carlos> zyga, I'm back
[03:45] <carlos> zyga, could you be a bit more precise about the errors you get, please?
[03:46] <zyga> carlos: okay
[03:46] <zyga> carlos: system error on rosetta :)
[03:46] <carlos> if you can give me an URL I will take a look at the logs
[03:46] <zyga> https://launchpad.net/distros/ubuntu/breezy/+sources/gnome-system-tools/+pots/gnome-system-tools/pl/+translate
[03:46] <zyga> carlos: separate issue - look at #u-devel
[03:47] <zyga> carlos: if you'd like to read some negative thoughts check the backlog 
[03:48] <carlos> zyga, I'm there, and the page works, what do you do to break it?
[03:48] <jordi> carlos: hey
[03:48] <zyga> carlos: I commited a change
[03:48] <zyga> carlos: it does not work ;-)
[03:49] <carlos> jordi, hi
[03:49] <jordi> carlos: feel like touring me through xxx-review-breezy? :)
[03:49] <zyga> carlos: I just commited again and the error is gone
[03:49] <carlos> jordi, give me sometime to finish with zyga, please
[03:50] <zyga> carlos: okay, tell me what to do when you're ready
[03:50] <jordi> carlos: sure
[03:52] <carlos> zyga, hmmm, I cannot see the logs when you had the error...
[03:52] <zyga> carlos: well I could send you a screenshot but I doubt that's helpful...
[03:53] <carlos> zyga, yeah, it's not too useful
[03:53] <carlos> SteveA, stub is not around, is there anyone  else with access to the production logs?
[03:53] <carlos> zyga, ;-)
[03:54] <carlos> zyga, don't worry, I didn't add it
[03:55] <mpt> SteveA: bug 2715 covering the <div></div>-to-<br /> change
[03:59] <mpt> Should I update the wiki spec as well?
[04:02] <carlos> jordi, ?
[04:02] <ddaa> zyga: -ETOOMANYCONSONNANTS
[04:03] <zyga> ddaa: ? :)
[04:03] <ddaa> maybe if you type it in reverse :)
[04:04] <ddaa> (polish notation, etc.)
[04:04] <jordi> carlos: here
[04:11] <sabdfl> ddaa: does baz not have a way to handle > 32,000 patches?
[04:15] <lifeless> sabdfl: baz doesn't split out the directorys, so it places a high load on the file system
[04:15] <lifeless> sabdfl: it depends on the fs what it can support
[04:15] <lifeless> s/high/extremely high/
[04:16] <sabdfl> shite, that's so broken
[04:16] <lifeless> yes
[04:16] <sabdfl> please tell me bzr does better
[04:17] <lifeless> bzr currently does a similar thing, but the abstraction layer is in place to do a lot better, in fact its one of niemeyers goals for his bzr time
[04:20] <SteveA> cprov: hi
[04:20] <SteveA> carlos: you need to see production logs?
[04:21] <carlos> SteveA, that would be a good way to know the problem that zyga had, yes
[04:21] <SteveA> mpt: thanks for the bug report.  i'm going to ask jamesh to look at it.  the spec should reflect the way we want things to be, but maybe it can reference the system docs, rather than duplicate them.
[04:21] <carlos> as we cannot reproduce it...
[04:21] <cprov> SteveA:  hi, my branch in general queue for buildd is kind of blocking dsilvers, can you review it or suggest someone to do it ASAP ?
[04:22] <SteveA> carlos: there is a task for the sysadmins to have the logs rsynced across to chinstrap
[04:22] <carlos> ok
[04:22] <SteveA> carlos: that hasn't been done yet as far as i know, but it will be easy for you to inspect the logs soon
[04:22] <carlos> ok thanks
[04:22] <SteveA> carlos: is there something specific you want me to get?
[04:22] <SteveA> or do you just want the whole lot?
[04:23] <SteveA> cprov: i can do a bit of review in a few minutes
[04:23] <carlos> SteveA, any error related to https://launchpad.net/distros/ubuntu/breezy/+sources/gnome-system-tools/+pots/gnome-system-tools/pl/+translate
[04:23] <cprov> SteveA: fantastic, thank you 
[04:23] <SteveA> celso.providelo@c.c/launchpad--buildd--0  <-- that one?
[04:23] <carlos> I suppose that it should appear in last two hours
[04:28] <SteveA> carlos: ~stevea/launchpadlogs on chinstrap
[04:28] <carlos> SteveA, thanks
[04:31] <SteveA> mpt: the italicised "from" on the "oops" page looks weird
[04:33] <carlos> SteveA, the problem was a deadlock
[04:33] <SteveA> carlos: so, the transaction got aborted
[04:33] <SteveA> it should have worked when tried again
[04:34] <carlos> zyga, The system error you got was a lock in the database that's what it didn't happen when you retried it
[04:34] <carlos> SteveA, it worked
[04:34] <carlos> that's why I asked for the logs because we were not able to reproduce it
[04:34] <SteveA> okay.  if these happen a lot, then stu and i can add some code that will retry the web request when a deadlock occurs.
[04:35] <lamont-away> oh.
[04:35] <lamont-away> ddaa: It could be that there are some things that want to be not-cached when fetched over http... :-)
[04:36] <ddaa> lamont-away: definitely, the .listing files for example
[04:36] <jamesh> mpt: I added some possible alternative rules for formatting text to https://launchpad.net/products/launchpad/+bug/1749.  Do they look sane?
[04:36] <lamont-away> would that account for it thinking that patch-29 is current when -31 really is?
[04:37] <ddaa> lamont-away: exactly
[04:37] <jamesh> mpt: the main difference being that you'll end up with <div>'s inside <p>'s
[04:37] <ddaa> check $VERSION/.listing
[04:37] <jamesh> (if they are needed to get the desired formatting)
[04:37] <lamont-away> ddaa: I'll beat on the web-proxy folks then.  danke
[04:49] <mpt> jamesh: They match the tests I've committed, except that the tests expect ...<br /> instead of <div>...</div>, because <div> inside <p> is invalid HTML.
[04:51] <jamesh> mpt: okay.  The algorithm should handle <br> as well as <div>...</div>
[04:52] <mpt> jamesh: Read the tests, I think the results they expect will have a simpler implementation than the current one.
[04:52] <mpt> No <div>s any more, just <p>s with <br />s in.
[05:09] <jordi> mpt: care to review some new items in the rosetta faq?
[05:09] <jordi> https://wiki.ubuntu.com/RosettaFAQ?action=diff&rev2=16&rev1=15
[05:11] <ddaa> lifeless: what is the future of JobStrategy.ArchStrategyL
[05:11] <ddaa> hu
[05:11] <ddaa> JobStrategy.ArchStrategy?
[05:11] <SteveA> cprov: i reviewed the branch
[05:11] <lifeless> ddaa: uhm, new spec, the taxi-for-supermirror stuff
[05:11] <cprov> SteveA: thanks 
[05:12] <lifeless> ddaa: if archstrategy helps implement that, keep it, otherwise nuke
[05:12] <ddaa> lifeless: IOW, can I just remove all that code and tests?
[05:12] <ddaa> mh.
[05:12] <ddaa> It's very likely not going to be any help for bzr.
[05:15] <ddaa> jblack: https://wiki.launchpad.canonical.com/SupermirrorTelemetry
[05:15] <ddaa> jblack: I need an answer to "Does Taxi need to mirror?"
[05:18] <mpt> jordi: looks fine
[05:18] <zyga> carlos: is that a bug in the software or something normal?
[05:19] <jordi> mpt: thanks
[05:23] <ddaa> lifeless: this spec was made before the decision to go bzr was made
[05:23] <ddaa> i.e. it assumes continued mirrorring or arch archives in the supermirror
[05:23] <lifeless> ddaa: well, yes and no.
[05:24] <lifeless> ddaa: it will need updating, but the spec was written with bzr awareness
[05:34] <ddaa> bah, this code is useless
[05:35] <ddaa> it's all about registered names, and nothing about taxi
[05:35] <bob2> hah, taxi
[05:35] <ddaa> bob2: you'd be happy to learn that over the course of months I have rewritten most of it
[05:36] <ddaa> and the last remnants (the arch_broker stuff) is going away in the near future
[05:36] <ddaa> currently working on a patch that removes all registered name assumptions, that required a rewrite of half impord...
[05:38] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  Adds a launchpad-cal link to the Feedback page, and adds a pagetest for that page. (patch-2562: mpt@canonical.com)
[05:45] <salgado> do I need to write a validator function, to use as the constraint of a given field even if all it's going to do is to check if the value doesn't contain only spaces?
[05:45] <bob2> ddaa: yay
[05:45] <salgado> in other words, can I tell zope3 to strip() the value for me?
[05:46] <SteveA> salgado: do you want to check it doesn't contain only spaces, or do you want to strip() it ?
[05:47] <salgado> SteveA, it's a requred field, so if zope3 did the stripping it would complain that it can't be empty
[05:47] <salgado> so, in this specific case I can do either way. is there a preferred one?
[05:48] <SteveA> in one case, " foo " will be converted to "foo"
[05:48] <salgado> in fact I think the stripping would be better as we don't really want extra spaces in a person's displayname
[05:48] <SteveA> right
[05:49] <salgado> so, is there a pre-processing function that I can set on the interface?
[05:50] <salgado> or any other way to tell zope that I want the value to be stripped?
[05:51] <SteveA> so, you already have a PersonNameField
[05:51] <SteveA> you need to write a fromUnicode(self, str): method of that
[05:52] <SteveA> that says     return TextLine.fromUnicode(self, str)
[05:52] <SteveA> that should still work
[05:52] <SteveA> then write a test
[05:52] <salgado> I need this for the displayname, not the name
[05:53] <SteveA> okay, so write a StrippingTextLine class
[05:53] <SteveA> that derives from TextLine
[05:53] <SteveA> before you start...
[05:53] <SteveA> write a test that imports it
[05:54] <SteveA>  >>> from canonical.launchpad.interfaces.person import StrippingTextLine
[05:54] <SteveA> run the test, so it fails
[05:54] <salgado> sure, I'll write the test first. should I place it in person.txt?
[05:54] <SteveA> then write that class
[05:54] <SteveA> sure
[05:54] <SteveA> in the class, you'll override fromUnicode so that
[05:54] <SteveA>  >>> my_field.fromUnicode(' foo ')
[05:55] <SteveA> oops
[05:55] <SteveA>  >>> my_field.fromUnicode(u' foo ')
[05:55] <SteveA>  u'foo'
[05:55] <SteveA> but, if you create the field with a constraint or other stuff, check that is still activated
[05:55] <SteveA> that will show that you're getting the value from TextLine.fromUnicode(str)
[05:55] <SteveA> and then you're stripping the value
[05:56] <SteveA> before returning it
[06:03] <SteveA> salgado: is it just the AF issue we also need to talk about?
[06:04] <salgado> SteveA, yes
[06:07] <carlos> zyga, it's a problem with two updates of the same row at the same time from two points different
[06:08] <carlos> zyga, one locks that row and while updating and hte other fails because is not able to access the database
[06:08] <carlos> it happens from time to time.
[06:09] <salgado> SteveA, how can I test that trying to set a value of u'   ' on a field using StrippingTextLine will raise a RequiredMissing?
[06:11] <SteveA>   StrippingTextLine().fromUnicode(u'    ')  perhaps
[06:12] <zyga> carlos: software bug I guess
[06:12] <zyga> carlos: good to know 
[06:13] <carlos> zyga, kind of, I suppose
[06:13] <zyga> carlos: how many devs are working on rosetta?
[06:14] <carlos> zyga, two, daf and I, but daf is sick atm
[06:14] <salgado> SteveA, that won't work because the validate() method does a "if value == self.missing_value:" and missing_value is not set
[06:14] <salgado> sorry. the value is not set to self.missing_value
[06:14] <carlos> full time, then there are other launchpad developers that help from with some bugs
[06:14] <zyga> carlos: /me thinks you are seriously undermanned right now 
[06:15] <zyga> carlos: how big is rosetta, loc?
[06:16] <carlos> zyga, hard to tell you, rosetta is integrated into Launchpad so it has not its own tree
[06:16] <SteveA> salgado: and, what is self.missing_value?
[06:16] <SteveA> None i expect
[06:16] <SteveA> so, you need code that says
[06:16] <salgado> __missing_value_marker = object()
[06:16] <SteveA> no
[06:16] <SteveA>   def fromUnicode(self, str):
[06:16] <salgado> I can pass in a missing_value argument to the TextLine constructor
[06:18] <SteveA> you still want None to be the missing_value I expect
[06:18] <SteveA> i mean, you don't want to change the missing_value to do this
[06:18] <salgado> None or an empty string?
[06:19] <SteveA> let's just hack it
[06:19] <SteveA>   def fromUnicode(self, str):
[06:20] <SteveA>       str = str.strip()
[06:20] <SteveA>       if not str:
[06:20] <SteveA>           raise RequiredMissing
[06:20] <SteveA>       return TextLine.fromUnicode(self, str)
[06:20] <SteveA> how about that?
[06:21] <salgado> you really prefer that I do this instead of just passing in missing_value=u'' in the __init__()?
[06:21] <salgado> I mean, I only need to do that in the test
[06:21] <SteveA> i guess you can change missing_value
[06:22] <SteveA> the thing is, as the field is required, it doesn't matter
[06:22] <SteveA> but, if you do that, then you cannot use the field when you want a missing value to be None
[06:22] <SteveA> i might be better to say missing_value=u'' when you construct the field
[06:23] <SteveA> but even so, don't set it in the __init__
[06:23] <SteveA> set a class attribute
[06:23] <SteveA>   missing_value = u''
[06:23] <SteveA> at the class level
[06:24] <salgado> what I was suggesting is this: 
[06:24] <salgado> >>> field = StrippingTextLine(__name__='displayname', title=u'Displayname',
[06:24] <salgado> ...                           description=u'', readonly=False, required=True,
[06:24] <salgado> ...                           missing_value=u'')
[06:24] <salgado> TextLine.__init__() already accepts this missing_value
[06:26] <salgado> and I can't see why I should override the missing_value attribute in my class
[06:26] <SteveA> okay
[06:28] <salgado> is there any problem in doing this? or maybe I need to do that for some other reason?
[06:29] <SteveA> this is fine.  go ahead.
[06:30] <salgado> SteveA, and the country problem, how can I fix it?
[06:31] <SteveA> salgado: i have an idea, but i need to do some looking at the code
[06:31] <SteveA> can you tell me where to look for that list?
[06:32] <salgado> launchpad.vocabularies.CountryNameVocabulary
[06:32] <SteveA> i don't want the vocabulary
[06:32] <SteveA> that isn't going to change
[06:32] <SteveA> tell me where it is used
[06:33] <salgado> oh, sorry. it's used in the /shipit/myrequest page
[06:33] <SteveA> is that set up just in zcml?
[06:33] <SteveA> or is there a view class?
[06:33] <salgado> ShipItRequestView
[06:33] <salgado> browser.shipit.ShipItRequestView
[06:34] <SteveA> okay, i'll have a look as soon as my next test passes with what i'm working on
[06:34] <SteveA> i think i know how to do this simply
[06:34] <salgado> great. 
[06:34] <salgado> would you like to review this fix for the displayname for me? https://chinstrap.ubuntu.com/~dsilvers/paste/file12AUr7.html
[06:36] <SteveA> salgado: explain in a short sentence in the doctest about how StrippingTextLine is used as the displayname field, and that it strips the unicode string before applying any validation or constraints.
[06:37] <jblack> ddaa: Sorry for the delay. Reading.
[06:37] <ddaa> jblack: nevermind
[06:37] <ddaa> I just nuked the code.
[06:38] <SteveA> salgado: other than that, it is fine
[06:40] <salgado> SteveA, In the case of your displayname, the only constraint is that it can't contain
[06:40] <salgado> only spaces. To ensure that, we use a StrippingTextLine in the displayname,
[06:40] <salgado> which is a class that always strips the unicode string before applying any
[06:40] <salgado> validation or constraints.
[06:40] <SteveA> yep
[06:41] <jblack> ddaa: You went from "does taxi need to mirror" to "I nuked the code" ?
[06:41] <ddaa> yes
[06:42] <jblack> I'm definitely interested in that thought process
[06:42] <ddaa> The question was to help figure out whether I should try to fix the ArchStrategy bit in importd, which is unused in production AFAIK, and which according to lifeless is related to that spec.
[06:43] <ddaa> However, it turned out that this bit of code was entirely interesting, since it was almost exclusively about handling registered names issues within the importd framework.
[06:43] <ddaa> * entirely uninteresting
[06:44] <jblack> Which goes away with bzr entirely. Of course.
[06:46] <salgado> SteveA, is it a problem if I go out for lunch now? (30min, at most)
[06:47] <SteveA> no problem
[06:47] <SteveA> maybe i will have solved the issue by the time you're back
[06:47] <SteveA> wow... baz status takes an aaaaaaaaaaaaaaaaaaaage
[06:50] <ddaa> fl-cow, baz diff --link -s
[06:55] <Kinnison> it's so easy
[06:55] <Kinnison> and makes baz usable
[06:55] <Kinnison> well, that's a big claim
[06:55] <Kinnison> makes it less unusable
[06:56] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  fix https://launchpad.net/products/malone/+bug/2608 (patch-2563: brad.bollenbach@canonical.com)
[07:15] <bexxx> Hi! I tried to contribute a german translation via launchpad.net and after pressing the "save" command, I got a bug shown. Where can I look up, if the problem is already known (is there a bugzilla?)
[07:21] <jbailey> Someone just sent an email to support@ubuntu.com who's managed to lose his password and can't seem to reset, nor request for the forgotten password, etc.
[07:21] <jbailey> Where best to forward this?
[07:21] <jbailey> (Is there an LP support team for handling issues with using LP?)
[07:23] <salgado> jbailey, I guess it's best to forward it to launchpad@lists.canonical.com
[07:24] <bexxx> Urlichs?
[07:25] <jbailey> salgado: 'kay.
[07:25] <salgado> bexxx, all bugs in launchpad are tracked using Malone. the ones specific to rosetta can be seen at https://launchpad.net/products/rosetta/+bugs
[07:25] <jbailey> In the event that this were a paying customer, should I just come here and beg for help supporting them? =)
[07:26] <jbailey> (In this case it's not)
[07:27] <SteveA> jbailey: for the best response, mail the launchpad list.
[07:27] <jbailey> 'k, thanks. =)
[07:27] <SteveA> all the launchpad developers read it
[07:27] <bexxx> salgado: thanks, will have a look now :)
[07:31] <SteveA> salgado: why is IShipItCountry in interfaces/person.py ?
[07:32] <salgado> SteveA, because it was used only in browser/person.py, and when I moved its only callsite to browser/shipit.py I forgot to move the IShipItCountry to interfaces/shipit.py
[07:32] <SteveA> kay
[07:46] <SteveA> salgado: i have some code for you
[07:46] <SteveA> it isn't pretty, but it is the start of something we can do to solve this "default value message" thing for all of launchpad
[07:46] <Kinnison> ciao all
[07:47] <SteveA> salgado: you'll need to polish it up a bit
[07:47] <salgado> SteveA, no problem. where is it?
[07:47] <SteveA> i'm producing a diff
[07:48] <SteveA> i will mail it to you
[07:49] <SteveA> the existing zope widgets have the facilities we need, but only if you set a particular attribute on the widget and the widget is not "required".
[07:49] <SteveA> it's kinda crazy
[07:49] <SteveA> instead of playing around with that, we'll just use a new drop down widget that inserts an entry at the top
[07:50] <SteveA> and then register this new widget to work for a new kind of Choice field
[07:51] <SteveA> so, developers will be able to use this new kind of Choice field wherever there should be a choice field that has nothing selected to start with 
[07:53] <SteveA> salgado: mailed to you
[07:53] <SteveA> i put some of the code in not the best places
[07:53] <SteveA> do this as a special thing for shipit now
[07:53] <SteveA> to get this issue solved
[07:54] <SteveA> and i'll make it a more general thing a bit later
[07:55] <salgado> sure. I'll do this
[07:56] <sleipnir> I was trying to order the ubuntu linux cds. I type my neighborhood name but it didn't accept non ascii letter?
[07:57] <salgado> sleipnir, yes, it won't accept that because the shipping company can't handle them
[07:58] <salgado> sleipnir, is it possible to write it without the non-ascii characters?
[07:58] <Nafallo> I wrote  as O :-)
[07:59] <salgado> sleipnir, I mean, replace the non-ascii ones with ascii ones, as Nafallo suggested
[07:59] <Nafallo> salgado: should be surname really be Bjlevik there in this case? :-)
[08:00] <salgado> Nafallo, for the names we do that ourselves, as we're using the name you entered in Launchpad, and they can have non-ascii chars
[08:01] <Nafallo> ehm, oki. might see a bit odd when you tell the user not to use them but you can't change that for your name :-P.
[08:01] <SteveA> would actually could do that for addresses too, but the thing is that our conversion isn't perfect for all situations
[08:02] <SteveA> so, the CDs won't go to the wrong place if the name is not really understandable or ambiguous
[08:02] <SteveA> but they might if the address is
[08:02] <SteveA> so is it better to let people work out how best to represent their address using just ascii
[08:02] <SteveA> beacuse they can certainly do a better job for their own language and locale than the automatic thing can do
[08:03] <Nafallo> so rather convert the name before putting it on the page so the user sees what you mean directly? :-)
[08:03] <SteveA> sure, that's a good idea
[08:04] <SteveA> if the name has any characters we can't deal with, we can convert it then, with a message explaining what has been done.
[08:04] <SteveA> salgado: feature for the future, do you think?
[08:06] <salgado> SteveA, I'm going to make the name a text entry, so people is required to enter it. when I do that I'll have to "clean" it anyway
[08:07] <sleipnir> I can, I am in Latin America and that is the name
[08:09] <sleipnir> the name is Cabaas, but I try Cabanas
[08:11] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Fix to make sure a person's displayname can't be set to a blank string. r=SteveA (patch-2564: guilherme.salgado@canonical.com)
[08:24] <sivang> morning all
[08:38] <salgado> carlos, around?
[08:39] <carlos> salgado, hi
[08:40] <salgado> hi carlos. I found something weird in po_export_queue.py. https://chinstrap.ubuntu.com/~dsilvers/paste/file3di4X3.html
[08:40] <salgado> it has two calls to transaction_manager.commit() and both these calls have an identical comment before
[08:41] <carlos> hmmm
[08:41] <carlos> I think I fixed that already sometime ago...
[08:41] <carlos> at least it smells like the same thing....
[08:41] <carlos> salgado, feel free to remove one
[08:41] <salgado> carlos, sorry. nevermind
[08:42] <salgado> it must be because my tags sent me to an old tree I have here
[08:42] <carlos> salgado, aren't you using latest code?
[08:42] <carlos> oh
[08:42] <carlos> ok
[08:42] <salgado> it's fixed already. sorry for that
[08:43] <salgado> now that I already bothered you, I'll ask something else...
[08:43] <salgado> does the rosetta-export-queue.py script sends anything to the librarian?
[08:44] <carlos> salgado, yes
[08:44] <salgado> carlos, do you have a test for it? and if so, do you have to do any librarian setup/teardown on this test?
[08:45] <carlos> salgado, it uses a method included inside database/pofile.py
[08:45] <carlos> that has a test
[08:45] <carlos> not sure if daf added a test for the script using that method, but I suppose he did it
[08:46] <carlos> salgado, why?
[08:46] <carlos> are you having problems?
[08:46] <salgado> kind of
[08:46] <salgado> I have a script that sends files to librarian
[08:46] <salgado> if I do a make run (only to get librarian running) and then run the script manually, it works fine
[08:47] <salgado> but if I run the test I have for that script, it fails saying it can't connect to the librarian
[08:48] <carlos> salgado, I have a test that uses librarian if that's what you are looking for
[08:48] <salgado> I'm running a make check now to see if the problem is because I'm running a single test
[08:48] <salgado> carlos, where is it?
[08:49] <carlos> salgado, doc/poimport.txt
[08:50] <salgado> carlos, ta!
[08:50] <carlos> salgado, you are welcome
[09:05] <bradb> wow
[09:06] <SteveA> bradb: so, i'd like you to do that NullBugTask refactor i mentioned earlier, but not just now.
[09:06] <bradb> I tried to find the bug that talked about not being able to reassign to another upstream. I couldn't find it in LP, so I search in Google, and it's a googlewhack
[09:07] <bradb> SteveA: ok
[09:07] <SteveA> i'm doing some rad refactoring of traversal stuff
[09:07] <SteveA> want to see something cool?
[09:08] <bradb> sure
[09:08] <SteveA>     @stepthrough('+bug')
[09:08] <SteveA>     def traverse_bug(self, name):
[09:08] <SteveA>         """Traverses +bug portions of URLs"""
[09:08] <SteveA>         if name.isdigit():
[09:08] <SteveA>             task = _get_task_for_context(name, self.context)
[09:08] <SteveA>             if task is not None:
[09:08] <SteveA>                 return task
[09:08] <SteveA>         raise NotFoundError
[09:08] <SteveA> 
[09:08] <SteveA> that's in a mix in class
[09:08] <SteveA> so for all the things you want to have a +bug in
[09:08] <SteveA> you just mix that class into your Navigation
[09:08] <bob2> that's pretty cool
[09:09] <bradb> SteveA: interesting
[09:09] <SteveA> it really tidies up the navigation stuff
[09:09] <SteveA> and it'll allow me to fix up breadcrumbs properly
[09:09] <sivang> I'm cliking my way to translate HAL using the lpi item, and get the explenation page, wasn't I supposed to be landed in rosetta already?
[09:10] <bob2> is that use of a decorator a LP or a zope3 thing?
[09:10] <sivang> also tells me to get an account, although I'm logged
[09:10] <SteveA> bob2: something i just wrote for LP
[09:11] <bradb> SteveA: does that mean database code is going to mix in browser code, or am I missing something?
[09:11] <SteveA> you must be missing something
[09:11] <SteveA> it's all browser code
[09:12] <bradb> SteveA: well, you said "for all things you want to have a +bug in". I want to have a +bug in an IDistribution, don't I?
[09:12] <SteveA> yeah, so you write a DistributionNavigation class
[09:12] <salgado> SteveA, what happens if I access '+bug/'?
[09:13] <SteveA>  class DistributionNavigation(Navigation, BugTargetNavigationMixin):
[09:13] <SteveA> salgado: it will use the view registered for the name +bug
[09:13] <SteveA> so, that view can be registered to redirect for example
[09:13] <SteveA> or you can add some code to the navigation to do the redirection
[09:13] <SteveA> maybe i'll make that easy
[09:13] <mpt> bradb: That's the acid test of a site's search function: Does Google do a better job of searching the same site? :-)
[09:14] <SteveA>   redirections = {'+bug': '+bugs'}
[09:14] <SteveA> yeah, i think i'll do that, actually
[09:14] <bradb> mpt: LP search is horrifically bad.
[09:14] <salgado> SteveA, please do it. :)
[09:14] <mpt> bradb: I know, I reported two bugs about it in the past few days
[09:14] <bradb> It would have to be greatly improved to be "bad". But, after Montreal, we'll start moving in that direction, hopefully.
[09:15] <bradb> When the search starts to kick ass, the users will start to feel like they're in the driver's seat. Right now they're just caught under the rear bumper.
[09:16] <SteveA> actually, it will be redirection('+bug', '+bugs'), to deal elegantly with mixins
[09:16] <mpt> that +bug/+bugs makes me cry
[09:16] <bradb> same here
[09:20] <SteveA> it will be easy to change either way around once these improvements land
[09:21] <SteveA> and that will be the time to make the case for it
[09:25] <salgado> SteveA, any chance for you to take a look at my shipit-exports branch today?
[09:25] <SteveA> salgado: i need to go home very soon
[09:26] <SteveA> you mean, for a review?
[09:26] <salgado> SteveA, yes
[09:26] <SteveA> i can do it first thing tomorrow, but not tonight
[09:27] <salgado> that's okay. I'll coordinate with stub to run it again on staging tonight.
[09:27] <mpt> SteveA: Got five minutes to listen to a silly proposal?
[09:31] <SteveA> ok
[09:31] <mpt> SteveA: We have rocketfuel, which is our upstream
[09:31] <mpt> then we have launchpad.net, which is (almost) always a few days out of date
[09:32] <mpt> Sometimes launchpad.net gets fixes cherrypicked from rocketfuel
[09:32] <mpt> This may remind you of something that Malone caters for
[09:32] <mpt> So perhaps there can be a launchpad.net product in Launchpad
[09:33] <mpt> and if you want something cherrypicked, you open a request for that bug for launchpad.net as well as the one for launchpad/rosetta/malone/launchpad-cal
[09:33] <mpt> as well as -> in addition to
[09:34] <carlos> see you 
[09:34] <mpt> The biggest drawback of that would be that not all cherrypicked bugfixes are for bugs that are in Malone
[09:35] <mpt> (i.e. some are for bugs that never get reported)
[09:35] <mpt> The second biggest drawback might be that it's slower to use Malone than to use the mailing list
[09:36] <mpt> Thoughts?
[09:39] <sivang> mpt: are you referring for bugs about Ubuntu or launchpad ?
[09:39] <mpt> sivang: bugs about Launchpad
[09:39] <SteveA> mpt: anything that gets us using launchpad.net more is a good thing
[09:39] <SteveA> mpt: propose it on the mailing list - i want to see what stu thinks
[09:40] <mpt> ok, thanks
[09:40] <SteveA> one downside is that it might confuse bug reporters
[09:40] <sivang> mpt: what would be more natural then to use malone for reporting bugs about launchpad?
[09:40] <mpt> SteveA: Yes, this morning I was trying to think of a good non-confusing name for the launchpad.net product
[09:40] <mpt> sivang: We already do, that's not the problem
[09:40] <mpt> sivang: Malone lets you ask for the same bug to be fixed in multiple places
[09:41] <sivang> mpt: sorry, I guess I didn't fully understand what you were referring to.
[09:41] <mpt> sivang: Normally launchpad.net picks up fixes from the main launchpad code within a week, but sometimes we want fixes to be applied quicker than that.
[09:41] <mpt> sivang: So we "cherrypick", which involves e-mailing stub and saying "please apply this fix"
[09:42] <mpt> but Malone already caters for this (albeit aimed at Linux distributions rather than Web sites), so maybe we should be doing it with Malone
[09:44] <sivang> mpt: you mean, selective imports of patches according the to a specific fix? if so, it sounds like an interesting experiment to manage that through launchpad
[09:46] <sivang> (although I have no knowledge of what it involves)
[09:49] <claude> mmmh...
[09:49] <claude> system error :(
[09:50] <SteveA> mpt: this aspect of launchpad is not used as much as we'd like, so this could well be a good thing.
[09:50] <mpt> indeed
[09:54] <claude> is there problems right now with rosetta ?
[09:54] <claude> example: https://launchpad.net/distros/ubuntu/breezy/+lang/fr
[09:58] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  allow upstream product reassignment. fixes #1073. also fixes a small href bug in the also reported in portlet. (patch-2565: brad.bollenbach@canonical.com)
[09:58] <mpt> rock!
[10:04] <salgado> SteveA, I need to merge that fix for the country widget ASAP. I just fixed the view code to complain when people don't select any country. can you review it?
[10:06] <SteveA> salgado: ok
[10:06] <salgado> SteveA, https://chinstrap.ubuntu.com/~dsilvers/paste/filejlyIod.html
[10:06] <SteveA> salgado: did you test it well?  it really should go to staging first.
[10:06] <SteveA> it could cause more problems than it fixes 
[10:08] <salgado> yes, it's working fine, although there's no test for this specific case
[10:09] <salgado> the problem is that nobody is going to use this on staging
[10:10] <claude> could someone tell me if rosetta "system errors" right now are normal
[10:10] <claude> is it a heavy load problem ?
[10:10] <Kinnison> rehi
[10:11] <SteveA> salgado: that's only a tiny part of the changes
[10:11] <SteveA> salgado: if it works, then fine
[10:11] <salgado> SteveA, that's the changes I did. I guess you know the changes you did, no?
[10:12] <SteveA> the changes i did were just an example for you
[10:12] <SteveA> just a proof of concept
[10:12] <SteveA> with no tests or anything
[10:13] <salgado> hmmm. does it miss anything other than tests and docstrings?
[10:13] <segfault> what is the purpose of review-NAMES in Rosetta?
[10:20] <SteveA> salgado: well, the items are in the wrong place, perhaps
[10:22] <salgado> SteveA, what would be the right place? canonical/widgets/choice.py?
[10:23] <SteveA> well, the interface should go in interfaces really
[10:26] <bradb> mpt: http://69.70.209.33:8086/malone -- (warning: it's just a prototype, so it doesn't work) what do you think of this Malone homepage?
[10:26] <SteveA> salgado: i need to go home now.  send me an email about stuff you want me to look at in the morning.
[10:26] <salgado> SteveA, okay. thanks for the help
[10:26] <sorush20> guys how do I make a ubuntu wiki. do I have to become a proper member.. 
[10:27] <bradb> mpt: I can think of more ideal ways to do it (a la Google search box that finds what you're looking for whether it's a bug id, a thing to report a bug on, or a bug report), but not with anything resembling our current search capabilities, and not within a reasonable timeframe
[10:28] <bradb> "Somewhere else..." would take you to the product search
[10:50] <mpt> bradb: That's a definite improvement over the front page
[10:50] <mpt> over the current page, I mean
[10:50] <mpt> though I would keep the "Latest bugs" of the current page
[10:50] <bradb> I was just going to add some links above "CVE Tracker" too
[10:50] <bradb> "Bugs Assigned to You", "Bugs You've Reported" and "Bugs You're Interested In"
[10:51] <mpt> the three-column layout really doesn't suit front pages
[10:52] <bradb> mpt: are there pages that it does suit? :P
[10:52] <bradb> we need a javascript bowling game easter egg
[10:52] <mpt> bradb: that "Ubuntu" / "Somewhere Else..." ( Go to Bug Homepage ) is a waste of clickage
[10:54] <bradb> two secs, just twiddling some things
[10:56] <mpt> and, er, why does /malone/assigned still exist? ;-)
[10:59] <ajmitch> people probably have it bookmarked :)
[11:02] <bradb> mpt: mm, i just found a slight bug in our li cve CSS stuff. icon wasn't showing properly. fixed it here.
[11:03] <bradb> mpt: that link exists now only to get your auth credentials and redirect you to the right place
[11:04] <bradb> (that link, i.e. /malone/assigned)
[11:07] <mpt> hey, wow, it works on production now!
[11:07] <mpt> bradb: ok, so that's what we need for the product bugs menu
[11:08] <mpt> a product-specific equivalent
[11:08] <bradb> mpt: one sec, take a look at what i've done now
[11:08] <bradb> i've tweaked it a bit
[11:08] <mpt> now the first two menu links go to #
[11:08] <bradb> mpt: dude, the whole *page* is broken :)
[11:09] <bradb> it's only a prototype, nothing works
[11:09] <bradb> if you think it looks reasonable, i'll make it work
[11:09] <mpt> dude, if you want a prototype, let me know
[11:09] <mpt> your job is making it work ;-)
[11:09] <bradb> my job is also making users happy
[11:10] <bradb> er, i mean, my job is making users happy and, oh yeah, coding
[11:10] <bradb> mpt: should i implement this, or can you do better?
[11:11] <bradb> (more specifically, can you design something better than we can implement pretty quickly?)
[11:11] <mpt> well, if this is what you want to be doing now, I'll get you a prototype in the next day or two
[11:11] <mpt> sure
[11:12] <mpt> salgado: what's person-foaf.pt for?
[11:12] <bradb> well, the front page is an iron curtain, so the sooner the better
[11:12] <salgado> mpt, the rdf, I guess?
[11:13] <mpt> oh yes, it's rdf
[11:13] <mpt> I was staring at it and didn't notice
[11:13] <mpt> sorry
[11:13] <bradb> mpt: so, I can expect this from you by wed at the latest?
[11:13] <mpt> bradb: sure
[11:13] <bradb> i'll take you up on that
[11:18] <mjans> Hi there
[11:18] <bradb> mpt: in the meantime, what do you think are the most pressing usability issues that I can fix without, well, you know.
[11:19] <mjans> I just used the translation part of launchpad, and I think I have a nice feature which is easy to implement and would help a lot people
[11:19] <bradb> . o O (Edit Assignee/Status Details)
[11:20] <mjans> When translating there are most of the time hints given from other people who already have translated it
[11:21] <mjans> Is it possible that someone makes these suggestions clickable?
[11:21] <mjans> that when you click on it it will be filled in in the text box
[11:24] <mjans> is it better to create a bug report for this? and so, where?
[11:32] <mpt> bradb: Is it within your power to implement MaloneBugSubscriptions?
[11:34] <mpt> bradb: Either that, or pull the attachment form into the bug page
[11:34] <mpt> or pull the duplicate form into the bug page
[11:36] <mpt> bradb: Any one of those three would reduce the number of clicks and page loads required when dealing with a bug
[11:38] <mpt> oh
[11:38] <mpt> bradb_: How much did you miss? :-)
[11:38] <bradb_> argh, network problems
[11:38] <bradb_> everything
[11:39] <mpt> (18:32:22) mpt: bradb: Is it within your power to implement MaloneBugSubscriptions?
[11:39] <mpt> (18:34:07) mpt: bradb: Either that, or pull the attachment form into the bug page
[11:39] <mpt> (18:34:13) mpt: or pull the duplicate form into the bug page
[11:39] <mpt> (18:36:07) mpt: bradb: Any one of those three would reduce the number of clicks and page loads required when dealing with a bug
[11:39] <mpt> Also, put BradBollenbachApproved in the status of SimplifyingMalone if you feel so inclined
[11:40] <bradb_> oh, right, i could do that too
[11:40] <bradb_> hm, MBS. I'd have to take a read through the spec.
[11:41] <bradb_> pulling the attachment form in would be nice
[11:42] <bradb> mpt: i.e. and putting it with the comment form?
[11:43] <mpt> yes
[11:43] <bradb> right, I can do that one tomorrow
[11:43] <bradb> short and sweet
[11:43] <mpt> excellent
[11:45] <mpt> g'night all