=== kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad
=== stub [~stub@dsl-] has joined #launchpad
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: ++resource++ URLs should be absolute and favicon (patch-825)05:27
=== stub [~stub@dsl-] has joined #launchpad
=== stub [~stub@dsl-] has joined #launchpad
=== stub [~stub@dsl-] has joined #launchpad
KinnisonMorning stub10:49
KinnisonYou going to be around long enough to review and merge an sql patch if I commit it soon?10:50
Kinnisoncool; I'm just doing my normal paranoid checks before submitting to pqm10:51
Kinnisonpqm request sent ;-)10:52
stubGot comments? :-)10:52
KinnisonIt's four views10:53
KinnisonI wasn't aware comments were needed for views10:53
KinnisonIf you want them I'll have to do some more10:53
stubAt the very least it needs 'This is a view used by blah listing all the whatsits with green watchamacallits'10:56
KinnisonOh okay10:56
Kinnisongive me a sec to hack10:56
stubJust stick 'em straight in comments.sql10:57
Kinnisonbefore you merge the patch?10:57
stubSure. A few spurious non fatal errors never hurt anyone ;)10:58
KinnisonCOMMENT ON VIEW blah IS ''; ?10:59
Kinnisonlike that?10:59
KinnisonI caught my pqm request before it hit servers so I'll put them at the bottom of the patch10:59
stubI'll sort out any quoting errors or whatever when I do the merge so don't be too paranoid10:59
Kinnisonpqm merge sent11:04
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Rename some views, merge some, tidy the sqlobject interactions with them. (patch-826)11:18
Kinnisonthat'd be the one11:19
=== stub gives Kinnison a gold star for his comments
stubSo - should I make a decision about view naming conventions now, or just be inconsistent ;)11:39
KinnisonI recommend being inconsistent11:39
KinnisonI offered two conventions in that file11:40
Kinnisonsince I can't choose11:40
stubNeither of which match the V* ones I committed for Kiko ;) I guess there are important things to worry about though...11:44
stubI guess we will want some indexes in there at some point to speed up those joins..11:46
Kinnisonmost of the joins are on primary keys but in time we may want indexes too11:49
KinnisonI've only tested performance on a single distrorelease (warty) and that seems fine11:49
=== cprov [~cprov@] has joined #launchpad
KinnisonMorning cprov 11:53
cprovKinnison: morning 11:58
=== salgado [~salgado@200-206-134-238.async.com.br] has joined #launchpad
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Views for Lucille (patch-827)12:11
Kinnisonthanks stub12:11
=== debonzi [~debonzi@] has joined #launchpad
=== salgado [~salgado@200-206-134-238.async.com.br] has joined #launchpad
=== carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== salgado [~salgado@200-206-134-238.async.com.br] has joined #launchpad
=== stub [~stub@dsl-] has joined #launchpad
=== kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad
=== Kinnison does more db patches for stub
KinnisonALTER TABLE BinaryPackage01:07
Kinnison    ALTER COLUMN archspecific SET NOT NULL;01:07
Kinnisonis that right to mark the column as not-null ?01:07
=== stub [~stub@dsl-] has joined #launchpad
carlosKinnison: I think so01:11
Kinnisoncarlos: ta01:11
Kinnisonyeah; patch 7 does it that way01:11
Kinnisonstub: I've sent another pqm merge with another db patch01:18
Kinnisonstub: if you happen to still be around01:19
KinnisonErm, is pqm b0rken?01:38
SteveApqm       2349  0.0  0.0  3756 2272 pts/2    S+   Nov18   0:00 -su01:42
SteveAnot sure what that means01:42
SteveAthat's the only pqm process on chinstrap01:42
(elmo/#launchpad) that's just lifeless with a pqm hell open01:42
(elmo/#launchpad) err, shell01:43
KinnisonI think you were right the first time :-)01:43
=== Kinnison sighs. 45 gigs to fetch
=== Kinnison knew he should have kicked off an archive mirror sooner than this
(elmo/#launchpad) dude, you should have come to the data centre01:55
carloslunch time01:55
(elmo/#launchpad) (when you were in London I mean - it's by far the faster way I know of to get a local mirror :)01:56
Kinnisonelmo: laptop doesn't have enough room for a full mirror01:59
Kinnisonmy desktop only has 5 gigs more than this mirror will need spare right now01:59
KinnisonI'm tempted to say "sod this" and just hammer mawson instead01:59
(elmo/#launchpad) use zhongshan?01:59
=== Kinnison looks to see if that mirror is enough
Kinnisonyeah; sod it; that'll be enough02:01
=== Kinnison ruffles elmo for being the voice of reason
Kinnisonelmo: any idea why pqm hasn't done my merge-request yet?02:04
(elmo/#launchpad) it thinks it has02:05
(elmo/#launchpad) tabnanny failed02:05
(elmo/#launchpad) ---- tabnanny bitching ----02:05
(elmo/#launchpad) /home/pqm/arch/queue/workdir/rocketfuel@canonical.com/rocketfuel@canonical.com---launchpad--devel--0/launchpad/lib/canonical/launchpad/scripts/gina/clas02:05
(elmo/#launchpad) ses.py 299 '\tif len(data) == 0:\n'02:05
(elmo/#launchpad) /home/pqm/arch/queue/workdir/rocketfuel@canonical.com/rocketfuel@canonical.com---launchpad--devel--0/launchpad/lib/canonical/launchpad/scripts/gina/grab02:05
(elmo/#launchpad) ber.py 136 '\t try:\n'02:05
Kinnisonwhy didn't 'make check' catch those?02:06
Kinnisonelmo: was pqm meant to forward that info back to me?02:06
(elmo/#launchpad) Nov 22 12:21:28 chinstrap postfix/smtp[26745] : 1C8AFEE806F: to=<dsilvers@digital-scurf.org>, relay=adelie.warthogs.hbd.com[] , delay=0, stat02:07
(elmo/#launchpad) us=sent (250 Ok: queued as 33288192C01C)02:07
(elmo/#launchpad) you're bouncing it02:08
(elmo/#launchpad) Nov 22 12:21:28 adelie postfix/smtp[16595] : 33288192C01C: to=<dsilvers@digital-scurf.org>, relay=mx.pepperfish.net[] , delay=0, status=boun02:08
(elmo/#launchpad) ced (host mx.pepperfish.net[] said: 550 rejected: cannot route to sender: response from fiordland.warthogs.hbd.com [] was 55002:08
(elmo/#launchpad) <pqm@canonical.com>: Recipient address rejected: User unknown in virtual alias table <pqm@canonical.com> (in reply to MAIL FROM command))02:08
(elmo/#launchpad) meh02:08
Kinnisonaah because the sender is unroutable02:08
SteveAKinnison: I want you to get a screwdriver and lever your "tab" key from your keyboard.02:12
SteveAit's what I do ;-)02:12
KinnisonSteveA: emacs does the right thing for me02:12
KinnisonSteveA: I blame vim on mawson02:12
=== SteveA wonders about tests for the test_on_merge.py script.
KinnisonI'd very much like it if 'make check' would rant about tabs02:13
stubIt does!02:13
Kinnisonwhy didn't it rant at me I wonder02:13
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Gina bits and a db patch for binarypackage, fixed tabs in gina too (patch-828)02:18
Kinnisonelmo: it's working now02:18
Kinnisonstub: fancy reviewing that patch?02:19
=== Kinnison sets about doing scary things to gina so she supports multi-arch
stubKinnison: Can we make the new column processorspecific instead of archspecific? We are already using arch for arch, and using arch as an abbreviation for architecture will be confusing.02:26
Kinnisonstub: either that or architecturespecific02:27
stubHmm... although we already have distroarchrelease02:27
Kinnisonin fact, I would prefer architecturespecific02:27
stubok. I'll put it through as architecturespecific02:28
kikoelmo, did you not get my request to admins@?02:30
(elmo/#launchpad) the one you sent on Friday?02:33
kikoelmo, yes, for salgado.02:38
kikohe starts this week02:38
(elmo/#launchpad) I've started what I have to do on my end02:40
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: BinaryPackage.architecturespecific for Gina (patch-829)03:02
Kinnisonelmo: any chance you can either make me a postgres superuser on zhongshan or do some stuff for me on template1 ?03:03
(elmo/#launchpad) done the former03:05
(elmo/#launchpad) do you want a less 1980's copy of the archive too?03:05
KinnisonThat'd be ace if you could; I think the copy is okay but an update would be nice03:05
(elmo/#launchpad) hmm, I'm going to have to move it, fyi03:09
Kinnisonthat's fine03:10
(elmo/#launchpad) /srv/archive.ubuntu.com/ -> /srv/archive.ubuntu.com/ubuntu/ to match mawson and generally be sane03:10
=== stub [~stub@dsl-] has left #launchpad []
=== Kinnison starts doing deep and scary changes to gina
=== Kinnison realises why he hasn't been workraved yet
=== Kinnison reenables workrave
carlosthe new rosetta's favicon is really funny, but I'm not sure it should be used in our public release :-P03:35
carlosBradB: morning03:35
carlosohh, it's not rosetta's favicon but launchpad one03:35
carlosSteveA: around?03:37
SteveAhi carlos03:38
carlosSteveA: hi03:38
SteveAI'm about to have a phonecall with daf.  can it wait a little while?03:38
Kinnisonelmo:zhongshan is full dude :-(03:50
Kinnisonelmo: It's possible that rsync failed :-(03:50
Kinnisonelmo; I'm emptying my test pool; can you repeat the archive sync to be sure it's complete?03:51
(elmo/#launchpad) boggle03:51
Kinnisonelmo: zhongshan only has a 67 gig drive03:52
Kinnisonwell a 67 gig / partition03:52
(elmo/#launchpad) *BOGGLE* 03:52
(elmo/#launchpad) we're at 45Gb for archive.u.c/ubuntu already03:53
Kinnisonscary eh?03:53
(elmo/#launchpad) RUN AFUCKINGWAY03:53
KinnisonI've freed 17 gigs on zhongshan03:53
(elmo/#launchpad) is zhongshan any use to use, with what little space will be left ?03:55
(elmo/#launchpad) ok03:56
(elmo/#launchpad) well, mirror's rerunning now03:56
KinnisonI'm prototyping the multi-arch gina03:56
KinnisonI can just turn off the librarian integration for the duration03:56
carloselmo: any hint to enter on mawson using my local ssh certificate as I do to enter chinstrap?04:04
(elmo/#launchpad) carlos: cat .ssh/id_rsa.pub | gpg --clearsign | mail change@db.warthogs.hbd.com04:04
carloselmo: I did it already, but I need to use chinstrap to reach mawson04:05
carlosand my local certificate is not used, but the one at chinstrap04:05
(elmo/#launchpad) uh?04:05
KinnisonHost mawson04:06
Kinnison        ProxyCommand ssh chinstrap nc -q0 %h %p04:06
Kinnison        Hostname mawson.ubuntu.com04:06
carlosBradB: I know it's late... but happy birthday :-)04:06
Kinnisonis what I have in my .ssh/config04:06
(elmo/#launchpad) you are using the proxying instructiosn on wiki.canonical.com/MachineOverview right?04:06
carloselmo: didn't know about that04:06
carlosKinnison, elmo thanks, I'm going to read it now04:06
BradBcarlos: thanks :P04:12
=== kiko is now known as kiko-fud
=== Kinnison runs the first multiarch test
Kinnisonthis one doesn't cope with arch-indep debs but it's a good start04:22
=== bob2 [rob@bob2.user] has joined #launchpad
bob2I broke launchpad again05:20
bob2after "make" in the db schema dir, then "make build run" in the root, I get an exception when doing anything on the DOAP page05:23
BradBIs spiv on holiday?05:26
carlosBradB: yes05:27
BradBbob2: That explains why it's broken then. :)05:27
BradBbob2: The deal is, if $app is broken, it's because $developer didn't provide a complete enough test suite for his $app, and thus we were able to checkin a change that made $developer's $app break.05:28
=== carlos leaves for a while
bob2BradB: hah05:30
bob2BradB: should I send $developer a backtrace?05:31
BradBbob2: no. https://launchpad.ubuntu.com/malone/bugs.05:31
bob2BradB: ah05:32
=== bob2 rummages around for the cert
=== BradB reads up on XML-RPC in Z3
bob2BradB: hrm, is my login the same as the website's?05:43
=== sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
sabdflBradB: i have a present for you05:44
BradBreally! :)05:45
(elmo/#launchpad) doh. poor Brad. if it's anything like the "gift" Colin got.. ;-)05:46
BradBheh heh05:46
bob2can non-LP people login to the malone dogfood server?05:49
(elmo/#launchpad) no05:49
(elmo/#launchpad) why?05:49
bob2erm, to the LP web thing, not ssh05:49
BradBbob2: do you have an account on ubuntulinux.org? it's the same one.05:49
(elmo/#launchpad) yes - it's just protected by a clientside cert, which is in the mailing list archives05:50
bob2yeah, I have thgat05:50
bob2but I need to login to report the bug, but I guess I've just misremembered my password05:50
bob2ah, perfect05:51
BradBbob2: you can report the bug on the launchpad product perhaps. we don't have products for DOAP or FOAF, i don't think.05:52
sabdflelmo: that's the gift that keeps getting given ;-)05:53
sabdflBradB: its a dump of a malone db with a couple thousand bugs sync'd from debbugs05:53
bob2BradB: yeah, that's what I was doing05:53
sabdfl24,000 messages05:54
bob2LP seems really slow05:54
sabdfl7,000 bugs05:54
dilysNew Malone bug #59: "DOAP pages cause an exception.", submitted by Rob Weir05:54
sabdflits a nice taste of malone-for-distro-team05:55
BradBsabdfl: and it won't wipe my hard drive, right? :)05:55
sabdflBradB: *shouldn't*05:55
BradBi need lots of people, since that's what i'm testing currently.05:55
=== BradB writes up the doc on how to search for people with XML-RPC
bob2wtf is up with the bugs on 44bsd-rdist?05:57
sabdflBradB: i will extend my debbugs sync script to add all the relevant people, then you'll have *plenty*05:57
sabdflbut for the moment, let's work with this snapshot05:57
BradBok. where do i get it when i need it?05:58
SteveAcarlos: please ping me when you're back06:00
=== kiko-fud is now known as kiko
bob2bugs 56 and 59 seem to have been attached to 44bsd-rdist somehow06:06
BradBPeople who know something about FOAF: the thing that contains people in Launchpad, what's it called?06:08
BradBI see IPersonSet, but it isn't clear that there's any implementation for any of that yet, and thus I'm not sure if it's really been blessed as the thing on which to search for people.06:08
BradBimplementation on a search page somewhere, that is.06:08
BradBsabdfl: dude, are you /sure/ you don't want to remove summary from the bug reporting page? :) for every person that's reported a bug thus far in malone (including me) they've either 1. begged for summary to be optionally, if even on the bug add form at all and/or 2. written a summary that precludes the need for having to explicity say #1. :)06:11
sabdflBradB: ask me this again after we have outside users for a month, ok?06:12
sabdflalso, make sure you are using the summary wherever it is possible06:12
sabdflin other words, presenting it in the UI in sane and sensible places06:12
sabdfli think it adds a level of quality that other bug trackers don't have06:12
BradByeah. i haven't yet found those places, but i'll keep it in mind.06:12
sabdflif you are not presenting the info anywhere, then it's useless to ask people to capture it06:13
sabdfli think there's a lot of value in having a one-paragraph summary of a bug06:13
sabdflbut that value is only shown when that one paragraph appears in all the right places06:13
BradBif anything, i could perhaps see stealing the first paragraph of the report itself as the summary.06:13
BradBbut good bug reporters know very well that the title of the bug has to tell me what this bug is about.06:14
SteveAas the initial summary perhaps, and then allow people ample opportunities to improve it later.06:14
sabdflin my reports, i print the title, and use a tooltip for the summary06:14
SteveAI know I've used bugtrackers of upstreams that I use, but don't contribute to, and I've wanted to improve the summaries on their bug reports when I've found the wrong or the right bug I'm looking for06:14
kikohere's my proposal, sabdfl, SteveA, BradB 06:15
SteveAbut if it is too much hassle to do so, then I won't06:15
kikouse by default the initial comment as the bug summary06:15
kikoand allow it to be edited later separately06:15
kikoI always dreamed of doing this for bugzilla06:15
kikothe initial comment is the bug summary and it's immutable06:15
sabdflat this stage we don't have any clear guidelines on the form as to WHAT info to put in summary vs description06:15
kikowell, the user won't read any guidelines anyway..06:16
kikoUsers Don't Read, remember. :)06:16
BradBheck, i wouldn't even bother reading that. i don't care much about being nice to a bug tracker. i just want it to get out of my way, like just about everything i do that involves a computer.06:17
sabdflthey will, if it's in the text box already06:17
kikoit has to be something obvious. description is obvious; title and description is sufficiently obvious, title, summary and description are less so.06:17
kikosabdfl, Jacob Nielsen would slap you on the wrist if he heard that :)06:17
sabdflhe would find my wrist is a little less limp than his own06:18
kikohe's not limp-wristed personally, in fact06:18
BradBok, if nobody says otherwise, i'm writing a PersonContainer for FOAF, because i see nothing else that contains people.06:19
BradBer, no, i'm not. i'm going to test something that already has a container that i know of instead. :)06:19
kikoBradB, salgado is starting on FOAF tomorrow, if you'd like to assign to him.06:21
=== SteveA wonders if updating summaries to existing bugs to be better on-target is like slashdot moderation. something someone can do a little of from time to time, and receive karma.
BradBsure. i don't really know how to report this as a bug though, as i don't know enough about FOAF to say how it should work.06:21
BradBkiko: Where's IProduct{Set,Container}? i.e. What did you guys /really/ call it?06:25
kikoBradB, just report it saying what you need, we'll sort out the rest.06:26
SteveAdaf, carlos: let's talk about rosetta on #canonical-meeting in 30 minutes' time. (1600 UTC)06:26
BradBkiko: ok06:26
kikoBradB, soyuz doesn't actually deal with products except when linking to rosetta and malone, you know. :)06:26
SteveAlet's use IxxxSet rather than IxxxContainer as our convention.06:26
BradBok, I'll go with ISourcePackageSet then06:27
SteveAThere are a few interfaces / implementations with "Container" in them.  debonzi, can you take on renaming these to "Set" instead?06:28
=== Kinnison tries multiarch-gina again
debonziSteveA, sure06:28
SteveAdebonzi: so we have IBugExternalRefContainer in malone, and that should be changed to IBugExternalRefSet whereever it occurs.06:29
SteveAfor example.06:29
sabdflBradB: scp chinstrap:~mark/launchpad_dev.20041122.sql.bz2 .06:30
debonziSteveA, Right.. Ill d that06:30
SteveAthis only applies to code that is to do with soyuz, malone and rosetta.  not to other launchpad application system code, such as in lib/canonical/launchpad/webapp/session.py we have LaunchpadSessionDataContainer06:30
sabdflSteveA: yes, bug editing would definitely give you karma06:31
SteveAbecause a LaunchpadSessionDataContainer is a different kind of thing, and should stay as it is.  Basically, stuff in canonical/launchpad/webapp should stay as it is06:31
SteveAthanks debonzi06:31
sabdflthat's what salgado should be working on06:31
sabdflso would linking malone bugs to upstream, etc06:31
dilysNew Malone bug #60: "FOAF needs a search interface exposed via XML-RPC", submitted by Brad Bollenbach06:32
SteveAwhy xmlrpc?06:33
BradBfor the super widget06:33
SteveAwhy not just an http GET ?  that should be compatible with more browsers, and be simpler to implement.06:33
SteveAthere have been a bunch of discussions about this already06:34
BradBSteveA: manually parsing the response in JS?06:34
SteveAwhen kiko and mark and I last discussed this, we talked about returning the response in a way that is easy to parse with javascript 06:35
BradBwe were just talking about this last week. nobody mentioned anything about not using XML-RPC.06:35
SteveAI think kiko suggested passing back a javascript array06:35
kikoI sure did.06:35
SteveAbut, the transport really should make no difference.  far fewer browsers support xmlrpc for javascript than support doing HTTP, and there is much less complexity on the server, and in the handling of things like authentication.06:36
carlosSteveA: ping06:37
SteveAhello carlos06:37
SteveAI'd like to have a meeting with you and daf about rosetta on #canonical-meeting, in 20 minutes time06:37
BradBkiko: you mean the reponse is a data structure that would be eval'd (or whatever the JS equivalent is) into a JS array?06:38
BradBs/is a/is text that looks like a/06:39
kikoyes, that would be it. a bit nasty using eval, but it's not too slow.06:39
SteveAthis, using an HTTP GET, ought to be a simple thing06:40
BradBkiko: nasty indeed. seems pretty insecure.06:40
SteveAinsecure how?06:40
SteveAthe javascript is being served from our server.  it is data coming from our server that gets evaled by the javascript interpreter in a browser.  then later, it is getting more data from our server, and evaling it.06:41
BradBSteveA: for all the different things that will need to be searchable and their corresponding data returned in this eval'd data structure, it seems to be asking for a quoting attack.06:41
SteveAI really can't see how.  You have a function in JS that gets data from a particular URL and evals it.06:42
SteveAI don't see what there is to attack.06:42
BradBSteveA: javascript insertion?06:42
SteveAI don't see what you mean.06:43
BradBSteveA: like an sql insertion attack, but with javascript instead. is that easy to avoid here/06:44
SteveAthe javascript is not executed on our server.06:44
BradBso? :)06:44
SteveAI do not see a possibility for anything that resembles an sql insertion attack06:45
BradBSteveA: as long as people exposing the GET interfaces are cautious to quote the return values correctly, it should be okayish. there's an elevated risk here though, no doubt.06:46
BradBSteveA: e.g. if I entered my name as 'Brad "); ...some nasty js here...' or some such.06:47
KinnisonI was under the impression that sqlobject should pretty much prevent an SQL injection attack06:48
BradBKinnison: there's no sql injection attack going on here.06:48
KinnisonOh you're talking HTML injections?06:49
BradBi said a javascript injection attack. :) the same /idea/ as an sql insertion attack, but on javascript, not sql.06:49
Kinnisonone would hope all values heading back out got HTML encoded yes06:49
=== BradB is now known as BradB|lunch
sabdflBradB|lunch: ping when you're back06:53
BradB|lunchsabdfl: didn't quite head out the door yet.06:54
BradB|lunchwhat's up?06:54
sabdfla bunch of things that used the ownerID trick have busticated recently06:54
BradB|lunchbusticated how?06:54
BradB|lunchin which app?06:54
sabdflgo into doap06:54
sabdflsearch for a project06:55
sabdflclick on a product06:55
sabdfllook on the left, see the "File A Bug.." link06:55
sabdflclick on it and file a bug06:55
BradB|lunchwho didn't test that?06:55
=== Kinnison sprinkles another commit or two into gina
sabdflBradB|lunch: the page tests still work06:57
BradB|lunchouch :/06:57
sabdflbecause if you POST the correct things to the form, it still works06:57
sabdfli think it has to do with the rendering06:57
sabdflthis is where we want to use the normal addform, but we want to add the owner to the object, owner being the request principal06:57
sabdfli copied what i thought was your example on how to do that06:58
BradB|lunchBugFactory does that already. I've already filed a bug saying that things that add bugs need to use BugFactory.06:58
sabdfl<browser:widget field="owner" class="canonical.widgets.OwnerWidget" />06:59
sabdflso should I rework that form to use BugFactory?06:59
BradB|lunchthat would close a bug, so yeah, i think it'd be a good idea06:59
sabdflhmm... it seems to do so already06:59
BradB|lunchsabdfl: the first thing to do is make sure the relevant test fails though.07:00
sabdflthere is no test for this part of the machinery07:01
BradB|lunch...or create one, as necessary :)07:01
BradB|luncheh, which i guess means fixing it first then07:01
sabdflhmm... old on, further debugging suggests the problem lies elsewhere07:02
sabdflthis is interesting07:03
sabdflin the zcml for the addform, i gave both a class= and a content_factory=07:04
sabdflthe view class has a createAndAdd method, which is what is being called07:04
sabdflit does not seem to be calling the content_factory (which was BugFactory) at all07:04
sabdflSteveA: what are the rules for an addform with both a class= and a content_factory=?07:06
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Librarian wrapper for Lucille (patch-830)07:06
BradB|lunchsabdfl: createAndAdd is what properly calls the content_factory :)07:06
BradB|lunchyou don't want to override both07:07
sabdflok, i'll try leaving out the class07:07
BradB|lunchthe template calls view/update, which will call createAndAdd, inside which a call to self.create calls the actual factory. if you provide createAndAdd on your view /and/ a content_factory, it will not do what you expect.07:07
SteveAsabdfl: wow, what hugely complex code the zcml addform directive has behind it07:08
sabdflBradB|lunch: well here's the challenge07:09
sabdfli'm doing the "file a bug ON A KNOWN PRODUCT" age07:09
sabdflurl would be something like /doap/projects/foo/bar/+filebug07:10
sabdfl"file a bug on product bar of project foo"07:10
BradB|lunchyou're doing exactly the same as what a normal bug add is, but you're just molding the UI around a bit to make a shortcut off a bug. if anything, perhaps you can simple store the product id in a hidden field in the form.07:11
BradB|lunchs/off a bug/off a product/ # heh07:11
BradB|lunchpoint being though, the code should be structured in such a way that 1. we don't duplicate any templates, hopefully, and 2. by the time BugFactory is called, it all just Does The Right Thing (i.e. the params have been provided to BugFactory correctly by the caller)07:12
SteveAin an add form, the default implementation of self.create(*args, **kw) is to call the content_factory07:13
sabdflBradB|lunch: i don't think auto-generated forms, on their own, are going to be good enough for us07:13
sabdflthe reality is that i spend large amounts of time trying to bend the form machinery to do what i want07:14
BradB|lunchSteveA: we've got that part figured out already. sabdfl overrode createAndAdd on his view class, which precludes calling the factory, hence the problem.07:14
sabdflin this case, storing a "hidden id" seems so ugly07:14
BradB|lunchsabdfl: why!?07:14
sabdflwell, for a start, it's likely to expose the db id of the product, which i'd rather not do07:15
SteveAso, you need to call self.create from your new createAndAdd07:15
sabdflSteveA: is that all?07:15
BradB|lunchsabdfl: they're exposed everywhere already. if we need to fix that, we can, which would include fixing how it would be presented when a hidden id.07:15
BradB|lunchsabdfl: the point is that you probably didn't mean to override createAndAdd :)07:15
SteveAthe default case just says: content = self.create(*args, **kw)07:15
sabdfli did intent to override createAndAdd07:16
BradB|lunchsabdfl: why?07:16
sabdflbecause in this case I not only want to create a bug, i want to create the ProductBugAssignment too07:16
BradB|lunchsabdfl: i already solved that problem though.07:16
sabdflSteveA: i think i looked into the default implementation07:17
BradB|lunchsabdfl: trust me. we have rules about how a bug is add. those rules are explained in BugFactory. whereever you create bugs from the UI, you should be using BugFactory, so that when those rules change, they change consistently everywhere.07:17
BradB|lunchsabdfl: if his means that in your shortcut-UI you store a hidden id, then it's worth our time to do that, and it's perfectly sane to do so.07:18
sabdflok, i think i can just add product to the **kw and call BugFactory07:18
BradB|lunchsabdfl: if you don't like the fact that we expose ID's in our HTML, then we'll fix the tokens that vocabs use. this will automatically fix the hidden field value (because that's just a token from a vocab)07:19
BradB|lunchsabdfl: why not just store it as a hidden field? i don't understand why we want to write duplicate code in there for nothing. surely the Z3 machinery has an easy way to say "save these request params as hidden fields in the form".07:20
BradB|lunchthen your link to add a bug simply passes the relevant token.07:21
=== BradB|lunch really goes for lunch now
sabdflBradB|lunch: when you're back, take a look at that db dump and let's walk through malone using that many bugs 07:25
SteveAsabdfl: did you call the default implementation from your own code, or did you entirely override it?07:25
=== sabdfl will have to ask kiko for help on indexes etc
sabdflSteveA: entirely overrode it07:26
sabdflceck in browser/product.py07:26
SteveAnice security code ;-)07:27
sabdfldef notify_bug_added(bug_add_form, event):07:27
kikosabdfl, I can take a look at some queries when you need me to.07:28
sabdflSteveA: give me something better to work with ;-)07:28
SteveAwill do RSN07:28
sabdflkiko: we're just getting to the OOOOFFF point you guys hit when you first rn gina07:28
SteveAsabdfl: maybe you could have done it by adding your own code, but calling the original to do its work in between07:30
sabdflstevea: i'm trying to fix this function:07:34
sabdfldef notify_bug_added(bug_add_form, event):07:34
sabdflis bug_add_form a dict?07:34
sabdfl    if bug_add_form.owner:07:35
sabdfl        owner = bug_add_form.owner.displayname07:35
sabdfl    if bug_add_form.sourcepackage:07:35
sabdfl        spname = bug_add_form.sourcepackage.sourcepackagename.name07:35
sabdfl    if bug_add_form.product:07:35
sabdfl        pname = bug_add_form.product.displayname07:35
sabdflthese lines will fail if the form *didn't* get a source package or product07:35
SteveAit cannot be a dict07:35
sabdflcan i change these to bug_add_form.get('fieldname', None)?07:36
SteveAif it were a dict, it would read bug_add_form['owner'] : etc.07:36
sabdflah, right07:36
sabdflwtf is it then?07:36
SteveAI don't know.  try asking the debugger?07:36
kikoan instance?07:36
=== Kinnison cries and beats up on gina with a stick
sabdflkiko: you'll be the FIRST person i ask next ;-)07:36
kikoKinnison, behave or I'll let you have no more fun with her today.07:36
sabdfl(Pdb) print bug_add_form07:37
sabdfl<canonical.launchpad.database.bug.BugAdded object at 0x418c754c>07:37
kikothere you have it.07:37
sabdflwhouldya look at that?07:37
kikoyou want hasattr() I suspect.07:37
Kinnisonkiko: but but but she is completely and utter fucked from a multi-arch PoV07:37
sabdfltnx :-)07:37
SteveAhasattr is evil.  it eats exceptions07:38
kikohasattr(bug_add_form, "sourcepackage") ?07:38
=== Kinnison keeps finding places where he has to add in scary joins so she believes she has a binarypackage worth adding
=== Kinnison runs her again
SteveAmaybe you want getattr(fieldname, None)07:38
kikoSteveA, well, what do you suggest -- this is going to raise AttributeError, isn't it?07:38
SteveAslightly less evil than hasattr07:38
kikothen it's:07:38
kikoif getattr(bug_add_form, "sourcepackage", None) is not None:07:38
kiko   ...07:38
kiko(but I hate that)07:38
SteveAyeah, of course07:38
sabdflso what do the guru's recommend?07:39
kikoSteveA seems to distrust hasattr; I think it's harmless in this context but it's your call who to trust. I suspect it doesn't matter and both forms are equivalent.07:39
SteveAsabdfl: is the point that one of the attributes may not be present?07:39
=== Kinnison workraves
SteveAso, right now you're getting an AttributeError?07:40
sabdflSteveA: yes07:40
SteveAuse getattr07:40
SteveAif you're going to be hitting this pattern a lot, then someone should write a wrapper object to do this more elegantly07:41
SteveAform = AttributeAccessAsDict(bug_add_form)07:41
SteveAif form.get('fieldname') is None:07:41
SteveA etc.07:41
sabdflcan i use getattr(obj, 'attribute') and have it return None if there is no attribute like that?07:42
sabdflor do I have to be explicit about the fallback to None?07:42
kikosabdfl, you need to be explicit.07:42
kiko>>> getattr(int, "foo")07:43
kikoTraceback (most recent call last):07:43
kiko  File "<stdin>", line 1, in ?07:43
kikoAttributeError: type object 'int' has no attribute 'foo'07:43
carlosdo you know if postgres can handle a field with "text" type that could have about 1MB of text in it?07:44
(elmo/#launchpad) carlos: yes it can07:45
carloselmo: thanks07:46
debonziSteveA, should BugContainerBase be changed to BugSetBase too ?07:47
sabdflProductBugAssignment(bug=bug, product=kw['product'] , owner=kw['owner'] )07:48
sabdfldebonzi: yes, if you can merge the two sanely07:49
sabdflregarding the above code...07:49
sabdflwill it work, if kw['product']  is a Product object, not an int?07:49
debonzisabdfl, Im not sure07:50
SteveAdebonzi: yes please07:53
SteveAsabdfl: I think it is supposed to.07:54
Kinnisonbinarypackage is unique on binarypackagename,version07:56
=== Kinnison collapses into a heap and sobs
lulunight all :o)08:01
lulukinnison: cheer up !08:01
Kinnisonnight lulu08:01
=== Kinnison sobs
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad []
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: script fixes, remove breadrumbs from Rosetta (patch-831)08:07
SteveA>>> class AttributesByKey(UserDict.DictMixin):08:21
SteveA...     def __init__(self, obj):08:21
SteveA...         self.obj = obj08:21
SteveA...     def __getitem__(self, key):08:21
SteveA...         try:08:21
SteveA...             return getattr(self.obj, key)08:21
SteveA...         except AttributeError:08:21
SteveA...             raise KeyError, key08:21
SteveAneeds an `import UserDict` too08:21
SteveAsabdfl: had an idea about your use of getattr / hasattr earlier.08:22
dilysNew Malone bug #61: "Create a new table to store temporal po/pot files to be imported", submitted by Carlos Perell Marn08:28
=== BradB|lunch is now known as BradB
=== cprov is now known as cprov-afk
=== kiko is now known as kiko-afk
BradBSteveA: is there another meeting on wednesday? i don't recall seeing an email to lp@ about it.08:39
carlosBradB: is there any way to remove a package from a bug in malone? I selected a package and a product and I want to remove the package reference08:39
BradBcarlos: for now, the best you can do is reject it, perhaps.08:40
carlosBradB: but the bug is still valid, I think I will maintain it and remember to use only product next time ;-)08:42
carlosBradB: thanks08:42
SteveABradB: I'm traveling to London on Wednesday.  How would Thursday work for you?08:42
BradBshould be fine, i think08:43
=== SteveA waves at launchpad channel. Meeting thursday, usual time?
BradBcarlos: hm? if you reject the package assignment, you only reject the package assignment.08:44
KinnisonSteveA: thursday?!08:44
KinnisonSteveA: I guess so08:44
KinnisonSteveA: I'll be @ kamion's place but I can try to make sure I'm available08:44
SteveAI'd prefer thursday to friday, as it gives some time to start following up on the meeting08:47
carlosBradB: oh, I didn't saw it has it's own status. Thanks08:47
carlosSteveA: it's ok for me08:47
SteveAso, let's do thursday08:47
SteveAI'll send a mail after workraving08:47
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Massive *Container to *Set renaming. All the interfaces and classes used by soyuz, rosetta and malone named <something>Container was renamed to <something>Set. The IProjectContainer and ProjectContainer classes were deleted since the respecting Set was already implemented and all the other class using the Container was changed to use the Set one. I hope it does not break anything. At least launchpad is ru08:54
SteveAdebonzi: excellent!08:56
carlosBradB: any chance to get a diff like output with the notification mails?08:56
BradBcarlos: The notification emails will have to be better-formated. Normal people can't read diff-like output.08:57
carlosBradB: but it's easier to understand by developers :-P08:59
debonziSteveA, nice.. I hope everything still working at least as it was :)08:59
dilysNew Malone bug #62: "all Launchpad templates should have titles", submitted by Dafydd Harries08:59
BradBcarlos: I guess it depends on what you mean by diff-like output for notification emails.08:59
carlos- Old value09:00
carlos+ New value09:00
carlosdiff -u09:01
BradByeah, that's something to be avoided in notification emails dude :)09:01
BradBwe can arrive at a format that is readable by developers and by people that don't have superpowers too, i think.09:02
(daf/#launchpad) wdiff?09:02
=== carlos thinks on code a eastern egg to select it from his account :-P
=== kiko-afk is now known as kiko
(daf/#launchpad) gconftool-2 --type string --set /apps/malone/notification/diff_style "udiff"09:07
BradBSteveA: What's our policy for upgrading Zope 3? The thing that I'd like to use to solve the selection problem is sources, which don't appear to be in the snapshot of Z3 we're using.09:38
sabdflgiven that the tests use a different db, is it possible to run launchpad and make check at the same time?09:41
BradBsabdfl: I think that's a problem with postgresql. Client A is connected to db A, client B wants to drop db B in the same cluster, but can't because A is connected to A.09:43
carlosdaf: I'm merging now the sql patch for the new table09:43
sabdflcarlos: new table?09:43
carloswill try to finish it today so you can use it09:43
carlossabdfl: yes, to store raw po/pot09:44
carlosfor the web import09:44
sabdflcan those rather be additional fields on POTemplate and POFile?09:44
sabdfli don't think we need history, just the last one09:44
carlossabdfl: it's a temporal queue09:44
carloswe are using it that way until we get zodb ready09:45
sabdflwhy not just a field on POTemplate, and one on POFile?09:45
(daf/#launchpad) that would mean that you can't upload PO file data for a PO file that doesn't exist yet09:45
sabdflyou'd create the POFile at the time of the first upload09:45
sabdflthen, you'd have a POFile09:45
(daf/#launchpad) true09:45
sabdflit's the same as parsing a directory with a POTemplate and POFiles09:45
(daf/#launchpad) isn't this whole mechanism temporary?09:45
sabdfleverything temporary becomes permanent ;-)09:46
(daf/#launchpad) heh :)09:46
(daf/#launchpad) I think if it's a separate table, it might be easier to amputate it09:46
sabdflthis is the pre-cursor to "find it in Bazaar branch, and auto-imort"09:46
carlossabdfl: we don't need it into the database09:47
sabdflcarlos: yes we do09:47
carlossabdfl: why?09:47
(daf/#launchpad) we also want to store things like who made the upload09:47
sabdflthis is something i should have asked for ages ago, actually09:47
sabdfldaf: np, it's just a field on the table09:47
sabdflthis is the simplest way to get going09:47
sabdflwe can enhance it to a proper workflow later09:47
carlossabdfl: I mean, I don't see which utility could have store the .po file inside the database09:48
sabdflALTER TABLE POTemplate ADD COLUMN fileuploaded;09:48
sabdflcarlos: que?09:48
carlossabdfl: <carlos> sabdfl: we don't need it into the database09:48
carlos<sabdfl> carlos: yes we do09:48
sabdflit means it's there for reporting and analysis09:48
sabdflif you look at launchpad *right now* you'll see that for *any* product, you can instantly start using malone as your upstream bug tracker09:49
sabdflyou just create the project and product, then click on "File bug..." and voila09:49
sabdflwe need to get rosetta to the same point09:49
sabdflI want to create the project on product and click on "Start translating.." and have it prompt me for a POTemplate and POFiles09:50
sabdfle voila09:50
carlosright, we are adding the same functionality in Rosetta and I don't see why we need to store that file into the database to have it...09:50
(daf/#launchpad) what's this "reporting and analysis" bit?09:50
carlosyou upload the .pot or .po file09:50
carloswe import it into rosetta09:50
sabdfl"show me a list of projects which have uploaded POTemplates"09:51
carlosand we can forget about the raw imported file09:51
carlossabdfl: what happens when we automatically update the POTemplate from arch?09:51
sabdflcarlos: who imports it into Rosetta09:51
carlosshould we kill the raw field?09:52
carlossabdfl: when arch is in place, a script09:52
sabdflcarlos: we could store the last version we pulled from arch into that field09:52
(daf/#launchpad) sabdfl: how is that different to "show me a list of projects which have POTemplates"?09:52
sabdflwhen we update it from arch, we store it there09:52
sabdfldaf: it isn't, it just takes you straight there09:52
sabdflthe guy uploaded a potemplate, you get a POTemplate09:53
carlosI see it as a waste of hd, but if you want it, it does not hurts09:53
sabdflnot an intermediate step which requires more code...09:53
sabdflshortest path to being live in las vegas09:53
sabdflyou are 90% of the way there09:53
sabdflcarlos: can you show me the table dfinition you wanted?09:53
SteveABradB: first, check to see if the new zope3 snapshot you're using works with our code.  Next, we need to ask lifeless and jblack what we should do to get a new zope3 into rocketfuel.09:54
carlosCREATE TABLE RawPOFile (09:54
carlos  id         serial  NOT NULL PRIMARY KEY,09:54
carlos  file       text    NOT NULL,09:54
carlos  potemplate integer NOT NULL REFERENCES POTemplate(id),09:54
carlos  language   integer REFERENCES Language(id),09:54
carlos  variant    text,09:54
carlos  person     integer REFERENCES Person(id),09:54
carlos  datesent   timestamp without time zone DEFAULT timezone('UTC'::text, ('now'::text)::timestamp(6) with time zone) NOT NULL,09:54
carlos  CHECK (((language IS NULL) AND (variant IS NULL)) OR (language IS NOT NULL))09:54
carlos  );09:54
BradBSteveA: ok09:54
carlosperson should be uploader09:55
sabdflcarlos: do they have to upload a potemplate first?09:56
carlosthey need to create it like the projects and products09:56
carlosfrom a web interface09:56
carlosthey should upload a potemplate, yes09:56
carlosbut it's not a hard requirement09:56
sabdflso, where is the uploaded potemplate stored?09:59
carlossabdfl: same table09:59
carloslanguage = NULL, variant = NULL09:59
sabdflcarlos: please restructure to add the needed fields to POTemplate and POFile10:00
sabdflthink of it this way10:00
sabdflthe backend should not care whether the file came from revision control, or was uploaded10:00
sabdflwe implement the uploading now, before spain, because it makes the system bsaically usable10:00
sabdflcan we parse a POTemplate or POFile in real time?10:01
BradBSteveA: Interesting. The all pass with a new Z3 (rev 28491). I get an error on trying to drop a db that's already being accessed by other users, which causes two errors, but that doesn't seem related to the Z3 upgrade.10:01
carlossabdfl: it takes about 7-8 minutes to import a pofile10:01
carlosa potemplate is faster10:01
carloswe need to profile the import code10:01
carlosto make it faster10:01
(daf/#launchpad) sabdfl: I'm getting conflicting messages about how the PO(T) upload should work10:02
(daf/#launchpad) when people upload PO files, are they imported directly, or do they get checked by someone first?10:02
=== carlos needs to leave to have dinner
SteveAdoesn't uploading po files take a while?10:09
(daf/#launchpad) well, given that uploading large files takes a while, uploading large PO files will take a while10:11
SteveAoh, I don't mean uploading.  I mean inserting into the database.10:11
(daf/#launchpad) yes, it does take a whlie10:11
SteveAhow long?10:14
(daf/#launchpad) it depends -- I'd guess it's O(n) in the number of messages, but we've observed several minutes for moderately sized files10:15
SteveAseveral like, more than three?10:18
sabdflok, so we won't have the user wait while we import10:19
sabdflwe'll put a status flag on there10:19
sabdflthen we'll try and import it in the background10:19
sabdflif it works, we update the status to "imported" and notify the user10:19
sabdflif it doesn't we send a message to the user and our mailing list, so we can help sort it out10:20
(daf/#launchpad) hmm, aren't there potential problems with launching asynchronous processes when handling a request?10:20
SteveAyes there are10:21
SteveAso we don't do that10:21
SteveAwe have a separate place where the queue gets processed, one file at a time10:21
SteveAso, as a user of rosetta, I can ask for various pot files to be uploaded and imported10:21
SteveAthe system remembers it was me who asked for these to be done10:21
SteveAI'm told immediately that the file is queued, and will be processed into the database in the near future10:22
(daf/#launchpad) I'm still confused about:10:22
(daf/#launchpad) 21:02:09 <daf> sabdfl: I'm getting conflicting messages about how the PO(T) upload should work10:22
(daf/#launchpad) 21:02:31 <daf> when people upload PO files, are they imported directly, or do they get checked by someone first?10:22
SteveAa separate cron job can call a URL that says: process the next potfile in the queue now, and send appropriate status messages10:22
=== carlos is back
sabdflBradB: have you had a chance to play with the big db dump?10:27
sabdflit looks really cool to see 7,000 bugs in malone10:27
BradBsabdfl: not yet. i'm building a little source package selection widget using Z3 "sources" currently. is it more important for me to look at the dump?10:29
sabdflBradB: i'd like to walk through it with you, because it highlights a few issues that are going to be in your lap10:30
BradBsabdfl: where do i get it from?10:31
sabdflscp chinstrap:~mark/launchpad.2004.11.22.sql.bz2 .10:31
sabdfltry that10:31
BradBsabdfl: 10:33
BradBbradb@oxygen:~ $ scp chinstrap.warthogs.hbd.com:~mark/launchpad.2004.11.22.sql.bz2 .10:33
BradBscp: /home/mark/launchpad.2004.11.22.sql.bz2: No such file or directory10:33
sabdfltry 2004112210:34
BradBi see it though. i guess it's launchpad_dev.20041122.sql.bz210:34
carlossabdfl: about the po storage we were talking... What happens if the po file is broken and we cannot import it? we have lost the old raw file, should we try to fix it? 10:34
BradBcomin down the wire10:34
sabdflcarlos: we imported the old file, it's represented in the iscurrent MsgSets10:36
carlossabdfl: right, but what should be done with that file? remove it from the row? or just mark the import as done and forget the file until next import that will overwrite it?10:38
SteveAI suggest to leave it there10:38
SteveAyou may want to analyze why it failed10:38
SteveAallow the next import to overwrite it too10:38
SteveAI suppose we should save the failed po files somewhere, or have them mailed somewhere10:39
BradBsabdfl: this should pipe fine through psql then eh?10:39
carloshmm, perhaps we could execute msgfmt -c before importing it and reject the upload if it fails?10:39
sabdflcarlos: the status should say "failed"10:39
sabdflstatus can be "new", "imported", "failed"10:39
carlosimporting it == save it in raw mode10:39
(daf/#launchpad) carlos: we shuoldn't need to call msgfmt -- trying to parse it with our own parser should be good enough10:40
carlosdaf: our parser is not perfect and it will take us some time to get it perfect10:40
carlosthe SteveA's suggestion will help us to improve it10:40
carlosif msgfmt rejects a file it's not our fault if our parser fails10:41
=== BradB waits while dump loads
(daf/#launchpad) if there are bugs in our parser, we should fix them10:42
sabdfllifeless: please can you import apt 0.6 urgently? it's blocking real distro work10:42
(daf/#launchpad) if our parser's going to choke on the file, running it thourhg msgfmt first is not going to help anything10:42
carlosdaf: I know, if we use msgfmt we just forget about broken files, any other error will be detected and notified so we could fix it10:42
carlosdaf: I was talking about broken .po files10:43
(daf/#launchpad) well, our parser should be able to detect broken PO files10:43
carlosok, then parse it with our parser, if it's correct, we save it into the database, it it fails, we reject the upload. Is it ok?10:44
carlosreject the upload and send us an email to check why it failed10:44
sabdflif we can do a very fast sanity check, we should do that in real time10:45
sabdflreject obviously broken files10:45
sabdflthen, we can try the proper import10:45
SteveAyeah, don't want people using it to upload warez or pr0n10:46
carlossabdfl: the parser is not too slow, it's the import the one that is slow10:46
sabdflparser should bereally fast10:46
(daf/#launchpad) yeah, the parser is fast10:47
(daf/#launchpad) it's the DB stuff which is slow10:47
carloshmm, I just remembered10:47
sabdflSteveA: i'm creating the buttress app, should i go with the old style location of lib/canonical/buttress/*?10:47
carlossabdfl: is there any problem with the code that was reused from python when developing the parser?10:47
carlosyou asked about the license but didn't said anything more about it10:48
SteveAsabdfl: yeah, that's consistent with the other apps10:48
sabdflcarlos: i don't know10:48
sabdflas long as the licence allows us to use it internally, that's fine10:48
BradBsabdfl: heh, the bug paging isn't yet only retrieving just the objects to render the first page :P10:48
carlosSteveA: I don't know the pyton license details, is it a problem for us?10:48
sabdflno, it shouldn't be10:48
carlosSteveA: we have some code from python in our parser10:49
SteveAwe'd agreed to talk about moving the apps into canonical.launchpad during the conference -- sketch it out and see what makes sense10:49
BradBsabdfl: when do you want to walk through this?10:49
sabdflBradB: yeah, we are going to have to ask kiko's advice on indexes ;-)10:49
sabdflBradB: tomorrow's good, i have code to write for lifeless10:49
sabdflping me when you're up10:49
BradBsabdfl: currently it's my fault. i'm just not querying the bugs properly in the batching machinery.10:49
SteveAcarlos: code from python is under the python license.  It needs clear attribution in the code, and a note of approximately what has been changed.  that's all.10:49
sabdfljust wanted you to see it running10:49
BradBsabdfl: ok, i'll ping you tomorrow then10:49
sabdfli think it's going to be fantastic!10:49
sabdflwe have lots of issues to polish, but the underlying idea is now proven in my mind10:50
SteveAcarlos: obviously keep the copyright intact10:50
sabdflwithin a month or two i think we should have lots of keen upstream users10:50
carlos# Contains code from msgfmt.py (available from python source code),10:50
carlos#     written by Martin v. Loewis <loewis@informatik.hu-berlin.de>10:50
carlos#     changed by Christian 'Tiran' Heimes <ch@comlounge.net>10:50
BradBi sure hope so10:50
carlosSteveA: is that enough?10:50
SteveAcarlos: is it possible to keep the python code in its original module source, on its own?10:51
SteveAthat is the best way.10:51
carlosdon't know10:51
carloslalo did it, I will look at it this week10:51
(daf/#launchpad) as I understand it, lalo copied a few lines10:52
(daf/#launchpad) I don't know which lines10:52
(daf/#launchpad) if they are trivial, it's probably not enough to be covered by copyright10:52
(daf/#launchpad) if not...10:52
SteveAcarlos, daf: find out exactly which parts of the file are from the python source.  Note the fact clearly at the top of the file, who wrote them, and that they are under the PSF licence.10:55
SteveAit isn't urgent, seeing as it is mentioned in the file already10:55
(daf/#launchpad) I think the parser code could probably do with a review at any rate10:55
SteveAand the PSF license allows us to use the code.10:55
(daf/#launchpad) again, it's not urgent10:55
(daf/#launchpad) but given our experience with poimport.py, it would be worth Carlos and I taking a look at it10:56
=== carlos opens a bug report
(daf/#launchpad) SteveA: do you have an idea about dealing with absolute links in Rosetta?11:00
SteveAwhich absolute links?11:01
(daf/#launchpad) hmm, some of them are on the main template11:02
dilysNew Malone bug #63: "Review and improve our po parser", submitted by Carlos Perell Marn11:02
(daf/#launchpad) I suppose those would be easy to work around11:02
(daf/#launchpad) carlos: gracias11:02
(daf/#launchpad) carlos: do you know of any absolute links aside from those in the main template?11:02
SteveAwe talked about the main template the other day: for now, do a hack where you look at the URL to see if you are on the rosetta stand-alone or with the rest of launchpad11:02
SteveAkeep it quick and cheesy11:02
SteveAsoon there will be a better way to do this.11:03
(daf/#launchpad) I'm not sure I understand your suggestion11:03
carlosI did this patch for the main template:11:03
(daf/#launchpad) there are links in the overridden page template which would be easy to change11:03
carlos--- orig/lib/canonical/launchpad/templates/rosetta-main-template.pt11:03
carlos+++ mod/lib/canonical/launchpad/templates/rosetta-main-template.pt11:03
carlos@@ -67,15 +67,15 @@11:03
carlos         &mdash;11:03
carlos-        <a href="/rosetta/translator">Translator Dashboard</a>11:03
carlos+        <a href="translator">Translator Dashboard</a>11:03
carlos         &mdash;11:03
carlos-        <a href="/rosetta/maintainer">Project Maintainer Dashboard</a>11:03
carlos+        <a href="maintainer">Project Maintainer Dashboard</a>11:03
carlos         &mdash;11:03
carlos-        <a href="/rosetta/prefs">My Preferences</a>11:03
carlos+        <a href="prefs">My Preferences</a>11:04
carlos       </div>11:04
carlosthat should fix those links11:04
carlosbut there are other inside rosetta that shows ++foo++ links11:04
(daf/#launchpad) carlos: looks good11:04
carloslet me look for them..11:04
SteveAI don't think so11:04
SteveAthose links will break when you're not at the root of rosetta11:04
(daf/#launchpad) oh, yeah11:05
(daf/#launchpad) it needs to be /translator etc.11:05
carlosI forgot that, that's why I did not committed it this morning...11:05
carlosdaf: no11:05
SteveAit is midnight here.  I'm off for the night.  see you tomorrow.11:05
carlosdaf: that will be also wrong11:05
carlosSteveA: night11:06
(daf/#launchpad) SteveA: good night11:06
carlosdaf: the correct link is /rosetta/translator from launchpad11:06
carlosdaf: but from rosetta.shut... is /translator11:06
(daf/#launchpad) that's what I was trying to say11:06
(daf/#launchpad) I think11:06
carlosif you put /translator, it will be broken11:07
carlosfrom launchpad11:07
carlosdon't see your point11:07
(daf/#launchpad) ok11:07
(daf/#launchpad) oh, I see11:07
(daf/#launchpad) yes, Rosetta will be broken from launchpad.ubuntulinux.org11:08
carlosdaf: the breadcrumbs is the other broken thing I saw:11:08
(daf/#launchpad) but getting it working from rosetta.sf.o is more important11:08
carlosyou said it's fixed, right?11:08
(daf/#launchpad) I removed the breadcrumbs completely11:08
carlosperhaps we should update the dogfood code11:08
(daf/#launchpad) they don't work with vhosts anyhow11:08
carlosdaf: I'm going to end my work for today, will do the db change tomorrow, is that ok for you or do you need it for your current work?11:13
(daf/#launchpad) go ahead with it11:15
(daf/#launchpad) sorry11:15
(daf/#launchpad) I mean, go ahead and stop for today11:15
(daf/#launchpad) I have other things I can work on11:15
(daf/#launchpad) hasta maana11:16
carlosdaf: I'm not going to sleep yet ;-)11:16
(daf/#launchpad) ah :)11:16
sabdflwhat is our favicon?11:34
sabdfllooks like... um... not sure11:35
sabdflis there a way in sql to update a row with values from other tables?11:36
kikoan update with a select clause?11:38
Kinnisona single value yes11:38
Kinnisonmore than one? goodness knows11:38
carlossabdfl: a rubber duck11:38
sabdflcarlos: if i can't find mine will you bath with me instead?11:39
sabdfli *think* update ... from  might do the trick11:39
carlossabdfl: X-)11:40
sabdflcarlos: oh, tha FAVICON11:40
carlossabdfl: what do you thought?11:41
sabdflupdate table set column = table.column FROM table, table WHERE. ...11:41
sabdflcarlos: i thought you were saying that a rubber duck could update my tables11:41
carlossabdfl: this conversation goes directly to the wiki, you know it, right?11:42
Kinnisonsabdfl: coo; is that standard SQL or a pgsql extension?11:42
(elmo/#launchpad) Kinnison: latter11:42
Kinnisonelmo: aah11:43
sabdflKinnison: i think it's standard11:43
(elmo/#launchpad) sql92's update is wank - almost everyone extends it11:43
sabdflelmo knows :-)11:43
sabdfldebonzi: thanks for the renaming!11:48
debonzisabdfl, no problem :)12:00

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!