/srv/irclogs.ubuntu.com/2004/10/17/#launchpad.txt

=== BradB [~bradb@george.kkhotels.co.uk] has joined #launchpad
sabdflstub: ping01:25
sabdflstub: how painful are table renamings?01:25
sabdflbugsystem -> bugtracker01:25
sabdflprojectbugsystem -> projectbugtracker01:25
=== kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad
=== stub [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad
=== kiko cheers sabdfl on
kikosabdfl, do you have time for a code-related question?02:09
sabdflkiko: just have to land the patch for the renaming I just accidentally mailed about :-)02:09
sabdflpressed send before i had committed... doh02:09
kikoheh02:09
sabdfl5 minutes ok?>02:10
kikohopefully PQM will be merciful02:10
kikosure.02:10
kikosabdfl, my question pertains to the intended location of the application component interfaces02:23
kikoI understand the database class interfaces should live in lauchpad/interfaces/02:24
kikohowever what about application component classes and views?02:24
sabdflkiko: some views are strongly bound to the domain object and generally useful02:28
sabdflfor example, tonight I just reused a method from the BugSystemSetView onto ProjectView to allow for the creation of a BugTracker on a Project as well as from scratch02:29
sabdflthe code was common so I took the View method, made it a freestanding function, then got both View's to call that02:29
sabdfland it seems to make sense to have a place to keep view code that can be commonly used with the domain objects in some domain-oriented place rather than in the app itself02:30
sabdfli just don't know exactly where yet02:30
sabdflkiko: your suggestion?02:30
kikoI'm not sure yet, I wanted to hear your opinion on it now that you have your hands dirty02:31
kikothat's definitely true02:31
kikoin a new system we're architecting the domain classes are actually packages that have multiple modules in them -- you have product/ and then klass.py, queries.py, helpers.py, etc.02:32
kikoyou could even have local views though I currently don't like that very much because it makes domain depend on interface classes02:33
sabdfllet's get a little dirtier for a while then figure out where to put it02:33
sabdflshould be less work that the last one :-)02:33
kikoyes, that's definitely the right way to do it02:33
kikooh, you saw my timezone message then <wink>02:33
kikohaving the domain classes be packages allows you to keep a lot of useful code bound together with it02:35
kikothe actual views and application components can then just pull stuff from them and compose the interface02:35
kikosabdfl, this function you created, where did you put it?02:35
kikoin project.py?02:35
sabdflno, in canonical.malone.browser02:36
sabdflit's really a view function02:36
sabdfland really related to bug trackers02:36
sabdflso canonical.doap.browser.py just imported it from canonical.malone.browser.py02:37
kikoso it couldn't for instance be reused in a soyuz view of a project?02:37
sabdflyes it could02:37
kikosomehow I don't like cross-package imports like that -- it seems like it should be moved somewhere "higher" 02:37
kikoOTOH we don't have a place to peg this sort of common code right now02:37
kikoin our projects I solve that by providing a components/ package that has interface+domain glue that all applications can use02:38
kikoso there's a components/person/ that actually provides multiple views of person that any app can choose to use at any time02:38
kikoI figure we should have something like portlets/ at least02:38
kikoso that soyuz knows exactly where to look for portlets that display bug data, for instance02:39
kikoI wonder02:40
kikodoes the code in your function actually depend on anything UI-related?02:40
kiko(if it's not big, perhaps privmsg it to me?)02:40
sabdflkiko: it needs a form and an owner02:46
sabdflso i just pass both as arguments02:46
sabdflthe view object calls newBugTracker(form, owner)02:46
sabdfli could have done newBugTracker(request) which I guess would give you enough to work it all out in the function02:47
kikoI guess it's still pretty tied to UI code, though, if we're dealing with requests and forms02:47
sabdflyes, it is, which is why i put it in browser02:50
sabdfli guess we could have a canonical.launchpad.browser/02:50
sabdflwhich has a bunch of View's in it which are generally useful02:50
sabdfland then the REAL app stuff could be in canonical.rosetta etc02:51
sabdflbut let's see how it goes02:51
sabdflunless you see a pressing need to reorg that too :-)02:51
kikoI reckon we can wait till people think it's safe to go back to their little directories02:53
stubThe cross imports between canonical.doap.browser and canonical.malone.browser is leading towards ugly cross import problems. The component architecture should make this unnecessary.02:53
kikoand then hit them with a 10am-13pm UTC surprise02:53
kikostub, do you have a good solution for storing view-specific code that is common between apps?02:54
stubI'd have to see what doap.py is currently importing from malone and why... is that committed?02:55
sabdflstub: should be now02:56
sabdflmorning02:56
=== stub waits for its mirror to finish
stubIn this case I guess to want to register the common functionality as a Utility03:00
stub(assuming it is just a function in malone/browser.py you need to share)03:01
sabdflhow do I do a many to many join in sqlobject?03:03
sabdflin other words I want to return Project.bugtrackers 03:03
sabdflwhere bugtrackers is the set of BugSystem obejcts as joined through the ProjectBugSystem table?03:03
sabdflstub: yes it's just a function03:03
sabdflstub: any idea on the ManyToMany join questioN?03:04
stubYer - I'm just looking it up. Haven't used it myself though.03:06
lifelesslucille ?03:06
sabdfllifeless: archive management stuff for james03:06
stubhttp://www.sqlobject.org/docs/SQLObject.html#relatedjoin-many-to-many03:06
stubUnfortunately I don't think you can use RelatedJoin until the SQLObject update has been done03:07
sabdflstub: thanks03:08
sabdflhmm... is the sqlobject NOT done?03:08
sabdfllifeless: ?^?03:08
lifelesshmm ?03:08
stubhttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=202003:09
lifelessah, crossed wires.03:10
lifelessI was waiting for a definative list of which local patches we wanted preserved.03:11
lifelessthe code import itself is done and in rocketfuel since the 28th.03:11
lifelessSteveA: does sqlobject 0.6 have your feature to error on duplicate sqlobject class names ?03:12
stublifeless: No - we need to reapply that patch. BradB only put it in upstream a few days ago I think.03:14
lifelessok sqlobject--test--0.6 now has all our local changes03:15
sabdflAttributeError: 'SORelatedJoin' object has no attribute 'otherClass'03:21
sabdflanybody seen that before?03:21
lifelessdo we have the update-database without-losing-contents script yet ?03:23
dilysBug 2020 resolved: Update our SQLObject snapshot to 0.6 release03:25
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=202003:25
sabdflstub: how hard is table renaming?03:29
stubalter table foo rename to bar;03:31
stubtrivial03:31
stubFallout on the Python level is more what you would worry about, and grep will normally see to that.03:31
sabdflstub: ok, please do the following,I'll clean up and commit working code:03:33
sabdflbugsystem -> bugtracker03:33
lifelessshould there be a launchpad_unittest target in database/schema ?03:34
sabdflprojectbugsystem -> projectbugtracker03:34
sabdflare fieldnames as easy?03:34
stubALTER TABLE SourcepackageBugAssignment ADD FOREIGN KEY (binarypackage) REFENRECES BinarypackageName  <-- should this go in now too (patch is in my pending queue)03:34
lifelessok, trying to do this production update test, but the unit & functional tests are failing.03:35
sabdflstub: i think we want to change the name of the field as well if we change it's target03:35
sabdflbinarypackagename03:35
lifelessis that expected ?03:35
sabdflotherwise it would be inconsistent03:35
stubsabdfl: I agree - I was just trying to minimize changes since we have a deadline ;)03:36
sabdfllet's get them in now03:37
sabdflwhile you're at it03:37
lifelesseek.03:37
sabdflcan we rename projectbugtracker.bugsystem to projectbugtracker.bugtracker03:37
lifelessI can only confirm stuff isn't broken at the revision I'm merged to...03:38
sabdflstub: what's the sql to do the field renames?03:38
sabdfllifeless: none of these tables are stuff you depend on03:38
sabdfleven indirectly03:38
stubALTER TABLE foo RENAME COLUMN bar TO baz;03:38
lifelessok.03:38
lifelessthen It'll be your problem :)03:39
lifelessI'd like to have the unit & functional tests passing though.. is there any comment on the fact they are failing at all ?03:39
sabdflalter table projectbugtracker rename column bugsystem to bugtracker;03:39
sabdflthis after the previous table renames03:39
kikolifeless, brad shot off some emails on the issues this week03:40
lifelesskiko: so make test is expected to fail ? Ok then.03:41
kikoerr, rather, today.03:41
stubsabdfl: Just testing the patch now before I commit that with the other pending changes03:41
kikoyes, it currently fails, though people are expected to fix that ASAP as we want to turn tests back on.03:41
kiko(in PQM, lifeless)03:41
stubjustdave: I suspect this will definitely break check-watches.py03:42
lifelesskiko: yes, I was wondering about that :)03:42
kikoandrew was a bit unhappy about it03:49
justdavestub: yes it will, but I was expecting that :)03:51
lifelesssabdfl: ok, the first thing that brakes is /soyuz/projects/view-a-project03:55
lifeless    *03:55
lifelessAttributeError: 'Product' object has no attribute '_poTemplatesJoin'03:55
sabdfllifeless: there's a much newer and better doap framework03:55
lifelessand equally03:55
lifelessdoap/projects/iso-codes03:56
lifelesswith the same error03:56
lifelessthat works for for the project aaa.03:56
lifelessgarh.03:56
stubdatabase patches are with pqm03:57
lifelessok, importantly, the do-not-use-info-imports project fails03:57
lifelessand thats the one I need access to.03:57
lifeless    *03:57
lifelessAttributeError: 'Product' object has no attribute '_poTemplatesJoin'03:57
lifelessditto for the 'Launchpad mirroring project'03:58
sabdflstub:03:58
sabdflalter table bugtracker rename column bugsystemtype to bugtrackertype;03:58
sabdflstub: ok?04:02
sabdfllifeless: it most certainly does... where are you importing Project from?04:04
=== stub missed the bugsystem -> bugtracker rename.
stubIRC is probably not the best medium for this :-)04:05
sabdflstub: also need a unique name on bugtracker04:09
sabdflalso, need unique (project, bugtracker) on projectbugtracker04:09
sabdflstub: i have working code for the post-rename platform04:09
sabdflhmm... for a loose definition of woring, given the state of our tests04:09
stubunique(project,bugtracker) is already there.04:10
sabdfloops, true04:10
lifelesssabdfl: what do you mean by 'importing Project' ?04:10
sabdflimport canonical.launchpad.database is the way to do it04:11
sabdflis that where you are finding your Project object?04:11
lifelessI've just : grabbed the latest code, run the schema makefile to update the database, run make run in the top04:11
sabdfllifeless: or just give me a url that is breaking04:11
lifelessI then browsed to the new doap stuff04:11
sabdflok04:11
lifelesshttp://localhost:8085/++skin++Debug/doap/projects/launchpad-mirrors04:12
sabdfl'sworking fine here04:13
lifelessgarh.04:13
lifelessok, I'll nuke my database and retest. The concern though is - we can't do that to emperor.04:13
lifeless(new sample data works fine under the same /doap/projects/04:14
lifeless(its only existing sample data or production data it has trouble with)04:14
sabdflstub: 04:14
sabdflDatabaseException: ERROR:  relation "bugtracker_id_seq" does not exist  SELECT NEXTVAL('BugTracker_id_seq')04:14
sabdfldoes the rename automatically rename the seq tables?04:15
kikonope.04:16
kikoit doesn't.04:16
sabdflnice04:16
stubNo it doesn't, and I don't think we want to (it involves creating a new sequence with the new name, setting its current value correctly, and resetting the default value on the tables primary key). 04:17
stuboh...04:17
sabdflhmm... what about04:19
sabdflalter table bugsystem_id_seq rename to bugtracker_id_seq04:19
sabdflseems to work here04:19
sabdflkiko?04:20
lifelesssabdfl: its a canonical.launchpad.dmark.Product product instance, but it has not _poTemplatesJoin attribute04:25
kikosabdfl, that's peculiar -- you're using alter table on a sequence?04:26
kikoor do you mean alter sequence bugsystem_id_seq?04:27
lifelesssabdfl: going to the gimp project, doesn't trigger the same code path.04:27
kikoack04:28
kikobizarre. pgsql has no alter sequence, you're right04:28
kikosabdfl, sounds correct then. you alter the table and then the sequences it should use.04:29
stubkiko: I think they just overloaded the alter table command to deal with sequences, or it is possibly just a useful side effect04:31
=== stub has learnt something new
sabdfllifeless: i'll commit to my latest revision, which works on the arch-mirrors project04:31
lifelesssabdfl: thanks04:31
lifelessI'm tracking it down, nearly there :)04:31
lifelessoh, I know why04:32
lifelessthe same data has no products.04:32
lifelessso the code int he template that fails is never triggered. you need products to trigger it.,04:32
lifelessdoes your arch-mirrors project have any products ?04:33
lifelessseparate question, how do I give myself a usercode ?04:33
sabdflyou guys seeing chinstrap.warthogs.hbd.com?04:35
lifelessyes, just fine04:35
lifelessits idling.04:36
sabdfllifeless: i think that's fixed in a recent commit. sec//04:38
sabdflstub, lifeless: pqm mail on the wire04:40
stublifeless: Sample data has no products at the moment, as the inserts are failing because there are no people :-/04:41
sabdfllifeless: the page template still links to "+add-sourcesource"04:41
sabdflwhat is the correct url for me to test with locally?04:42
sabdflstub: where are all the people?04:42
lifelesssabdfl: it used to be /soyuz/project/product/+add-sourcesource , then .../sourcesourcename04:43
stubsabdfl: Being created *after* the projects are trying to be created :-/04:43
stubYes - I think somebody has stuck a load of inserts manually at the top of current.sql04:44
sabdflah04:46
sabdfldoes pg_dump do things in a fashion that avoids this?04:47
sabdflmaybe we should create new-samledata.sql with a big warning at the top of the file:04:47
stubDon't worry - I think it was me :-)04:48
sabdflDO NOT EDIT THIS FILE04:48
sabdfl?04:48
stubMust have sneezed at the wrong time and made vim do something nasty ;)04:48
lifelessstub: so how do I add a person for me ?04:48
=== stub pulls the correct version from rocketfuel@
stublifeless: There is a readme file that Mark wrote in database/sampledata04:49
stublifeless: But don't do it yet, as the new method of making sampledata will not merge well and I'm playing with it atm.04:49
sabdflstub: hmm.. merges could be fun04:50
lifelessstub: the readme doesn't tell me04:50
lifelessthat talks about updating the sample data, not about bootstrapping a usercode with password when you don't have one in the first place.04:50
stubOh... ic. The script is in rosetta - look for createuser.py04:51
stubYou would use that to create your user (crypt your password and insert into the Person table basically), then do the stuff described in sampledata/README to make a snapshot of your database.04:51
sabdfllifeless: foo.bar@canonical.com04:52
sabdflpassword test04:52
lifelesssabdfl: thanks.04:52
sabdflbut.. your scripts want you, i guess04:52
lifelessI'll need to do the createuser thing on emperor though...04:52
lifelessnope, your tweaks don't fix it.04:53
lifelessits the lack of products that stop you seeing it I think.04:53
lifelessoh bah, and now a problem with _bugtrackers.04:54
sabdfllifeless: i think i've found the problem code04:55
lifelesscool04:55
lifelessI'll go grab a late breakfast.04:56
lifelessas I'm starving04:56
=== justdave_ [~justdave@24.247.63.44.gha.mi.chartermi.net] has joined #launchpad
=== justdave [~dave@24.247.63.44.gha.mi.chartermi.net] has left #launchpad ["Poof"]
=== justdave_ is now known as justdave
stubpatch going to pqm now05:06
sabdfllifeless: were you tracking the renaming at all?05:07
lifelesssabdfl: yes, but at the email level, not hte code level - no time to do more05:13
sabdflok, theres a lot to clean up05:13
sabdfli'm on it now, may as well pull an all nighter05:13
lifelessget some sleep... sleep is important.05:13
sabdflno, i think i want to commit this so I can as you to replace the "duh" lines with something more... explanatory05:14
lifelesssure thing.05:14
lifelessthat was all the last day @ london :[05:15
sabdflsure, time to clean it up though05:15
sabdflill get everything renamed and in the right places05:15
sabdfland running05:15
lifelessthank you05:16
lifelessI'll go back to default-branch handling for now then05:16
sabdfllifeless: please don't use arch-tag in new files05:17
sabdfllet's stick to tla add05:17
lifelesssabdfl: why not ?05:17
lifeless(arch tag is faster, able to carry data via patch | inclusion in svn etc, able to just be 'mv'ed)05:18
sabdfllifeless: when you copy the file, arch bitches05:19
lifelesssabdfl: right, because you have the same id present, so you just update the tag, same as if you copy a file then run tla add.05:20
sabdflright now, half the files have them, half don't and i don't like it05:21
sabdflnor does the rest of the launchpad team05:21
lifelessoh.05:21
=== lifeless shrugs
lifelessok, for launchpad, I won't arch-tag files.05:22
sabdfllifeless: how do you specify an Interface for a method that takes **kwargs05:32
sabdfl?05:32
lifelesserm, the usual I'd have said:05:33
lifelessmethod(known, arguments, *args, **kwards)05:33
sabdflthankjs05:34
lifelessdid you know i'm up to 320 tests in cscvs ?05:36
=== stub [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad
sabdfllifeless: you're making baby jesus cry over here06:10
lifelesssorry baby jesus06:11
lifelessbaby sqlite is making me cry now06:11
sabdflwhat do you use sqlite for ? cscvs?06:14
lifelessyes06:14
lifelessthe temporary cache of CVS changesets06:14
sabdfli have had to really brutalise the classes you created for sync db insertion06:14
sabdflwhere are you using those classes, and are there tests?06:15
lifelesswhat file where they int ?06:15
sabdflif it's enough just to get the data in the db, that's up and running now06:15
sabdflwhen?06:15
lifelessif they came from canonical.arch.*, then I was using them in buildbot and in launchpad and there is good test coverage.06:15
lifelessif they came from canonical.soyuz.*, then just stashing the data in the database is enough.06:16
lifelessbut there isn't great test coverage for the soyuz ones ( the functional test framework wasn't present when I was writing the bulk of that code)06:16
sabdflthe latter, phew06:16
stubsabdfl: When Malone sends an email to a Person, which email address does it use? I think we need a 'preferredemail'  column in the People table06:17
sabdflagreed, but what if there isn't a preferred email, o any email?06:17
lifelesspreferred contactdetails ?06:17
stubIt should be set automatically to the first confirmed address. If there  is no preferred email or no email we don't send them anything06:18
stub(or better yet, refuse to let them be subscribed as a CC in the first place in that situation, although we still need to cope if they remove their email addresses later or they become invalid)06:19
stublifeless: I was thinking of just a foreign key referencing the emailaddress table06:21
stubOr perhaps a preferred boolean column on the emailaddress table would be better...06:22
lifelessI was thinking just tack an object against the Person... represent that in the db the easiest way.06:22
stubIt is tied to the emailaddress table though, where we store the status (new, confirmed, old).06:25
stubHmm... actually we *could* just use the existing status column. 06:29
sabdfli like the idea of doing nothing till we have a confirmed email for them06:54
sabdflat that point, they are a user06:54
sabdfltill then, they are data06:54
sabdflwhat's the magic to get Table.select(name='foo')?06:55
sabdflstub?06:56
kikomagic?06:57
kikoTable just needs to inherit from SQLOS or whatever our base clase is :)06:57
sabdflkiko: can you give me an example using Product?07:10
sabdflI want the product with name='foo'07:10
kikosure07:11
sabdfl>>> p.select(name='gnome')07:11
sabdflTraceback (most recent call last):07:11
sabdfl  File "<stdin>", line 1, in ?07:11
sabdflTypeError: select() got an unexpected keyword argument 'name'07:11
sabdfl>>>07:11
sabdflp = Project07:11
kikoProject.select(Project.q.id == 23) 07:12
kikofor instance07:12
kikothere are examples in soyuz/sql.py I suspect07:13
sabdflah07:14
sabdflthanks07:14
kikoI don't have a tree to peek at right now07:14
lifelesssabdfl: usually though I think its best to abstract that.07:14
lifelessit makes the code very dependent on the exact db structure.07:14
kikolifeless, abstracting by providing class methods like getProjectByID?07:15
lifelesskiko: for example, yes.07:15
lifelessactually, the DataMapper pattern from POEAA is a much better way, which I started implementing for Product Project and Sync in soyuz07:15
kikowell, okay, but I tend to think that the domain code is helplessly intertwined with SQL and therefore tightly coupled to the db schema07:16
lifelessbut, any abstraction that decouples data representation and semantics is the key,07:16
kikoin practice at least07:16
lifelesskiko: thats the whole point of the abstractions, they prevent that.07:16
lifelessHave you got a copy of POEAA ?07:16
kikoPatterns of ... ?07:16
kikomaybe I do07:17
lifelesspatterns of enterprise application architecture07:17
lifelessfowler07:17
kikomartin07:17
kikoI see.07:17
kikothe problem I see is that IRL unless the abstraction is really flexible you end up cheating here and there to get things to just go as you need them to.07:18
kikoI'm okay with cheating though07:18
kikoand if you accept that I'll agree that providing abstractions that are cheatable are much better than sprinkling column and table names around application code if possible.07:18
kikoif your abstraction is just a dictionary mapping X to Y however.. ;-)07:19
sabdflkiko: how do i use tal to specify a url that's like /xxx/name/07:19
sabdflwhere xxx is fixed07:19
sabdfland name comes from tal07:19
sabdfllike:07:19
kikohummm07:19
sabdfllike: /srcpkg/5/07:19
sabdflif i use tal:attributes it replaces the whole href07:20
lifelesskiko: sabdfl string('xxx') + context/name07:20
kikohmmmm, can I see the whole statment07:20
lifelessI think you need python: or something in there too.07:20
lifelesskiko: right, so what you do is you encapsulate the semantics of the domain<->persistence in the data mapper.07:21
sabdfl<a tal:attributes="href string('sourcesource/') + source/name"07:21
lifelessthen when you need to cheat, you just extend the datamapper appropriately.07:21
lifelessyou can tie data mappers into your transaction framework, and that then takes care of lazy commits and so on.07:22
lifelessit all hangs together /very/ nicely. I understand that APE is based on much of POEAA07:22
kikosabdfl, does that actually work?07:23
sabdfllifeless: the Mapper code is horrible to follow07:24
lifelessthe quick stuff I'd put together ?07:24
sabdflkiko: python: string('sdfsdf')+source.name07:24
sabdflworks07:24
sabdfllifeless: yes07:24
kikoI think data mappers tend to be kind of complex, given my experience with APE07:25
sabdflmaybe a nice fancy framework but the codepaths are too horrendous for words07:25
lifelesscause if thats what you mean, I won't disagree, I was simply aiming to keep the two things separate and build it out as appropriate.07:25
sabdflthanks for the fun evening ;-)07:25
kikoheh07:25
lifelesssabdfl: nyah, that wasn't a nice fancy framework :)07:25
sabdflwhat's wrong with this:07:26
sabdfl        return SourceSource.select(SourceSource.q.name=="%s" % \                                     quote(sourcesourcename))[0] 07:26
lifelesskiko: yes, data mappers are complex for trivial projects - but for something the size of launchpad... I think they are a simplification.07:26
lifelesssabdfl: are you asking me whats wrong with it stylisically, or functionally ?07:26
kikoit looks okay07:27
sabdflfunctionally, it's 6:30 am07:27
kikocould be there are no SourceSource objects in the database and [0]  is breaking things07:27
lifelesskiko: yeah, deliberate exception in that case.07:27
kikoyes, but I need to see a traceback07:28
lifelesssabdfl: is there a traceback from that ?07:28
sabdfllist index out of range07:28
sabdflbut the same code works in a console07:29
kikoit just means that the [0]  is breaking things07:29
kikoare you looking at the same database?07:29
lifelesssabdfl: it means that there is not a matching source source for that sourcesourcename07:29
kikoare you running into an sqlobject-caching-my-data thing?07:29
lifelessI'd add a import pdb;pdb.set_trace() before the return, and poke a little after you trigger it 07:30
kikoI suspect it's just a consistency of db view issue, but ...07:30
sabdflok i'm in pdb07:32
sabdflhow do i print out variables etc?07:32
lifelessu07:32
lifelesswill take you up the stack07:32
lifelessd 07:32
lifelesswill take you down the stack07:32
sabdflkiko: there are sourcesrouce rows07:32
lifelesslist will show you the code07:32
lifeless<expression> will be evaluated in that context.07:33
lifelessie.07:33
lifelessprint quote(sourcesourcename)07:33
lifelessor print self.foo.bar07:33
sabdflok, sourcesourcename is coorect07:33
lifelessis quote(sourcesourcename) correct ?07:33
lifelessyou can assign variables too:07:34
lifelesstemp=SourceSource.select(SourceSource.q.name=="%s" % quote(sourcesourcename))07:34
sabdflhmm... the unicode thing seems to be an issue07:34
lifelessprint temp07:34
sabdfl(Pdb) quote(sourcesourcename)07:34
sabdflu"'ytyu'"07:34
lifelessthats not good :)07:34
kikoargh07:34
sabdflsuggestions?07:35
kikowhat are you querying for?07:35
lifelesshas sourcesourcename already been quoted by chance ?07:35
lifelessquote isn't idempotent.07:35
sabdfl(Pdb) sourcesourcename07:35
sabdflu'ytyu'07:35
sabdfl(Pdb)07:35
lifelessyes, its already quoted. so you07:35
lifelessyouve added a quote call before this method was called.07:36
lifelesseither remove the quote here, and ensure all callers quote, or remove the quote up the call stack.07:36
lifeless(I think. Its a theory)07:36
lifelesswhat is str(sourcesourcename)07:36
sabdfl(Pdb) str(sourcesourcename)07:37
sabdfl'ytyu'07:37
lifeless actually, that does look ok.07:37
lifelessI was misreading before :[07:37
lifelessI presuem that ytyu is your sample data?07:37
sabdflseems to work without the quoting07:37
sabdfllifeless: yes07:38
lifelessheh, then yeah, nuke the quote call, maybe leaving a comment.07:38
kikoit's odd that it's coming in quoted, though.07:38
lifelessyay, sqlite beaten into shape07:50
sabdfllifeless: "har har"?07:52
lifelesswhere?07:56
kikoouch07:59
kiko3am07:59
kikotime to sleep or people will be unhappy tomorrow07:59
kikosee you guys in 6h07:59
=== kiko bikes off home
sabdfllifeless: what are branchfrom and archarchive in sourcesource? don't see them in the table at all08:29
lifelessthey should be in the table.08:31
lifelesserm let me see.08:31
lifelesswhat file are they in now ?08:33
lifelessbranchfrom is the element in Job that the cvs source branch is recorded in.08:34
lifelessin the database that is cvsbranch.08:34
lifelessarcharchive appears to have been lost08:36
lifelessbut I'm stilldigging08:36
lifelessactually, where are you seeing archarchive ? I need to check the context08:38
lifelessbbs08:39
lifelesssabdfl: where are you seeing archarchive ?08:53
SteveAmorning10:03
=== BradB [~bradb@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== debonzi [~debonzi@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== elmo_ [~james@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad
carlosmorning10:15
cprovcarlos: morning10:19
=== Kinnison [~dsilvers@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
KinnisonMorning10:21
dafSteveA: did we work out what to do with the patch for SQLOS at https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2005 ?10:22
lifelessmy bet is sabdfl went to sleep :] 10:25
KinnisonThere's klingons off my starboard bow10:25
sabdfllifeless: it was a 40 minute power nap :-)10:26
=== Kinnison imagines tesla towers at each corner of sabdfl's bed
sabdfllifeless: archarchive is in the page template10:26
sabdflklingons in "shoot to kill" mode10:27
lifelesson the sideboard bow jim10:27
stubdaf: spiv has commit rights to sqlos now I believe so he can push it upstream. lifeless will need to patch our local copy, or perhaps just make a snapshot after upstream is updated?10:27
sabdfllifeless: from the db, there is no place to store arch archive details, can i pull  that out of the page template?10:28
lifelesssabdfl: there used to be.10:28
sabdflwhich field?10:28
lifelessthat field is where I put 'cvs@arch.ubuntu.com'10:28
sabdflfor new classes, please only ever use the fieldnames in the db in the db access class10:28
=== Kinnison doubts klingons have any other setting
sabdfl newarchive             | text                        |10:29
sabdfl newbranchcategory      | text                        |10:29
sabdfl newbranchbranch        | text                        |10:29
sabdfl newbranchversion       | text                        |10:29
sabdflare those the ones?10:29
lifelessI'm just checking10:29
sabdflthe page templates use names that are completely different from the db, in a very opaque way10:29
sabdfli'm just going to remap them straight to the obvious names10:30
lifelessyes, newarchive.10:30
lifelessas long as you update the infoImporter logic, I'm happy.10:30
sabdfllifeless: no, sorry, up to you to make that stuff work10:30
lifelessthen please don't remap it, as I won't know whats canges and it'll triple the time to to it.10:31
sabdfli've basically spent all ight rewriting these core classes to follow thelaunchpad conventions10:31
sabdfllifeless: too late, it was broken, obtuse and not maintainable10:31
lifelesssabdfl: I've no problem with it changing, but if you change foo->bar, then heop that I can figure that bar was foo - thats difficult. I'd much rather you either tell me 'change foo to bar', or change foo to bar throughout all at once.10:33
lifelesss/heop/hope/10:33
sabdfllifeless: all i am doing is reverting to the name used in the database10:33
lifelessas for the conventions being different, the Job datatype in importd predates all of launchpad, which is what I needed to get the data in - I'm sorry if I caused confusion10:34
sabdflthe previous code had objectname._instancevar which was different to table.field and also different to the form context/value10:34
sabdflit's not the access pattern, it's the naming that's totally inconsistent10:34
lifelesssabdfl: ah that was a different thing, that was my rough mapper where the domain object wasn't a sqlobject.10:34
sabdfli'm feeling a little grumpy about it10:34
=== lifeless can tell
lifelessok, what do I need to do from here ?10:35
sabdflso, when i'm done, you will be able to:10:35
sabdfl * create a new SourceSource10:35
sabdfl * edit a sourcesource10:35
sabdfland your code will be able to access db fields through Object.fieldname10:35
sabdflvery straightforward10:35
sabdfllifeless: is sourcesource.branch the db table of the branch we created into which we sync this upstream?10:48
sabdfllifeless: what is the "hosted" field?10:51
lifelessthe hosted field is used to record things like 'sourceforge', 'savannah'10:52
lifelesswhere we can add logic to infer cvs tarball locations and the like10:52
lifelessbranch is a foreign key into the branch table IIRC.10:52
sabdfltnx10:52
lifelessbut we can't populate branch until the sync has completed.10:52
lifeless(chicken and egg problem).10:53
lifelessso the actual sync engine ignores it.10:53
lifelessdinner time.10:58
sabdfllifeless: the page template refers to archsourcename and archsourceurl11:05
sabdflwhat are they in the db?11:05
lifelessI thought they were the same in the db.11:05
lifelessthey are for full archive mirroring - thats the archive name, and the url we can find it at.11:05
sabdflthey are not in the db at all11:06
sabdflplease verify11:06
sabdfllifeless: ^11:06
lifelesslooking11:06
lifelesssabdfl: ok, they were specced but not-yet-implemented.11:11
lifelessyou can ignore them safely.11:11
sabdflok, they will disappear from the template11:12
lifelessI have to test some code here before generating the sql patch for stub11:12
lifelesssabdfl: can you <!-- --> comment them out? 11:12
sabdflsure11:12
lifelessthanks11:12
sabdflwith a real comment?11:12
lifelessFIXME lifeless get off your arse --> will do11:13
lifelessI had limi put the form layout on the template is all, I don't want to have to recreate it later.11:13
lifelessequally you could just delete the tal: bits.11:13
sabdflstub: why did launchpad-2-00-0.sql get modified today?11:17
sabdflsurely the renamings coming in as alter table snippets?11:17
stubIf I create new tables, I need to add drop table commands in there (or I guess I could have a pre-launchpad-2-00-0-drop.sql script or something instead)11:18
=== stub remembers he didn't turn the checksum back on
sabdflstub: ah, thanks11:19
sabdflphew :-)11:19
sabdflstub: is it possible to check the schema revision of the db, and refuse to run if the db is not in sync with the code?11:19
lifelessok really off to get myself dinner now.11:19
sabdfllike, have a place where we store a revision for the db11:20
stubYes, quite possible. It just hasn't been implemented11:20
sabdfleach alter table scriptlet would also update that11:20
lifelessthat was our plan...11:20
dilysNew bug 2080 for Launchpad/Database: SQLObject iterators disobey the iteration protocol11:20
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=208011:20
lifelesssabdfl: the table scriptlets shouldn't do that: the makefile that runs them should11:20
sabdflthen the code checks at startup if the db revision is correct11:20
stubWe would need to move to something more intelligent than a makefile I suspect, but that is no hardship.11:20
sabdflok11:20
stubsabdfl: We actually already have a similar check to what you are after - launchpad refuses to run if the database encoding is not set correctly.11:24
=== limi [~limi@sparkit.easynet.no] has joined #launchpad
limihello11:26
limi:)11:26
stubMorning11:26
debonzilimi, hi :)11:27
daflimi: found your adapter? :)11:27
limiyes :)11:28
limimust have been tired this morning11:28
limiit's usually second nature when I pack the laptop :)11:28
dafI did silly things this morning11:28
dafI left my mobile in the hotel room11:29
dafI went back for it, found it and then left the key in the room on the way back down11:29
limiand; of course - the tram was stuck behind a bus with engine problems, so I had to walk half the distance and do the subway instead :P11:29
limihehe11:29
limimaybe it's contagious11:29
dafyou'll like this hotel11:29
dafit has duvets11:29
elmo_and tiles11:30
KinnisonAnd wireless (just not in daf's room)11:31
daf:)11:31
dafwell, it seemed to work if you stayed within that 10cm area11:31
=== Kinnison nods
limiduvets! ;)11:32
cprovdaf: aha, just don't move and it'll work (nice kind of wireless mobility) <wink> , anyway you have a cable :P11:35
dafcprov: yeah, I resorted to the cable :)11:39
daffar less flaky11:39
elmo_the wireless is useless even in 109 fwiw11:40
KinnisonIt's fine in 51911:40
cprovbetter than the old Canonical Hotel (Claverly?!?) , no NET  11:41
sabdfllifeless: we need the new code running in production before you crash tonight, ok?11:50
=== ddaa [~ddaa@nemesis.xlii.org] has joined #launchpad
stubsabdfl: Will that require a database upgrade?11:51
sabdflstub: yes, to the current state11:51
sabdfl:w11:52
lifelesssabdfl: ok, tell me when you've committed to I can test in staging.11:57
sabdflok11:57
dilysNew bug 2081 for Launchpad/Rosetta: add option to translation page to show untranslated messages only11:57
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=208111:57
limiis https://www.warthogs.hbd.com/ down for everyone else too?12:07
Kinnisonlimi: https://wiki.canonical.com/ ?12:08
limiok, just tried to follow the link Jane posted12:09
limion the warthogs list12:09
elmo_https://www.warthogs.hbd.com/ works for me12:10
limiI get "unknown host" here12:10
limioh well12:10
limiI'll use the canonical one, that works12:11
stubelmo_: /etc/postgresql/postgrsql.conf and /etc/postgresql/pg_hba.conf are no longer writable by user postgresql12:19
stub(on emperor)12:19
elmo_hmm,t he upgrade chown'ed them but not chgrp12:22
elmo_stub: fixed12:22
stubTa.12:22
limithere's no way RSS can support authentication, right?12:30
=== limi ponders bug tracker UI ideas
=== cprov [~cprov@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
elmo_stub: are all thos idle clients normal/expected?12:36
stublimi: You could encode the username in the URL (ala amazon session ids)12:36
limistub: yes, that's an option12:37
limithinking about having personalized RSS feeds for bugs12:38
stubelmo_: we should be getting 4 for each launchpad. I don't know how many importds are running but each of them probably has a connection.12:38
limianyway, planet.ubuntu skinning time ;)12:38
limistub: tell me when you have some time, and I'll explain the grouping stuff I need for the Malone UI12:39
dilysBug 2080 resolved: SQLObject iterators disobey the iteration protocol12:40
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=208012:40
stublimi: Yo12:59
limistub: yo - just going out for lunch, are you here for a while more?01:01
stubI think there is an upgrade going on later, so I guess so ;)01:01
limiok ;)01:01
limisee you in a bit01:01
=== limi is now known as limi|lunch
dilysNew bug 2082 for Launchpad/Launchpad: SQLObjectVocabularyBase needs a doctest01:16
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=208201:16
dilysNew bug 2083 for Launchpad/Rosetta: Do the split of .pot and .po records from POMsgSet to two different tables01:29
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=208301:29
sabdflstub: just discussing a column rename with BradB01:30
sabdflbugwatch.bugsystem->bugwatch.bugtracker01:30
sabdfland saying i'd like the guys who changes it to commit the new alter table scriptlet in the same changeset as the code changes that depend on it01:31
sabdflideally, you work up the scriptlet till you are happy with it, assign it a filename, then give it to them to commit01:31
sabdflif we were really being arch-ish you'd tag off them, add it, they'd merge your changeset, then merge it all up to rocketfuel, but i don't think that's workable01:32
stubIt isn't just a scriptlet - it is also sample data and possibly modifications to launchpad-2-0-0.sql01:32
sabdflsound good?01:32
sabdflah01:32
sabdflso what's the best way to coordinate?01:32
stubif it is done like this, then there can only be one pending database change in the pipeline, as the database changes need to be done in sequence. So if I make the changes and hand it off, I can't go making other schema modifications until it has been committed.01:34
BradBok stub, what's the first thing we need to do then?01:35
stubIn some cases it works, but we really don't want to have schema changes branching off and then having to be merged back together again.01:35
stubIf we require code changes to be committed with the database schema modifications, then we need to use branches to coordinate. Someone who knows arch better will need work out the process as I've not got as far as playing with them.01:39
sabdflthe timing thing is a problem even using branches01:39
stubI don't think the existing model has caused problems, as most modifications are generally fairly small and only affected the code the requester was working on at the time.01:40
sabdflalright, however you go about it, let's try to get the db changes merged at the same time as the code changes01:40
sabdflmaybe the filename allocation is left till the last minute01:40
BradBstub: in this case, there's no sampledata to add, at least.01:41
BradBi should be able to get the file changes from you (maybe a patch to launchpad-2-0-0.sql and a patch-whatever.sql file) in one go, merge them into my working dir, fix the app code as needed to suit, commit locally, then merge it into rocketfuel.01:42
stubBradB: Unless you are adding a nullable column or a constraint that already passes, the sampledata changes01:42
lifelessstub: the race window is quite small, and atomic.01:43
BradBstub: we're renaming a column01:43
BradBnothing changes semantically.01:43
lifelessthe person creating the patch should do so, then immediately submit a merge.01:43
lifelessif two people try to do this, the second persons merge will fail.01:43
BradBstub: for as long as this isn't renamed, we can't access the malone app to continue working towards the friday deadline. :)01:44
lifelesswhen it does, they should rename their patch up to the next one, and then submit a merge.01:44
stublifeless: A merge to what though? There is a qa process involved in getting the patches right (documented in schema/README)01:45
lifelessstub: can that be test-suited ?01:45
stublifeless: no01:45
lifelessthen whoever signs off needs to be the person submitting the merge.01:46
stubYup. So the work is done in a branch and I or acting DBA finalizes by telling PQM to merge from the branch?01:47
lifelessyes01:47
lifelessthat would do it.01:47
stubAs long as people inform launchpad@ about database schema changes they are considering - schema changes affect everyone01:48
dilysBug 2065 resolved: Review Rosetta code so the "inlastrevision" and "active" fields are correctly used01:52
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=206501:52
stubSo I would 'tla tag --setup whoever@canonical.com/launchpad--gratuitouschanges--666 $myarchive/launchpad--schemamods--64', vet, then 'arch-submit-merge "blahblahblah"' ?01:56
lifelessstub: have a look at arch-submit-merge...01:57
=== limi|lunch is now known as limi
lifelessyou can just submit the merge request directly straight from there branch01:57
stubI'm worried that we are working out processes like this - database schema changes should be becoming less frequent and more minor, not the other way around.01:57
lifelessback in an hour, need a break before brain explodes.01:58
BradBstub: I'll write an email to the mailing list noting this rename.01:58
BradBstub: Actually, yeah, you're best to wait to see this email as there are a couple other renamings needing related to this.02:03
BradBs/needing/needed/02:04
stubYup. I try to batch the patches when this doesn't affect peoples work.02:05
stubIs this stuff being rolled out tonight?02:05
BradBWell, the DB changes should happen ASAP (after the email is sent) unless sabdfl has some reason to not want that.02:06
sabdflstub: yes, let's get this all in02:07
sabdflstub: apologies, table renaming turned into a bigger deal than i thought02:07
stubsabdfl: Mmm... not a good idea to do that sort of thing before deadlines unless things won't work.02:10
sabdflgood point02:10
sabdflbugtrackers have not been touched by any code till i started fwork on them02:10
sabdflthat's when i realised we needed the renaming02:10
=== BradB is all for following the refactor-*after*-releasing development philosophy ;)
=== stub runs around the channel yelling i-told-you-so
carloslunch time02:16
carloslater02:16
dafis PQM wedged again?02:17
dafI sent a merge request an hour or two ago and haven't heard about it yet02:18
limisabdfl: is Planet supposed to be under Community, or its own tab on the ubuntu site?02:18
sabdfllimi: which do you think is better?02:19
limidepends on how prominent you want Planet to be :)02:19
BradBstub: Renaming email sent to LP ML.02:19
limiit may make sense as a separate tab right now02:19
limisince there aren't a lot of them yet02:19
sabdfllet's start it on its own tab, then move it into community02:19
limiok02:20
limiand the tab should simply be "Planet"?02:20
limiis that a well enough known concept?02:20
spivIt will be ;)02:29
spivdaf: PQM is idle atm, I don't if that's because someone unwedged it ;)02:30
dafgrumble02:30
=== justdave [~justdave@24.247.63.44.gha.mi.chartermi.net] has joined #launchpad
=== lifeless [~robertc@dsl-66.7.240.220.rns01-kent-syd.dsl.comindico.com.au] has joined #launchpad
stubBradB: That change seem benign on the rest of launchpad - I don't see a problem with me committing it now02:37
BradBGo for it, dude.02:38
BradBIf you merge it now, I can have it star-merged here within 2 hours.</tla_hate>02:38
stubYou got a patch done already for the stuff you have found? 02:38
BradBNo, I thought you were giving me that. ;)02:39
BradBOkay: what's the first step here?02:39
stubNo - I'll do it. Just didn't want to waste your work if you had already done it or started ;)02:39
BradBI'll leave it to you.02:40
daf/home/daf/src/canonical/dists/launchpad/lib/sqlobject/main.py:231: UserWarning: I tried to set the property "labels", but it was already set, as a method.  Methods have significantly different semantics than properties, and this may be a sign of a bug in your code.02:52
dafspiv: is this a known problem?02:52
SteveAis there a method called labels ?02:54
dafthe class in question is canonical.launchpad.dlalo.Schema02:59
dafsorry02:59
daftwo classes02:59
limiddaf02:59
limi:)02:59
limiis that llike llimi?02:59
dafcanonical.launchpad.dlalo.Schema and canonical.launchpad.dlalo.Label02:59
dafis a llimi like a llama?03:00
limillikely03:00
dafbbaa03:00
=== limi battles Stupid Templating System #4
daf? :)03:01
limifun to design when you can't see how it turns out until you hand it back ;)03:01
limithe Planet templates03:01
limi        <TMPL_LOOP Channels>03:01
limietc03:01
limi;)03:01
dafnice! :)03:01
limialmost as nice as DTML03:01
limiit's scarily similar, in fact03:02
spivdaf: That error suggests someone has defined both _get_labels and labels.03:02
dafmaybe... it IS DTML? :)03:02
=== spiv looks to see if that's really the case.
dafspiv: I can't see anything obviously wrong03:02
dafit's complaining about Schema.labels and Label.persons03:04
spivHmm.03:04
lifelesssabdfl: so when can I start testing again ?03:04
lifelesscause its getting late here03:04
sabdfllifeless just got it "working" again03:04
lifelessok. 03:05
lifelesslet me know when.03:05
dafspiv: I can't tell why it's trying to set those attributes03:06
spivdaf: Oh, right.  I think it's because joins (the MultipleJoin & RelatedJoin) auto-generate those names.03:07
spivOr rather, try to :)03:07
stubdaf: label is a foreign key03:07
spivSQLObject actually does something sane for once and warns about the problem ;)03:07
dafstub: "labels"03:07
sabdfllifeless: just going to test, then sendpqm message03:07
dafspiv: right, I thought it might be related to the joins03:07
stubBradB: That change is with PQM btw03:08
spivdaf: I'm trying something...03:08
BradBstub: Thanks.03:09
spivdaf: I think it's actually choosing the wrong name due to a bug in SQLObject, but we can explicitly set the right one.03:09
spivOk, setting joinMethodName='_labelsJoin' fixes the warning.03:10
spivBut the docs say that's what should happen anyway...03:10
dafcunning03:10
=== spiv checks the mailing list.
spivYeah, we're not the first to notice this.03:11
sabdflstub: picked up a problem after a full database recreation:03:27
sabdfl  DatabaseException: ERROR:  relation "bugtracker_id_seq" does not exist  SELECT NEXTVAL('BugTracker_id_seq')03:27
sabdfllifeless: am continuing to test03:28
sabdfllifeless: if you want to start testing, pull from my archive on chinstrap03:28
lifelessI'll wait till you're happy, knee deep in cscvs anyway03:28
sabdfllifeless: how iscscvs coming along?03:30
stubsabdfl: I have no idea why you are seeing that - my tables still reference bugsystem_id_seq03:30
sabdflstub: seems bugsystem_pkey got left behind too03:30
sabdfli did a make in database/schema03:31
sabdfllet me try again03:31
stubsabdfl: Yes - I'm not changing the names of the constraints or sequences - there isn't any point at the moment.03:31
lifelesssabdfl: the stuff I'm working on now removes the last non-trivial hurdle I'm aware of.03:32
lifelessin short - very very well these days03:32
sabdfllifeless: can i hold you to it? <duck>03:32
lifelesssabdfl: yes.03:33
sabdflcool!03:33
lifelessI'm not saying there won't be more to do :). But that anything else won't require heart surgery.03:33
sabdflnow we have nice web pages for the source addition, things will ramp up quickly03:33
sabdflvery03:33
sabdflstub: i'm going to drop the database altogether and reate it completely from scratch03:34
lifelesssabdfl: while you are working on that stuff, can you make it so that only I can certify for enablement? 03:35
stubI'll do more testing - I want it to work when I roll out to prod :-/03:35
lifeless(or a group, or whatever) - thats more stuff that just wasn't available back in london/oxford03:35
sabdflstub: how do i drop the db?03:36
stubdropdb launchpad_test03:36
stub(which will fail or hang until all connections to it are closed, so remember to shutdown launchpad)03:36
sabdflis there a special makefile command to create it again?03:38
sabdflmust make gives zillion errors03:38
sabdfls/must/just/03:38
limisabdfl: http://planet.ubuntulinux.org updated - should I add a tab to the main web site?03:39
sabdflyes please alex03:39
sabdfland thank you03:39
limi(there is a portlet fix pending, just sent it to elmo)03:39
limiok, updating...03:39
SteveAlimi: hello03:40
SteveAcan we talk about lurker?03:40
SteveA(not your coworker)03:40
limiwe can :)03:40
limihehe03:40
limiyes, it's a confusing name ;)03:40
SteveAThere is a .css file as part of lurker03:40
limiyup03:40
limiall of that is in ploneCustom.css now03:40
SteveAdid you include equivalents in the css files on ul.org ?03:40
SteveAok03:41
limiso you don't need it03:41
SteveALook at this:03:41
SteveA<tbody><tr><th align="left">Thread</th><th align="left">Author</th><th align="left">Date&nbsp;(<script type="text/javascript"><!--03:41
SteveAtimezone(1096652773);//--></script>+300<noscript>UTC</noscript>)</th></tr><tr style="" onclick="self.location='http://lists.ubuntu.com/lists/message/20041001.174613.a85e1b64.en.html';" onmouseover="rollIn(this);" onmouseout="rollOut(this);" class="row2"><td nowrap="nowrap"><a name="20041001.174613.a85e1b64"></a><a href="../message/20041001.174613.a85e1b64.en.html"><img src="../imgs/j.png" title="Eric Deleforterie at 2004-10-01 03:41
SteveA20:46" onmouseover="titledate(this,1096652773);" alt="M"></a></td><td nowrap="nowrap">Eric Deleforterie</td><td nowrap="nowrap"><script type="text/javascript"><!--03:41
SteveAtextdate(1096652773);//--></script>2004-10-01&nbsp;20:46<noscript>2004-10-01 17:46</noscript></td></tr>03:41
SteveA<tr style="" onclick="self.location='http://lists.ubuntu.com/lists/message/20041001.202531.7f12cfc5.en.html';" onmouseover="rollIn(this);" onmouseout="rollOut(this);" class="row1"><td nowrap="nowrap"><a name="20041001.202531.7f12cfc5"></a><a href="../message/20041001.202531.7f12cfc5.en.html"><img src="../imgs/g.png" title="etienne zannelli at 2004-10-01 23:25" onmouseover="titledate(this,1096662331);" alt="M"></a></td><td nowra03:41
SteveAp="nowrap">etienne zannelli</td><td nowrap="nowrap"><script type="text/javascript"><!--03:41
limieeek03:41
SteveAtextdate(1096662331);//--></script>2004-10-01&nbsp;23:25<noscript>2004-10-01 20:25</noscript></td></tr>03:41
SteveA<tr style="" onclick="self.location='http://lists.ubuntu.com/lists/message/20041002.075458.5b8197e2.en.html';" onmouseover="rollIn(this);" onmouseout="rollOut(this);" class="row2"><td nowrap="nowrap"><a name="20041002.075458.5b8197e2"></a><img alt="|" src="../imgs/b.png"><a href="../message/20041002.075458.5b8197e2.en.html"><img src="../imgs/i.png" title="Eric Deleforterie at 2004-10-02 10:54" onmouseover="titledate(this,10967003:41
SteveA3698);" alt="M"></a></td><td nowrap="nowrap">Eric Deleforterie</td><td nowrap="nowrap"><script type="text/javascript"><!--03:41
SteveAtextdate(1096703698);//--></script>2004-03:41
SteveAoops03:41
limihttp://paste.plone.org, please ;)03:41
SteveAsorry03:41
SteveAwrong paste buffer03:41
SteveAa img.selected { background-color:#77F }03:41
SteveAa:visited img { background-color:#BBB }03:41
SteveAa:visited img.selected { background-color:#77F }03:41
SteveAa img:hover { background-color:#55F }03:42
SteveA03:42
stubsabdfl: just run 'make' as normal - the errors are it trying to drop or alter tables that don't exist.03:42
SteveA /* The following are used to induce highlighting effects on thread message icons */03:42
SteveAthat's it03:42
SteveA5 lines03:42
SteveAstarting with that comment03:42
SteveA #55F is the blue that is an envelope background03:42
limiI should include them?03:42
limiaha03:42
limicouldn't find it the last time I looked03:42
limithanks03:42
SteveAok03:42
SteveAalso:03:42
SteveAhttp://lists.ubuntu.com/lists/thread/20041002.075655.e3b28dc7.en.html03:43
SteveAI have changed the roll-over of the list of threads to an orangey colour03:43
=== limi looks at the shiny new Planet tab on ubuntulinux.org :)
SteveAthere's an odd effect on the last row of the table03:43
limiyou mean the border?03:43
SteveAyes03:45
SteveAI guess so03:45
SteveArandom orange lines03:45
limiSteveA: btw, if you could add in the Planet tab in Lurker, that would save me a round-trip :)03:46
limijust add:03:46
limi        <li id="portaltab-support" class="plain">03:46
limi            <a href="http://planet.ubuntulinux.org/"03:46
limi               accesskey="t">Planet</a>03:46
limi        </li>03:46
limiafter the existing tabs (Ubuntu, Community, Support)03:47
sabdflstub: even after a complete database drop and recreate, i still see this:03:48
sabdfl  DatabaseException: ERROR:  relation "bugtracker_id_seq" does not exist  SELECT NEXTVAL('BugTracker_id_seq')03:48
stubWhere do you see the error? When the sample data is loading or from launchpad?03:49
sabdflno, when queries start to hit the db03:50
stubWhen I do '\d BugTracker' inside psql, I can see the primary key is referencing bugsystem_id_seq and nothing else should even know that sequence exists.03:51
sabdflalter table projectbugsystem_id_seq rename to projectbugtracker_id_seq;03:52
sabdflalter table bugsystem_id_seq rename to bugtracker_id_seq;03:52
sabdflthese fix the problem03:52
BradBstub: These were the autocomplete renames I suggested. :) (At least some of them)03:53
stubIt doesn't fix my database, as the DEFAULT value of the tables still point to the old sequence (which no longer exists!)03:53
stubIs there python code that is referencing the _seq sequence directly, rather than telling the database to use DEFAULT?03:54
SteveAlimi: I added the tab03:54
sabdflnot afaik03:54
limigreat, thanks03:54
limiSteveA: fixing the border now03:55
SteveAok03:55
sabdflstub: although sqlobject may be doing voodoo behind the scenes03:55
limiSteveA: ..and adding the link styles03:55
SteveAok03:55
BradBstub: pgconnection does a select nextval on the sequence name.03:55
sabdflso, my mistake for going ahead with the rename, but we need to finish it now03:55
SteveAI shall now re-enable cacheing the lurker pages03:56
stubsabdfl: Urgh..... sqlobject might be the culprit, assuming the sequence name!03:56
SteveAseeing as I've finished messing with the source03:56
sabdflSteveA: does limi know about the way we are including style / header / footer?03:56
SteveAno, but I'll tell him03:56
sabdflstub: looks like it03:56
SteveAlimi: do you have a login on rince?03:56
sabdflok, we're not going to get this in sanely today03:56
limiSteveA: maybe? :)03:56
stubMeans I'm going to have to go futzing around with primary keys :-(03:57
sabdflstub, lifeless, get some rest, we'll move to production tomorrow03:57
sabdflstub: we may as well learn now when it's cheap :-)03:57
SteveAthere are three xsl files: ubuntuheader.xsl, ubuntufooter.xsl and ubuntustyles.xsl.  These are included at appropriate points in the templates.03:57
BradBstub: Oh, and yeah, said select nextval uses a seq name that is derived from the table name.03:57
SteveAThere is some xsl crap at the start and end of the files.  The files must be well-formed xml.03:57
SteveAI also had to change &entities; to &#numbers;03:57
BradBSo let's just rename them sanely.03:57
sabdfllimi i'll mail these to you now03:57
limisabdfl: ok03:58
stubBradB: Oh... I see why it is doing it to, as SQLObject would need to know the ID it just inserted :-(03:59
limiis Mako's Shipit code in Arch?03:59
stubShould be a minor change anyway - I'm just being a drama queen :-)03:59
sabdfllimi: on the wire now03:59
limiaha03:59
daflifeless: either my merge to PQM is taking a really long time or I'm only imagining that I submitted a merge -- can you tell me which it is?03:59
sabdflstub: that's what i'd preferyou to me03:59
limithought you meant the Lurker templates03:59
sabdflsorry03:59
limi:)03:59
sabdflthat's what i'd prefer you to be04:00
lifelessdaf: you have an overactive imagination04:00
limi(we knew that)04:01
limi:] 04:01
limistub: time to do some Malone discussions/changes?04:04
=== daf submits a non-imaginary merge
stubI want to quickly do the sequence rename patch first. Then I'll see how tired I am - its midnight here ;)04:05
limiok :)04:06
limisabdfl: what was the Lurker files for? are any changes needed in the templates?04:06
limis/was/were/04:06
lululimi:Steve and I have been working on it. I have just sent you an email with 3 changes to the CSS. Thanks.04:08
limisabdfl: added an introductory paragraph to Planet, tell me if you want it changed - just felt the need to explain what Planet Ubuntu was about :)04:10
limilulu: that still doesn't explain what I'm supposed to do with the templates :)04:13
lululimi: thanks for the intro para. We have some content pending on the website, waiting for Jeff's review to explain what Planet is all about and how a member can get their blog listed there.He hasn't had a chance to review it yet. I had hoped he would before it went live.04:15
lululimi:templates...mmm dunno :o)04:15
stubsabdfl, BradB: next patch with PQM04:24
stublimi: Yo04:24
limiyo yo04:25
limiword up04:25
dilysBug 1976 resolved: get rid of fake_person() in Rosetta's browser.py04:25
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=197604:25
=== stub puts his hands in the air like he don't care
limiso, Malone -04:26
=== limi gets his templates
spivdaf: Btw, there's a fix for the joinMethodName issue in SQLObject SVN already, and even better, it doesn't work ;)04:28
=== limi gets his templates on
limi(sorry, out of character there for a moment)04:29
dilysNew bug 2084 for Launchpad/Database: SQLObject assumes primary key sequence naming04:30
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=208404:30
carlosspiv: the "JoinMethidName issue" is the wargning we are getting now since the SQLObject update?04:32
carlos /s/wargning/warning/04:32
spivcarlos: Yep.04:34
lifelesssabdfl: how are you going ?04:34
lifeless12:30..04:34
stublifeless: He told you to go to bed before :-)04:34
carlosfunny04:34
spivcarlos: It's probably causing actual breakage in addition to warnings.. .I should test that theory.04:34
limistub: ok, I need a way to list the links (external references) grouped instead of having the type inline - for example, I want to list the CVE reference first, and then the other external links04:35
carlosspiv: I can test it, it's in code I wrote04:35
stublimi: Do you care which comes first?04:35
lifelessstub: did he ?04:35
limistub: and I would need the same for the people - I would like to group the CC/Watch people by what type of subscription they have04:36
limistub: CVE first, preferrably04:36
stub(23:57:01) Mark Shuttleworth: stub, lifeless, get some rest, we'll move to production tomorrow04:36
lifelessph cool04:36
lifelesssilly irssi didn't highlite.04:36
limistub: it's more that I want a method that is something like getCVEs(), getCCed() etc04:37
lifelessno need to tell me twice.04:37
stublimi: Are you sure about people? I would have thought surname would be best as that is how people would use the table (?)04:37
=== lifeless yawns..
lifelessnight all04:37
carloslifeless: night04:37
stubGet yer beauty sleep04:37
=== stub is not so desperate for it so can help limi for a bit :)
limistub: well, I'm not sure what should be visible - I was thinking that you could only modify the link that was you, and that would be on top - and then the rest would be listed according to type?04:37
limistub: you have enough beauty to survive another hour? ;)04:38
stubI've got beauty leaking out my arse04:38
limivery useful for those late-night sessions04:39
carlosdaf: I'm thinking on prepare a patch for #2083 so we change it as soon as possible so we have more time to test all changes that it implies (perhaps using a branch until all code is working with the new layout)04:39
stublimi - it will be prettier than getCVE - you will just be able to do tal:repeat="cvs bug/cves"04:40
stubbut that is no problem04:41
limigreat04:41
=== kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad
dilysNew bug 2085 for Launchpad/Malone: Groupings of  subscribers, external references etc.04:46
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=208504:46
kikohey guys04:47
stublimi: So you need a workaround right now? It can be done with a tal:define="cves python:[r for r in refs where r.bugreftype == 1] "04:48
limistub: I don't like workarounds, they tend to stay around forever ;)04:48
limiI know it can be done, I just want it to be done right :)04:49
=== stub nods knowingly
stubAnything else or am I off to bed?04:49
stubMorning kiki04:49
limipeople + refs is all I need04:49
limiI believe04:49
kikokiki here kiki there04:49
limikikiwiki04:50
stubok - trivial, but it would conflict with Marks work so it will wait until tomorrow or so.04:50
limiok04:50
limiI'll do the static template code for now, then04:50
kikohow's the lunchpad team?04:56
kikodebonzi, cprov: ping?04:57
debonzikiko, 04:57
dafcarlos: a branch sounds good to me05:05
carlosdaf: perfect05:05
cprovkiko: pong05:05
dafit's a pretty big change05:06
kikohow's it going cprov05:06
cprovkiko: fine, what about you ?05:06
kikocprov, lots of hard work :-/05:06
lululimi: how's the skinning of mailman going?05:06
cprovkiko: nicole rocks a lot ! it grabs DOAP info from web :)05:07
kikow0ap05:07
kikoneat05:07
cprovkiko: really05:07
cprovand also DOAP Pages are very nice now !05:08
carlosspiv: yes, it's a problem05:08
limilulu: not started yet, doing Malone work05:08
carlosspiv: the joins are not working now05:08
limilulu: will probably start Mailman tomorrow05:08
cprovkiko: Kinnison and James are working on Lucile (uploader frontend) 05:08
kikocprov, that is so cool05:09
cprovkiko: debonzi is working on ZODB at www.ubuntulinux.org :) !!!05:09
spivcarlos: I thought so. :(05:09
kikohah05:10
spivcarlos: There's a workaround (explicitly set joinMethodName), but I'll see if I can hunt down the bug.05:10
carlosok05:10
carlosspiv: thanks05:10
limilulu: somebody should send me the Mailman templates, though05:11
limiso I have them ready for tomorrow05:11
lululimi: just chatting to Mark on mailman...standby05:14
carlosspiv: I get an interesting error with tests05:15
carlos*****************************************************************05:15
carlosFailure in example: sqlrepr(time(13, 45, 50), 'postgres')05:15
carlosfrom line #30 of canonical.database.sqlbase.quote05:15
carlosExpected: "'13:45:-1'"05:15
carlosGot: "'13:45:50'"05:15
carlosThe test seems to be broken 05:16
stubcarlos: That is testing a bug in sqlobject - obviously they fixed it ;)05:18
carlos:-)05:19
spiv:)05:19
carlosso, could I remove that test or just fix it?05:19
carlosto detect a regression?05:19
stubcarlos: Have a look at the comments - it makes some of our code redundant if I remember correctly05:19
carlosok05:19
spivI can do that.05:19
spivIt looks like we only need to keep the special case for datetime now, not date or time.05:20
=== stub doesn't remember getting an email from the sourceforge bugtracker about them fixing it though...
carlosspiv: ok05:21
spivstub: I haven't gotten *any* response to any of my sqlobject bug reports of SF :(05:21
lululimi:Please get shipit done today, or we will run out of time tomorrow with Mailman and other changes.05:25
lululimi: I'll get back to you on mailman templates....05:25
limilulu: that will mean less Malone work05:26
limiplease clear that with Mark in that case05:26
lululimi: 2 hrs a day, and 1 from yesterday. Web deadline Thurs eve.05:26
limilulu: I have already done 3 hours of skinning today05:27
lululimi:ok - well then there's lots to be done in 2 hrs tomorrow then. Thanks05:27
limiuhm, you guys can't just set a static amount of hours and cram an arbitrary amount of work into that time05:28
limithat's not how it works05:28
limiok, need to go home and make dinner for our visitors - will be back online later this evening05:33
=== limi [~limi@sparkit.easynet.no] has left #launchpad []
ddaadoh, pyarch/twisted really kills performance...05:43
sabdflstub: do you have a sql script for testing that does the table renaing?05:45
sabdflseems to work if I rename all the id_seq things as well as the tables05:46
ddaa32s without twisted process handling, 96s (and still a few failures) with it.05:46
stubsabdfl: PQM tells me the patch is in05:47
sabdflstub:05:54
sabdflmark@slinky ~/projects/ubuntu/launchpad/database/schema $ make05:54
sabdfl* Using launchpad-2-00-0 as baseline05:54
sabdfl* Creating database "launchpad_test" with sample data.05:54
sabdfl* This will hang if another process is accessing the database05:54
sabdflcreatedb -E UNICODE launchpad_test || echo launchpad_test already exists05:54
sabdflcreatedb: database creation failed: ERROR:  database "launchpad_test" already existslaunchpad_test already exists05:54
sabdflcreatelang -d launchpad_test plpgsql05:54
sabdflcreatelang: language installation failed: ERROR:  permission denied for language c05:54
sabdflmake: *** [base]  Error 105:54
sabdfl?05:54
sabdflstub: what's the plpgsql for?05:55
stubHmm... have to work out how to make that work if the current user isn't a postgres superuser.05:55
stubIt isn't being used yet so you can just comment that line out05:56
sabdflstub: sudo -u postgres, ight?05:56
sabdflwhat's it for?05:56
stubIt will be used for some more advanced constraints05:56
stubsee name-constraints.sql.pending05:56
sabdflok. have fun, dont break anything05:57
stubWill you comment that out and commit or should I?05:59
stubsabdfl: It won't break anything - just point out code that is already broken ;)05:59
stubAnd stop the database being polluted06:00
=== kiko is now known as kiko-fud
Kinnisonstub: I have a couple of things I want adding to the soyuz schema. Should I describe them to you; or provide ALTER statements?06:19
stubyour choice, but it is best if you email them to the launchpad@ mailing list so everyone can see what is going on.06:20
=== Kinnison nods
KinnisonWhich do you prefer though? "I'd like a column called foo in table bar" or "ALTER TABLE foo ADD COLUMN bar...." ?06:20
stubalter tables are more explicit.06:21
KinnisonOkay06:21
stubSome comments is useful too, so I understand why things are changing and can make meaningful comments in the patches06:21
=== Kinnison nods
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
stubKinnison: Is it urgent or can I leave it until tomorrow?06:25
sabdflKinnison: it's a process, stub and i have final say over what goes it, so send ALTER TABLE's with rationale to the wiki / list06:27
sabdflstub: i'm sure you'll keep the db-level stuff sane06:27
dilysBug 2078 resolved: Product doesn't match IProduct06:28
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=207806:28
Kinnisonsabdfl: yeah; I know you two have final-say. I was just interested in which form of request would be preferred by stub06:29
Kinnisonstub: It's not currently blocking me; so non-urgent I guess06:29
=== stub wanders off to bed
=== ddaa [~ddaa@nemesis.xlii.org] has left #launchpad []
=== kiko-fud is now known as kiko
=== Kinnison [~dsilvers@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
Kinnisondaf: Have you sent that merge to pqm?07:38
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad []
dafKinnison: yep07:40
Kinnisondaf: Cool. I've made a couple of my scripts slightly less bonkers if you give them duff args or run them outside a tree07:43
Kinnisondaf: I'm proposing to put in: pqm-chinstrap-merge tla-star-merge-here and tla-mirror-here07:46
dafKinnison: there are those of us who have hooks for mirror-on-commit07:47
Kinnisondaf: Yeah; I don't like that07:47
dafI'm not asking you to :)07:48
dafmy point was that mirror-on-merge is redundant if you have mirror-on-commit07:48
Kinnisonoh right07:49
=== Kinnison is likely to work offline a reasonable amount
Kinnisontla-star-merge-here is my favourite07:50
Kinnisonit tree-lints and stops if that isn't clean; then it does a tla-undo if there are changes; then it merges; commits that; then redoes any undo it made07:51
dafnice!07:52
Kinnisonmeans that you never get bradb-stylee "merge from RF, oh and foo" commits :-)07:53
dafoops :)07:53
=== daf compulsively runs "tla changes" before and after doing anything :)
=== Kinnison runs sa-learn to soak up some time
=== Kinnison merges daf's changes
dafKinnison: feel free to rearrange it to have daf/, dsilvers/07:59
dafKinnison: could you rename tla-revert to arch-revert for me, for consistency?07:59
Kinnisonsure07:59
=== Kinnison is almost ready to commit
Kinnisondaf: submitted08:03
spivdaf: Hmm, the arch-submit-merge script also exists in rocketfuel@canonical.com/arch-pqm...08:07
dafspiv: yep08:07
SteveAyes.  I want this script to be made specific to launchpad08:08
SteveAI mean, why should I have to type pqm@chinstrap.warthogs.hbd.com each time ?08:09
=== Kinnison hands SteveA pqm-chinstrap-merge
Kinnisonwell; I will as soon as pqm finishes08:09
spivWhat about a slightly more general solution along the lines of the {arch}/+upstream file, e.g. a {arch}/+pqm file.08:13
spiv?08:13
kikohey SteveA?08:20
dafspiv: we were thinking of {arch}/+pqm-address :)08:23
spivdaf: I'd lean towards +upstream-pqm myself ;)08:29
SteveAheyheyhey08:32
=== BradB starts the process of landing a shiny new bug listing in Malone...it should be pqm'd in fewer than 45 minutes...
BradBI finally grokked today what spiv meant when he said that "we don't use the ZODB in Launchpad". At least, I think I grokked it.08:56
kikowhat was there to grok about that? it's zope X3, file-based :)08:57
BradBI just never quite thought of building a Z3 app that entirely sidesteps the ZODB.08:58
BradBIt's like buying a car and then driving it like Fred Flintstone (i.e. taking out the engine and running it around.)08:58
kikomaybe. I use the ZODB every day, all day08:59
kikoI think it rocks08:59
kikoothers may differ..08:59
BradB15 minutes so far and my local commit has already started...argh.09:10
SteveAI love the zodb09:20
dafspiv: that would be good also09:22
carlosdaf: which is the best way to do the branch for the po/pot split? a tag of my own repository or another tag of rocketfuel?09:25
dafum09:27
dafof rocketfuel, I think09:27
carlosok09:27
BradB34 minutes, and i haven't even gotten to locally committing the star-merge. I'm really looking forward to an arch sprint happening. :)09:29
kikoan arch crawl you mean09:31
BradB48 minutes and counting.09:42
kikoseriously dude?09:44
BradBseriously dude09:45
=== cprov [~cprov@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad ["Leaving"]
kikothat's freaked out09:47
BradBpqm request submitted baby!09:48
spivBradB: rock out :)09:50
spivBradB: I hear ubuntu takes only about half an hour to install... ;)09:50
BradBheh09:53
=== lifeless_ [~robertc@dsl-73.0.240.220.rns01-kent-syd.dsl.comindico.com.au] has joined #launchpad
carlosdaf: I have an initial proposal to change the database based on what we where talking for the po/pot split09:57
dafgreat!09:59
=== SteveA is now known as SteveEgg
carlosdaf: and it's sent to launchpad mailing list now10:03
dafcarlos: ok, I'm leaving for today10:03
carlosok10:03
carlosdaf: good night10:04
=== BradB is now known as BradB|away
=== npmccallum [~npmccallu@69-162-252-7.ironoh.adelphia.net] has joined #launchpad
=== npmccallum [~npmccallu@69-162-252-7.ironoh.adelphia.net] has joined #launchpad

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