sabdflnight all12:07
BradB|afksabdfl: hi, back for a bit, if you're still around.12:19
sabdflgot it working12:20
sabdflcreated a ProductFileBugView12:20
BradB|afksweet...what'd you do?12:20
sabdflwhich as a createAndAdd method12:20
sabdflwhich pulls out the form data and creates the bug, then creates the BugAssignment12:21
sabdflcan't commit it yet because it needs the datecreated field approved by stub12:21
sabdflhave emailed him, so it will likely be committed tomorrow12:21
sabdfli think i could generalise this and have the same view class used for package as well as product bugs12:21
BradB|afkwe've already got a view that does that.12:22
BradB|afkalso, it's important that the person who added it is subscribed, which the existing factory already does.12:22
BradB|afkit's a content factory actually12:23
BradB|afkand it works for both packages and products, whichever is provided.12:23
BradB|afkcreateAndAdd is just a method in the base AddView that ends up calling the factory12:25
BradB|afkok, gotta really be away now, catch ya later12:31
=== BradB|afk is now known as BradB|away
=== ddaa [~ddaa@deep-thought.xlii.org] has left #launchpad []
=== stub [~stub@dsl-] has joined #launchpad
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: datecreated on ProductBugAssignment and SourcePackageBugAssignment for Mark (patch-766)02:25
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Bounty comments (patch-767)02:53
dafelmo: is there an easy way with GPG to print a summary of a key I have in a file?04:52
dafelmo: (without importing it)04:52
bob2gpg --keyring foo.gpg --list-keys04:55
daf> gpg --no-default-keyring --keyring key.gpg --list-keys04:56
dafgpg: keyring `/home/daf/.gnupg/key.gpg' created04:56
dafbob2: tried that already :)04:56
bob2hrm, I did something like that to see the buildbot keys04:56
daf> gpg --no-default-keyring --keyring ./key.gpg --list-keys04:59
dafgpg: [don't know] : invalid packet (ctb=2d)04:59
dafgpg: keydb_search_first failed: invalid packet04:59
dafmaybe 'cause the file is ascii-armoured or something05:01
=== mdz_ [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad
=== mdz_ is now known as mdz
dilysNew Malone bug #40: "Batching module needs refactoring", submitted by Stuart Bishop09:09
sabdfllifeless: ping?09:14
sabdflstub: do you think we can set test_on_merge to run the page tests first, and if they work, then to go on and run the functional tests?09:16
sabdfli'm trying to get my 30 second test runs back :-)09:16
stubBuy a faster laptop? ;)09:17
stubThere is no reason we can't do it like that.09:17
stubI personally just run test.py directly ('python test.py test_pages' should do what you want)09:18
sabdflcan we make it a separate makefile target?09:20
sabdflmake pagetests?09:20
stubMy 'we' do you mean 'me', or you just looking for feedback?09:25
sabdflgood point, i'll do it, what i know about Makefiles approximates zero though :-)09:28
stubJust remember that Makefiles require real tabs. I'm happy to put it in if you want - it is two lines09:30
sabdflgot it, thanks!09:32
sabdflreally wasn't that hard :-)09:32
sabdflbut the real tab thing would have stumped me if vim hadn't Just Worked.09:33
stubSo simple even management can do it ;)09:33
sabdfl"baz - the revision control system so simple even your boss could use it"09:34
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Fix archivelocation instantiation bug. (patch-768)09:44
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: bounty cleanup, add bugs directly to products, show bugs for a product (patch-769)10:18
dilysMerge to rocketfuel@canonical.com/buildbot--devel--0: Fix taxi up. (patch-66)10:24
stubAnyone got any tips for updating previously working page tests to cope with changes? That diff output is monstrous.10:38
sabdflstub: that's why i've been banging the "elide everything except one tiny feature per page" drum10:51
stubIt is the elisions that are causing me grief in this case - the diff output doesn't know how to handle them so the entire output is different. Makes finding the bits that need changing a problem :-(10:52
stubNeed a more intelligent diff10:52
stubOhh... I think I can fix it.10:56
SteveAstub: yeah, we need to make pagetest diffs understand <BLANKSPACE> and ...11:20
stubCan '...' appear anywhere, or just on a blank line?11:20
SteveAit should be able to appear anywhere11:21
SteveAfor example, to demonstrate that a particular header exists, but you don't care about the value11:21
sabdflis there any good way to know the len() of a resultset?11:25
sabdflor even just whether or not it actually contains a result?11:25
sabdflspiv: around?11:27
SteveAdoes len() on it work?  If not, I think it has a count() method or something like that11:33
=== Kinnison [~dsilvers@haddenham.pepperfish.net] has joined #launchpad
=== doko [doko@dsl-082-082-210-039.arcor-ip.net] has joined #launchpad
sabdflKinnison: morning11:35
sabdflhi doko11:35
Kinnisonsabdfl: Good morning11:40
=== Kinnison recommends not falling asleep on your mobile phone
Kinnisonit makes hearing the alarm a might difficult :-(11:40
sabdflwondered what had happened to you :-)11:41
=== Kinnison can only apologise and get-on :-)
sabdflat least you should have enough rest to smack the domination bits into order :-)11:41
KinnisonWell; it's certainly time to write more unit-tests11:41
=== Kinnison skims ubuntu-users while his machines come up to speed; sync rocketfuel etc
sabdflbummer. can't access count from the page template11:45
sabdflSteveA: any other suggestions?11:45
dokohi sabdfl11:45
sabdflhiya doko11:45
sabdfldoko: see my mails?11:45
dokoyes, thanks, will answer tonight. one mail yes, any more mails?11:46
sabdflhmm... thought there was one yesterday, one today11:47
sabdflSteveA: can i tal:define something as false, then, iterate of the resultset, and during the iteration, redefine that as true?11:48
sabdflhow do i tal:define something as false?11:48
sabdflor true for that matter?11:50
SteveAyou can tal define things to any python value using tal:define="foo python:False"11:52
SteveAbut, that sounds like a case of programming in a page template11:52
SteveAmaybe this logic can be moved to the view's class?11:52
stubtal:define="foo nothing"11:53
stubtal:define="foo string:whatever" for true, or tal:define="foo string:" for false as well11:54
SteveAsabdfl: it is a bug in sqlos.  sqlos things that ISelectResults has a __len__, but it does not.  it has a count()11:54
SteveAto work around, add this in some zcml file somewhere:11:56
SteveA  <class class="sqlobject.main.SelectResults">11:56
SteveA    <require permission="zope.Public" attributes="count" />11:56
SteveA  </class>11:56
SteveAadd a comment saying "XXX: working around bug in sqlos.  remove when fixed upstream." and a suitable name and date :-)11:56
=== debonzi [~debonzi@200-158-107-151.dsl.telesp.net.br] has joined #launchpad
=== debonzi is now known as debonzi|exam
Kinnisonpython question:12:39
Kinnisonfrom foo import bar as wibble12:39
Kinnisonis that correct?12:39
SteveAif that's what you want12:40
KinnisonI think it is12:40
SteveAit is syntactically correct12:40
Kinnisonfrom canonical.sourcerer.deb.version import Version as DebianVersion12:40
Kinnisonis what I want to say12:40
Kinnisonto get 'DebianVersion' as canonical.sourcerer.deb.version.Version12:41
SteveAyes.  c.s.d.v.Version will be bound as DebianVersion in the module's namespace12:41
KinnisonFor implementing a compare function for [] .sort() what does one use as the equivalent of the perl <=> operator?12:43
SteveAdon't implement a compare function12:44
SteveAit is slow, and hard to read12:44
SteveAuse the schwarzian transform idiom instead12:44
SteveA>>> foo = ['a4', 'b2', 'c6', 'd1'] 12:46
SteveA>>> L = [(item[1] , item) for item in foo] 12:46
SteveA>>> L.sort()12:46
SteveA>>> foo = [obj for sortkey, obj in L] 12:46
SteveA>>> foo12:46
SteveA['d1', 'b2', 'a4', 'c6'] 12:46
SteveAIn this case, I wanted to sort the contents of `foo` by the second character12:46
SteveAthat's where `item[1] ` comes from in the second line of code12:46
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: popup work (patch-770)12:47
SteveAthis is usually much clearer than using a comparison function, and vastly faster to execute12:47
=== Kinnison tries to write the equivalent
Kinnison            templist = [ DebianVersion(foo) for foo in outpkgs[k]  ] 12:48
Kinnison            templist.sort()12:48
Kinnison            outpkgs[k]  = [ str(foo) for foo in templist ] 12:48
KinnisonSteveA: that kind of thing?12:49
=== stub likes his comparison functions ;)
Kinnisonhang on12:49
SteveAKinnison: in the first part of the transform, you want to get a list of tuples (sortkey, original)12:49
Kinnisonsorting tuples only considers the first element?12:49
SteveAthen you sort the list of tuples12:50
SteveAsorting a list of tuples onsiders the first element before the second12:50
Kinnisonthen the operation is unuseful12:50
Kinnisonthe original objects are incomparable12:50
SteveAyou don't need all this in python 2.4, by the way12:50
sabdflwhat's the python2.4 syntax?12:51
KinnisonI think that since the common-case is for the list to contain two or three elements; I'll put up with the slowness of a sort function12:51
SteveAKinnison: should still work, if the sort keys are all unique12:51
SteveA>>> L = [(4, 1j), (2, 4j)] 12:52
SteveA>>> L.sort()12:52
SteveA>>> L12:52
SteveA[(2, 4j), (4, 1j)] 12:52
SteveA>>> 4j < 1j12:52
SteveATraceback (most recent call last):12:52
SteveA  File "<stdin>", line 1, in ?12:52
SteveATypeError: cannot compare complex numbers using <, <=, >, >=12:52
=== Kinnison cannot be certain they'll be unique
SteveAKinnison: okay.  Please write it as a function with docstring, and not a lambda12:52
=== Kinnison already was
SteveA(most of the examples use lambda)12:52
KinnisonI don't understand lambda so I don't use it12:52
sabdflKinnison: well said12:53
Kinnisoncmp(o1,o2) does the right thing wrt. o1.__comp__(o2) yes?12:53
SteveAsort() will take a 'key' keyword argument12:54
SteveAyou mean __cmp__12:54
SteveAimplementing __cmp__ is invariably an arse12:54
SteveAimplementing __eq__ and __ne__ and __le__ __and __ge__ is simpler12:55
KinnisonIt's not my type I'm comparing12:55
SteveA(or, whatever subset of those you need)12:55
SteveAoh, ok12:55
KinnisonI'm using the sourceror debian-version tools12:55
SteveAthen, yeah, cmp(x, y)12:55
Kinnisondef compare_packages(p1,p2):12:55
Kinnison    """Compare packages p1 and p2 by their version; using Debian rules"""12:55
Kinnison    v1 = DebianVersion(p1.version)12:55
Kinnison    v2 = DebianVersion(p2.version)12:55
Kinnison    return cmp(v1,v2)12:55
SteveA__cmp__ was a mistake in python12:55
Kinnisonis what I just wrote then12:55
SteveAlooks good.  the python style guide recommends a space after commas. 12:56
KinnisonIs there an equiv of 'static' to mark a single def as being non-exported?12:56
SteveAwhat do you mean "non exported" ?12:57
SteveAyou can import anything from anywhere12:57
Kinnisonoh okay12:57
SteveAthe python convention is to start something with an _12:57
SteveAto say it is "private"12:57
=== Kinnison does that then
SteveAsabdfl: http://www.sourcekeg.co.uk/www.python.org/peps/pep-0290.html#simplifying-custom-sorts12:58
SteveAor even, http://www.python.org/peps/pep-0290.html#simplifying-custom-sorts12:59
SteveAwhich is the same, but from the canonical source12:59
sabdflSteveA: nice, thanks01:04
stubAnyone have any rules about what a valid version number is? I'm thinking same rules as the productname.01:28
Kinnisonversion numbers are very well defined in debian-policy01:28
Kinnisonassuming that's what you're after01:28
Kinnisoncanonical.sourceror.deb.version.Version is an implementation of debian versions01:29
Kinnisonyou can look there for regexps etc01:29
Kinnisonsourcerer even01:30
stubupstream is the upstream package's version number (the 2.4beta2 of python-2.4beta2) ?01:31
Kinnisonwhere 'debian' is not permitted to contain hyphens IIRC01:31
Kinnisonand epoch must be numeric01:31
Kinnison(or absent)01:32
stubBad Scott - embedding utf8 characters in source code :-(01:32
Kinnisonis that bad?01:33
stubIt assumes everyone on the team has editors set to the correct encoding or autodetecting editors.01:34
Kinnisonso long as they leave the utf-8 chars alone it'll be fine ;-)01:34
KinnisontestDomination (canonical.lucille.tests.test_domination.TestDominator) ... ok01:34
=== Kinnison bounces
KinnisonNow to move on to the tool to move superceded packages to death row01:35
sabdflKinnison: i have a doubt about my decision to remove the superceded / removed items from the Publishing tables01:37
sabdflbased on malone01:37
Kinnisonsabdfl: Oh?01:37
sabdflit's a bit hazy, hear me out01:37
=== Kinnison is listening
sabdfla use case question is "is there a packagerelease that was uploaded to distrorelease x that fixes a given bug"?01:38
sabdflnow, we have bugpackageinfestation, so we can say "that packagerelease fixed this bug" 01:38
sabdflbut if that packagerelease has been superceded we don't necessarily know if it was ever uploaded to distrorelease c01:39
=== Kinnison nods
Kinnisonthat's a compelling use-case for something01:39
=== Kinnison ponders for a moment
KinnisonOkay; we add one more PackagePublishingStatus01:39
Kinnisonwe add 'REMOVED' which is chronologically after PENDINGREMOVAL01:39
sabdfldon't do it yet01:40
KinnisonWe never delete from PackagePublishing or SourcePackagePublishing01:40
Kinnisonwould that solve things?01:40
sabdfli think it's worth thinking through the consequences01:40
KinnisonThe primary consequence is that the publishing tables *will* become massive01:40
sabdflwe are working our way through malone, and this interaction between assignments "fix it in this package" and infestation "it's fixed in that package release" is a big grey area01:41
sabdflyes, i don't know that we *have* to bloat the Publishing tables to achieve the goal01:41
sabdflthere may be a more elegant way01:41
KinnisonOkay; another idea just popped into my head01:42
Kinnisonwe have a 'Morgue' table which contains records which passed out of publishing01:42
KinnisonWe only stash the sourcepackagereleases there01:42
Kinnisonso the Morgue just says this sourcepackagerelease was in this distrorelease01:42
Kinnisonand possibly a datetime it was removed01:42
KinnisonHow does that sound?01:43
sabdflwe have to really understand the rest of the problem before i try to solve this bit01:43
=== Kinnison nods
sabdflan extra REMOVED status is one solution01:44
KinnisonI think the Morgue table is preferable01:44
KinnisonWe should try to keep the publishing tables as small as possible01:44
sabdfldon't implement the Morgue just yet01:44
KinnisonI won't01:44
=== Kinnison has plenty to be getting on with
Kinnisonwill you want the solution decided before wednesday; or can we put it on the agenda for then?01:45
sabdflnot even by then01:46
=== Kinnison isn't quite sure what you mean
sabdflwe won't need to decide this on wednesday, maybe during es-conf01:53
KinnisonOk okay :-)01:53
Kinnisonlucille is modular enough that whatever decision we make will be simple to do in her01:53
=== Kinnison writes more Fake... classes for testing lucille's config gatherer
stubSteveA: Are we running Zope3X or trunk?02:00
stubsabdfl: Source packages don't have unique names, so we have no unique human readable id to represent them :-(02:16
sabdflstub: i know, it's a pain, but in the real world multiple distros all have the same name for totally different packages02:18
stubsabdfl: Can I get away with making UNIQUE(SourcePackage.sourcepackagename, SourcePackage.distro) ?02:20
sabdflstub: alas not02:20
sabdflbecause the source package in a given distro can change02:20
sabdflfor example, in warty (ubuntu) the sourcepackage foo might be different to the sourcepackage in hoary02:21
stubThey are different sourcepackages though - 'hoary foo' and 'warty foo'02:21
stubOh - that is distrorelease02:22
stubWell - if this is the case, there is no way for a user to select a sourcepackage.02:23
stubThe only way of identifying a particular sourcepackage unambiguously is by its numeric database key.02:24
=== salgado [~salgado@200-206-134-238.async.com.br] has joined #launchpad
SteveAstub: we're running a zopex3 trunk from several weeks ago02:28
stubsabdfl: I suspect a sourcepackage should be linked to a distrorelease instead of a distribution. Then we can add the require unique constraint and identify a sourcepackage using the combination of its distrorelease.name and sourcepackagename.name and users won't have to guess02:28
stubSteveA: Ta.02:29
SteveAstub: for the next update, I'd like us to move to using a .deb, although I need to check whether anyone is still using macosX or something that it won't work with.02:29
SteveAbasically, the .deb that will be in hoary02:29
stubSteveA: As long as it doesn't delay fixes we make to upstream getting back to our codebase.02:30
stubI think at the moment we are encouraged to work around Z3 problem rather than fixing them. It would be good if it is easier to sync upstream with our dev version.02:31
SteveAstub: yeah, we'll be able to generate a new .deb easily02:32
SteveAI've been talking to matthias about it.  he's produced some .debs that I need to look at02:32
sabdflstub: afraid not02:44
sabdflbecause the source package can change during the production of a distrorelease02:45
sabdflwhen we start a new release, for example, we might just be using the debian package02:45
sabdflthen we modify it02:45
sabdfland what we get is a new sourcepackage02:45
sabdfland if the modified one fails to build on an architecture, then we will have TWO different sourcepackages in the same distrorelease at the same time02:46
sabdflone with binary packages in one architecture, and a second in the others02:46
stubIf we have two sourcepackages in the same distribution with the same name, it is useless because nothing can tell them apart except for a rather meaningless integer id.02:46
stubOr at least useless as far as users cannot choose one. This is a show stopper for Malone's sourcepackagebug assignment, as you could end up with a choice between assigning a bug to 'Ubuntu firefox', 'Ubuntu firefox' or 'Ubuntu firefox' and no way to decide between them.02:48
sabdflwell, exactly02:53
=== debonzi|exam is now known as debonzi|lunch
sabdflwhat's the purpose behind "foo = property(foo)"?02:57
stubMakes a function call look like an attribute02:59
sabdflis it a Python thing?03:00
SteveAproperty(getter_func, setter_func, deleter_func, docstring)03:00
stubsabdfl: So we have to drop sourcepackagebugassignment then?03:01
SteveAyou can have any of those _funcs as None to say "this isn't possible"03:01
sabdfl*cough* what?03:01
stubIt is impossible for a user to select a sourcepackage unambiguously.03:01
SteveAso, a read-only property is foo = property(get_foo).  write-only is foo = property(None, set_foo)03:01
sabdflstub: right. one solution is to assign the bug to the tuple of (sourcepackagename, distro)03:02
sabdflin other words "fix this damn bug in the package called foo in ubuntu"03:02
stubBut that isn't unique either. We might have 100 rows in Sourcepackage with that name and distro03:03
sabdflnot likely03:03
sabdflbugs would just show up against all of them03:03
stubSo we would have to create a number of sourcepackagebugassignments instead of one, to match the number of matching rows in sourcepackage ?03:04
sabdfljust one assignment03:05
stubIf we want to represent 'package named blah in ubuntu' we could do it by making the sourcepackagebugassignment link to sourcepackagename and distro03:05
sabdfl"assign to the tuple..."03:05
sabdflbut im not quite ready for that yet03:06
sabdfljust assign to the *current package called foo"03:06
sabdflwhich we can do03:06
sabdflthere is a big grey area between "assignment" and "infestation"03:06
sabdflwhich we need to sort out03:06
sabdflit will take a while, mainly using it and figuring out what works03:06
stubSo we need to somehow determine the 'current' sourcepackages and only present them.03:07
sabdflthe soyuz guys have done a lot of work on this03:07
sabdflfiguring out which source package to display by default03:07
stubok. I'll chat to them next week.03:07
sabdflstub: where are you running into this?03:09
sabdflin the popup selector?03:10
stubYes - the select a sourcepackage widget. The current one is broken too - we just didn't have suitable sampledata to demonstrate it.03:11
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: popup search facility (patch-771)03:14
sabdflSteveA: is there any way to turn a value into a dbschema ENUM object?03:17
sabdflfor example, given 40, I want the dbschema.BugSeverity item which has 40 as its vlaue03:18
sabdflstub: we should first answer the questions on how we want it to behave03:18
sabdflwith regard to derivative distros03:18
sabdflsay someone has a derivative of ubuntu03:19
sabdflor gnoppix03:19
sabdfland they file a bug on the apache package in there, which is unchanged03:19
sabdflit's basically the ubuntu apache package03:19
sabdflshould that bug show up for us, the ubuntu team? or for the gnoppix team?03:19
sabdflif we have a clear answer to that we can implement it easily03:20
=== debonzi|lunch is now known as debonzi
stubMy gut feeling is that even though the apache package is unchanged in the derivative, bugs are still specific to that package/distro combination. For example, the bug might be that the unchanged apache just doesn't work under gnoppix03:22
=== BradB|away is now known as BradB
SteveAsabdfl: BugSeverity.items[40] 03:26
sabdflstub: well, my gut feel is that we should at least *record* where the bug report came from03:28
sabdflso that we have the option to filter one way or another03:28
sabdflbut more than that, i'm ot certain of03:28
sabdfli want to get malone working in the "single distro" sense before es-conf03:28
sabdfles-conf will largely be about the derivative management process03:28
sabdflfor soyuz, lucille, malone, etc03:29
stubWe still have the 'multiple identical rows in sourcepackage' issue. If we can guarentee that the sourcepackage.sourcepackagename is unique among all the 'current' sourcepackages (however we determine that), then the interface will cope for the time being.03:32
sabdfli dont think this is so bad, actually stub03:33
sabdflwe need a slick interface where the dev can say "this isn't a bug in THIS sourcepackage, it's in THAT sourcepackage"03:34
sabdfla reassignment03:34
sabdflthese packages are usually tightly related03:34
sabdflthe maintainer will know exactly what they are03:34
=== debonzi [~debonzi@200-158-107-171.dsl.telesp.net.br] has joined #launchpad
stubMmm.... I still suspect that (sourcepackage.sourcepackagename, sourcepackage.distro) should be unique, as I thought sourcepackagerelease was suppose to capture snapshots.03:36
sabdfltat's a lot closer, but i think it's still possible for there to be a completely different source package in the same distro with the same name03:41
KinnisonSteveA: is there an existing python class for parsing a configuration file from a string in memory or should I use ConfigParser and StringIO ?03:41
stubsabdfl: We need a real use case for that. I suspect that it shouldn't be allowed to happen. The only case I can see at the moment for that would be if different people were maintaining  the warty release of a package and the hoary release of a package.03:44
KinnisonSteveA: this is for stop-gap config until we normalise it into database columns03:44
sabdflstub: es-conf :-)03:45
sabdflfor the moment, display them all, and display maintainer and distro03:45
sabdflshould be enough to distinguish them03:45
debonzihi sabdfl, are you up to date with soyuz status? How does it look like?03:46
sabdfldebonzi: haven't had a look in a while03:46
sabdflis it running on mawson with current data from hoary, via gina?03:46
stubok. Can I enforce that? UNIQUE(maintainer, distro, sourcepackagename)? Or should we just trust none of the ubuntu package maintainers will break the interface?03:46
debonzisabdfl, should be03:46
SteveAKinnison: ConfigParser and StringIO sounds pretty reasonable03:46
sabdfldebonzi: i'll take a look03:47
KinnisonSteveA: okies03:47
KinnisonSteveA: at least I already know how to use that pair :-)03:47
debonzisabdfl, right.. we know still a lot to do but we whould like to have some feed back 03:48
stubbreaks the existing popup implementation though, because I don't have a unique human readable key to put in the textbox :-(03:49
SteveAstub: did you write the sessioning stuff for zope3?03:50
stubSteveA: yes03:50
SteveAstub: was it discussed at all to have a way of asking if there is a session, without actually starting one?03:50
SteveAright now, even looking to see if there is a session causes one to be created, and the cookie sent to the browser03:51
stubis there a use case for not having that behavior?03:52
SteveAwell, using sessions for auth, and not wanting the overhead for the anonymous03:54
stubThere is a method to do it in the implementation (getRequestId), but it isn't exposed in the interface03:54
SteveAI noticed that03:54
SteveAalso, the RAMSessionDataStorage thing is rather b0rked04:01
SteveAit doesn't seem to be tied into transactions at all04:02
SteveAso, it gives somewhat random results when used04:02
stubI assume this for the auth system, which is storing credentials in the session, so it can say 'there is no client id so I must be anonymous'04:02
SteveAat least, that's what I think was going on04:02
stubReally? The MappingStorage should be handling that.04:02
SteveAyeah, I thought it would do, but it didn't seem to04:03
SteveAI'll look into it later.  I've set things up to use the main zodb for launchpad04:03
stubIf you get different results between the ZODB and the RAM storage there is a bug, since they should work identically.04:04
BradBsabdfl: did you see my comments about BugFactory?04:06
sabdflBradB: no, where?04:06
BradBi was about a minute too late yesterday :)04:06
BradBsabdfl: basically, we need to ensure that all bugs are created with BugFactory04:07
BradBe.g. when a bug is created from a product04:07
BradBbecause BugFactory Does The Right Thing (e.g. adds the submitter as a Cc)04:07
sabdfloh, ok04:07
BradBit handles both package and product adds04:08
sabdflthe submitter should become the owner and that's a special kind of cc anyway04:08
sabdflwe need to make owners, and assignment maintainers, visible04:08
BradBsabdfl: we're not special-casing that though anymore (if the owner *really* wants, they can unsubscribe)04:08
sabdflhmm... seems to me that "owner" is a pretty fricken' special case :-)04:09
SteveAstub:  I think it is something to do with the ram storage not paying proper attention to transactions04:09
SteveAor rather, the ram storage in the sessions code 04:10
SteveAit isn't a problem with ram storage per se04:10
BradBsabdfl: in any case, BugFactory should be used, for whatever given rules we have as a bug gets created (rather than maintaining two or three forks of bug creation code)04:10
sabdfli'll take a look, couldyou file a bug on me please?04:11
BradBi haven't yet seen your code so i can't be specific, but i guess i can file a bug that says "BugFactory should be used for creating bugs"04:12
stubSteveA: If it isn't tying into the transaction system correctly, then it needs someone more familiar with the ZODB guts than me to look at it. Maybe there is a dead chicken to sacrifice to register the connection with the transaction system that has to be done for each request.04:18
dilysNew Malone bug #41: "BugFactory should be used to create bugs", submitted by Brad Bollenbach04:18
SteveAstub: I think there might be.  ZODB stuff will be changing a bit soon, anyway.04:18
SteveAjim has the "multi-databases" stuff to add, and I really really want to get a lot of the zodb-as-root assumptions out of the code04:19
stubMmm.... just annoying because I distinctly remember testing it, ensuring requests went to seperate threads and the results made sense.04:20
SteveAthe threading works04:20
SteveAI think the transactional stuff doesn't04:21
SteveAit may be that it works inside a standardly-setup zope304:21
SteveAbut not launchpad04:21
Kinnisonis there a python class which takes usefully represented time deltas?04:22
Kinnisondatetime.timedelta appears to suck04:22
SteveAtimedelta doesn't care about presentation04:22
SteveAit isn't in its job description04:22
Kinnisonso is there something which does?04:22
SteveAthere's datetime parsing stuff in zope3 somewhere04:22
KinnisonI want to be able to cope with deltas like "2d" "14h9m" etc04:23
SteveAand also a 3rd party class that is being considered for inclusion in the stanard lib04:23
SteveAI suggest coding that yourself -- doesn't look too complex04:23
KinnisonI'm happy to code it myself; I was just wondering if I would be duplicating effort unnecessarily04:24
SteveAtimedelta(days=2), timedelta(hours=14, minutes=9)04:24
SteveA(just checking you know about the timedelta constructor)04:24
KinnisonStill need to pull apart the string then; okay04:25
SteveAthere's something in schooltool's ical stuff to parse the ical format for durations04:26
SteveAprobably not what you want, though04:26
Kinnisonnot really; no04:31
KinnisonSince I can control the format easily; I'll just split it up for now04:31
=== Kinnison looks
SteveAdoesn't have anything for timedelta though04:33
=== debonzi -> caf
=== debonzi [~debonzi@200-158-107-171.dsl.telesp.net.br] has joined #launchpad
sabdflBradB: was that your patch that changed the product selector?05:39
sabdflstevea: i think we need a test that looks for "import pdb; pdb.set_trace()" because I see someone just committed that in some code :-)05:39
sabdfli've done that before05:39
BradBsabdfl: how did the selector change? I don't think I've changed anything with it recently.05:42
sabdflmust be stub05:42
stubMine. I'm trying to learn enough javascript so it isn't broken ;)05:43
sabdfli noticed that in a recent (this afternoon) merge, the tests went from POST'ing an integer ("3") to a name ("arch-mirrors")05:43
sabdflstub: that's going to break for sure, since product is only unique inside a project :-)05:44
BradBhm, that means the vocabulary was changed05:45
BradBthat would have been caught with the previous pagetest suite, but oh well.05:46
stubsabdfl: That is no more broken than it was yesterday - it has never specified (project,product) but just product05:48
stubBut will need to be fixed.05:48
dilysNew Malone bug #42: "IMaloneBug needs to go away", submitted by Brad Bollenbach05:52
sabdflthe diff went from specifying an id (3) to a name (arch-mirrors)05:53
sabdflstub: ^05:54
BradBwoohoo, i filed #4205:54
sabdflBradB: it was caught by the forcefield, because I didn't elide the fields, just the decoration05:54
sabdflso stub had to change the test accordingly05:55
stubno wonder there is so much crap javascript - all the online references suck majorly ;-(05:57
BradBi'm getting sick of seeing IMaloneBug, so in my next merge it's dead05:57
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: mainly code cleanup, in particular, replaced all mentions of 'MaloneBug' with simply 'Bug' (patch-772)06:48
=== BradB continues bug listing UI work after lunch
=== BradB is now known as BradB|lunch
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Sourcepackage popup (patch-773)06:59
stubelmo: pqm hung if you are around08:10
sabdflstub: another dogfood code update tomorrow?08:17
sabdflmalone is starting to shape up nicely08:18
sabdflbig push for es-conf so we can get the team straight onto it08:18
=== BradB|lunch is now known as BradB
KinnisonWell; I'm off now. have fun guys08:32
debonziKinnison, see you08:32
=== debonzi [~debonzi@200-158-107-171.dsl.telesp.net.br] has left #launchpad ["See]
BradBsabdfl: hm, we'll need owner columns on assignments too08:49
BradBand colours in the bug listing!08:53
=== BradB comes up with a simple colour scheme with css
BradBstub: ping08:53
BradBsabdfl: ping09:30
BradBelmo: ping11:17
BradBpqm loops are Just No Fun11:36

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