[00:07] <james_w> damn, got confused between pdb and ipython and lost it
[00:07] <james_w> I'll wait for it to happen again
[00:40]  * mwhudson lunches
[01:26]  * thumper walks up the road to get real coffee
[01:28] <poolie> jml/thumper: can i run a possibly weird idea past you
[01:28] <poolie> that is to do with displaying permissions to users in the web ui
[01:29] <poolie> there was both a bug and a list post today with people failing to understand what permission is needed to do or change a particular thing
[01:29] <poolie> now in theory this knowledge is in the lp code in a structured form
[01:29] <poolie> can it be interrogated so that we could show it as text in some way in the web ui?
[01:30] <mwhudson> poolie: it's not very structured in the lp code, and it's of the form "can person Y do thing Z"
[01:30] <poolie> so you can't find out "who can do Z"?
[01:30] <mwhudson> poolie: there's nothing that can answer "what is the set of the people who can do Z"
[01:30] <mwhudson> right
[01:31] <poolie> :/
[01:31] <poolie> really what you want is
[01:31] <mwhudson> it would perhaps not be super hard to add
[01:31] <poolie> "Z can be done by project_owner which is currently ~bzr"
[01:31] <poolie> etc
[01:31] <poolie> i don't know if it's the most pressing problem
[01:31] <poolie> but it does crop up in a lot of places
[01:31] <mwhudson> launchpad is made of pressing problems :)
[01:32] <poolie> :)
[01:33] <mwhudson> the way security works in launchpad is there's a mapping from pairs (interface, permission) to objects which implement a particular interface
[01:33] <mwhudson> this interface just has two methods (i think) "can the anonymous user do this" "can this particular user do this"
[01:33] <mwhudson> you could add another method "describe the people who can do this"
[01:34] <poolie> do the interfaces have names?
[01:34] <poolie> at least in the code
[01:34] <mwhudson> and i guess it would mostly be a matter of boring typing to add all this information
[01:34] <poolie> actually what i mean is, are these all different instances of the same class, or are there different implementations of this interface?
[01:35] <mwhudson> the interface with the methods is called IAuthorization and there are many many implementations
[01:35] <mwhudson> in lib/canonical/launchpad/security.py
[01:35] <mwhudson> (which is a gem of a file)
[01:36] <poolie> i wonder if you could even just print the repr or classname?
[01:36] <poolie> as the crudest thing that could possibly help
[01:36] <mwhudson> http://bazaar.launchpad.net/~launchpad-pqm/launchpad/devel/annotate/head%3A/lib/canonical/launchpad/security.py
[01:37] <poolie> mm, i'm looking
[01:37] <poolie> i have a copy of the code
[01:37] <mwhudson> i guess you could
[01:37] <poolie> i realize that would seem a bit messy
[01:38] <poolie> so you probably wouldn't want to show it in every context
[01:38] <poolie> but it would actually get people a bit unstuck
[01:56] <mwhudson> well, you have another fun thing i guess which is that if you can't do something, you don't get shown the link that lets you do it at all
[02:19]  * jml is behind a crappy internet connection
[03:24] <mwhudson> jml: how's your use-testtools branch doing?
[03:24] <jml> mwhudson, it's where it was yesterday.
[03:27] <mwhudson> jml: :(
[03:27] <jml> mwhudson, otoh I had a pleasant evening in the company of friends
[03:27] <thumper> jml: how does "Launchpad - what is it and who uses it?" sound for an overview talk name?
[03:27] <jml> mwhudson, so it kind of evens out.
[03:28] <mwhudson> jml: :)
[03:28] <mwhudson> sodding wifi
[03:28] <jml> thumper, pretty good, although a little uninspiring
[03:29] <thumper> jml: so give me something inspiring
[03:29] <jml> thumper, I'm thinking.
[03:52] <jml> thumper, "Why Launchpad?"
[03:52] <thumper> as an overview talk name?
[03:53] <thumper> sounds OK
[03:53] <thumper> I'm trying to put together the draft schedule
[03:53] <thumper> to email out shortly
[03:53] <thumper> we can tweak talk names
[03:54] <jml> thumper, +1
[04:12]  * mwhudson afk for a bit
[04:40] <jml> fjlacoste, hello.
[04:51]  * thumper EODs
[04:52] <jml> I'm getting errors about ampoule not being able to be imported
[05:06] <jml> "run buildout" is the answer.
[07:16] <jml> mwhudson, I'm running the use-testtools branch through ec2 test again
[07:17] <jml> mwhudson, it won't fix all of the errors, but it should have many, many less of them.
[07:40] <jml> g'night all
[07:46] <al-maisan> good night jml
[08:26] <spiv> Hmm, I'm getting 404 for https://edge.launchpad.net/+icing/rev10123/combo.css
[08:27] <spiv> It's novel looking at LP without CSS...
[08:36] <mthaddon> spiv: see above - can you help figure out why it's doing that?
[08:37] <mthaddon> I've reverted to the old CSS for the moment, but there may be subtle breakage
[08:39] <mthaddon> i.e. we're using CSS from 10081, code from 10123
[08:41] <noodles775> mthaddon: can we revert the edge rollout for the moment? I'm still trying to find out why pydoc2.4 is being called.
[08:42] <mthaddon> noodles775: see above - reverting the whole rollout is fairly involved, but I've reverted the CSS
[08:42] <noodles775> mthaddon: sourcecode/pygettextpo/Makefile
[08:42] <noodles775> It seems when that makefile is being run, PYTHON_VERSION=2.4?
[08:43] <mthaddon> noodles775: and why does make static have anything to do with that?
[08:44] <noodles775> mthaddon: no idea - I was just looking for why that specific error was occurring, but it could be that other things are being run with 2.4 too (but that's just guesswork).
[08:45] <noodles775> mthaddon: scratch that - I just looked at the actual pygettextpo/Makefile - it's explicitly setting 2.4 for some reason.
[08:47] <noodles775> mthaddon: so it's actually line 858 where make static is failing...
[08:47] <mthaddon> noodles775: of which file?
[08:48] <noodles775> your first paste.
[08:48] <stub> Doesn't that get overridden on the command line from the sourcecode/Makefile?
[08:49] <mthaddon> noodles775: yep, I know there's something wrong with "make static" - question is, what
[08:50] <mthaddon> noodles775: fwiw, it looks like we're getting the same error on all servers - so it seems to be a general problem with make build, not just make static
[08:52] <mthaddon> noodles775: scratch that, no, I think it's only make static
[08:53] <noodles775> mthaddon: have you tried running make static on a local checkout? I get: /usr/bin/python2.5: can't open file 'scripts/make-static.py': [Errno 2] No such file or directory
[08:53] <noodles775> make: *** [static] Error 2
[08:54] <mthaddon> noodles775: have you done a make build first?
[08:54] <noodles775> mthaddon: yarp.
[08:56] <mthaddon> hmm, I don't see a make-static.py either
[08:56] <mthaddon> but it's definitely in the production branch
[08:57] <mthaddon> er, edge branch, I mean
[08:57] <mthaddon> noodles775: er, actually, it's not...
[08:57] <noodles775> OK, that's progress :)
[08:58] <mthaddon> yarp
[08:59] <noodles775> mthaddon: what was the previous version that was running on edge? (just so I know how far back to look)
[09:00] <mthaddon> noodles775: 10081
[09:17] <mthaddon> noodles775: making any progress?
[09:18] <noodles775> mthaddon: I've been through all the commit messages back to 10081 and can't see anything relevant... a new bzr version, but that's it (and I don't see how that would affect this).
[09:18] <mthaddon> noodles775: can you figure out which revision removed make-static.py?
[09:18] <noodles775> mthaddon: I'm confused about make-static.py - I can't see it mentioned in the log of scripts...
[09:19] <noodles775> BjornT: Are you around? If so, you might be able to shed some light on the above?
[09:20] <mrevell> Morning all
[09:20] <noodles775> Morning mrevell
[09:54] <BjornT> noodles775: no, i'm not around, i'm getting ready for the trip to nz. the issue you mention doesn't ring any bells
[09:54] <noodles775> BjornT: We found the issue, thanks for letting me know, and I'll see you in a few days!
[09:56] <noodles775> (for anyone interested, the losa's hadn't been notified that the deployment script would need to do a 'make css_combine' instead of the old 'make static', as I understand it.
[12:47] <james_w> was there an edge rollout last night?
[12:48] <noodles775> james_w: yes there was, but there were some issues with the css styles, so currently it's using an older stylesheet.
[12:48] <james_w> I don't care about the stylesheet ;-)
[12:48] <noodles775> Great :)
[12:48] <james_w> thanks
[12:52] <james_w> could someone submit https://code.edge.launchpad.net/~james-w/launchpad/sync-source-negative-versions/+merge/16861 for me please?
[12:53] <james_w> assuming that it wasn't that gmb did and it was rejected or similar
[13:20] <mrevell> en/nick mrevell-luncheon
[13:57] <gmb> james_w: Er... that should have been submitted.
[13:57]  * gmb really hopes that hasn't been in ec2 for 24 hours...
[13:57] <gmb> I'll check
[13:57] <james_w> thanks
[14:00] <gmb> james_w: Well, it's not running; it just appears to have vanished. I'll run it again.
[14:00] <james_w> thanks
[14:10] <gmb> james_w: Running now.
[14:24] <Ursinha> sinzui, hi! Are the GoneError oopses real oopses or should we remove them from the exception section of the summaries?
[14:24] <Ursinha> sinzui, https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1467S201 , an example
[14:25] <sinzui> Ursinha: The are like 404s. They are not application errors. They are people visiting suspended user pages
[14:25] <Ursinha> sinzui, I thought so, but wanted to confirm. I'll talk to matsubara about it, thanks
[14:27] <EdwinGrubbs> leonardr: ping
[14:32] <leonardr> edwingrubbs, hi
[14:34] <EdwinGrubbs> leonardr: I was wondering if you were familiar with any problem in either launchpadlib or lazr.restful that would cause named operations to be ignored. I've put in a bunch of debug points, and the ws.op exists on the request side but disappears on the server side.
[14:35] <leonardr> edwingrubbs: does it show up in the wadl document? and what is the response when you invoke the operation?
[14:36] <EdwinGrubbs> leonardr: I know it shows up in the wadl, since launchpadlib gives me an error when I don't provide the right parameter name. When I run it with the right parameter name, I just get back the json representation of the object.
[14:36] <leonardr> and on the server side, where does 'ws.op' disappear?
[14:40] <EdwinGrubbs> leonardr: I'm not sure. It's already gone by do_POST().
[14:41] <Ursinha> stub, Chex, rockstar, noodles775, jtv, sinzui, allenap: Prod. meeting in 20 mins in #launchpad-meeting @ Freenode
[14:42] <Ursinha> anyone willing to represent foundations?
[14:42] <allenap> Ursinha: Gah, I won't be here. I'll ask someone else to represent bugs. intellectronica, would you be able to cover for me?
[14:43] <intellectronica> allenap, Ursinha: sure
[14:43] <Ursinha> thanks allenap and intellectronica
[14:43] <allenap> intellectronica: Thank you :)
[14:43] <leonardr> edwingrubbs: put a debug point in ReadWriteResource.__call__ and check on self.request.form.get('ws.op') in there
[14:45] <sinzui> Ursinha: The meeting was moved to 16:00 UTC.
[14:45] <Ursinha> #*&*$&%
[14:45] <Ursinha> indeed
[14:46] <sinzui> Ursinha: The team leads meeting is a 15:00 UTC
[14:46] <Ursinha> sinzui, thanks
[14:50] <EdwinGrubbs> leonardr: by the time ReadWriteResource gets the form, it's empty.
[14:53] <Ursinha> so: stub, Chex, rockstar, noodles775, sinzui, intellectronica: Prod. meeting in 1h10 mins #launchpad-meeting @ Freenode
[14:53] <EdwinGrubbs> leonardr: I discovered the error. I was trying to call launchpad.me.join(team=guadamen). It works with launchpad.people['no-priv'].join(team=guadamen), so I guess it was losing the args in some sort of redirect.
[14:53] <leonardr> aha
[14:53] <intellectronica> Ursinha: thanks for the update. by then allenap might be back. either way one of us will join
[14:54] <leonardr> edwingrubbs: that's the downside of delayed binding
[14:54] <EdwinGrubbs> leonardr: do you want me to open a bug for that?
[14:54] <leonardr> i don't know if there's anything we can do...
[14:54] <leonardr> the http standard says if you POST and get a redirect, you should not re-POST without user confirmation
[14:55] <leonardr> but yeah, open a bug and i'll figure it out later
[14:55] <EdwinGrubbs> ok
[15:16] <allenap> intellectronica: I'm back so I'll do the meeting. Thanks anyway.
[15:22] <Ursinha> salgado-lunch, leonardr, I'd appreciate to have a foundations person joining the prod. meeting in 40 minutes, if possible :)
[15:27] <leonardr> ursinha: i'll join if it's understood that i'll have absolutely no idea what you're talking about
[15:29] <Ursinha> leonardr, :) there is a weekly production meeting, a contact of each team is supposed to be there to represent it
[15:29] <salgado> Ursinha, I'm about to start a call with flacoste.  if I finish before the meeting, I could join too
[15:29] <Ursinha> salgado, the meeting is in 30 mins
[15:29] <flacoste> salgado: you'll be done, i have a call with IS at that time
[15:29] <Ursinha> good :)
[15:29] <leonardr> i think salgado would be a better choice
[15:29] <Ursinha> leonardr, that's ok, but thanks anyway
[15:45] <bac> hi leonardr -- i just noticed the cache and credential in ~/.launchpadlib are in different places now (http://pastebin.ubuntu.com/352974/).  was this intended?
[15:46] <leonardr> let me see
[15:46] <bac> leonardr: specifically, the cached stuff is no longer in the 'cache' subdirectory
[15:46] <bac> leonardr: and credentials is now a subdirectory of cache.  very confusing
[15:47] <bac> leonardr: the layout shown was just created from scratch using the tool version in launchpad devel
[15:47] <leonardr> that looks like a snafu
[15:47] <bac> is that worse than a fubar?
[15:47] <leonardr> no, a fubar would be worse
[15:47] <bac> ah
[15:48] <leonardr> i'm looking into it now
[15:48] <bac> leonardr: thanks!
[15:50] <salgado> Ursinha, do I have to say anything besides "me" when the meeting starts?
[15:52] <Ursinha> salgado, no, unless asked :)
[15:53] <Ursinha> (and you will :P)
[15:53] <Ursinha> stub, Chex, rockstar, noodles775, sinzui, allenap, salgado: Prod. meeting in 7 mins in #launchpad-meeting @ Freenode
[15:58] <beuno> thumper, rockstar, abentley, I don't know which of ypou implemented de "related merge proposals" bit in the commit emails, but it's super nice, thank you
[15:58] <abentley> beuno: You're welcome.
[16:01] <Ursinha> stub, Chex, rockstar, noodles775, sinzui, allenap, salgado: Prod. meeting now in #launchpad-meeting @ Freenode
[16:01] <jtv> adiroiban: you still need to create that translations export branch...  I wouldn't wait for us to start doing that automatically.
[16:01] <adiroiban> jtv: sure. np
[16:02] <adiroiban> jtv: still strugling with adapters and delegates
[16:04] <jtv> adiroiban: just registering the adapter didn't create the URLs for you?
[16:05] <adiroiban> jtv: I don't know how to register it. I have removed the IHasTranslation interface from IProductPublic
[16:13] <jtv> adiroiban: (sorry for absence; some brush fires)
[16:13] <jtv> adiroiban: if you look for "adapter" in lib/lp/translations/configure.zcml, you'll see how to register one.  It's pretty simple.
[16:13] <leonardr> bac, can you tell me launchpadlib.__version__?
[16:14] <bac> leonardr: 1.5.4
[16:15] <bac> '/home/bac/canonical/lp-sourcedeps/eggs/launchpadlib-1.5.4-py2.5.egg/launchpadlib/__init__.pyc'
[16:15] <leonardr> bac: ok, can i also have the code you're using to get credentials?
[16:15] <bac> leonardr: i'm just using login_with
[16:15] <jtv> adiroiban: aiui the "factory" is something that gets called to produce an ITranslationPolicy-implementing object from e.g. an IProduct-implementing object.  We use the class itself as the factory, so that just means "construct an object of this class."
[16:16] <leonardr> bac: i'm asking you seemingly trivial questions because i can't duplicate the problem. what's your login_with call look like?
[16:17] <jtv> adiroiban: so you'd say something like,
[16:17] <jtv> <adapter factory="lp.translations.browser.TranslationsPolicy" provides="lp.translations.interfaces.ITranslationsPolicy" for="lp.registry.interfaces.product.IProduct" trusted="yes"/>
[16:17] <adiroiban> jtv: sorry for the  delay. Right now, I am attenting the Ubuntu translation meeting
[16:17] <bac> leonardr: lp = Launchpad.login_with('interactive', 'dev')
[16:18] <jtv> adiroiban: ah, I'm in the launchpad production meeting.  :)
[16:18] <adiroiban> jtv: i see. thanks! :)
[16:18] <bac> leonardr: let me investigate some more
[16:21] <bac> leonardr: i do recall now i made one tiny, "innocuous" change to the launchpadlib.launchpad in that egg to get login_with to work.  seems there was a bug regarding aliased service_roots
[16:31] <bac> leonardr: i removed the changes i made to launchpadlib's egg and now definitely have the released 1.5.4.
[16:31] <bac> leonardr: here is a transcript to reproduce the problem: http://pastebin.ubuntu.com/352999/
[16:37] <adiroiban> jtv: there is already an adapter for lp.registry.interfaces.product.IProduct
[16:44] <jtv> adiroiban: providing IHasTranslationGroup?
[16:44] <adiroiban> jtv: no. but right now I don't understand how those configuration are used in Zope/LP
[16:46] <adiroiban> so I still need to do more reading
[16:46] <jtv> adiroiban: it's a bit of a black art to me as well, but the zcml basically tells zope how the views, interfaces, and templates combine and what URL goes where.  In principle, I think registering an adapter for IProduct providing IHasTranslationGroup should tell it enough to know that a +changetranslators can go at the end of a URL for a product.
[16:48] <adiroiban> jtv: as I start I tried to understand these slides http://rhodesmill.org/brandon/adapters/
[16:48] <adiroiban> do you know other generic documentation/examples
[16:49] <jtv> adiroiban: only the ones in LP, really
[17:02] <intellectronica> allenap: call?
[17:02] <allenap> intellectronica: Yes. Do you have your headset, or shall I ring on the mobile?
[17:03] <intellectronica> allenap: i have my new fancy headset, so let's try skype
[17:04] <allenap> intellectronica: Right, I think we covered everything there. Pub?
[17:04] <adiroiban> jtv: how factory="lp.translations.browser.TranslationsPolicy" should be implemented?
[17:05] <jtv> adiroiban: well in this case (and afaik for all other adapters we have) the factory is the class!
[17:06] <adiroiban> jtv: sorry for all these dumb questions. maybe I should leave this bug to be fixed by someone else and then try to understand the solution
[17:06] <jtv> adiroiban: as I understand the logic, a factory is anything that zope can call, passing in an (in this case) IProduct as a parameter, to get (in this case) an IHasTranslationGroup (or ITranslationPolicy once we rename it).
[17:07] <jtv> What happens in Python when you get a reference to a class, and you try to "call" it?  You get the constructor.
[17:07] <jtv> So the factory is simply TranslationPolicy.__init__
[17:08] <maxb> __init__ isn't really a constructor
[17:08] <jtv> maybe my C++ background is showing here :)
[17:09] <maxb> The thing which is callable to create a new instance is the class itself. i.e. TranslationPolicy not TranslationPolicy.__init__
[17:09] <jtv> maxb: thank you, much clearer than I could say it
[17:10] <jtv> adiroiban: what that zcml line I showed you says is really, "if you have an IProduct p and you want to create an IHasTranslationGroup, you get it by doing TranslationPolicy(p)"
[17:11] <jtv> adiroiban: once you have that zcml line, in the code you'll be able to do simply IHasTranslationGroup(p) to get an IHasTranslationGroup that "wraps" p.
[17:12] <adiroiban> jtv: this is my TranslationPolicy
[17:12] <adiroiban> http://paste.ubuntu.com/353015/
[17:14] <jtv> adiroiban: that looks fine... the __init__ you have there implements the "wrapping" of whatever "context" is such that it implements ITranslationPolicy.
[17:14] <adiroiban> things are more complicated
[17:14] <adiroiban> http://paste.ubuntu.com/353013/
[17:15] <adiroiban> this is what I get when trying to access a product
[17:15] <jtv> argh, I hate zope tracebacks
[17:16] <jtv> but I think it may not be so complicated in principle...
[17:16] <jtv> +portlet-translation-groups-and-permission obviously tries to display the product's translation group & access model.
[17:17] <jtv> But you just took those out of the IProduct interface.
[17:18] <jtv> ah, it's already working on IHasTranslationGroup
[17:20] <jtv> adiroiban: I guess this means that we now suddenly have 2 browser:page entries for IHasTranslationGroup
[17:20] <jtv> Wouldn't expect that to be a problem though...
[17:22] <jtv> adiroiban: I guess you renamed IHasTranslationGroup to ITranslationPolicy already, even in the zcml?
[17:23] <adiroiban> yes
[17:26] <jtv> adiroiban: I could imagine there being a problem because the portlet also wants to access information that's in IProduct but not in ITranslationPolicy (it probably does, come to think of it) but I wouldn't expect the error to look like this.
[17:26] <jtv> Maybe sinzui knows.
[17:29] <jtv> sinzui, would you be able to help adi with this?
[17:30] <sinzui> jtv: adiroiban: I am not very familiar with this error. I agree that this looks like an object has the same named adapter (view) for two interfaces. I think this can be solved by only specifing the name for specific interfaces instead of the general interfaces to ensure there is no overlap
[17:30] <sinzui> I do not know which interfaces are specific in this case.
[17:32] <jtv> sinzui: one basic question I wasn't sure about: if we register an adapter from IProduct to IFoo, and we have a page for IFoo with name '+foo', is that enough to create a page <canonical_url(product) + '/+foo' ?
[17:33] <jtv> adiroiban: btw it may be useful to run "make harness" and ensure that ITranslationPolicy(my_product) gives you a working TranslationPolicy.
[17:44] <adiroiban> jtv: hm... ITranslationPolicy(my_product) or TranslationPolicy(my_product) ?
[17:44] <adiroiban> i went for TranslationPolicy(my_product)
[17:47] <sinzui> https://edge.launchpad.net/people claims there more than 1 million registered users in launchpad. I suspect that is a lie, but cannot prove it
[17:57] <adiroiban> jtv1: this is what I got http://paste.ubuntu.com/353037/
[17:58] <jtv1> adiroiban: you should construct it as ITranslationInterface(product), not TranslationInterface(product)
[17:58] <jtv1> The former goes through your adapter; the latter just goes straight to TranslationPolicy.__init__
[17:58] <jtv1> (sorry typo; it's Friday here :)
[18:00] <adiroiban> jtv: tried with ITranslationPolicy ... but same error
[18:02] <jtv> adiroiban: maybe you also need an implements(ITranslationPolicy) in TranslationPolicy.
[18:03] <jtv> What surprises me is that TranslationPolicy _is_ getting an unproxied Product (the effect of the trusted="yes" in the zcml, something flacoste suggested) and yet we get this error...  it's not a missing underscore in translationpermission or anything silly like that?
[18:04] <jtv> I mean, there still is a Product.translationpermission, right?
[18:05] <jtv> very annoying: nonexistent attributes and non-allowed ones give you the exact same error
[18:05] <adiroiban> >>> new_product.nonexistentattibute
[18:05] <adiroiban> Traceback (most recent call last): File "<console>", line 1, in <module>
[18:05] <adiroiban> AttributeError: 'TranslationPolicy' object has no attribute 'nonexistentattibute'
[18:06] <jtv> ah, but that's different—it's not getting delegated to Product
[18:06] <mrevell> night
[18:06] <jtv> Someone 5 timezones behind me just said "night" and left.  Maybe I should do the same.
[18:07] <adiroiban> jtv: that's sign
[18:07] <jtv> no, 7 timezones
[18:07] <adiroiban> jtv: don't worry, we can dig into this problem tomorrow
[18:07] <jtv> adiroiban: you didn't remove Product.translationpermission or anything, did you?
[18:07] <jtv> owww, ah!
[18:08] <adiroiban> jtv: well... I removed the interface
[18:08] <adiroiban> so it is no longer inherited
[18:09] <jtv> adiroiban: you may need to specify in zcml that ITranslationPolicy is allowed for a Product or something along those lines...
[18:10] <jtv> no, that doesn't make sense
[18:11] <adiroiban> jtv: I think that part is implemented. This is the part http://paste.ubuntu.com/353044/
[18:11] <jtv> lib/lp/translations/configure.zcml may have to say <class class="lp....TranslationPolicy"><allow interface="lp....ITranslationPolicy"></class>
[18:12] <jtv> so new <class> entry for your new class.
[18:13] <jtv> (a much simpler version of what you show for Project here)
[18:16] <jtv> adiroiban: I'm really going now.  Good night, talk to you tomorrow!
[18:17] <adiroiban> jtv: good night. Thanks for your support!
[18:17] <jtv> thanks for working on it, hope you'll find it all worthwhile in the end :)
[18:32] <sinzui> EdwinGrubbs: I thought bac was also working on Bug 451208
[18:32] <mup> Bug #451208: email address revealed when subscribing someone else to a bug <Launchpad Registry:In Progress by edwin-grubbs> <https://launchpad.net/bugs/451208>
[18:33] <bac> sinzui: not yet
[18:33] <bac> sinzui: it was my plan
[18:33] <bac> but i hadn't claimed it
[18:33] <sinzui> okay, then all is well because EdwinGrubbs took it
[18:34] <EdwinGrubbs> sinzui, bac: oops, I haven't done anything, so you can have it if you'd like.
[18:34] <sinzui> bac: I have been a bad engineer. Instead of making my ubuntu-link-upstream mockups this morning, I suspend about 300 spammers
[18:34] <bac> EdwinGrubbs: i'm indifferent.  i'll take it if there is something else you'd like to do
[18:35] <sinzui> EdwinGrubbs: take the bug.
[18:35] <EdwinGrubbs> I'll keep it
[18:36] <sinzui> salgado: ping
[18:37] <salgado> hi sinzui
[18:37] <sinzui> salgado: does the process that removed shipit users from launchpad keep the person entry in the db?
[18:38] <salgado> sinzui, that's exactly what it was supposed to remove
[18:38] <sinzui> salgado:  oh
[18:39] <sinzui> salgado: /people says we have more than 1 million registered launchpad users. Even though it is included deactivated and suspended accounts, I suppose that number is pretty close.
[18:39] <salgado> lpmain_staging=> select count(*) from person where teamowner is null;
[18:39] <salgado>  count
[18:39] <salgado> --------
[18:39] <salgado>  987760
[18:39] <salgado> (1 row)
[18:41] <sinzui> interesting. you did not discount merged, and you number is much lower than the number on https://edge.launchpad.net/people
[18:42] <salgado> that's weird.  maybe the spammers are hitting us hard since the last db restore on staging
[18:44] <sinzui> I considered that, I was investigating, mail.ru which has 1000 registrants in the last 60 days, but they look good
[18:46] <sinzui> salgado: I do not see a spike in registrants. I think the staging data is older than the code.
[20:02] <thumper> morning
[20:31] <flacoste> hi thumper
[20:31] <thumper> flacoste: hi, just finishing up with the stand up
[20:35] <thumper> flacoste: yes?
[20:35] <flacoste> thumper: nothing, was just saying hi :-)
[20:35] <thumper> hah
[20:35] <thumper> hi
[20:53] <Edwin-lunch> sinzui, bac: bug 504446 looks like just another instance of the problem where assertProperty() needs to be changed to waits.forElementProperty() to become less fragile.
[20:53] <mup> Bug #504446: Spurious failures in test_project_licenses <spurious-test-failure> <Launchpad Registry:Triaged by edwin-grubbs> <https://launchpad.net/bugs/504446>
[20:54] <sinzui> ^ thumper, rockstar: Edwins's look into the registry bugs may be relevant to your bugs.
[20:54] <rockstar> Edwin-lunch, that might very well be the issue.
[20:54] <thumper> sinzui: ah, thanks
[20:56] <sinzui> Edwin-lunch: bac: I suggest the two of you have a pre-imp call about both windmill tests. Bac can make all the changes and Edwin-lunch can review them. I will be the fixer next time and bac can be the reviewer
[20:59] <al-maisan> hmm .. I am running "utilities/ec2 test" and at this point I am being prompted for a key:
[20:59] <al-maisan> ec2test@i-b17a52d9$ bzr branch bzr+ssh://bazaar.launchpad.net/~launchpad-pqm/launchpad/devel /var/launchpad/test
[20:59] <al-maisan> what password/key is required here?
[21:00] <al-maisan> I tried several ssh key passwords and none would work..
[21:00] <bac> al-maisan: are you using the option to land the branch?  -s i think?
[21:00] <al-maisan> bac: yes
[21:00] <bac> that should be your GPG passphrase
[21:00] <al-maisan> ah
[21:00] <al-maisan> will try that
[21:00] <rockstar> al-maisan, does your ssh key that you use to connect to Launchpad have a passphrase?
[21:01] <al-maisan> thanks bac
[21:01] <bac> ec2 has to sign it for you to send to PQM
[21:01] <rockstar> bac, it looks like he's launched ec2 already.
[21:01] <al-maisan> rockstar: that's right ec2 is launched already
[21:02] <rockstar> al-maisan, so it shouldn't be your gpg key.  I'm wondering if it's trying to use an ssh key it got from you.
[21:02] <al-maisan> rockstar: http://pastebin.ubuntu.com/353116/
[21:02] <al-maisan> rockstar: what does " it got from you." mean?
[21:03] <rockstar> al-maisan, I'm wondering if part of the script uploads your private key to the ec2 instance.
[21:04] <rockstar> al-maisan, it's trying to make an ssh connection to bazaar.launchpad.net
[21:04] <al-maisan> rockstar: yes, the password it asks for is for a private key
[21:04] <mwhudson> rockstar: no
[21:04] <mwhudson> it uses agent forwarding
[21:04] <al-maisan> that's what the prompt says at least
[21:04] <rockstar> mwhudson, ah, okay.
[21:05] <rockstar> mwhudson, so why is it asking for a passphrase?
[21:05] <mwhudson> al-maisan: there are two ssh auths going on in this line
[21:05] <mwhudson> al-maisan: the connection to the ec2 instance
[21:05] <mwhudson> al-maisan: and the connection from there to launchpad
[21:05] <al-maisan> I see.
[21:05] <al-maisan> I guess it is the latter that;s at stake here
[21:06] <mwhudson> maybe
[21:06] <mwhudson> al-maisan: somewhere not far back in the output it will be saying "you can now use ssh -A ec2test@blah to log in to the instance"
[21:06] <mwhudson> al-maisan: can you try that line?
[21:08] <al-maisan> I am being blocked by a modal dialog
[21:09] <al-maisan> Here's what the latter says: "Title : unlock private key"
[21:09] <al-maisan> Body: An application wants access to prvate key <whatever> but is locked
[21:11] <al-maisan> now I am getting one of these: "IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!"
[21:11] <al-maisan> please see: http://pastebin.ubuntu.com/353122/
[21:11]  * al-maisan needs to stop and go through the all-important airport security checks now
[21:12] <al-maisan> Good night!
[21:12] <mwhudson> al-maisan: good night
[21:47] <EdwinGrubbs> sinzui: do you know what would prevent getUtility() from applying a security wrapper?
[21:48] <mwhudson> EdwinGrubbs: is it registered as a securedutility?
[21:48] <sinzui> EdwinGrubbs: getUtility uses the rules specified in zcml: <utility> or <securedutility>
[21:53] <EdwinGrubbs> sinzui: it's a vocabulary, and it looks like all vocabularies are registered with <utility> instead of <securedutility>. Is there a reason for that?
[21:54] <sinzui> EdwinGrubbs: I do not know of one.
[21:55] <sinzui> EdwinGrubbs: it is in lp/registry/vocabularies.zcml ?
[21:55] <EdwinGrubbs> sinzui: yes
[21:55] <sinzui> I Extracted those from the launchpad zcml. It was a simple move operation
[21:56] <EdwinGrubbs> sinzui: since the picker uses a view which exposes huge vocabularies, I really need them all the be securedutilities. I guess I should send out an email before I do anything that widespread.
[21:57] <sinzui> EdwinGrubbs: agreed. flacoste, BjornT, and gary may have some insight into the issue
[21:58] <sinzui> EdwinGrubbs: ValidPerson and ValidTeam are the issue here?
[21:58] <flacoste> EdwinGrubbs: why do you need a securedutility?
[21:59] <flacoste> securedutility is a LP addition
[21:59] <flacoste> which makes sure the utility is security wrapped
[21:59] <flacoste> in the end, it shouldn't matter much
[21:59] <sinzui> flacoste: we do not want to to show user email addresses if the user set them hidden
[21:59] <flacoste> then do it
[22:00] <EdwinGrubbs> ok
[22:00] <sinzui> EdwinGrubbs: When I search for barry to assign bugs to him, I expect to see his full name, and <email address hidden>  instead of his email address
[22:02] <EdwinGrubbs> ok
[22:03] <EdwinGrubbs> bac: how did you go about hiding the name of private teams?
[22:04] <sinzui> EdwinGrubbs: if you try to access it, without privilege, it returns <name hidden>
[22:05] <bac> EdwinGrubbs: look at TeamFormatterAPI
[22:05] <sinzui> EdwinGrubbs: use team/displayname/fmt:displayname
[22:06] <EdwinGrubbs> sinzui: hmm, I'm not sure if it would be worthwhile to do something like that for email addresses, since they are displayed that often in templates.
[22:07] <sinzui> EdwinGrubbs: we do not seem to have a problem anywhere but here and in merge
[22:07] <EdwinGrubbs> flacoste: do you foresee any problems with using securedutility for all the vocabularies, since the view the picker uses exposes all huge vocabularies?
[22:08] <flacoste> EdwinGrubbs: no, i don't
[22:08] <EdwinGrubbs> cool
[22:08] <flacoste> EdwinGrubbs: well, you might have a few test failures, but nothing serious
[22:08] <sinzui> EdwinGrubbs: In there profile page, there is an adapter view adapter that determines if th user can see the address and provides the list that can be seeen
[22:12] <EdwinGrubbs> sinzui: are you just talking about the view.visible_email_addresses attribute? I saw that. I could move that into a real adapter to make it easy to use outside of that view.
[22:13] <sinzui> EdwinGrubbs: Certainly if it helps to other parts of the code. It may be over engineers for other parts of launchpad. the profile page rules were difficult to test when it was written in tales
[22:21]  * thumper heading for coffee
[22:44] <wgrant> Can somebody please copy egenix-mx-base in lucid from wgrant/launchpad to launchpad/ppa? There's a new version in the primary archive that needs to be clobbered.
[22:53] <mwhudson> jml: hello
[22:53] <jml> mwhudson, hi
[22:54] <mwhudson> jml: have a moment for a call?
[22:54] <mwhudson> sort of mid-imp call i guess
[22:54] <jml> mwhudson, after my call w/ beuno, sure.
[22:54] <mwhudson> jml: when is that? ongoing?
[22:54] <jml> mwhudson, yeah.
[22:54] <mwhudson> jml: ok, ping me when you're done?
[22:55] <jml> mwhudson, will do.
[22:55] <mwhudson> thanks
[23:11] <jml> mwhudson, ping
[23:12] <mwhudson> jml: hi
[23:12] <jml> mwhudson, is now good?
[23:12] <mwhudson> jml: having said the above
[23:12] <mwhudson> jml: would 30 mins or so be ok with you?
[23:12] <jml> mwhudson, yeah, that'd be fine.
[23:12] <mwhudson> cool
[23:12] <jml> better even.
[23:12]  * mwhudson afk to go and shout at dick smith's for sending emma the wrong hard drive
[23:13] <mwhudson> (sadly, they sent us the $140 one when she paid $220, i guess if it was the other way around...)
[23:17] <wgrant> That's what you get for buying hardware from such places...
[23:48] <jml> sql ninjas?
[23:48] <jml> if I'm doing a query, how can I map the enum integer to a human-readable name?
[23:53] <thumper> jml: case??
[23:54] <jml> thumper, got it...
[23:54] <jml> thumper, http://paste.ubuntu.com/353199/
[23:55] <thumper> jml: why not use the branch.prefix thingy?
[23:55] <jml> thumper, branch.prefix thingy?
[23:56] <thumper> target_suffix
[23:56] <thumper> instead of product.name or package.name
[23:56]  * thumper shrugs
[23:56] <thumper> whatever
[23:57] <jml> thumper, because I need to get the upstream product corresponding to the sourcepackage anyway