dilysNew bug 2160 for Launchpad/Soyuz: Nuclear explosion when no string is input in package search 12:14
=== kiko-fud is now known as kiko
kikodilys, wake up.12:45
kikoI filed at least 10 bugs 12:45
=== BradB is now known as BradB|food
dilyskiko: I'm sorry, I wasn't paying attention01:03
dilyskiko: care to file them again?01:03
kikoI noticed.01:03
kikowell, that's not a very good answer, now is it?01:03
dafwhat did you file them against?01:03
dafDilys isn't necessarily subscribed to all products01:04
kikoshe probably watches stevea, come to think of it.01:04
kikoshe should also watch me 01:04
kikothere are no product watches in bugzilla currently01:04
dafthey would be handy01:05
kikothere are bugs filed on it, but you know..01:05
kikowild, over 60 spamcop reports for my enjoyment01:06
dafok, I've subscribed Dilys to you01:06
dilyskiko: spam me harder!01:08
=== stub [~stub@dsl-] has joined #launchpad
=== elmo [~james@] has joined #launchpad
stubelmo: Is it possible to turn off certificate authentication on bugzilla.warthogs.hbd.com for connections from Mawson?01:41
=== BradB|food is now known as BradB
BradBstub dude, we need a browser:widget not-subdirective!02:33
BradBoh, just random Z3 thoughts if you were looking for something to hack today that we'd make use of.02:34
stubI don't understand what you are asking for ;)02:35
BradBcurrently, if you want to change the attributes of a widget, e.g. the size of an input, you have to make that change in every form it applies to02:35
BradBusing the browser:widget subdirective02:35
BradB        <browser:widget02:35
BradB           field="title"02:35
BradB           class="zope.app.form.browser.TextWidget"02:35
BradB           displayWidth="55" />02:35
BradB(that's inside a browser:editform)02:35
BradBi want to be able to change widget configuration globally, and if *needed* change it per form, with the subdirective.02:36
stubSo you want to be able to say <browser:widget for=".whatever.IBug" field="title" class="whatever" displayWidth="55" />02:37
stubI believe this can already be done in Python btw - just not in ZCML02:37
BradByes....it can?02:38
BradBPhilipp didn't mention that, if that's the case. It may be though.02:39
stubIn the IBug schema definition I think you can pass keyword arguments that get sent through to the widget (dislayWidth="55"), and change the field used to render it. (Or if not, you can alway subclass TextField into BugTitleField which does this)02:40
BradBsubclassing takes too much effort when you consider we may want to do this dozens and dozens of times for different fields.02:41
stubYup - I'll chase it up and see if it is doable without subclassing.02:41
stub(just with keyword arguments)02:41
BradBis what philikon started hacking up02:42
daf" A system error occurred."02:44
BradBthat's already been reported02:44
stubI thought I'd turned on tracebacks by default?02:45
BradBah, we needed to bug SteveA about that today (which was noted in the bugzilla report...maybe he didn't notice)02:45
BradBstub: on prod apps?02:45
stubOn dogfood for now02:45
BradBthat's the real app though02:45
BradBbtw, i'm currently fixing malone bugs 13, 14, 15, 16 and 3002:46
BradBif i land my changes though, summary disappears :P02:46
BradBwhich everyone thus far has agreed to be A Good Thing...we just need to convince sabdfl ;)02:47
=== stub wipes his eyeballs
stubI've got an email ready to send on that02:47
BradBheh yep. i'd only have added that the description of a bug that the steps to reproduce it are too tightly coupled to make decoupling them into two fields a sane thing.02:54
BradBs/that the/and the/02:55
stublifeless: ping02:55
stublifeless: What was that field you were having UTF-8 encoding issues with that was going to be dropped? You didn't know what character set encoding it was in (I think it was a changelog of some kind)02:56
kikoI had a problem with ChangeLogs in gina, for the record..02:56
stubI think the argument about lazy changelogs is redundant then, because it is pointless storing them in the database at all (unless we heuristically guess the encoding - probably a 98% success rate)02:58
stubAnd gpg keys could also go into the librarian, since there is no meaningful operations we can perform on them inside postgresql02:59
kikotrue on both counts, though searching through changelogs, well..02:59
kikoI solved the ChangeLog import by using a "smart" conversion routing that seemed to do a decent enough guess.03:00
stubok - so we are using heuristics to guess the encoding (which is good)03:02
kikoyou actually have that code in your tree, look at gina's db.py:ensure_string_format -- caveat hack03:04
kikoah, btw.03:06
kikoI have a patch to suggest to you, a successor to the Makefile fix I sent you once (that you disliked).03:06
stubkiko: That charset stuff seems broken - at the moment is is doing some redundant operations and may return either a utf-8 encoded string or a Unicode string03:14
stubI'll knock up a similar one in lp/encoding.py for everyone03:19
kikostub, what's the difference between them?03:19
kikoor were you not referring to gina/database.py?03:19
stubA UTF-8 string is just a sequence of bytes which can be written to files, sent over tcp sockets etc. but is useless unless everyone who uses it *knows* it is a utf-8 encoded string (and not a shift-jis encoded string, or iso-8859-1 etc.). A Unicode string is an object that abstracts out the need to know the encoding (it knows it for you, and hides it from you).03:23
stubopen('foo.txt','w').write(u'A Unicode string') will fail 03:23
kikoI see what you mean.03:24
=== mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad
lifelessstub: erm, it was title I think.03:25
kikostub, AIUI that code will always return a unicode object, no?03:40
stubNo - if the first bit raises a Unicode error, the second bit returns a UTF-8 encoded string (s = name.decode("latin-1").encode("utf-8"). The next line doesn't modify s, and the line after returns s (still UTF-8 encoded)03:47
kikobut what we receive is also a utf-8-encoded string, stub04:01
kikoor else decode/encode would raise an error in the first clause.04:01
kikoam I mistaken? I tested this quite a bit and it was the only setup that got output that made sense..04:01
lifelesskiko: ASCII strings pun as UTF-8 by definition.04:01
lifelessUTF-8 doesn't pun as ascii though.04:02
kikoso the code there basically tries to decode and reencode as utf-8, and if it fails, it's not utf-8 and I can try decoding as latin-1 04:02
kikobut maybe I'm on crack, I'm dead sleepless04:03
stuboh - yes. both return utf-8. The redundant code confused me.04:03
kikowhich code is redundant? 04:03
kikothe test decode and return bits?04:03
stubname.decode("utf-8").encode("utf-8") should just be name.decode('utf-8'), because we can assume that anything Python encodes as UTF-8 is valid04:04
kikohmmmm. but why would I have done that unless I ran into a problem? :-)04:04
stubAnd the 's.decode('UTF-8') is also unnecessary for the same reason04:04
=== kiko can't remember, but it was some sort of sanity checking.
kikomaybe you're right, it's straining my memory at this point. 04:04
stubIf you happen to have found a sequence of byte such that name.decode('utf-8') does not return a utf-8 encoded string or raise an exception it is a pretty serious bug in Python that will cause data loss04:05
kikoupon which encode('utf-8') should always succeed, I see.04:06
kikookay, time to kick this server's disks.04:07
BradBho ho ho04:12
stubUrgh - ubuntu has packaged up the Japanese-only Python codecs rather than the cjk codecs (which are going into 2.4) :-( Which we need if we want to process email reliably04:27
stubHopefully elmo won't mind installing stuff from Universe onto production...04:27
=== justdave [~dave@] has left #launchpad ["Poof"]
=== doko [doko@dsl-082-082-069-185.arcor-ip.net] has joined #launchpad
dilysNew bug 2168 for Launchpad/Rosetta: recent changes feature07:57
=== ddaa [~ddaa@deep-thought.xlii.org] has joined #launchpad
sabdflBradB: i've already created a Title and Summary widget09:30
=== SteveA_ [~steve@office.pov.lt] has joined #launchpad
=== SteveA_ is now known as SteveA
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== Kinnison [~dsilvers@haddenham.pepperfish.net] has joined #launchpad
=== cprov [~cprov@] has joined #launchpad
KinnisonMorning cprov11:02
cprovKinnison: morning 11:04
=== ddaa [~ddaa@deep-thought.xlii.org] has joined #launchpad
KinnisonMorning ddaa11:07
ddaahello Kinnison11:08
SteveAspiv: ping11:20
=== carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad
=== salgado [~salgado@200-206-134-238.async.com.br] has joined #launchpad
=== kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad
salgadowhat's the preferred way for defining sqlobject columns in launchpad: _columns = [StringCol('foo')]  or foo = StringCol() ?12:46
Kinnisonthe latter apparently12:46
kikothat was in launchpad email, right Kinnison?12:47
KinnisonDunno. sabdfl told me when I was writing some view classes12:47
salgadoI saw lots of places with _columns. that's why I asked12:48
kikoIIRC it was on lp-list12:48
kikowhich reminds me.12:49
Kinnisonsalgado: yeah; old code tends to be _columns12:49
Kinnisonsalgado: new code tends to be the foo = StringCol()12:49
sabdflsalgado: what Kinnison said12:54
Kinnisoncoo; I got something right12:54
=== Kinnison does a dance
=== Kinnison continues prodding at this librarian change for kiko
salgadoKinnison, sabdfl: ok, thanks. 12:54
=== sabdfl ruffles Kinnison's feathers
Kinnisonsabdfl: meep; I have feathers?12:55
=== Kinnison dies of allergic shock
sabdflerm, I think I'm mixing my metaphors12:55
sabdflor drikns12:55
Kinnisonmixing drinks sounds like more fun12:55
Kinnisonsabdfl: I think I've come to the conclusion (wrt. lucille domination) to take the less correct and way easier to implement domination model I invented while trying to go to sleep last night12:56
Kinnisonsabdfl: I'll send a mail to you and elmo when I've finished this librarian stuff for kiko12:56
kikothanks 12:56
sabdflKinnison: ok, sounds sensible12:56
cprovKinnison: which "librarian stuff for kiko" are you talking about ?01:02
Kinnisoncprov: FileDownloadClient.getURLForAlias() mostly01:02
Kinnisoncprov: also an email to the launchpad list detailing roughly how to use the librarian01:02
Kinnisoncprov: also a couple of bits for making sure the filenames are encoded in utf8 properly01:04
cprovKinnison: ehe,  I know what stuff i just don't understand the "for kiko" . is he implementing something that I don't know in Soyuz ?01:05
KinnisonI thought it was kiko who had asked me for it01:05
KinnisonI guess it might have been you01:05
=== Kinnison was getting ready to go shopping when he was asked
cprovKinnison:  I  did it yesterday :), Maybe be kiko did too ...01:07
Kinnisoncprov: heh01:08
KinnisonWould anyone mind if I updated the librarian files only on mawson in order to test this stuff?01:10
kikonot me01:12
kikoI filed a bug on kinni yesterday on the Pending Problem.01:12
KinnisonI just need to update client.py and web.py :-)01:12
Kinnisonkiko: aah that's it :-)01:13
kikocprov, phone01:13
=== salgado is now known as salgado-afk
kikosabdfl, do you have a plan for the "I am a new soyuz user" usecase?01:19
kikosabdfl, I happen to have no password in the database, and I'd like to use the UI to create my user01:19
sabdflkiko: no idea, what will work best?01:20
kikoI believe that is a potential dogfood issue01:20
sabdflyes it is01:20
kikoso let's think about it for a minute01:20
kikofirst, is the soyuz user a launchpad-wide user?01:20
kikoif so, are we answering the launchpad-wide user registration problem?01:21
kikoI pray yes, it's time we dealt with this01:22
KinnisonWho here is a twistd person?01:26
SteveAspiv: ping01:26
SteveAKinnison: spiv knows a lot of twisted.01:26
SteveAbut, perhaps he is having an australia day today01:26
=== cprov [~cprov@] has joined #launchpad
KinnisonSteveA: twisted isn't working like it used to01:28
kikoSteveA, care to participate in the "New Soyuz/Launchpad User" discussion?01:28
SteveAkiko: sure, but when?01:30
cprovSteveA: sabdfl: any objections to talk about it now ?01:31
kikonow would be nice.01:32
sabdflgo ahead01:32
kikoso there are the two questions I posed01:32
kikofirst, is the soyuz user a launchpad-wide user?01:32
kikoif so, are we answering the launchpad-wide user registration problem?01:32
sabdflwhen you add a user to the website, they are added to launchpad01:32
sabdfland that code exists and is in use01:32
sabdflthe more interesting dilemma is when a use for which we have an existing account but no password wants to register01:33
kikoand what if I am registered with another email account, too.01:33
cprovsabdfl: forgottenpassword can help01:34
sabdflcprov: ok01:34
sabdflkiko: we need a "merge person" function01:34
kikosabdfl, definitely. but let me get this cleared up: a launchpad developer, then, needs to rely on other non-UI ways to create users for his database?01:35
kikoIOW, there will be no launchpad-based person creation functionality?01:35
kiko(as in living in lib/canonical/launchpad)01:35
=== salgado-afk is now known as salgado
SteveAkiko: users will be registered, and thus persons created, at various different points in the workflow of the different applications.  What are the current places in launchpad a user might need to register?01:42
SteveAin rosetta, a user can sign up in a straightforward way, but we're interested in a few rosetta-specific things about them too.01:43
kikoshouldn't the user be a "launchpad user".01:44
sabdflkiko: I guess we need (a) a standard way to redirect people at the "register" pages, and (b) a standard way to add a user from within the code01:44
kikoah, now we're talking!01:44
SteveAwhere will "register" pages live?  what domain name / path?01:44
kikofoaf/+register ?01:45
sabdflmakes sense01:45
SteveAok.  for deploying the whole thing ?01:46
kikonow does this contain all the registration information for a rosetta user? for a soyuz user?01:46
kikoor do they have "I am a launchpad user, now I want to use rosetta" setup step?01:46
SteveAperhaps foaf/+register?application=rosetta01:47
SteveAcan add in some rosetta-specific fields01:47
kikowe're still stuck when that user wants to log into soyuz, no?01:48
kikohow do you see the user being presented with register?application=soyuz?01:49
kikoI mean, what would he do to be taken to that page.01:49
SteveAthe "login" page will have a link to "register"01:50
kikowhere does the login page live? :)01:51
SteveAlet's assume we're not doing a centralized single-sign-on just now01:51
SteveAso, I reckon we should have a /+login and a /+register at any particular "/" that is the root of a site we're virtual hosting at01:51
kikoI see.01:52
SteveAbut, the code lives in one place01:52
SteveAthe register code lives in foaf01:52
kikoone thing that makes me curious about this01:52
kikowhat happens to the navigation bar at the top of the screen when we virtualhost?01:52
SteveAkiko: I'm making this up as I go along01:52
kikoI like your ideas, I'm storming too01:52
=== ddaa [~ddaa@deep-thought.xlii.org] has left #launchpad []
SteveAthat's a very good question, and one that I'll be talking with Brad about a bit later today01:53
SteveAfeel free to join in01:53
kikodo all virtualhosts have all tabs available? some? none?01:53
kikoI will definitely join 01:53
SteveAI must think of going to find lunch soon01:53
kikolithuanian people eat early.01:53
SteveAit is 3pm here01:53
kikotaken out of context, that is <wink>01:54
SteveAworking day for one of the programmers here is 12.30pm -> midnight01:54
SteveAkiko: does that sort things out enough for now for you?01:55
SteveAis there anything else we should discuss now, before the meeting later today?01:55
kikoit's getting us somewhere, more discussion is still needed but we'll start considering foaf01:55
kikosalgado could be named foaf fiend01:56
kikolet's ponder that01:56
kiko(cprov suggested it yesterday)01:56
SteveAspiv is in charge of doap and foaf01:56
kikoyes, but he's by himself01:56
kikoand salgado has geographical advantages to him (wrt us at least! :)01:56
SteveAbut, if you want to get started on writing the +register page...01:57
SteveAgo ahead01:57
kikothis needs some daf-brad-consensus as they would be users as well01:57
SteveAyou can get a basic launchpad registration going01:57
SteveAthen we can talk to daf about removing the rosetta one01:58
SteveAand merging what is different into the central one01:58
SteveAsame for malone01:58
cprovSteveA: sure, I'll do the same with soyuz/people/+add01:59
SteveAwe might not even need a ?application=rosetta thing on the end of +register01:59
SteveAonce we've cracked the virtual hosting thing, perhaps it will be able to pick up that it is a rosetta context anyway01:59
SteveAcprov: great01:59
cprovSteveA: I suggest talk about it tomorrow in the Meeting, everybody interesting in02:01
=== spiv wakes up
spivSteveA: pong02:14
Kinnisonspiv: twisted is being a shit wrt. the librarian on mawson02:16
=== Kinnison -> town, I'll be back in 30
spivKinnison: Hmm.  Can I have a slightly more useful bug report? :)02:19
Kinnisonspiv: the root.putChild calls in server.tac appear to have no useful effect because using them results in 4xx responses02:19
KinnisonI'll be more useful when I'm back02:19
spivOk, thanks :)02:20
=== kiko is now known as kiko-fud
=== debonzi [~debonzi@] has joined #launchpad
Kinnisonspiv: back02:50
Kinnisonspiv: I'm just gathering info02:51
KinnisonGET /byalias?alias=1 HTTP/1.002:52
Kinnison400 Unknown command: GET /byalias?alias=1 HTTP/1.002:52
KinnisonIs a fairly good example02:52
Kinnisonroot.putChild('byalias', fatweb.AliasSearchResource(storage))02:52
Kinnisonis in server.tac02:52
Kinnisonspiv: please ignore me for at least the next 10 minutes while I repeatedly hammer my head against the wall02:53
KinnisonFor my next trick; I make sure that we connect 1. to the right port onthe librarian, and 2. to the right f*cking database02:55
KinnisonOkay; seems to be fine now02:56
=== Kinnison kicks lib/canonical/lp/__init__.py
Kinnison>>> from canonical.librarian.client import FileDownloadClient03:00
Kinnison>>> fdc = FileDownloadClient('localhost', 8000)03:00
Kinnison>>> fdc.getURLForAlias(1)03:00
=== BradB reads (some) scrollback
Kinnisoncprov: is that simple enough for you? :-)03:02
cprovKinnison: fantastic03:06
Kinnisoncprov: I'll just test the better urls; one sec03:06
Kinnison>>> fdc = FileDownloadClient('launchpad.ubuntu.com', 8000)03:06
Kinnison>>> fdc.getURLForAlias(1)03:06
Kinnisonthat works too03:06
=== Kinnison tests downloading that file from outside the network
KinnisonOkay; we need elmo to open port 8000 in the firewall I think03:07
cprovKinnison: how to grab the servername from Zope env ? localhost/launchpad.ubuntu.com/gwyddion.gwyddion.com/etc ?03:10
kiko-fudcprov, I see, this bookkeeper thing lives on another port?03:10
Kinnisoncprov: I'm not a zopeist03:10
Kinnisoncprov: you'll have to ask someone who understands how zope is configured03:11
=== doko [doko@dsl-082-082-069-185.arcor-ip.net] has joined #launchpad
cprovkiko-fud: sorry ? bookkeeper ?03:12
cprovKinnison: ok03:12
kiko-fudcprov, libby :)03:12
SteveAcprov: from the request ?03:13
cprovSteveA: sure !03:16
KinnisonRight; I'm happy with this03:21
BradBcprov: request.getApplicationURL() should do03:21
BradBSteveA, kiko-fud: interested in discussing absolute URL's to placeless objects now then?03:22
kiko-fudI need to have lunch, goo03:22
SteveAI'm having lunch now03:22
SteveAbit later would suit better03:22
SteveAwant to fix a time?03:22
kiko-fudfrom now03:22
SteveA1h10 ?03:22
SteveA15:30 UTC I think that is03:23
dilysBug 2160 resolved: Nuclear explosion when no string is input in package search03:23
dilysBug 2161 resolved: Visiting a person without being logged in blows up03:28
=== salgado is now known as salgado-lunch
=== debonzi -> lunch
=== Kinnison -> lunch too; cunning plan
BradBkiko-fud: use malone for launchpad bugs dude!03:46
SteveAcan we turn off "new bugs for launchpad" in bugzilla?03:47
spivBradB: Surely he's still allowed to resolve bugs? :)03:48
spivKinnison: Hmm, around?03:48
Kinnisonspiv: yes03:49
=== Kinnison has hands full of lunch though; so won't be quick
spivKinnison: Sure.03:49
BradBspiv: sure, resolve existing bugs in bugzilla, but new ones (like 2167) need to be reported in malone03:50
BradBthough that one was actually meant to be an email to lp@, by the looks of it :P03:50
spivBradB: Oh, I thought you were saying that in response to the most recent dilys output :)03:51
spivKinnison: There's an issue with how the librarian currently does db access.03:51
Kinnisonspiv: go on...03:51
spivKinnison: Twisted's networking layer is single-threaded; so processing in it shouldn't block.  It looks like we're currently doing DB access in it though.03:52
spivIn some respects it's a minor problem, because our DB is fast ;)03:52
=== ddaa [~ddaa@deep-thought.xlii.org] has joined #launchpad
spivBut ideally the DB access would be done in threads.03:53
KinnisonI must admit I thought the librarian was threaded already :-)03:53
KinnisonI assume uploads and downloads are done multiplexed then03:53
Kinnisonwe're not in single-client-at-a-time territory are we?03:53
spivYeah, I just suddenly realised it glancing at the code, it was a flaw in my initial code.03:53
spivOh, no, the network IO is all nicely multiplexed.03:54
spivExcept during a DB call :)03:54
BradBhm, who admins the canonical bugzilla then?03:54
Kinnisonelmo: Any chance you can get the archive updating on mawson?03:54
spivTwisted has infrastructure to make this easy when using raw DB-API stuff.03:54
spivUnfortunately sqlobject doesn't really fit into model.03:55
BradBspiv: heh heh03:55
BradBnon-blocking + ORM = splat03:55
spivI'm not sure what the priority of fixing this should be; like I say, DB access is pretty fast for librarian, I think most things it does are small queries on indexes.03:56
spivSo in practice we won't notice this until we start hammering the librarian.03:56
spivI know how to fix it, but it requires a bit of restructuring, unsurprisingly :)03:56
spivKinnison: How good is your Twisted? :)03:57
KinnisonErm, well, let's just say I know nothing and leave it at that eh?03:58
spivOk, sure.04:00
spivI think it can wait a bit, or at least, I don't have time for it immediately ;)04:01
KinnisonI certainly think it can wait04:01
spivPerhaps we can pair on it in Mataro.04:01
SteveAfile a bug on it04:01
SteveAin malone04:01
Kinnisonspiv: Possibly04:03
=== salgado-lunch is now known as salgado
BradBkiko-fud, SteveA: if you can wait a couple more mins, i just want to upgrade something in the plone site04:32
dilysBug 2007 resolved: Linkify bits in personal information.04:40
=== kiko-fud is now known as kiko
BradBok, ready to rock now04:41
BradBplone site's fixed04:41
SteveABradB: what was up with it?04:42
kikohow are we going to handle logging in?04:42
BradBSteveA: Plone 2.0.4's portal_factory breaks PloneHelpCenter. Had to upgrade from SVN, where geoffd's made a fix.04:43
SteveAI propose we move to cookie based login forms asap.04:43
kikoSteveA, sidenode, comment requested for https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2161#c104:43
SteveAkiko: ommented04:45
SteveAkiko: commented04:45
BradBok, so here was the problem i wanted to discuss then: getting absolute URL's to placeless objects.04:46
SteveAok, so how about I work on the cookie auth thing tomorrow?  I really don't think there is much left to do on it.  If I leave basic auth availalble then page tests will still work.04:46
SteveABradB: so, we should provide our own @@absolute_url and IAbsoluteURL views/adapters04:47
SteveAthat would probably get us most of the way there, if not all the way there.04:47
SteveAto do this, we'd need to start keeping a traversal context object around somewhere.04:48
SteveAwe need this anyway, to do the context-sensitive stuff more sanely04:48
BradBmy main problem is how to make this work while VH'ing.04:48
SteveAdoes that sound like it would solve the issues you've got?04:48
SteveAthe absolute url stuff knows how to do virtual hosting04:49
SteveAso, I think that will be okay04:49
BradBSteveA: yeah, but a bug doesn't "live" anywhere though.04:49
SteveAare there specific virtual hosting issues you can describe?04:49
BradB1. bugs.foo.com => launchpad/malone04:49
BradB2. bugs.foo.com => launchpad/malone/bugs04:50
SteveAlet's call it bugs.bar.com04:50
SteveAbecause otherwise my head will explode from confusion04:50
BradBhow do you know that the abs url for the first is bugs.bar.com/bugs/$bug.id, but for the second it's bugs.bar.com/$bug.id?04:50
SteveA(it's a bugbar.  Sometimes you eat the bar; sometimes the bar eats you)04:50
SteveAwhen you say "how do you know", which piece of software is "you" in this example?04:51
BradBthe IAbsoluteURL adapter04:52
BradB(from an IWhatever)04:52
SteveAif "you" has the request, then that's okay; the absolute url machinery takes care of that.04:52
SteveAbut, if "you" is an event handler that wants to send an email containing a URL, it gets a bit trickier04:52
SteveAbecause it doesn't easily have access to the request (although, it can get it if necessary).  It is a cleaner design if it doesn't need to get the request)04:52
SteveAperhaps we need a table; a mapping of virtual host domain name to what emails should be sent out containing?04:54
SteveAwhat are some typical use-cases for sending out emails containing urls?04:54
SteveAnotification of something to do with a particular bug, I suppose04:55
BradBsorry, landlord just dropped in to install my shower. /me catches up.04:55
BradBSteveA: yes, all bug notifications04:55
BradBlike bugzilla04:55
SteveAso, let's say we've got this "url traversal context" object that represents where you are04:57
SteveAin terms of virtual hosting, knowing how to make absolute urls for you, what application, project, product, etc. you're in04:58
kikosounds interesting.04:58
SteveAthe thing that emails can get hold of this "UTC" object easily (argh, bad name, worse acronym) 04:58
SteveAjust by importing it and using it04:58
SteveAand it can say emailtext % {'bugurl': UTC.urlFor(mybug)}04:59
SteveAsabdfl came up with a good name for this UTC object.  I can't remember it though.  need to look it up in my notes.04:59
BradBwouldn't we want that to be a utility?05:00
SteveAit could be a utility.  might make unit tests easier if it were.05:00
SteveAbut it need not be a utility in general.05:00
SteveAit would be a "thread local"05:00
SteveAor perhaps it would belong to the request, and be got via the interaction.  but, those are implementation details05:01
SteveAwhat I want to find out now is if this science-fictional account sounds like it would solve your problems05:01
SteveAand make things straightforward enough05:02
SteveAas, it doesn't sound too hard to implement05:02
BradBwhat if you're not traversing? what if soyuz wants a link to a bug, for example?05:03
BradBand there's a soyuz.bar.com and malone.bar.com?05:03
BradBthe point of this mechanism is that it needs to be generic, because there are lots of use cases for "i have an object, give me a url to it" in launchpad.05:04
SteveAso, let's talk about this in some detail05:04
SteveAto make sure I understand05:04
SteveAwhat object have we url-traversed to?05:04
SteveAa package in soyuz.bar.com ?05:05
SteveAand, from calling a method on the package, we find we have a bug related to that package05:05
SteveAso, we want to provide the url to the bug, say on the web page, for a portlet or something05:06
SteveAand, because the "url topology" of bar.com is that we have soyuz.bar.com for the soyuzstuff and malone.bar.com for the bugstuff05:06
SteveAthe link needs to be going to malone.bar.com05:06
SteveA1. it is a bug05:07
SteveA2. the rule for bar.com says "bugs appear in malone.bar.com"05:07
SteveAand, the "UTC" component needs to know that rule05:07
SteveAhow does this sound so far?05:08
BradBgood, as long as you don't mean the user has to do some kind of configuration to tell the UTC component about that rule05:08
SteveAwhich user?05:08
kikohow would this be configured by the installer?05:08
SteveAwhich user do you mean?05:08
BradBthe site admin05:09
kikosame question05:09
BradBbeyond configuring apache, this should Just Work05:09
SteveAto an extent, yes05:09
sabdfli think my term was something like "launchpad context"05:09
dilysBug 2163 resolved: Don't show "last packages" unless we have some05:09
SteveAthis is a common enough pattern: for bar.com, bugs are at malone.$DOMAIN, packages are at soyuz.$DOMAIN05:09
sabdfli was imagining it would be a property of the request object05:09
SteveAsabdfl: you avoided the term "context"05:09
kikobut wait; the site admin is who, the admin for the site that hosts *all* launchpad sites?05:09
sabdflhmm... true05:10
SteveAsabdfl: it would basically be part of the request, but we want to make it accessible to parts of the application that don't have the request.  that's just an implemenation detail really though.05:10
SteveAsabdfl: it is reasonable to consider it "part of the request"05:10
sabdfllocation - overloaded05:11
sabdflcontext - overloaded05:11
sabdflsetting? - overloaded05:11
SteveAkiko: in production, our model is there is just one "launchpad" application, that can handle any kind of request for any of rosetta/malone/soyuz on any domain05:12
SteveAwe have as many instances of "launchpad" as we want, on different app servers05:12
SteveA(or the same app server if it is multi-processor)05:12
kikoright. a launchpad "multi-server".05:12
BradBhm, maybe some config is inevitable, no matter what05:13
SteveAyes, we'll need some.  but there are standard patterns for a lot of the projected use.05:13
BradBbecause bugs.bar.com and bugs.bar.org, et.c05:13
SteveAI think the config will *eventually* live in the database, when we allow people to create soyuz.myproject.org themselves.05:14
SteveAthere will need to be some apache-vh-config-include magic there, no doubt05:14
kikoexactly, some config is necessary, AND, for the case of our banquet-pad, I forsee some intricate config separating the bits and pieces.05:14
BradBSteveA: so, ultimately, to cover all the cases discussed thus far, and basically any other, i'd be able to ask any content object for an absolute url to itself on the web.05:15
BradBSteveA: is that the problem you're seeing this solving?05:15
SteveAbut one content object may have many absolute urls05:15
SteveAso, the one to choose will depend on the current request05:15
SteveAbut, it may well be a different (but related) domain from the current request05:15
SteveArelated by config05:15
SteveAof which there are standard patterns05:16
SteveAwe done?05:17
BradBso, for soyuz.bar.com, bug url's should point to soyuz.bar.com, but the respective .org's should point to each other as well.05:17
SteveAif that's the rule, then yes.05:17
BradBer, i meant bug url's should point to malone.bar.com, but yeah05:17
SteveAthat's probably the usual case05:17
BradBSteveA: is this something you're planning on implementing then?05:18
SteveAI am now ;-)05:18
BradBSteveA: so perhaps a new ZCML directive comes out of this?05:19
BradBbrowser:absoluteurl or something05:19
SteveAI'll take this on, write up what we've discussed, and malonize it.05:19
kikocan we fit in some talk on the UI for a launchpad "instance"?05:19
SteveAmaybe, but probably not zcml.05:19
kikoI'm curious about the tabs and where we would stick a cross-app log in/register thang.05:19
kikoand if we could trust the header would always be there05:20
SteveAkiko: sure.  you mean, making soyuz.ubuntu.com look like ubuntulinux.org etc. ?05:20
kikowell, I mean, what sort of flexibility should it have inbuilt.05:20
kikocan we trust the beloved tabs and logo will always be there?05:21
SteveAmy initial sense is to make the login/register thing somewhat "anonymous", with no tabs, but an option to go "back where you came from"05:21
SteveAalthough it would need a logo05:21
kikoa launchpad logo05:21
kikoor else the launchpad instance logo05:21
kiko(i.e. skole for skole lunchpie)05:21
kikoany other random storms of thought flowing through?05:22
SteveAI'm not sure what would work best.  But, the outcome is, the skin to use for the login stuff depends what you're intending to log in to05:22
SteveAor register for05:22
kikodo we even agree that we will log into and register into separate things?05:23
SteveAI think we should just get login and register working centrally first, and worry about skinning it once we have the rest of this context ob done05:23
SteveAkiko: until / unless we do single-sign-on, surely we have to ?05:23
kikosingle-sign-on is luckily orthogonal to registration05:26
kikoit's one thing to create an account and another to use it05:26
SteveAbrb (2 mins)05:26
kikoI am happy with just working on centralizing registration from malone/soyuz/rosetta into foaf/register for now05:26
kikobut we should be thinking about these things..05:26
SteveAcan you explain a bit more about what you're thinking?05:30
kikosorry, was in another channel05:33
kikowe complained about this in the soyuz sprint: three separate new user forms, and no consensus on how to join them05:34
dilysBug 2162 resolved: Add legend to translation portlet05:34
kikowe need to consider if we are going to use separate registration pages or treat the application as "launchpad" and have a central one.05:35
kikothere are advantages to both alternatives of course05:35
kikoif separate, we have more freedom to ask context-specific questions05:35
kikoif together, we avoid the need to make the user reintroduce himself for every new launchpad service he visits05:35
kikonote that the barrier between soyuz and rosetta and malone is only an href away05:35
SteveAok, so if we have separate ones, there's a problem when someone is signed up with soyuz and then wants to use rosetta...05:36
kikowhich makes having the user relogin or update his data when visiting rosetta, well, you get the picture. 05:36
SteveAask one more question, or ask them all again (assuming rosetta has one extra question)05:36
SteveAdo soyuz and malone have differing registration requirements?05:36
kikoI personally would hate anything that wasn't launchpad-centric just because it burdens the user and lowers our market perception.05:36
kikowell, as for login/username/password, no.05:37
SteveAI mean, the minimum required from a user so that they can use the system05:37
kikoquestion is if we're going to require anything else for any of the apps. and I say no, I don't think we should05:37
SteveAdaf, carlos: ping05:37
carlosSteveA: pong05:37
kikoI think the minimum should be the minimum everywhere -- make lp really easy to join and use05:37
SteveAdoes the rosetta sign-up page need to ask more than the minimal information that would be common to all launchpad apps?05:38
carlosSteveA: if could be really good if they have a chance to select their know languages05:39
carlosbut it's not mandatory05:39
carlosperhaps only the "main language" daf talked about some days ago at launchpad mailing list05:40
SteveAI suppose rosetta could ask that of any person who is logged in, but hasn't told their known languages and main language05:40
SteveAthat would be more general05:40
SteveAand would work for the case when I'm registered for malone already and now want to use rosetta05:40
SteveAwhere is daf anyway?05:40
carlosSteveA: If we don't have that information I think we get it from the browser, so we don't need to ask it as a mandatory option05:41
carlosSteveA: no idea05:41
SteveAok, but the principle is that a user who is already signed up for launchpad can use rosetta05:41
SteveAand can answer other questions later on05:41
carlosSteveA: but the main language is interesting to select the UI language (also not mandatory, we could get it from the browser)05:42
carlosSteveA: yeah, it works with the current schema05:42
SteveAif that's workable for rosetta, then once we have a new one single registration screen, (belonging to foaf), we should remove the specific rosetta one05:42
carloswe look at the database info, if it does not exists, we get the info from the browser05:43
SteveAand even now, consider removing the request for special information in the rosetta one05:43
SteveAcarlos: can this be done for rosetta?  what do you think of such a change?05:43
carlosSteveA: it's fine for me, just tell me when it's ready and I will remove all but the language chooser05:43
carloswe don't have a registration screen but a preferences editor05:44
carloswe cannot create new accounts, only modify the data05:44
carlosto create accounts we use a script05:44
SteveAok, that's fine then.05:44
SteveAkiko: are you happy with all this?05:44
carlosSteveA: how will it work with websites like rosetta.gnome.org?05:46
carlosit's only one of launchpad's applications05:47
SteveAthe page will be available from any some.domain.org/+register page05:47
carlosand the preferences editor? (to change password and info)05:47
carlosas +useredit? or something like that?05:47
SteveAI guess so05:48
=== kiko reads up
kikoah, then that's fine.05:50
kikoI think preferred language can be part of the initial registration05:50
kikothe reason is basically i18n of the interface05:50
kikoso this is good for rosetta. what about malone, BradB?05:51
kikodo you have user registration, or Not Yet?05:51
carloskiko: the db schema does not have (yet) a way to store it05:51
kikocarlos, bug filed?05:52
carloswhen daf appears I will ask about it so we could get a conclusion of the initial thread05:52
kiko(need to be afk 2m)05:52
carloskiko: not yet decided how will it be stored05:52
BradBkiko: no user reg in malone that i'm aware of05:52
carlosso we only have a thread at launchpad05:52
BradBreport dudes, use malone for all these bug reports.05:53
BradBremember even05:53
carlosBradB: https://launchpad.ubuntu.com/malone/bugs/3105:54
carlosdoes it means we will have all our bugs/comments from bugzilla in malone?05:54
BradByeah, we have to05:55
BradBat the least, the ones that haven't yet been fixed.05:55
carloshmm, I just noticied that we don't support attachments...05:55
carlosor I don't see them05:56
kikono user reg, hum hum.06:11
kikoBradB, useful tho, no?06:12
BradByeah, probably :P06:12
=== ddaa [~ddaa@deep-thought.xlii.org] has joined #launchpad
=== BradB is now known as BradB|lunch
=== debonzi [~debonzi@] has joined #launchpad
sabdflhi guys, do the tests use a different db?07:32
sabdflthe user reg stuff is written07:32
sabdflSteveA: what's the url for a user registration that would work on the dogfood server?07:33
carlos<SteveA> the page will be available from any some.domain.org/+register page07:34
carlossabdfl: is that what you need?07:34
sabdflcarlos: afaik there is already such a page, i was wondering whether it's accessible on the dogfood server07:38
carlossabdfl: I thought someone was working on it, didn't know it already exists, in fact... I think Steve said something here that makes me think it was not yet wrote07:40
SteveAI don't believe there is a user registration page at all yet07:40
carlosthat was about 2 hours ago07:40
sabdflhmm... so does the website only use the xmlrpc interface?07:40
SteveAat one stage, there was going to be one for the rosetta alpha, but that was canned in favour of a script run by daf07:40
SteveAthe plone website uses the xmlrpc server to talk to the production database and create users07:41
sabdflhave we assigned the work to create a launchpad registration page?07:41
sabdflalso, cookie based auth for launchpad?07:42
SteveAI'll be doing cookie-based auth, starting tomorrow.  someone in brazil is doing a registration page.07:42
SteveAI expect I'll be finishing tomorrow too07:42
kikothat would be salgado, and he should do this in short notice, he's been working for a week already and landing patches07:43
lulunight all :o)07:43
sabdflnight lu07:44
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad []
SteveAkiko, spiv and I were talking about salgado getting to know foaf better, and chatting to spiv regularly this week to do so07:44
SteveAthis will give us someone to do foaf work while spiv is away.07:44
sabdfli'm keen to get cracking on the karma, and salgado could cut his teeth on that07:44
kikohe has his last week of classes next week, and tomorrow's a full day, but tonight onwards he'll be on this.07:45
kikoah, that would be nice07:45
sabdfli'm thinking we need a "karmapoints" table07:45
SteveAgreat.  I've asked spiv to co-ordinate touching base at least daily with salgado about foaf07:45
sabdflwith fields like:07:45
sabdfl - person07:45
sabdfl - datecreated07:45
sabdfl - discipline07:45
sabdfl - points07:45
sabdfl - comment07:45
sabdflso, for example, when someone edits the wiki, we put an entry in there with "wiki" as the discipline07:46
sabdflmaybe we track the disciplines in a separate table07:46
sabdflor just use the schema / label07:46
sabdflso this way, we can keep a sense of what people have done in different areas07:46
sabdflpackage uploads07:46
sabdflbugs closed07:46
sabdflbug comments, assignments, watches created07:47
kikosort of a global activity log, interesting.07:47
kikoand comment would be hardcoded according to the action?07:47
sabdflultimately, arch commits too07:47
=== SteveA needs to go. Can someone mail a "karma" outline to the mailing list once you've all chatted it out ?
SteveAcheers.  good night.07:47
sabdflSteveA: will you have time for a call?07:47
SteveAyeah, a bit later?07:47
sabdflok, will be here, ping me07:48
SteveAwant to get some food in first07:48
sabdflBradB|lunch: holler when you're back07:51
!Geert:*! I'm writing a new FOSS tool for ISPs and need all the MIB output I can get from managed switches and routers (i.e. 'smnpwalk comm@device . >> brand_version.mib')08:01
=== SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad
!Geert:*! You can dcc, query, or mail me on geert@irssi.org08:02
dafcarlos: pong08:14
carlosdaf: hi08:15
=== mdz_ [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad
SteveAdaf: can you turn up a bit earlier in the day please?  It makes it really difficult for me to keep in touch otherwise.08:17
dafSteveA: apologies08:19
dafSteveA: I was working late last night08:19
carlosdaf: Should we get a conclusion about the prefered language in launchpad? 08:20
dafyes, we should08:20
carlosdaf: more discussion or is the final decision clear?08:22
dafwell, there were no objections to my last post, but there was no support for it either :)08:23
dafperhaps I should read up on the syntax of ALTER08:23
carlosdaf: that's the easier part08:24
carloslet me read your reply08:24
carlosdaf: answered + sql patch08:29
carlosdaf: other thing we have pending is the mail from Jordi08:31
carlosif you give me the OK, I could prepare a patch for that feature (well, add it to my TODO list)08:32
dafI need to reply to that08:32
=== mdz_ is now known as mdz
carlosdaf: before I forget to tell you it, I will be offline on Thursday and Friday (perhaps I will be able to do some work offline and If I'm lucky enough get some network connection)08:39
dafcarlos: ok08:39
carlosJane know that already, I'm going to a GNOME event in Madrid to give a speech about Ubuntu and also another one about translations08:40
carlosdaf: do we have already anything on what I could base my "translations" speech to introduce Rosetta?08:41
dafI don't think so, no08:41
=== cprov [~cprov@] has joined #launchpad
carloshmm anything I should not talk about (not sure what should be still "top secret" or not)08:42
carlossabdfl: ?08:44
=== BradB|lunch is now known as BradB
BradBsabdfl: back08:54
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: fixes (and unfixes) for various bugs reported from dogfooding (patch-749)09:15
BradBdaf: when will dilys tell who submitted the pqm merge request that got merged?09:17
dafdoes PQM provide that information now?09:18
carlosBradB: about the functional tests, I got it running with Rosetta but the launchpad_ftest database should be created by hand first (createdb -E UNICODE --template=launchpad_ftest_template launchpad_ftest), is that normal ?09:20
BradBdaf: frighteningly enough, perhaps not. hopefully it would be easy to add an X-merge-requester header or something09:21
BradBcarlos: no. i fixed it so that the db gets reset properly every time.09:21
sabdflBradB: here's a challenge for you09:22
kikoBradB, what did you think of my patch?09:22
sabdflmake a small change to templates/main-template.pt09:22
sabdfland then run your page tests09:22
BradBsabdfl: already did that09:22
BradBperl -e -ep "s/old/new/" :)09:22
BradBperl -i -ep, that is09:22
sabdflBradB: and you want a web designer to do that?09:22
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Some Bugzilla Bug fixes (patch-750)09:23
BradBsabdfl: no, we may need to elide as necessary, but i ended up getting too lazy to fix regression bugs, so i made them virtually impossible to happen. some more eliding could be done, but i'm really wary of bringing them back to anywhere near what they were before i built the forcefield (TM)09:23
BradBsabdfl: if our design is well done, the designer does 90% CSS changes, maybe even higher than that.09:24
sabdflBradB: no ways dude09:24
BradBkiko: which patch?09:24
sabdfli've just spent the afternoon eliding your force field09:24
sabdfli've tried to capture the essence of each test09:24
sabdflfor example, if you are adding some data, i test that the same data shows up in the page09:25
kikoBradB, Makefile change.09:25
sabdflbut none of the decoration09:25
sabdfltest that separately09:25
sabdflmake your goal that a change should break at most one test09:25
sabdflhaving a million page tests with the same decoration is just a recipe for irritation09:25
BradBkiko: that's a lot different than the db change i was talking about (which was a mod to PgTest itself), but yeah, it seems good, but i didn't test it, because i don't have plpython running on this machine. :)09:25
kikoright :)09:26
BradBsabdfl: sure, i agree.09:26
BradBsabdfl: as long as there are none that are basically just status code checkers :)09:26
sabdflbradb: checking for status code and heading is acceptable09:27
sabdflit says "we get a page with that heading"09:27
sabdfl<h1>...</h1> is too extreme, agreed09:27
sabdflbut ...<h1>Add A New Widget</h1>... is fine09:28
sabdfldaf: please make sure that rosetta tests are well elided09:29
sabdflThis tests searching for projects in Rosetta.09:29
sabdfl  >>> print http(r"""09:29
sabdfl  ... GET /rosetta/search-results?q=gnome HTTP/1.109:29
sabdfl  ... Referer: http://localhost:9000/rosetta09:29
sabdfl  ... """)09:29
sabdfl  HTTP/1.1 200 Ok09:29
sabdfl  Content-Length: 756409:30
sabdfl  Content-Type: text/html;charset=utf-809:30
sabdfl  <BLANKLINE>09:30
sabdfl  <BLANKLINE>09:30
sabdflthat sort of thing will break for sure09:30
BradBonly keep status code header09:30
dafsabdfl: will do09:30
dafsabdfl: can you file a bug so I don't forget?09:30
BradBthere already is one09:30
sabdfli've fixed that one09:31
BradBthat was for daf. https://launchpad.ubuntu.com/malone/bugs/2609:31
BradBbut that's about broken ftests, more than complete func suites, i guess.09:31
BradBin any case, i'm happy with any page test suite that allows us to say "cool, make check passed, i didn't break anything"09:32
dafBradB: a page test that says "..." would do that :)09:32
BradBdaf: ahem, "didn't break anything" :)09:33
=== debonzi -> dinner
=== debonzi [~debonzi@] has left #launchpad ["Leaving"]
sabdflin general: add a feature, add a test09:33
sabdflso if you add something to an existing page, add a test that checks for that specific content AND NOTHING ELSE09:33
sabdflthen if someone breaks that feature, THAT test breaks09:34
dafBradB: oh, you mean it should be accurate too!09:34
sabdflis there a way to run just the page tests?09:34
sabdflit takes a few minutes to get through make check09:34
sabdfltoo long09:34
BradBsabdfl: to really achieve that to the level of assurance the 8 tests i created have, would take about 30 tests, at least.09:35
BradBe.g. to test the sort orders and values of each of the widgets on each of the pages, to test the correctness of data output in tables, to test comment attribution, all the little things like that, that Just Work (i.e. are Just Tested) with the 8, true, functional tests i created.09:35
sabdflpoint is to add the test when you add the feature09:36
sabdflyou only need to test a widget once, no matter how many pages use it09:36
dafsabdfl: "python test_on_merge.py canonical.ftests"?09:36
dafsomething like that09:36
sabdflthanks, will try that09:37
BradBsabdfl: hm? vocabularies could be used correctly for one schema, and incorrectly for another.09:37
BradBthe eight tests i had just handled all those minute details09:37
sabdflBradB: ok, if there's something special about the way you use it, that's a test09:37
dafBradB: I think there might be a bug open on PQM for mentioning the merge requester09:37
sabdfli don't really want to argue about this, it's clear in my mind how i want it09:38
sabdfltry to get one test to show one thing09:38
sabdflyou can easily load a page, copy that test 10 times, and elide differently09:38
sabdfland that kind of testing coverage is *much* more useful09:38
sabdflit tells you what actually broke, instead of just SCREAMING AT YOU THAT THERE IS BREAKAGE09:39
sabdflSteveA: around for that call?09:40
sabdflM   lib/canonical/launchpad/database/bugmessage.py09:49
sabdflM   lib/canonical/launchpad/database/pofile.py09:49
sabdflM   lib/canonical/launchpad/interfaces/bugmessage.py09:49
sabdflM   lib/canonical/launchpad/mailnotification.py09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/10-add-subscription.txt09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/20-add-edit-product-infestation.txt09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/30-add-edit-package-infestation.txt09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/40-add-edit-package-assignment.txt09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/50-add-edit-product-assignment.txt09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/60-add-external-ref.txt09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/70-add-edit-watch.txt09:49
sabdflC   lib/canonical/launchpad/pagetests/malone/80-add-comment.txt09:49
sabdflM   lib/canonical/launchpad/templates/binarypackage-search.pt09:49
sabdflM   lib/canonical/launchpad/templates/bug-index.pt09:49
sabdflM   lib/canonical/launchpad/templates/portlet-translations-sourcepackage.pt09:49
sabdflM   lib/canonical/launchpad/templates/sourcepackage-search.pt09:49
sabdflM   lib/canonical/launchpad/templates/soyuz-sourcepackage-index.pt09:49
sabdflM   lib/canonical/launchpad/zcml/bug.zcml09:49
sabdflM   lib/canonical/librarian/libraryprotocol.py09:49
sabdflM   lib/canonical/librarian/web.py09:50
sabdflM   lib/canonical/soyuz/sql.py09:50
sabdflthat's another reason :-)09:50
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: bug kill and improves on permission (patch-751)09:51
Kinnisonyay conflicts09:51
BradBsabdfl: that's only because you went in and chopped out the whole file though. :)09:52
sabdflBradB: erm.... every single one of those conflicts is because of a single change on your side09:52
sabdfladding the person name instead of (none) in the comment09:53
sabdflseems to me we are better off if, when we add a new feature, we add a test which tests for that and *only* that09:53
BradBin any case, i'm not arguing, i'm following your lead. if the new way achieves the same level of stability that malone has had over the past week, i'll be happy.09:53
sabdflagain, im running into this because I'm making changes that are orthogonal to yours 09:54
sabdfland you'll appreciate it when you do the same to my code09:54
=== daf back in 15
sabdfli don't have time to spend hours fixing tens of tests so i can commit a one-line fix09:54
=== carlos goes to have lunch
carlosejem... dinner :-P10:00
SteveAsabdfl: hi10:09
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: new bounty system, and de-shotgunning tests (patch-752)10:10
BradBsabdfl: would you agree with the policy that if i can checkin a change that breaks somebody else's app, it's their responsibility to have allowed me to break it by having inadequate test coverage? i think that's the kind of policy that would, ahem, strongly encourage people to build strong functional test suites. :)10:14
=== BradB asks this on the verge of chopping out some bug factories that appear to be dead chickens
=== kiko is now known as kiko-afk
SteveABradB: how do you know you've broken it if there are no tests?10:34
SteveAor rather, insufficient tests10:34
SteveAI'm totally serious.  In your example, I do not see how you can tell you've broken something.10:34
BradBSteveA: by looking at it :)10:34
BradBi guess you were defending the person doing the checkin though, right? :)10:35
SteveAin general I'd say you're morally free to check in the change.  But, you should immediately notify the person responsible for that code.  You should consider fixing it anyway, if possible.10:35
SteveAand if it isn't too much hassle for you10:35
BradBbut in many cases you won't realize that you've broken something10:36
SteveAand show sensitivity towards breakages that might reach the dogfood server10:36
SteveAand I completely agree about getting decent test coverage10:36
BradBit saved me a ton of agony last week10:36
SteveAI must go sleep.  I've been getting into the morning vibe :-)10:38
BradBSteveA, sabdfl: i hope there can be some serious discussion about a combo box widget soon. dogfood's dying for one! maybe in the meeting tomorrow.10:39
SteveAyeah, it's on the agenda10:39
carlosBradB: is it normal I'm not able to filter my bugs at: https://launchpad.ubuntu.com/malone/bugs/created10:41
carloseverytime I try to select my name, the page reloads with "All users" selected10:41
SteveAcarlos and daf: rosetta item in tomorrow's meeting: getting rosetta alpha using the dogfood server.10:42
carlosalso, I don't understand why there are shortnames instead of full names (I'm not sure if the "carlos" I'm selected is the right one)10:42
SteveAIn the meeting tomorrow, can you be ready to discuss your plans for doing so, the steps involved, and how long it will take, and what help you need from others?10:42
BradBcarlos: sounds like you've got a couple bugs to report :P10:42
carlosSteveA: not sure if daf is arround, I will ask as soon as he's back10:43
carlosSteveA: If we can talk tonight, it's doable10:43
dafcarlos: I'm discussing it with Steve now10:43
carlosok :-)10:43
carlosBradB: :-)10:44
carlosBradB: I need to read more, it's already reported: https://launchpad.ubuntu.com/malone/bugs/2110:45
carlosBradB: ok, I found why I had to create the test database by hand10:52
carlosBradB: you are catching psycopg.ProgrammingError10:52
carlosbut I'm getting: DatabaseException: FATAL:  database "launchpad_ftest" does not exist10:52
carlosis it ok to change it?10:53
carlosthe problem is with the DROP DATABASE10:53
carlosif the database does not exists the first time10:53
kiko-afkjust add a "-" before that line perhaps?10:55
BradBah /hah/. i see now why page test output gets chopped sometimes. e.g. sometimes the recorded http looks like:10:56
carloskiko-afk: it's inside python code10:56
BradB          </fieldset>10:57
BradB  <BLANKLINE>10:57
BradB          <div class="separator"></div10:57
BradB(randomly truncated)10:57
BradBit's because of 303's10:57
carloskiko-afk:  not sure if that will work there10:57
BradBcarlos: that's not the problem dude.10:58
BradBlook at the except clause. it only propogates the exception if it was something *other* than the db not existing. :)10:58
BradBotherwise it goes on to create the db further down10:59
carlosBradB: but you are not getting the correct exception10:59
carlospsycopg.ProgrammingError vs DatabaseException10:59
spivzope.app.rdb.interfaces.DatabaseException, I guess?11:00
BradB>>> import psycopg11:00
BradB>>> conn = psycopg.connect("dbname=template1")11:00
BradB>>> cur = conn.cursor()11:00
BradB>>> cur.execute("drop database alsjdfsd")11:00
BradBTraceback (most recent call last):11:00
BradB  File "<stdin>", line 1, in ?11:00
BradBpsycopg.ProgrammingError: ERROR:  DROP DATABASE cannot run inside a transaction block11:00
BradBdrop database alsjdfsd11:00
carlosspiv: yes, seems like it's that one11:01
BradB>>> psycopg.__version__11:01
carlosTraceback (most recent call last):11:01
carlos  File "./lib/canonical/rosetta/ftests/test_poexport.py", line 157, in testPoExportAdapter11:01
carlos    project = Project.selectBy(name = 'gnome')[0] 11:01
carlos  File "/home/carlos/Work/dists/launchpad/lib/sqlobject/main.py", line 958, in selectBy11:01
carlos    cls._connection._SO_columnClause(cls, kw),11:01
carlos  File "/home/carlos/Work/dists/launchpad/lib/sqlos/connection.py", line 45, in __get__11:01
carlos    return getConnection(context, name)11:01
carlos  File "/home/carlos/Work/dists/launchpad/lib/sqlos/connection.py", line 93, in getConnection11:01
carlos    connCache[key]  = IZopeSQLConnection(newconn()).transaction()11:01
carlos  File "/home/carlos/Work/dists/launchpad/sourcecode/zope/src/zope/app/rdb/__init__.py", line 153, in __call__11:01
carlos    self.connect()11:01
carlos  File "/home/carlos/Work/dists/launchpad/sourcecode/zope/src/zope/app/rdb/__init__.py", line 140, in connect11:01
carlos    raise DatabaseException, str(error)11:02
carlosDatabaseException: FATAL:  database "launchpad_ftest" does not exist11:02
carlosmy fault11:02
carlosthe test queries the database11:02
carlosbut how could I force it to create it first?11:03
carlosI thought it was done before the test run11:03
spivcarlos: I think you need to use PgTestCase from canonical.ftests.pgsql?11:04
carlosspiv: I'm doing it already11:04
carlosclass POExportTestCase(LaunchpadFunctionalTestCase):11:04
carlosit works as soon as the database exists the first time11:05
carlosand after the functional tests pass I get:11:05
carlosException exceptions.TypeError: <exceptions.TypeError instance at 0x30bef210> in <bound method Transaction.__del__ of <sqlobject.dbconnection.Transaction object at 0x30d42c90>> ignored11:05
spivcarlos: Are you overriding setUp?11:05
carlosI have only a method11:06
carlosdef testPoExportAdapter(self):11:06
carlosIt's still a unittest not a doctest11:06
carlosdef test_suite():11:06
carlos    loader = unittest.TestLoader()11:06
carlos    return loader.loadTestsFromTestCase(POExportTestCase)11:06
carlosif __name__ == '__main__':11:06
carlos    unittest.main()11:06
spivcarlos: I'm out of ideas.11:11
BradBcarlos: there's already a bug filed for SQLObject relying on __del__. you can ignore that.11:11
carlosBradB: ok, what about the exception I get if the database does not exists? any idea?11:12
carlosspiv: don't worry, I'm also out of ideas 11:12
BradBcarlos: debug it11:15
BradBoverride setup, import pdb; pdb.set_trace()11:15
BradBmake sure to call super's setup, of course11:15
kiko-afkwhere's stuberoola11:18
BradBcarlos: er, you may want to try simply inheriting from LaunchpadTestCase11:18
BradBcarlos: maybe LPFTC is out-of-date (even though i suggested inheriting from that one)11:19
BradBer, no, i'd stick with debugging it first11:19
carlosBradB: I think the problem is there (not sure)11:20
carlosBradB: LaunchpadFunctionalTestCase is not calling the LaunchpadTestCase overrided methods11:20
carlosBradB: I need a functional Zope3 instance so I think I need to inheriting from that class (or that's what the comment says)11:21
spivcarlos: Yeah, that looks like that could be the problem.11:22
dafBradB: any objections to me adding bug IDs to Malone notification email subjects11:22
dafBradB: ?11:22
carlosBradB, spiv: Ok, thanks for the help, I will fix it now11:23
BradBdaf: i can do that. i'm still eliding my way through this new page test to prove that owners get subscribed to bugs they add though.11:23
dafBradB: I've already started :)11:23
BradBokie doke :)11:23
dafin fact, I've got it working11:24
dafI have one question, though11:24
dafI could either have each caller of send_edit_notification put the ID in the subject themselves, or pass the ID (or the object, or the event) to send_edit_notification so that it adds the IDs to each one11:25
carlosyeah, that was the problem, functional tests are working now without creating the database by hand11:25
BradBdaf: what did you do for adds?11:26
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: autofocus first input element on translation page load (patch-753)11:26
sabdflBradB: yes, i agree, not having a test for your new feature means you can't cry when someone else checks in a change that breaks your feature11:26
dafBradB: haven't done adds yet11:26
sabdflBradB: yes, also agree, selection widgets for person, package and product are top priority to get malone more widely useful11:27
dafBradB: it could either be "new bug #123": blah blah blah" or "#123: new bug 'blah blah blah'"11:27
dafBradB: or something along those lines11:27
sabdfldaf: how does dilys work?11:27
sabdflcan we get launchpad notifications to ping irc channels too?11:28
BradBdaf: i'd make send_edit_notification do it, wrap simple_send with a send_add_notification and have it automatically do it too (well, after passing in the bug as a param)11:28
dafsabdfl: that's what I'm working on :)11:28
sabdflcan you make it slightly general?11:28
dafit's totally general11:28
dafdilys is a really simple bot written in twisted11:28
dafshe listens on a socket for events11:28
dafso any program can tell her to say stuff11:29
sabdflcan we add ircchannel to Project, and send notifications accordingly?11:29
dafat the moment, she's triggered by programs run from my .procmailrc11:29
sabdflfor example, when a new bug is assigned to that product, send a message to that IRC channel11:29
dafthat's an interesting idea11:30
sabdflsame with a bounty11:30
daflaunchpad would need to know how to communicate with dilys11:30
sabdflhow about if we had a dilys of our own?11:30
sabdflpart of the infrastructure?11:30
dafsure, but you need to make sure she's running11:31
sabdflpart of launchpad11:31
elmoIRC bots are a freaking security  nightmare11:31
carloshmm, perhaps that could be extended to send jabber messages? :-)11:31
carlosGForge does that11:31
elmoany IRC bot running on our machines would have to run chrooted, as an unpriviledged user etc.11:31
elmoand I'd REALLY like someone with a security slant to audit the code11:31
=== carlos sees elmo scared
dafelmo: the code is 95 lines long11:32
elmocarlos: I'm paid to be scared :P11:32
sabdflelmo: even for a bot that just sends messages, doesn't listen to the channel?11:32
elmodaf: the code to dchroot is a couple of hundred lines - mdz found at least two security bugs in it.  what's your point?11:32
spivelmo: Well, it's implemented entirely in python, if that helps.11:32
dafelmo: that the code would be quick to audit11:32
elmosabdfl: from what little I understand of IRC, you can't be a send only client - you have to listen to the server11:32
dafelmo: I know, your job is to be paranoid11:32
elmospiv: yeah, it does11:33
sabdflok, we'll find a way to implement this that elmo will like11:33
sabdflbut in general, the idea is to allow project/product/package to have some contact info associated with them11:34
sabdfllike jabber and irc channels11:34
sabdflemail addresses perhaps11:34
sabdfland to have notifications sent to them11:34
sabdfli think it would be awesome if guys could say "this is our project irc channel"11:35
Kinnisonelmo: any word on when the archive on mawson will update regularly11:35
sabdfland then automatically get an irc ping when a new bug is filed against that product11:35
sabdflor when a new translation is added11:35
sabdflor a new bounty created11:35
elmoKinnison: that's still not working??11:35
Kinnisondsilvers@rosetta:/srv/archive.ubuntu.com $ ls -l11:36
Kinnison-rw-r--r--    1 archvsync archvsync 14981300 Nov  2 10:41 projectb.dump11:36
KinnisonI'd say not :-(11:36
dafBradB: ping11:36
=== elmo tatoos "join is a string method" to his forehead
BradBdaf: pong11:38
dafBradB: gah, sorry11:39
dafBradB: wasn't paying attention11:39
dafBradB: yeah, that's the way I'd like to do it11:39
BradBsounds good11:39
carlosspiv: From the old functional test, I have this: self.ztm.commit()11:50
carlosspiv: how could I do it with the new way to do the functional tests?11:50
carlosor is not needed anymore?11:50
sabdflnight all11:53
kiko-afknight mark11:54
carlossabdfl: night11:56
dafBradB: it seems to me that notify_bug_added only sends mail if the bug has an owner11:57
BradBit always will. it's just a crap special case that i'm in the midst of fixing (eliding a second page test currently to prove it works)11:58
BradBwhat should really be happening is that the owner gets added to the Cc list when they add a bug. then that crap special case gets ripped out.11:58
BradB(which i can do in this checkin)11:59

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