[00:03] <LPCIBot> Project devel build #1,014: STILL FAILING in 3 hr 58 min: https://lpci.wedontsleep.org/job/devel/1014/
[01:35] <mwhudson> jelmer: maybe we don't need new code import mails now?
[01:37] <wgrant> Heh.
[01:39] <mwhudson> not that i really mind, it's not like they take long to dispatch
[02:26] <cody-somerville> mwhudson, they're probably going to give me Carpal Tunnel Syndrome though from all the clicking needed to delete them :P
[02:36] <nigelb> Good morning!
[02:36] <wgrant> Evening nigelb.
[02:36] <nigelb> cody-somerville: heh, automate with selenium!
[02:36] <nigelb> wgrant: I'm taking a shot at TDD today. Writing tests first. I hope that doesn't mean more headdesking :)
[02:37] <wgrant> nigelb: It gets better :)
[02:37] <wgrant> nigelb: Particularly when they aren't doctests.
[02:38] <nigelb> Yeah, I'm wondering why StevenK's deletion spree doesn't delete doctests yet :D
[02:39] <wgrant> He spent a week deleting lots of doctests a while ago.
[02:40] <nigelb> So there is hope.
[02:40] <nigelb> btw, lifeless is proud daddy yet? :)
[02:42] <wgrant> How was about last night, so I suspect not, but have not heard either way.
[02:43] <nigelb> Ah, ok.
[02:53] <nigelb> And I've picked up bug 684548
[02:53] <_mup_> Bug #684548: Display Edit Patch Flag More Prominently <easy> <lp-bugs> <ui> <Launchpad itself:Triaged by nigelbabu> < https://launchpad.net/bugs/684548 >
[02:53] <nigelb> Morning jtv! I shall be troubling you in a bit.
[02:53]  * jtv rushes to change the topic :)
[02:54] <nigelb> heh
[02:58] <nigelb> Should. Stop. Looking. At. Ivanka's. Pictures.
[04:01] <LPCIBot> Project devel build #1,015: STILL FAILING in 3 hr 58 min: https://lpci.wedontsleep.org/job/devel/1015/
[04:18] <StevenK> Text conflict in test_notification between stable and db-devel. Orsum.
[04:40] <adeuring> good morning
[04:44] <adeuring> wgrant: could you help me with qa for r13826? It's too early in the morning for me to even understand the related bug... problem is: I am a bit desperate to deploy a revision >= 13822
[04:57] <wgrant> adeuring: It's been broken for nearly 18 months; is it really urgent?
[04:57] <adeuring> wgrant: yes, unfortunately
[04:57] <wgrant> Intriguing.
[04:57] <wgrant> Looking.
[04:58] <wgrant> Ah, need to resolve the conflict first, since DF runs db-devel...
[05:07] <wgrant> jtv: Are you still using dogfood?
[05:08] <jtv> wgrant: no, I use a piece of cloth now.  It doesn't absorb as well but it muffles more effectively.
[05:09] <wgrant> Hah.
[05:10] <jtv> So no.
[05:10] <jtv> Meanwhile, I see we have a wonderful merge conflict.
[05:10] <wgrant> I'm pushing a branch for that.
[05:11] <jtv> Cool
[05:11] <wgrant> But db-devel hasn't been merged in a while, so my 256kbps upstream is being painful...
[05:19] <wgrant> adeuring: Hmm, this revision may be bad. We'll see shortly.
[05:19] <adeuring> ok...
[05:22] <wgrant> Well, maybe not so shortly, since mawson is mawson.
[05:24] <wgrant> jtv: http://librarian.dogfood.launchpad.net/71107310/bRhzSbgpU9MP0WU1BbgvqBNgitQ.txt is worrying.
[05:24] <wgrant> jtv: The DSDJ runner can't check packageset membership...
[05:25] <wgrant> I wouldn't think that would be a new thing.
[05:25] <jtv> That sounds familiar somehow.
[05:26] <jtv> I would suspect that a cowboyed privilege dropped out of the db without the permanent privilege making it in.
[05:26] <jtv> Either because security.py wasn't run, or it failed, or it did not contain that required permission.
[05:27] <wgrant> There is no permanent privilege.
[05:27] <wgrant> I just reran security.py and checked security.conf :(
[05:27] <wgrant> granted select on flatpackagesetinclusion and packagesetsources, and it works.
[05:29] <wgrant> And packagesetgroup, it seems.
[05:41] <wgrant> Does anybody know how to use Thunderbird's account creation wizard?
[05:41] <wgrant> They've removed manual setup, and I can't work out how to use an account on a provider that they don't know about.
[05:45] <nigelb> Spend 5 minutes why launchpad.dev wasn't working. Sigh.
[05:45] <nigelb> *debugging
[05:46] <wgrant> Was it running?
[05:46] <nigelb> Yeah, https
[05:47] <nigelb> I can do a create_initilized_view for all the portlets too?
[05:47] <wgrant> In general that should work.
[05:47] <nigelb> tdd is weird, at last at first.
[05:47] <wgrant> For some it won't.
[05:47] <nigelb> *least
[05:53] <wgrant> adeuring: I think that rev is good.
[05:53] <wgrant> Which means we can deploy.
[05:53] <adeuring> wgrant: great, thanks for your checks!
[05:53] <wgrant> Sorry it took so long. High startup time and lots of checks to do.
[06:06] <nigelb> so, I create a bug.
[06:06] <nigelb> I add an attachment
[06:06] <nigelb> now, how do I get the comment of that attachment?
[06:08] <nigelb> (I feel more lost writing tests first)
[06:13] <wgrant> nigelb: BugAttachment.message
[06:13] <nigelb> ah
[06:13] <nigelb> need to look at models deeper.
[06:14] <wgrant> nigelb: I often find it's clearer to check the DB structure.
[06:14] <wgrant> \d bugattachment
[06:15] <nigelb> I'm not well versed with postgres enough.'
[06:15] <nigelb> yet.
[06:15] <wgrant> psql launchpad_dev
[06:15] <wgrant> \d bugattachment
[06:15] <wgrant> Done :)
[06:15] <nigelb> wow
[06:16] <nigelb> I did not know about psql.
[06:16] <nigelb> This, is neat.
[06:28] <jtv> nigelb: I told you that exact same trick!
[06:31] <nigelb> jtv-eat: well, I didn't know how to use it correctly :)
[06:35] <StevenK> psql is love
[06:37] <nigelb> hehe, so with tests first, I can head desk first
[06:37] <nigelb> and then when I fix it, there's more joy
[06:37] <nigelb> Gah, I can't do this apparently.
[06:38] <nigelb> html = create_initialized_view( self.bugattachment.message, name='+index', )()
[06:40] <wgrant> nigelb: Why not?
[06:40] <wgrant> nigelb: It's odd syntax, but it should work.
[06:40] <wgrant> Oh, hmm.
[06:40] <wgrant> There's no +index for Message itself.
[06:41] <nigelb> ah.
[06:41] <wgrant> You'll need to get the BugMessage.
[06:41] <wgrant> (Message just represents an email in LP. May be on a bug, merge proposal, answer, mailing list...)
[06:42] <nigelb> oh.
[06:46] <nigelb> ForbiddenAttribute: ('BugMessage', <Message at 0xf402b0c id=51>)
[06:48] <wgrant> getUtility(IBugMessageSet).getByBugAndMessage(some_bug, some_message)
[07:09] <nigelb> hehe
[07:09] <nigelb> awesome traceback
[07:09] <wgrant> Oh?
[07:09] <nigelb> http://dpaste.com/605694/
[07:17] <nigelb> wgrant: Thoughts? :)
[07:17] <wgrant> nigelb: Hm, that's pretty nice.
[07:18] <nigelb> Haha
[07:18] <wgrant> nigelb: It looks like you're calling it with a bugattachment, not bugattachment.message.
[07:18] <nigelb> aaah.
[07:22] <nigelb> Sigh.
[07:22] <nigelb> http://dpaste.com/605703/
[07:24] <nigelb> Why do I end up wasting more time than finding a fix in tests :|
[07:25] <wgrant> Ah, it looks like you actually want BugComment:+index, not BugMessage:+index. And BugComment creation is not for the faint of heart :/
[07:25] <wgrant> You're possibly better just rendering BugTask:+index.
[07:26] <nigelb> Well, the problem is the edit shows up in a portlet as wwell.
[07:26] <nigelb> I don't watch to get that.
[07:27] <nigelb> OR, I'll have to count the number of appearances.
[07:27] <nigelb> Or add a class to the find and use soupmacheers
[07:27] <wgrant> Or you can use BeautifulSoup/soupmatcher to look only in the comment list.
[07:27] <wgrant> There should be an existing class/ID you can use.
[07:27] <nigelb> Ah.
[07:29] <nigelb> Ah, we deployed.
[07:29]  * nigelb checks his fix.
[07:29] <wgrant> We did.
[07:29] <wgrant> It looks good.
[07:29] <nigelb> \o/
[07:57] <LPCIBot> Project devel build #1,016: STILL FAILING in 3 hr 55 min: https://lpci.wedontsleep.org/job/devel/1016/
[08:06] <nigelb> I have to agree with bigjools, soupmatches is quite rad.
[08:11] <mrevell> Hello
[08:13] <nigelb> Hello mrevell! Good morning :)
[08:14] <mrevell> Hey nigelb!
[08:15] <rvba> nigelb: I'm sure you will come to love soupmatchers ;)
[08:15] <nigelb> rvba: Heh, already loving it!
[08:15] <rvba> nigelb: ;)
[08:16] <nigelb> heh, I summoned bigjools? :P
[08:16] <bigjools> I was rubbed
[08:17] <nigelb> xkcd ruined that reference for me.
[08:19] <nigelb> Anyway, I was mentioning how I like soupmatchers :)
[09:28] <rvba> jtv: Could you please have a look at this (tiny) MP when you get a chance: https://code.launchpad.net/~rvb/launchpad/masscreate-bug-835040/+merge/73495 ?
[09:54] <nigelb> wgrant: GAH.
[09:54] <nigelb> I'm doing something wrong, I'm getting hideous tracebacks.
[09:55] <jtv> wgrant: while you're being distracted, can I interest you in reviewing my DB privilege fix?  https://code.launchpad.net/~jtv/launchpad/bug-837893/+merge/73502
[09:55] <nigelb> My nightmares with tests continue. Sigh.
[09:56] <jtv> Or I could ask danilos, who is OCR'ing today.
[09:56] <danilos> jtv, oh, he is? :)
[09:56] <jtv> Apparently.
[09:56] <jtv> At least on Gregorian Wednesday.
[09:56] <jtv> :-)
[09:57] <nigelb> jtv: You're marked under Europe? HA
[09:58] <jtv> I'm sort of inbetween.
[09:58] <danilos> jtv, r=me
[09:58] <jtv> thanks danilos!
[09:58] <danilos> jtv, which one of us?
[09:58] <jtv> wgrant: it's done—you go help nigel or something.  :)
[09:58] <jtv> for danilo in danilos: danilo.thank()
[09:58] <nigelb> heh
[09:59] <nigelb> if I create a bug with factory, I can call its +index right?
[09:59]  * nigelb checks zcml
[10:00] <nigelb> oh, I need to call the +index of the bugtask?
[10:00] <wgrant> nigelb: Bug has no +index, right.
[10:00] <wgrant> It redirects to default_bugtask's +index.
[10:01] <nigelb> so, create_initialized_view(self.bug.default_bugtask, name='+index', )()
[10:01] <nigelb> I got a scary traceback for that one.
[10:02] <nigelb> http://dpaste.com/605821/
[10:02] <nigelb> I wonder if this has something do with layer = LaunchpadFunctionalLayer
[10:03] <nigelb> I think I've mostly used DatabaseFunctionalLayer before.
[10:04] <jtv> danilos: you'll notice I left one review on the queue.  It looks like nobody's worked on it but it's got other reviewers' names on it.
[10:04] <rvba> jtv: thanks for the review mon cher.
[10:04] <jtv> rvba: ton /quoi/?
[10:04] <rvba> Très cher jtv ;)
[10:04] <bigjools> le horreur
[10:04] <jtv> I thought I was doing this work at quite a reasonable rate.
[10:05] <bigjools> jtv is actually cheap
[10:05] <jtv> Oh now that's rich.
[10:05] <jtv> And is it le horreur or l'horreur?
[10:05] <rvba> hehe
[10:05] <rvba> "l'horreur" indeed.
[10:05] <rvba> FTR this "cher" was "dear".
[10:06] <jtv> Funnily enough, "dear" can have both meanings in English.
[10:06] <bigjools> I was enunciating all the syllables
[10:06] <jtv> (although "expensive" is somewhat archaic)
[10:06] <jtv> bigjools: I see.  Maybe you should enunciate them twice in succession: le horreur, le horreur
[10:07] <jtv> Wasn't until that bit in the book that I realized that the film was based on it.
[10:09] <jtv> “le horreur, sans blague”?
[10:10] <rvba> nigelb: I /think/ the problem you have is due to the fact that you don't pass any 'principal' to create_initialized_view.
[10:11] <nigelb> rvba: principal being a person?
[10:11] <rvba> nigelb: yes.
[10:11] <wgrant> rvba, nigelb: It defaults to anonymous.
[10:11] <wgrant> This is possibly another view that doesn't like being instantiated directly :/
[10:11] <wgrant> It's a fairly horrific view.
[10:12] <nigelb> I tend to pick the fun ones, yeah.
[10:12] <rvba> I'm pretty sure I had this exact same problem.
[10:12] <nigelb> Someday I'll learn how to do this right :|
[10:12] <nigelb> Ha, solution?
[10:13] <rvba> nigelb: please try principal=factory.makePerson()
[10:15] <nigelb> mmm
[10:15] <nigelb> NoCanonicalUrl: No url for None because None broke the chain.
[10:19] <rvba> nigelb: Looks like something is trying to redirect to None.
[10:20] <nigelb> rvba: Oh.
[10:20] <nigelb> That's wweird :|
[10:21] <nigelb> I should have started with fixing the bug isntead of tests
[10:21] <danilos> jtv, on line 84 of the diff on https://code.launchpad.net/~jtv/launchpad/bug-834388/+merge/73483, "removables" is not a ResultSet, right?
[10:21] <nigelb> I've spend 8 hours and I've nothing to show for it, except a broken test :)
[10:22] <jtv> danilos: no, it's a set that's first painstakingly constructed by hand.  :/
[10:22] <jtv> Sorry, list!
[10:22] <jtv> Not set.
[10:23] <danilos> jtv, ok, fair enough (btw, I am surprised you didn't know about resultset.set() :P)
[10:23] <jtv> Well, now I do!
[10:23] <rvba> nigelb: It's a good habit to start with the tests. And its absolutely normal to have trouble to write tests at first.
[10:23] <jtv> I have to leave very very soon btw
[10:24] <danilos> jtv, sure, I am almost done with this second review
[10:24] <jtv> Great, thanks
[10:24] <danilos> jtv, just one more non-critical question, why the changes to logger statements?
[10:24] <jtv> They annoyed me.
[10:24] <jtv> Why have special provision for debug
[10:24] <jtv> but none for the other log levels?
[10:25] <jtv> Someone's going to do a logger.info or a self.warn and find it doesn't exist.
[10:25] <jtv> Or do you mean the string interpolation?
[10:25] <jtv> Apparently the "proper" way to do it is logger.info("format %s string", variable)
[10:25] <jtv> Not logger.info("format %s string" % variable)
[10:26] <nigelb> Hrm, I wonder what I do next.
[10:26] <nigelb> I can't get the view to get a test. My test is supposed to just check the existence of a URL.
[10:26] <G> btw guys, what is the best way to find out what handles/generates a particular page?
[10:27] <nigelb> configure.zcml
[10:27] <nigelb> it will be inside browser folder
[10:29] <danilos> jtv, I meant both, the fact that logger.info considers the first string a format string doesn't make it proper in my book, but I don't care either way :)
[10:29] <G> nigelb: ah ha, thanks! :)
[10:29] <nigelb> G: :)
[10:29] <danilos> jtv, it'd make sense if it was something like structured() or sqlvalues() where stuff needs to be interpolated some how
[10:29] <danilos> s/ //
[10:29] <jtv> danilos: I never bothered to ask really, it just allows for slightly better formatting.  :)
[10:30] <danilos> jtv, heh, sure, formatting is a good argument
[10:30] <danilos> jtv, anyway, r=me already, but I assume you know what will this do for performance :)
[10:30] <jtv> thanks!
[10:30] <jtv> It'll improve the normal case, make the weird case worse.
[10:31] <jtv> And it shows future engineers how to fix the weird case.
[10:34] <nigelb> wgrant / rvba: Anything more I could try?
[10:34] <rvba> nigelb: please paste your diff.
[10:36] <nigelb> http://dpaste.com/605832/
[10:39] <G> hmmm took a look at bug 61428 and I think I've identified a 3 line fix
[10:39] <_mup_> Bug #61428: Want a "subscribed to teams" portlet... <feature> <lp-bugs> <trivial> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/61428 >
[10:40] <stub> The 'proper' way of interpolation with the logger API saves interpolation time, but has a habit of hiding interpolation bugs as we end up with untested code paths.
[10:42] <G> ahhh actually, not that simple
[10:49] <G> danilos: if you've got a moment, question about the above mentioned bug, the portlet while nearly identical for a subscribed bugs page, is nearly the same as the current assigned bugs (person-portlet-team-assignedbugs.pt) is the attitude to create a seperate portlet, or try and introduce logic to the current portlet
[10:50] <stub> gmb: Bug comment lazy loading - what will search engines see if we turned this on for everybody?
[10:51] <gmb> stub: Uhm... Well, at the moment it's just JS on top of what's currently there. But fair point; if we did it automatically then it would be not good for our Googlejuice.
[10:51] <danilos> G: I am looking at it
[10:52] <nigelb> gmb: Or using text-only browsers :)
[10:52] <gmb> nigelb: also true.
[10:52] <stub> gmb: Yer. We might need to be more intelligent. Default batched comments with a sane batchsize, and js magic to improve on that if you have js.
[10:52] <gmb> Thankfully, we're talking about something I haven't done yet :).
[10:52] <nigelb> heh
[10:52] <gmb> stub: Agreed. It wouldn't be too hard to do that, actually.
[10:53] <G> danilos: a second portlet, would basically be :%s/assigned/subscribed/g w/ a little bit of extra CSS for the new div class id's
[10:53] <stub> For insane people who want to scroll through the entirety of Bug #1
[10:53] <_mup_> Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Confirmed for compscibuntu-bugs> <dylan.NET.Reflection:Invalid> <dylan.NET:Invalid> <EasyPeasy Overview:Invalid by ramvi> <GenOS:In Progress by gen-os> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <LibreOffice:In Progress by bjoern-michaelsen> <Linux Mint:In Progress> <The Linux OS Project:In Pr
[10:53] <G> (at least my intpretation)
[10:53] <nigelb> argh!
[10:54] <nigelb> But there are probably Ubuntu bugs worse than that.
[10:54] <nigelb> rvba: Were able to spare a minute to look into that diff?
[10:54] <danilos> G: right, I think you are better off reusing it, and just introducing a few variables like CSS class and target view to decide what to do in the template
[10:54] <danilos> G: though, that entire portlet looks like a very bad UI, but if you find it useful, it's better than no UI :)
[10:55] <rvba> nigelb: Yes, nothing seems bad with your diff but this "NoCanonicalUrl: No url for None because None broke the chain." is a tricky error.
[10:55] <rvba> nigelb: hang on.
[10:55] <nigelb> okay, so I'm not going completely crazy :)
[10:56] <G> danilos: so just cp it, and change where it's needed
[10:57] <danilos> G: nope, with "reusing" I meant use the same template (perhaps rename it), but modify it so you can pass in the bits like the div ID and "+assignedbugs" part of URL from the view
[10:57] <G> ahh yep, I get you
[10:57] <G> so basically the second option (introduce logic/pass variables)
[10:58] <danilos> G: btw, would it not be better if there was a page listing all the actual bugs any of your teams is assigned to/subscribed to?
[10:58] <danilos> G: yes
[10:59] <G> danilos: you mean something like +subscribedbugs as is, and then something like +subscribedbugs/+all ?
[10:59] <danilos> G: yeah, something like that
[10:59] <G> actually, +indirectsubscribedbugs
[11:00] <G> danilos: couldn't that be quite 'expensive' if someone did that against say Mark Shuttleworth who I'm guessing is a member of a lot of teams?
[11:01] <danilos> G: it could be nontrivial, sure, but if that's the question you really want answered with this page, it should be doable, imho
[11:01] <G> (expensive as in time to generate & amount of data that could be retrieved from the DB for some people)
[11:02] <danilos> G: of course, I am not suggesting you should block on this, but just wondering if that's what you really want?
[11:02] <danilos> G: also, as far as data being transferred from the DB, we do batch most of the big requests
[11:03] <rvba> nigelb: Why are you rendering a view on bugTask in test_bugattachment_edit_view?
[11:03] <nigelb> rvba: I should move it to another file, but I wanted to write it some place where attachment bits existed.
[11:03] <nigelb> Is there a better place already existing?
[11:04] <G> danilos: actually seems +bugs does that already
[11:04] <rvba> nigelb: I don't know that code (bugs) very well but I /think/ the bug is not properly setup for you to render bugTask:+index
[11:04] <nigelb> hmm.
[11:05] <nigelb> I should perhaps tell you what I'm testing so you can suggest a better, working alternative.
[11:05] <rvba> nigelb: My advice would be to find in the code a properly setup bug (one that ressembles what you want to test).
[11:06] <nigelb> When you attach a patch on LP, it shows up in the comments, but the edit link is a portlet on the left. I'm adding that edit link to the link in the patch as well.
[11:06] <nigelb> Ah, perhaps I should try that.
[11:06] <danilos> G: yeah, though I'd never claim to know what exactly "related" means there
[11:06] <rvba> nigelb: I see.
[11:06] <danilos> G: at least not before reading the code carefully :)
[11:07] <G> danilos: I think 'related' is something all could easily be lost in translation
[11:07] <danilos> G: I also dislike the concept of me being related to a bug ;)
[11:07] <wgrant> G, danilos: "Related" is a combination of all the filters.
[11:07] <wgrant> s/combination/union/
[11:07] <G> danilos: but the way I see it is: all bugs (x) has had something to do with
[11:07] <wgrant> Stuff you're subscribed to, or assigned to, or reported, or commented on.
[11:08] <nigelb> hrm, I could do a browser test I guess.
[11:08] <danilos> wgrant, that simple? no team subscriptions considered?
[11:08] <wgrant> danilos: Correct.
[11:08] <danilos> wgrant, right, thanks
[11:08] <G> ahhh so it doesn't consider via teams
[11:08] <rvba> nigelb: that's already what you tried to do.
[11:08] <StevenK> G: Good to see you tackling more issues. :-)
[11:09] <G> StevenK: seems a bit of a waste to sign a document to contribute and stop after one issue :)
[11:09] <nigelb> rvba: No, the from lp.testing.BrowserTestCase
[11:09] <nigelb> StevenK: Isn't it fun that there are two new people contributing and both of us have the same first name ;)
[11:09] <danilos> G: so, my gut feel is that we should be able to generate a single pages with all related bugs for any of the filters which includes your team subscriptions: basically, the "only" difference would be a join through TeamParticipation table :)
[11:10] <StevenK> nigelb: That isn't confusing *at all*
[11:10] <nigelb> heh
[11:10] <danilos> G: s/single pages/self-contained pages/
[11:10] <G> StevenK: that and, I really like Launchpad, and the code is much better than another unnamed set of tools are :)
[11:11] <nigelb> wgrant: Can I hope for mildly better success with BrowserTestCase? :)
[11:12] <G> danilos: actually, what I was wondering is if the best way is to create an AJAXy portlet that uses the team list, to basically: "Also show bugs assigned to: <set of checkboxes>"
[11:13] <G> or even a "Showing directly (assigned|subscribed) bugs, [link: include indirectly (assigned|subscribed) bugs]
[11:14] <danilos> G: yeah, though choosing through a bunch of checkboxes is a nightmare imho :)
[11:15] <G> danilos: yeah, I agree
[11:15] <G> but with an on/off type thing, it'd also be possible to still list the user's teams that implements the existing behaviour as well
[11:17] <danilos> G: yeah, though user's teams are listed elsewhere as well (I'd even argue that it's misplaced on +assignedbugs now)
[11:18] <G> danilos: well for someone with a lot of team memberships, it allows drilling down to individual teams easily, but I agree to that view as well
[11:18] <danilos> G: true, true
[11:18] <danilos> G: well, I think providing the list won't be bad or wrong, so I suggest you just go for it :)
[11:19] <G> (I just realised as well, that it'd likely have to be a non-AJAXy because the searching is also non-AJAXy
[11:20] <rvba> nigelb: I think the only place where this (adding a comment with a attachement) is tested is bugtarget-filebug-views.txt
[11:21] <nigelb> doctest :(
[11:21] <rvba> Indeed.
[11:22] <G> Maybe just a portlet that basically has: http://dev.nigelj.com:81/bugportlet.txt
[11:23] <rvba> nigelb: my advice would be to see what your fix does to that test. If you only need to add a couple of lines in there, it's fine.
[11:23] <G> or is that getting a little too complex?
[11:23] <bigjools> anyone else seeing update-sourcecode breaking when run from rf-get?
[11:23] <nigelb> bigjools: the cache file?
[11:23] <bigjools> yes
[11:23] <nigelb> yeah, I saw that yesterday
[11:23] <nigelb> I was told to just use the merged version in devel
[11:24] <nigelb> there's a conflict
[11:24] <wgrant> Someone probably updated it on an i386 machine.
[11:24] <wgrant> So the order is different.
[11:24] <rvba> nigelb: I'm sorry but I'll have to leave you to it now. Maybe danilos can give you a hand if you need more help.
[11:24] <nigelb> rvba: Sure, no problem, I'll dig deeper.
[11:25] <bigjools> bzr resolve --take-other FTW
[11:25] <nigelb> yeah, that's what I did
[11:25] <nigelb> *too
[11:25] <G> danilos: does that look semi-sane, or a bit too long?
[11:25] <nigelb> This may come off as exceedingly stupid. How do I run a doctest?
[11:26] <danilos> G: I think it'd be fine
[11:26] <bigjools> nigelb: bin/test -t <name of doctest>
[11:26] <danilos> G: and definitely an improvement over what we have now
[11:26] <nigelb> bigjools: ah, thanks!
[11:27] <G> danilos: and basically the idea is for it be no-AJAX, and just add a includeindirect=1 to the request to +subscribedbugs
[11:27] <bigjools> nigelb: remember that doctests are loaded by unit tests
[11:27] <rvba> nigelb: ./bin/test -cvv -t xx-doctest.txt
[11:27] <G> (or assignedbugs for that matter)
[11:27] <danilos> G: I'd also do it in two steps (branches) to make it easier: generalize what we have in one branch and make it work for the subscribed bugs case, and then another one to provide the indirect bug searches
[11:28] <danilos> G: yeah, that sounds good, though that may conflict with the search parameters
[11:28] <G> danilos: so basically 1 branch to include it for subscribedbugs, and then a second branch to implement show indirect
[11:28] <jelmer> hmm, is something up with loggerhead on staging?
[11:28] <nigelb> bigjools: oh. that's why everyone tells me doctests having a slightly weird loading.
[11:28] <danilos> G: yep, that also ensures you solve at least one problem
[11:28] <G> danilos: ahhh a good point
[11:29] <danilos> G: (if the "include indirect" turns out to really be too expensive)
[11:29] <wgrant> jelmer: Probably. asuka has been in swapdeath twice in the last 24 hours.
[11:29] <wgrant> jelmer: Stuff may need restarting.
[11:29] <wgrant> jelmer: although codebrowse is tellurium, so I am stupid.
[11:29] <nigelb> Gah, I fixed it and I don't see a text breakage.
[11:29] <nigelb> *test
[11:29] <nigelb> The one time I'm unhappy a test didn't break.
[11:29] <bigjools> nigelb: this is an example of one: lib/lp/archivepublisher/tests/test_publisher_documentation.py
[11:29] <jelmer> wgrant: ah, ok
[11:29] <G> danilos: alright I'll type it up in launchpad
[11:29] <jelmer> wgrant: either way, I guess should ask a losa
[11:30] <jelmer> wgrant: what was up with asuka?
[11:30] <danilos> G: cool, I'll be switching locations soon, but if you want me to comment on the bug as well, just let me know :)
[11:30] <wgrant> jelmer: I'm not sure that was ever determined.
[11:30] <nigelb> bigjools: Ooooh. thanks!
[11:30] <G> danilos: thanks!
[11:32] <jelmer> wgrant: hmm, that makes me feel a bit uneasy about the stuff that is currently on staging..
[11:33] <wgrant> jelmer: You could obtain process listings.
[11:33] <wgrant> jelmer: I believe they are taken every minute or 5.
[11:33] <G> danilos: does person-portlet-team-bugs.pt should better than ...-team-assignedbugs.pt for a generic version?
[11:34] <danilos> G: it does, yeah
[11:35] <bigjools> it's quite amazing when DF manges to load a page that [qa]staging is timing out on
[11:35] <wgrant> bigjools: You used TRUNCATE, didn't you?
[11:35] <bigjools> hmm?
[11:36] <wgrant> The only explanation for that is that you TRUNCATEd the table.
[11:36] <bigjools> nope
[11:36] <wgrant> Lies.
[11:37] <nigelb> heh
[11:38] <nigelb> Is asking for a review of a branch I couldn't successfuly write a test cheating?
[11:39] <nigelb> :)
[11:43] <nigelb> wgrant: Is this fix released? bug 833743
[11:43] <_mup_> Bug #833743: test_versioninfo fails when system has bzr 2.4 <test-system> <Launchpad itself:In Progress by nigelbabu> < https://launchpad.net/bugs/833743 >
[11:44] <wgrant> nigelb: Indeed.
[11:45] <nigelb> woah, too fast.
[11:48] <bigjools> what are the runes to make bin/test pick up the failing tests in a testr repo?
[11:49] <nigelb> testr init ; zcat ~/Downloads/4595-upgrade-bug-linking-r13582.subunit.gz | testr load; testr run --failing
[11:49] <nigelb> where the ~/Downloads path is the subunit file.
[11:50] <nigelb> bigjools: is ^ that what you meant?
[11:50] <bigjools> nigelb: perfect, thanks
[11:50] <nigelb> :)
[11:50] <bigjools> how does it know to use bin/test?
[11:50] <jelmer> bigjools: the .testr.conf file
[11:51] <nigelb> I just assumed StevenK's magic would work.
[11:51] <bigjools> which begs another question ... :)
[11:51] <bigjools> how did I have that config already
[11:51] <jelmer> bigjools: it's part of the launchpad tree
[11:51] <jelmer> :)
[11:52] <bigjools> ah!
[11:52] <nigelb> heh
[11:52] <bigjools> that would make some sense, yes
[11:55] <nigelb> danilos: Could I add https://code.launchpad.net/~nigelbabu/launchpad/patch-edit-684548 to your list? :)
[11:55] <nigelb> I've been unsucessful in getting tests for it sadly. Any help appreciated :)
[11:57] <stub> Is there a helper to make non-blocking reads on a Python file object, or am I stuck with select() boilerplate?
[11:59] <bigjools> Twisted? :)
[12:00] <bigjools> are you in a loop that keeps checking?
[12:07] <nigelb> excellent, TDD dream works
[12:09] <G> danilos: hey quick question, I can seem to find any other pages that does the whole pass variables to a portlet thing, do you know of any so I can have a look at one
[12:11] <nigelb> GAH, qastating. Y U NO let me file bug.
[12:28] <nigelb> bigjools: is bug 284707 still trivial?
[12:28] <_mup_> Bug #284707: When Launchpad Janitor closes a bug due to a package upload, the message should link to that upload page <lp-soyuz> <trivial> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/284707 >
[12:29] <wgrant> nigelb: Yes. Should just need the template changed to insert a link -- which can be easily generated using canonical_url.
[12:29] <bigjools> nigelb: mostly, you just need to get the DSPR and use canonical_url() on it
[12:29] <nigelb> But how do I test...
[12:29] <bigjools> find the existing test
[12:29] <nigelb> I mean, not programmatically
[12:30] <bigjools> do an upload locally
[12:30] <bigjools> and run process-upload.py
[12:30] <nigelb> hm, this is going to be fun.
[12:30] <wgrant> nigelb: Nah, it was fun 2 years ago.
[12:30] <wgrant> Now it's well-documented and partially scripted :)
[12:30] <wgrant> https://dev.launchpad.net/Soyuz/HowToUseSoyuzLocally
[12:31] <nigelb> wgrant: I'm still stuck on the test for that bug. The "fix" turned out to be 2 lines. Once again haunted by tests.
[12:31] <StevenK> nigelb: Is your TDD experiment working?
[12:32] <nigelb> StevenK: I failed spectacularly.
[12:32] <bigjools> do it for this one, really
[12:32] <nigelb> The second bug I picked up turns out to have been fixed by wgrant a few months back.
[12:33] <nigelb> Also, what kind of box does qastaging run on? netbook?
[12:33] <nigelb> My local instance seems fast than that.
[12:33] <StevenK> Hahaha
[12:33] <bigjools> staging is timing out today
[12:33] <StevenK> nigelb: qastaging *and* staging both run on asuka. The poor thing is running *two* Launchpads
[12:34] <G> hmmmm I don't get how I can pass data to a template portlet
[12:34] <bigjools> G: "view" and "context" contain what you think.  So you can do view/property or context/property
[12:35] <nigelb> mrevell: "The Great Dismal Swamp" isn't some part of Launchpad? ;)
[12:35]  * nigelb runs
[12:35] <bigjools> I read "The Great Dismal Swamp" but said "Soyuz"
[12:36] <nigelb> heh
[12:36] <nigelb> I was thinking of blueprints though
[12:36] <wgrant> nigelb: What did I fix?
[12:37] <nigelb> bug 667413
[12:37] <_mup_> Bug #667413: "HowToTriage" URL in "thankyou for reporting this ubuntu bug" box should be a link <lp-bugs> <trivial> <Launchpad itself:Fix Released> < https://launchpad.net/bugs/667413 >
[12:38] <G> bigjools: basically I'm trying to generic-ize the person-portlet-team-assignedbugs.pt portlet, (/+assignedbugs) but I can't see any way to pass "+assignedbugs" etc to the portlet
[12:38] <G> unless I'm lost somewhere
[12:38] <wgrant> nigelb: qastaging and staging share an appserver (asuka) and a DB server (sourcherry). I don't know asuka's specs, but a fair bit of the bottleneck is the DB. sourcherry has 32GiB of RAM and has two LP DBs. The production DB servers have 132GiB of RAM (I believe), a single DB, and there are three of them.
[12:38] <wgrant> nigelb: So I did. Thanks for finding that.
[12:38] <nigelb> wgrant: 32 GiB of RAM?
[12:39] <G> 132GiB of RAM? nice :)
[12:39] <nigelb> Oh, right. It has the eentire prodcution data
[12:39] <StevenK> nigelb: The production database is like 240GiB
[12:39] <wgrant> nigelb: Yes. The LP DB is hundreds of gigabytes, so...
[12:39] <bigjools> G: that's a traversal, you need to define that in zcml.
[12:39] <bigjools> and there be dragons
[12:39] <bigjools> oh look, it's lunchtime!
[12:39] <nigelb> tea time!
[12:40] <StevenK> Wow. I reviewed that when I was still being mentored.
[12:40] <nigelb> StevenK: wgrant's branch?
[12:40] <StevenK> nigelb: Yup
[12:40] <nigelb> Neat :)
[12:40] <G> bigjools: so is traversals for this a good thing, or a bad thing (i.e. if it's a bad thing, something that should not be generic-ized)
[12:40] <nigelb> I didn't know you were a full reviewer only recently.
[12:40] <StevenK> nigelb: Commit message for that revision you linked in the bug starts with [r=stevenk, thumper]
[12:41] <StevenK> nigelb: Graduated 15/03
[12:42] <bigjools> G: I don't know what you're trying to do exactly, but normally if you want a generic portlet you need to attach the template to a view in zcml, and then you can use /@@ in the other template that needs the portlet
[12:42] <nigelb> StevenK: 2003?
[12:42] <nigelb> Or March of 2011
[12:42] <bigjools> but I am vastly simplifying
[12:42] <StevenK> nigelb: No, March.
[12:42] <nigelb> Fairly recent :)
[12:42] <nigelb> I remember wgrant being a full reviewer.
[12:42] <nigelb> err, getting full review
[12:43] <nigelb> GRAR
[12:43] <nigelb> *reviewer
[12:43] <StevenK> Almost six months
[12:43] <nigelb> I now know I've learned quite a bit in the last 9 MPs.
[12:43] <nigelb> Especially when I see G go through what I as going through branches 2 to 5 ;)
[12:44] <G> haha
[12:44] <StevenK> And what I went through for branches 2 until 30
[12:44] <henninge> danilos: Hi! Can you please review my branch?
[12:44] <henninge> https://code.launchpad.net/~henninge/launchpad/bug-824435-failure-reporting-4/+merge/73507
[12:44] <G> ohhhhh I think I get what I'm trying to do :)
[12:44] <StevenK> (I was working on Soyuz, give me a break. :-)
[12:44] <nigelb> heh
[12:44] <G> (as crazy as that sounds)
[12:45] <nigelb> G: I think most of us know exactly what you mean :D
[12:45] <G> nigelb: yeah, I'm a bit of a zope newbie
[12:45] <nigelb> StevenK: I still don't know lots. I'm frequently getting stuck at tests as evidenced today.
[12:45] <nigelb> G: Join the club! :)
[12:45] <G> nigelb: but I think I just worked out the solution to my question, even though I'm still not 100% sure I've been asking the right question (or at least the question the right way)
[12:46] <nigelb> That sounds /very/ familiar.
[12:46] <mrevell> nigelb, Heh :)
[12:48]  * nigelb heads for tea.
[12:59] <deryck> Morning, all.
[12:59] <henninge> Hi deryck! ;)
[13:00] <danilos> henninge, sure
[13:00] <henninge> I am getting this error from the LibrarianLayer. It seems that something is wrong with my local python2.6 installation, specifically setuptools.
[13:00] <henninge> http://paste.ubuntu.com/678866/
[13:01] <henninge> danilos: cool, thanks
[13:02] <henninge> What can to to fix that?
[13:24] <wgrant> henninge: https://bugs.launchpad.net/ubuntu/+source/python-setuptools/+bug/834698
[13:24] <_mup_> Bug #834698: setuptools.egg-info can end up as a directory when it is meant to be a symlink <python-setuptools (Ubuntu):New> < https://launchpad.net/bugs/834698 >
[13:24] <wgrant> henninge: rm -rf /usr/lib/python2.6/dist-packages/setuptools.egg-info, and apt-get install --reinstall python-setuptools if it is installed.
[13:25] <henninge> wgrant: ah thanks. I alread tried re-installing but did not remove first.
[13:27] <henninge> yes, now it is a symlink
[13:28] <henninge> and the LibrianLayer works, too .. :-D
[13:29] <wgrant> This broke buildbot a bit, and is causing delights in the staging mailbox.
[13:29] <wgrant> A dozen emails a minute or so.
[13:29] <wgrant> And launchpad-error-reports is getting similar, although not quite so frequent.
[13:41] <G> hmmm so I think StevenK was right, I can't do this the way I was thinking
[13:42] <deryck> adeuring, don't worry about marking bugs fix released. looks like wgrant got them all.
[13:42] <adeuring> ah, thanks wgrant and deryck!
[13:47] <rvba> danilos: Hi, can you please have a look at https://code.launchpad.net/~rvb/launchpad/dsd-api-bug-833080/+merge/73532 ?
[13:47] <G> although it does seem to me a bit odd that I can't access variables from view/foo from a portlet that is included via tal:content
[14:07] <lifeless> \o/
[14:07] <bigjools> lifeless: I can only assume that means one thing
[14:07] <lifeless> :)
[14:07] <bigjools> congrats :)
[14:07] <lifeless> sleep now. details later
[14:07] <bigjools> details?
[14:07] <bigjools> gah!
[14:07] <G> lifeless: congrats
[14:08] <nigelb> lifeless: Congrats!
[14:11] <mrevell> hey, congrats Daddy Lifeless :)
[14:13] <rvba> lifeless: félicitations !
[14:13] <danilos> henninge, r=me, sorry for taking this long
[14:13] <james_w> congratulations lifeless
[14:14] <danilos> rvba, looking at yours now
[14:14] <rvba> danilos: Great!
[14:14] <nigelb> This calls for a party at next sprint/summit lifeless attends? ;)
[14:17] <danilos> rvba, is this how we generally export SPNs?
[14:18] <nigelb> danilos: ouch, I had a small branch I needed a review :)
[14:18] <rvba> danilos: yes, I took the code from somewhere.
[14:18] <danilos> nigelb, if it's really small, I might be convinced :)
[14:18] <danilos> rvba, cool, just wondering
[14:18] <nigelb> https://code.launchpad.net/~nigelbabu/launchpad/patch-edit-684548
[14:19] <nigelb> I really tried my best to write tests for that, but failed.
[14:19] <danilos> rvba, I also assume all of these are public, and no concern should be for privileges?
[14:19] <rvba> danilos: that's right.
[14:19] <nigelb> Gah, I mean - https://code.launchpad.net/~nigelbabu/launchpad/patch-edit-684548/+merge/73514
[14:20] <danilos> rvba, cool, everything else is nice and simple, r=me
[14:20] <rvba> danilos: Thanks a lot!
[14:22] <danilos> nigelb, have you looked at lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt for testing?
[14:22] <danilos> nigelb, (I wouldn't be surprised if that starts failing with your change)
[14:22] <nigelb> danilos: It didn't fail :(
[14:23] <nigelb> wait.
[14:23] <nigelb> that's not the one I tried.
[14:23] <nigelb> *checks*
[14:25] <danilos> nigelb, you might still be right, but it shouldn't be hard to extend it to test for this as well
[14:25] <nigelb> danilos: I'll do that. I never thought I'd be writing doctests :)
[14:25] <nigelb> Yup, I broke that.
[14:26] <danilos> nigelb, heh, well, if you really want, you can start a new view test if you want :)
[14:26] <nigelb> danilos: Tried for about 4 to 5 hours :)
[14:26] <nigelb> failed.
[14:28] <danilos> nigelb, anyway, please extend the test to assert that the link is right as well
[14:28] <danilos> nigelb, oh, I've noticed you've been discussing that with a few people, fair enough
[14:28] <nigelb> danilos: Just fix what I broken right? [I've been at this for 12 hours now :P]
[14:28] <danilos> nigelb, you should try to at least extend the pagetest to make sure it works
[14:28] <nigelb> pagetest?
[14:28] <danilos> nigelb, well, not really, I think that is only using extract_text which strips all the tags
[14:29] <henninge> danilos: thank you very much! ;)
[14:29] <danilos> nigelb, yeah, all the doctests in stories/* subdirectories are what we used to call "page tests"
[14:29] <nigelb> so, I added an (edit) in the doctest now, it passes.
[14:29] <nigelb> do I need to add another new test?
[14:30] <danilos> nigelb, well, you can at least check the actual link tag in there as well
[14:30] <nigelb> ah, right.
[14:30] <nigelb> let me look at other tests and figure out how
[14:31] <danilos> nigelb, in that same spot there is a getLink call, you should be able to emulate that
[14:32] <danilos> nigelb, something like browser.getLink('(edit)')
[14:32] <danilos> nigelb, or well, just "edit" since that's what the link is
[14:33] <nigelb> yeah, got that bit.
[14:33] <henninge> gary_poster: Good morning! ;)
[14:33] <nigelb> Now I'm looking around to figure out the pattern to the dit link
[14:33] <nigelb> *edit link
[14:33] <gary_poster> hey henninge, good afternoon. :-)
[14:33] <henninge> ;)
[14:34] <danilos> nigelb, "sprite edit" on the containing <span> might be enough
[14:34] <henninge> gary_poster: I am not sure if you are aware but that ZConfig change I made a few weeks ago actually helped.
[14:34] <henninge> gary_poster: Now I think it is time to submit it upstream.
[14:34] <danilos> nigelb, or <a> itself (i.e. <a class="sprite edit"></a>)
[14:34] <henninge> gary_poster: can you help me with that?
[14:35] <gary_poster> henninge, I am most definitely aware!  It is great!  I made sure you were recognized on a team lead call :-)
[14:35] <nigelb> danilos: Oh, I didn't add that class.
[14:35] <henninge> gary_poster: thanks ;-)
[14:35] <danilos> nigelb, that adds the edit icon on the link
[14:35] <danilos> nigelb, also, considering you've got parentheses following the edit link now, the layout is not very pretty :)
[14:36] <nigelb> danilos: Ah. I just copied the format of the edit in the right portlet as well
[14:36] <nigelb> I'll add the class so I can grab it.
[14:37] <gary_poster> henninge, help with upstream: /me cringes, but yes, can do.  I would suggest that one of us email Fred Drake.  He knows me, so I might be a better choice, but I'd be very happy to let you do it.  He is the ZConfig author, and the author of that particular machinery.  I'd ask him for a review and a merge if he's willing; or if he doesn't have the time, he can toss it back to me, and I'll do it.
[14:38] <gary_poster> henninge, you want me to write that?
[14:38]  * gary_poster starts email ;-)
[14:39] <danilos> nigelb, do you think you can finish these changes quickly? (I need to leave soon and have a few other things I need to finish, so if you can't do it quickly, we can perhaps come back to it tomorrow morning)
[14:40] <nigelb> danilos: Please don't block on me, if I can't get finish it, I can start again tomorrow, no issues :)
[14:40] <nigelb> *get it
[14:40] <nigelb> *finished
[14:40] <danilos> nigelb, cool, thanks
[14:43] <danilos> nigelb, feel free to ping me tomorrow morning then :)
[14:43] <henninge> gary_poster: sorry, phone call
[14:43]  * henninge reads
[14:43] <nigelb> danilos: sure :)
[14:43] <G> danilos: thanks for your help btw
[14:43] <gary_poster> henninge, I'm three paras in by now  ;-)
[14:44] <henninge> gary_poster: no, was reading your explanation. that's only one para
[14:44] <henninge> gary_poster: what are you reading? ;)
[14:44] <gary_poster> henninge, I mean I'm three paras in to the email that I'm writing to Fred Drake
[14:44] <henninge> ha!
[14:44] <henninge> :-D
[14:44] <henninge> gary_poster: can you please write the email ... ;)
[14:44] <gary_poster> :-)
[14:45] <henninge> gary_poster: thanks ;)
[14:45] <gary_poster> welcome, henninge.  thanks for the great fix
[14:49] <bac> bigjools: how do i add an ArchivePermission for a user to a private PPA?  can it be done via the UI?
[14:50] <bigjools> bac: only on the API
[14:50] <bac> bigjools: ok then, i'll stop looking
[14:51] <bigjools> bac: good idea :)
[15:00] <nigelb> I did wonder why a test wasn't failing.
[15:00] <nigelb> I wasn running it in the WRONG branch!
[15:02] <G> nigelb: whoops
[15:03] <G> I think my understanding of the zope templating methods must be completely off
[15:07] <deryck> bac, ping
[15:07] <bac> hey deryck
[15:11] <cjwatson> lifeless: congratulations!
[15:11] <cjwatson> have we heard anything new regarding bug 809123?
[15:11] <_mup_> Bug #809123: we cannot deploy DB schema changes live <fastdowntime> <qa-ok> <Launchpad itself:Fix Committed by stub> < https://launchpad.net/bugs/809123 >
[15:16] <benji> G: the ZPT reference is pretty good: http://docs.zope.org/zope2/zope2book/AppendixC.html or I might be bribed into answering a question or two
[15:18] <G> benji: I think part of it is that I'm used to how other templating methods work, and just getting a tad confused about the boundries in ZPT
[15:20] <G> benji: essentially in bug 61428 it'd be nice to make person-portlet-team-assignedbugs.pt reusable for both assigned and subscribed methods, but that portlet isn't the one that is the first template loaded (buglisting-embedded-advanced-search.pt)
[15:20] <_mup_> Bug #61428: Want a "subscribed to teams" portlet... <feature> <lp-bugs> <trivial> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/61428 >
[15:21] <benji> G: I'm looking at the templates in question to see if I can get up to speed with you.
[15:22] <nigelb> Is this lint error okay? " narrative uses a moin header."
[15:22] <G> the idea is, in person.py, I was thinking it should be possible to tell the template that the backlink should be "+subscribedbugs" or "+assignedbugs" or "+somethinginthefuture", and I can certainly tell the buglisting-embedded-advanced-search.pt about it (by setting a variable in the python class)
[15:22] <stub> cjwatson: Still blocked on RT #47040
[15:22] <_mup_> Bug #47040: while booting initial kernel, progress bar looks like Win98 <gfxboot-theme-ubuntu (Ubuntu):Confirmed> < https://launchpad.net/bugs/47040 >
[15:23] <stub> cjwatson: (Which had its one month birthday and nobody noticed! Happy Birthday!)
[15:23] <G> but the portlet just seems to have no access to it
[15:23] <benji> nigelb: it's not bad, or hard to fix (instead of "== Title ==" replace it with "Title\n[15:23] <nigelb> benji: cool, thanks
[15:24] <G> (I even tried: tal:define="link_back view/link_back" tal:content="existing loading of portlet-team-assignedbugs", without any luck
[15:24] <G> (which reading the ZPT documentation, sounded like it should work
[15:25] <nigelb> benji: BTW, Your quickstart guide helped me understand a lot of how things work :)
[15:25] <benji> G: define "without any luck" and "work" :)
[15:25] <benji> nigelb: I'm glad
[15:26] <G> without any luck = "Expression: <PathExpr standard:u'link_back'> with a list of variables excluding link_back
[15:26] <G> benji: work as in <div tal:content="link_back"> displays what I had set in the view
[15:28] <benji> G: the first error makes no sense to me, so I will ignore it ;) the second should have worked with something like "<div tal:content="view/link_back"></div>"
[15:28] <benji> (assuming that the view really has an attribute or method named "link_back" that holds/returns a string)
[15:29] <G> that just makes it "Expression: <PathExpr standard:u'view/link_back'>
[15:29] <G> benji: hold on, just pastebin'ing now
[15:29] <G> benji: http://paste.ubuntu.com/678981/
[15:29]  * benji looks
[15:31] <benji> G: the first change in person-portlet-team-assignedbugs.pt looks like a typo; why the space and then "view/name"?
[15:31] <G> (btw, I've had it with the same issue, with and without the nocall: (thought it might fix it) and with/without the seperate <tal:... define></ta/:...>
[15:31] <G> benji: oh you can ignore that
[15:32] <G> benji: you are right in pointing that out, but I thought the way I was joining the two variables together was the issue, it isn't actually trying to render view/name though
[15:33] <G> flacoste: btw, thanks for sorting out the Contributor Agreement
[15:33] <flacoste> G: thanks for you contribution!
[15:34] <G> flacoste: no problem, I was originally confused about the agreement and the Code of Conduct thing, so it didn't click until late that I hadn't done it
[15:34] <benji> G: if I apply that patch, what URL could I visit to trigger the error?
[15:35] <G> on my system: https://launchpad.dev/~name16/+assignedbugs
[15:36] <G> so really launchpaddomain/~user/+assignedbugs where ~user belongs to one or more teams
[15:36] <deryck> bigjools, ping.
[15:36]  * bigjools is in demand today
[15:37] <nigelb> abentley: Can I bring https://code.launchpad.net/~nigelbabu/launchpad/patch-edit-684548/+merge/73514 to your attention?
[15:37] <abentley> nigelb: sure.  Be with you in a moment.
[15:37] <nigelb> thanks!
[15:38] <benji> G: if I apply your patch but leave out the broken changes to person-portlet-team-assignedbugs.pt, I don't get any errors when rendering that page
[15:39] <G> benji: yep, and if you add in the <div tal:content="link_back" /> the oops will occur
[15:39] <G> (ignore the rest)
[15:39] <G> and variants such as view/link_back also didn't work
[15:40] <benji> G: each template has its own namespace, so that name isn't defined there, you can put "view/" on the front of "link_back" and it should work (assuming both templates have the same view object)
[15:40] <benji> ah, so it may have a different view
[15:42] <G> benji: thats the 'class="lp...."' bit in the .zcml file?
[15:42] <benji> G: indeed, if you look to see where that template is wired up (lib/lp/bugs/browser/configure.zcml) it has a view class of lp.registry.browser.person.PersonView
[15:42] <G> hmmmm I just changed it to the same as the handler for +assignedbugs
[15:42] <G> and no oops
[15:43] <G> and it looks correct
[15:43] <benji> cool
[15:43] <G> benji: thank you very much!
[15:43] <benji> glad to help
[15:46] <G> can't believe I was so close, but so far away at the same time
[15:49] <G> benji: oh except it won't be generic still, because +assignedbugs and +subscribedbugs use different classes
[15:49] <G> benji: I think you've got me in the right direction though
[15:50] <benji> G: good luck, if you get in another bind feel free to ask for help
[15:53] <abentley> nigelb: it looks like danilos is your reviewer on that one.
[15:54] <nigelb> Yeah, I thought I'd finish it off.
[15:54] <nigelb> You'd rather defer to him, I can put it off for tomorrow :)
[15:54] <abentley> nigelb: I'd prefer that.
[15:54] <nigelb> Cool, np
[15:54] <nigelb> Onto next bug :)
[16:11] <adeuring> abentley, deryck[lunch]: could one of you review a small fix for a larger part of the HWDB hassles? https://code.launchpad.net/~adeuring/launchpad/fix-broken-comment-nodes-in-hwdb-reports/+merge/73552
[16:11] <abentley> adeuring: sure.
[16:11] <adeuring> abentley: thanks!
[16:15] <abentley> adeuring: ISTM that your re would match "<comment></comment><somethingelse></somethingelse><comment></comment>"
[16:15] <adeuring> abentley: no, the '?' after '.*' prevents this
[16:16] <abentley> adeuring, doesn't ? make the '.*' optional?
[16:17] <adeuring> abentley: no, that means "non-greedy searching"
[16:17] <adeuring> like "stop at the first match"
[16:17] <abentley> adeuring: okay.  I didn't realize that *? was a single entity.
[16:18] <abentley> adeuring: could you add a test for that, please?  Showing that "<comment></comment><somethingelse></somethingelse><comment></comment>" => "<comment/><somethingelse></somethingelse><comment/>" ?
[16:19] <adeuring> abentley: not today.... I am really tired. I see the need but...
[16:20] <abentley> adeuring: _fix_frequent_errors doesn't match our naming guidelines.
[16:21] <adeuring> abentley: ouch, yes fixFrequentErrors, sure
[16:22] <abentley> adeuring: with a test and the name change, this is okay to land.
[16:22] <adeuring> abentley: thanks
[16:30] <bigjools> mrevell: I requested your mince pies on a text change MP if you would be so kind
[16:30] <mrevell> Haha, I'd be delighted to.
[16:32] <nigelb> mrevell: Excellent email.
[16:32] <bigjools> mrevell: splendid old bean
[16:33] <nigelb> I'd be glad to be part of it as a contributor :)
[16:33] <mrevell> Ah, thanks nigelb; you red fast!
[16:33] <nigelb> heh
[16:33] <mrevell> Very glad to have you on board :)
[16:33] <nigelb> Wouldn't the blueprint bugs merge conflict with stakeholders?
[16:34] <nigelb> Especially since Ubuntu uses it extensively.
[16:34] <mrevell> nigelb, We won't throw away functionality that's important to stakeholders ... nor the distinction between a "blueprint" face and a "bugs" face, probably. It's more an under the hood thing that'll give us benefits such as bug dependencies.
[16:35] <nigelb> Ah.
[16:35] <mrevell> And it'd bring some much needed love to blueprints.
[16:35] <nigelb> heh
[16:35] <nigelb> YEah
[16:35] <mrevell> jml and mpt started that work at our Dallas sprint.
[16:36] <nigelb> Yeah, jml told me about the merge at UDS
[17:13] <bigjools> good night everyone
[17:22] <LPCIBot> Project devel build #1,017: STILL FAILING in 4 hr 45 min: https://lpci.wedontsleep.org/job/devel/1017/
[17:28] <flacoste> deryck: your squad is on maintenance rotation this week?
[17:28] <deryck> flacoste, yes.  on interrupt duties, you mean?
[17:29] <flacoste> yes
[17:29] <deryck> flacoste, yeah, indeed we are.  what's up?
[17:29] <flacoste> did any of you guys picked up the email to Registry asking for https://launchpad.net/libreoffice/ and https://launchpad.net/df-libreoffice/ to be merged?
[17:29] <flacoste> (in the latter)
[17:31] <nigelb> Hi, what's the ideal way to test a validation change?
[17:31] <nigelb> (I'm trying to fix bug 59301)
[17:31] <_mup_> Bug #59301: Don't give me a vague "URL is already registered by another blueprint" error <lp-blueprints> <trivial> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/59301 >
[17:31] <deryck> flacoste, I don't think so.  I can pick it up, though.  I'm the only one left today.
[17:32] <flacoste> deryck: ideally, this should come through a question
[17:33] <flacoste> nigelb: where are you implementing the validation change?
[17:33] <deryck> flacoste, should I ping back and ask for them to open a question?  is that the normal way?
[17:33] <flacoste> nigelb: iow, in the view, or the field validator
[17:33] <nigelb> flacoste: In the interface
[17:34] <flacoste> nigelb: field validator? or as an interface invariant?
[17:34] <nigelb> er, I probably don't know what's the difference.
[17:34] <nigelb> There's already validation
[17:34] <flacoste> deryck: i'd suggest opening a question for it and pointing the user to the question for follow-up
[17:34] <nigelb> I'm only changing the validation error
[17:34] <deryck> flacoste, ack.  thanks.
[17:34] <flacoste> deryck: one aspect that needs follow-up is that we don't support project merging per se
[17:34] <flacoste> deryck: we can make one inactive
[17:35] <deryck> right.
[17:35] <flacoste> deryck: but it would be their responsibility that all contents is moved across
[17:35] <flacoste> so bugs / translations / code / whatever
[17:35] <deryck> gotcha
[17:35] <flacoste> nigelb: what file are you changing?
[17:35] <nigelb> blueprints/interfaces/specification.py
[17:36] <nigelb> specifically L136
[17:36] <nigelb> I'll be adding the specification title as well.
[17:36] <nigelb> and if I can manage it, the URL.
[17:41] <flacoste> nigelb: ok, looking for a decent suggestion
[17:41] <nigelb> flacoste: :)
[17:42] <nigelb> Is interface the Right Place™ for validation?
[17:42] <nigelb> (Also, drat bigjools isn't here. Really wanted to poke him to look at cricket :P)
[17:42] <flacoste> nigelb: yes, it's the right place
[17:43] <nigelb> Ok, so theoretically, I should be able to look at other validation tests, if any.
[17:43] <flacoste> nigelb: there is no interfaces/tests directory
[17:43] <flacoste> nigelb: well, there is probably more bad examples of those than good ones
[17:43] <nigelb> oh :(
[17:43] <flacoste> especially in blueprints
[17:43] <nigelb> heh
[17:43] <nigelb> blueprints is especially unloved :)
[17:43] <flacoste> so my suggestion is to add a unit test in blueprints/model/test_specification.py
[17:44] <flacoste> ideally, i would go in interfaces/tests
[17:44] <flacoste> but since that doesn't exists, might be more complicated to set-up
[17:44] <flacoste> more cookie points to you if you go that extra miles
[17:44] <flacoste> but the test should simply be something like
[17:44] <flacoste> test_url_validation(self):
[17:45] <flacoste>      spec = self.factory.makeSpecification()
[17:46] <flacoste>        field = ISpecification['url']
[17:46] <flacoste>          with ExpectedException(LaunchpadValidationError, regex_to_match):
[17:46] <flacoste>             field.validate(the_value)
[17:46] <flacoste> and that's it
[17:46] <nigelb> s/url/specurl/g I think?
[17:46] <flacoste> right
[17:46] <flacoste> the above is a sketch :-)
[17:47] <flacoste> you probably want one test per error condition you need
[17:47] <nigelb> heh, ok. let me play with this
[17:47] <flacoste> and you might want to validate a good one for completeness
[17:47] <flacoste> that's how validation tests should be written
[17:47] <flacoste> we probably have one example of those in the tree
[17:47] <flacoste> but the more common cases was to test it through all the stack
[17:47] <flacoste> which is bad practice
[17:47] <flacoste> oh
[17:47] <flacoste> you might want to use:
[17:48] <flacoste>    field = ISpecification['specurl'].bind(spec)
[17:48] <nigelb> Also, another thing.
[17:48] <nigelb> that above test will probably pass.
[17:48] <flacoste> since that allow the field to look at the object itself
[17:48] <flacoste> nigelb: regex_to_match is matched against the exception message
[17:48] <flacoste> so probably not if that's what needs to change
[17:49] <nigelb> because the test failure is when you try to create a new spec with apiurl which exists.
[17:49] <nigelb> so I'll just do an empty makeSpecification before that.
[17:49] <flacoste> indeed
[17:49] <flacoste> good point
[17:49] <flacoste> existing_spec = self.factory.makeSpecification(specurl='...')
[17:50] <flacoste> ISpecification['specurl'].validate('...')
[17:50] <flacoste> should trigger your error
[17:50] <nigelb> yeah :)
[17:50] <flacoste> validate() works for both new object and existing ones
[17:51] <flacoste> so you probably want a test that shows that validate('a_url') when the current value is 'a_url' pass
[17:51] <flacoste> you'll need to call .bind() with an existing instance for that test
[17:52] <flacoste> (as outlined in my first example)
[17:52] <nigelb> right!
[17:52] <flacoste> or correction to it :-)
[17:52] <flacoste> that should get you started
[17:52] <nigelb> so I get to do a success and failure.
[17:52] <flacoste> let us know if you hit any snags
[17:52] <nigelb> sure! :)
[18:15] <nigelb> Excellent. Finally got TDD working.
[18:16] <nigelb> My tests fail successfully.
[18:27] <nigelb> flacoste: Almost a success. All I'm missing is that validation is automatically escaped.
[18:28] <flacoste> nigelb: you could simply check that the exception message is a structured() instance
[18:28] <nigelb> flacoste: No, I mean, not just in the test. also in the output
[18:29] <nigelb> so, I get <a href=... instead of that getting linked
[18:29] <flacoste> nigelb: i don't understand?
[18:29] <nigelb> one sec
[18:30] <nigelb> flacoste: http://people.ubuntu.com/~nigelbabu/validation.png
[18:31] <flacoste> nigelb: i see
[18:31] <flacoste> that's more tricky
[18:31] <nigelb> Ouch.
[18:31] <flacoste> as we don't want to become another XSS vector
[18:32] <nigelb> Can I use one of the formatters instead?
[18:32] <flacoste> i think we now have a way to have HTML in error message
[18:32] <flacoste> but i don't know how off the top of my head
[18:34] <nigelb> Could I use the FormattersAPI?
[18:46] <flacoste> nigelb: you need to pass use structured() to wrap the message creation
[18:48] <flacoste> so structured('%s is already registered by <a href="%s">%s</a>', value, canonical_url(spec), spec.title)
[18:48] <flacoste> that will do the right thing
[18:49] <nigelb> okay!
[18:51] <flacoste> bonus points if you can figure out how to use the the link formatter from there
[18:51] <flacoste> note though that in some way this is a violation of our layering
[18:51] <flacoste> we are introducing display logic at a very low level
[18:51] <nigelb> Oh.
[18:51] <nigelb> Wait, link formatter? Here?
[18:52] <flacoste> putting a link in the error message is
[18:52] <flacoste> more so if we going to reuse the implementing behind fmt:link
[18:52] <nigelb> But is there a better way to do this?
[18:52] <flacoste> but this seems to be the pattern we follow
[18:53] <flacoste> the better way would just be more work
[18:53] <flacoste> and indirection
[18:53] <flacoste> for no real benefit
[18:53] <nigelb> heh :)
[18:53] <flacoste> you would make a subclass of LaunchpadValidation specific to this error
[18:53] <flacoste> and then in the view look for that error
[18:53] <flacoste> and replace the better error message there
[18:53] <flacoste> that would preserve the layering of concerns
[18:54] <flacoste> one drawback here is that there "HTML-formatted" error message will appear on the API as well
[18:54] <nigelb> ah
[18:54] <flacoste> but not sure if that's arguably a bug :-)
[18:54] <nigelb> heh
[18:55] <flacoste> anyway, using structured() wiht LaunchpadValidationError has precents
[18:55] <flacoste> as its ErrorView supports it
[18:55] <flacoste> and grepping should find prior art
[18:55] <flacoste> so that should work for you :-)
[18:55] <flacoste> ntrtam
[18:55] <flacoste> -> need to run to a meeting :-)
[18:55] <nigelb> ciao :)
[18:55] <nigelb> Thanks!
[20:16] <bac> benji: could i bother you for a review?
[20:16] <benji> bac: my pleasure
[20:17] <bac> benji: thx: https://code.launchpad.net/~bac/launchpad/bug-828914-test/+merge/73585
[20:19] <benji> bac: looks good!
[20:19] <bac> tahnks
[20:44] <benji> vim protip: if you have ever lost some important edits down an undo/redo blind alley, look up the :earlier command
[20:55] <benji> bac: do you have time for a very small review?
[20:55] <bac> yep
[20:55] <benji> here you go https://code.launchpad.net/~benji/launchpad/bug-810113/+merge/73591
[21:02]  * benji probably should have mentioned bac's name.
[21:03] <bac> i saw it.
[21:03] <bac> benji: done
[21:03] <benji> ah!, thanks
[21:04] <bac> flacoste: that's a good idea.  i'll look at a sweep tomorrow
[21:04] <soren> benji: Awesome review music.
[21:05] <benji> soren:  :)
[21:05] <flacoste> bac: thanks for fixing this!
[21:06] <benji> bac: "Your review would've been much faster if it weren't for the insane music."  I LOLled
[21:13] <soren> benji: Just bought the whole album. :)
[21:15] <benji> soren: cool, he definately has some skill at what he does
[21:17] <mwhudson> er
[21:18] <mwhudson> would anyone like to talk about the lp javascript with me?
[21:19] <mwhudson> ah
[21:19] <LPCIBot> Project devel build #1,018: STILL FAILING in 3 hr 57 min: https://lpci.wedontsleep.org/job/devel/1018/
[21:48] <mwhudson> "These installation instructions apply to the new PostgreSQL database infrastructure as found in Ubuntu Breezy and later, and Debian Etch and later. "
[21:48]  * mwhudson thinks this line of prose has probably outlived it's usefulness
[21:48] <lifeless> nuke from orbit
[23:37] <wallyworld> mwhudson: did you find someone to talk about lp javascript?
[23:37] <mwhudson> wallyworld: no
[23:37] <wallyworld> did you have a question? not sure if i can help or not
[23:37] <mwhudson> wallyworld: well, i dunno
[23:37] <mwhudson> wallyworld: i sort of answered my own question
[23:38] <wallyworld> ok
[23:38] <mwhudson> wallyworld: do you know much about the ChoiceSource & related widgets?
[23:38] <wallyworld> i know what i need to to use them
[23:38] <mwhudson> there is code knocking around in there to replace icons with loading icons and so on
[23:39] <mwhudson> but _most_ usages in lp now use sprites
[23:39] <mwhudson> & so have to do different things
[23:39] <wallyworld> yeah
[23:39] <mwhudson> i was sort of vaguely wondering whether it makes sense to change the widget to assume sprites
[23:39] <wallyworld> when you say loading icons, you mean display a spinner while loading takes place?
[23:39] <mwhudson> wallyworld: yes
[23:40] <mwhudson> wallyworld: the context for all this is that i've write a greasemonkey script for editing work items
[23:40] <mwhudson> http://people.linaro.org/~mwh/work_item_editor.png
[23:40] <wallyworld> the other pattern i've seen is to add "spinner" to the class of an item
[23:40]  * wallyworld looks
[23:40] <mwhudson> i had to copy paste hack the source of ChoiceSource to get this to work
[23:41] <wallyworld> and you want to show a spinner when you clock the yellow edit icon?
[23:41] <mwhudson> and i'd like to get my changes into lp
[23:41] <mwhudson> no
[23:41] <mwhudson> i want to understand the code a bit to know if my changes will do damage :)
[23:42] <wallyworld> ah right. ChoiceSource is used in only a few places from memory eg blueprints
[23:42] <wallyworld> i can look at your branch and see if anything jumps out if you like
[23:42] <mwhudson> bugtask this affects me uses it too
[23:42] <mwhudson> but yeah, it's fairly isolated
[23:43] <mwhudson> wallyworld: https://code.launchpad.net/~mwhudson/launchpad/ChoiceSource-flexibility
[23:43]  * wallyworld looks
[23:43] <mwhudson> i should check if my greasemonkey script works with my changes too, or this is a bit pointless :)
[23:44] <wallyworld> :-)
[23:48] <mwhudson> hm
[23:48] <mwhudson> wallyworld: why would LPS.WidgetPositionAlign be undefined on a blueprints.launchpad.dev page but there on production or staging?
[23:49] <mwhudson> i guess the js is built differently?
[23:50] <wallyworld> mwhudson: good question. i've recently noticed that too. the same source files are used in both dev and prod, but prod is minified, that's the only difference afaik
[23:51] <wallyworld> mwhudson: we recently made a change to the build prcess so that yui is incuded as a tarball in downloadcahce and unpacked as part of the build
[23:51] <wallyworld> so we can easily use a different version by modifying versions.cfg
[23:51] <wallyworld> but i can't see offhand how that would account for the difference
[23:52] <mwhudson> i can't really see how that would matter
[23:52] <mwhudson> i think i can make it work by wrapping all my script in a LPS.use( '...', function (Y) { ... });
[23:52] <wallyworld> yeah, so something else is happening
[23:53] <mwhudson> which is probably a better idea anyway
[23:53] <mwhudson> (it may be an undeployed change)
[23:54] <mwhudson> ah uh, could it be a race condition?
[23:54] <wallyworld> your branch looks ok to me. you could run all the yui tests but i don;t think we have coverage for what you've changed
[23:54] <mwhudson> i don't know when greasemonkey scripts run
[23:55] <wallyworld> could be
[23:55] <wallyworld> i can't recall the exact error i've seen in the firebug console wrt an undefined symbol
[23:55] <mwhudson> no, that doesn't make sense
[23:58] <wallyworld> mwhudson: just checked lp.dev and lp.net. both give this error: yui: NOT loaded: widget-position-ext. so i misremembered what i saw. not related to your issue perhaps
[23:59] <mwhudson> ah yeah i see that too
[23:59] <wallyworld> but there's no apparent problems
[23:59] <mwhudson> i don't see that on devel though...
[23:59] <wallyworld> i do