[12:13] daf: how was the party? [12:34] it was good === limi [~limi@159.80-202-72.nextgentel.com] has joined #launchpad [01:24] good night, I want to wake up early tomorrow === ChanServ [ChanServ@services.] has joined #launchpad === carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad [10:09] good morning [10:11] daf: morning [10:37] carlos: how was your day yesterday? [10:38] well, it was not as productive as I thought, the Efforts task took me more time I wanted. [10:38] but I think I have now a clear image about schema/label [10:39] I thought we were working on beta-critical stuff? [10:39] daf: that should be working for beta [10:39] We talked about that [10:39] and was already on my tasks list [10:39] oh, ok [10:39] I thought it was non-beta-crtitical [10:39] Also, the statistics graphs are ready for limi's magic [10:40] daf: Don't worry, the "big" part of my work is also needed for the People/prefered languages [10:40] ok [10:41] daf: Lu asked for it last week, I thought it was needed for the beta.. [10:42] hmm, I should have posted the list I made up on the wiki [10:47] daf: spoken-languages is fine for you as the name for the schema? [10:48] or 'know-languages' [10:48] translation-languages, perhaps [10:50] Hmm, the Labels should be created with the script that fills the Languages/Countries tables [10:52] hmm, it would be nice if the user didn't have to navigate through products to get to PO templates [10:53] daf: With lots of templates is not easy to do it without a bloated page [10:53] daf: we need to import data [10:54] real data [10:54] to see how will look like it [10:55] hmmm. I just had an idea about the schemas/labels [10:56] daf: I'm thinking on storing only the language code instead of the name, and then make another query to the Language table [10:56] to get the english name and the native name [10:56] that way the duplicated data is small [11:15] what's the status of the preferred languages things? [11:15] do you think it will be ready soon? [11:16] daf: I have the sample data ready [11:16] I'm starting now with the code development [11:16] cool [11:16] I suppose it's not really going to have much effect until we have authentication working [11:17] Hmm, true, but we could "hardcode" one of the sample persons (you, lalo or I) [11:17] and then, if we change the database, the list of languages will also change [11:21] Breakfast time, see you later [11:53] carlos: did you get a chance to look at my changes to the export document? [11:53] upps [11:54] I forgot it O:-) [11:54] sorry [11:54] I will do it today [11:54] no problem [12:07] hi [12:09] hi Steve [12:12] hi === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad === limi [~limi@159.80-202-72.nextgentel.com] has joined #launchpad [01:20] lulu: can we talk about the authentication for the websites? [01:43] apparently not :] [01:43] limi: hi [01:44] hi SteveA [01:44] daf: Language preferences is working :-P [01:45] carlos: ooh [01:45] daf: and you are the "default" until we get the login stuff in place :-P [01:48] heh [01:49] wow, the arch commits list works again, no more garbage.... [01:51] yes, I think lifeless fixed it [01:57] daf: My next tasks is finish the efforts code [01:57] daf: Do you have anything more important for me? [01:58] !dmwaters:*! Hi all, we're currently being nailed with drones, we're doing our best to get things under control [01:58] there must be something more important thant that :) [01:59] Could you populate the task board with pending things? [01:59] don't we need scripts for creating projects, products, people, etc? [02:01] yes, but I think Lalo is working on it already [02:01] do we have a user interface for setting language preferences? [02:01] I see that's on the task board [02:02] daf: but that should be added to the user preferences, shouldn't it? [02:03] daf: where you configure your login, email, etc, etc... [02:03] Do we have it already in any place? [02:03] limi: Could you review https://rosetta.warthogs.hbd.com/rosetta/projects/gnome and https://rosetta.warthogs.hbd.com/rosetta/projects/gnome/evolution/? [02:04] carlos: yes, it should be on the preference page [02:04] carlos: I don't think we have one yet [02:05] limi: when you have more than one language we have the same links for every language. Is that ok from the usability point of view? [02:05] daf: Is it included in Steve's work? [02:05] carlos: I think the fact that clicking on different languages gives you the same thing is ugly/confusing [02:06] carlos: no === limi looks [02:06] daf: me too, that's why I'm asking limi, because I just noticied it :-( [02:06] SteveA has been working on the non-UI side of the auth stuff [02:06] ok [02:06] SteveA: have you merged any of the auth stuff yet? [02:06] Do we have any place where lists the things a user will be able to configure from there? [02:07] I suppose that the DB schema has been updated to store the user password, right? (I don't remember any field to store it) === ChanServ [ChanServ@services.] has joined #launchpad [02:09] the Translation Overview page shouldn't have the languages before you have selected a product, afaik === limi notices that Rosetta has mutated [02:10] :) [02:10] and, "A system error occurred." ;) [02:10] URL? [02:10] https://rosetta.warthogs.hbd.com/rosetta/projects/gnome/evolution/evolution-2.0/translate [02:10] you guys desperately need unit tests soon :) [02:10] it's going to be totally unmanagable if not [02:11] limi: we've just added unit tests to that page [02:11] limi: I've fixed that bug but haven't merged it yet [02:12] limi: Then, If the project list does not know about any language... [02:13] limi: should I calculate the average of all languages? [02:14] That will break the statistics or we need to specify a list of translations we care [02:14] because there are lots of languages that does not have any translation [02:14] yes, I thought this was the page where it would show the summary for all languages? [02:15] hmmm [02:15] sorry [02:15] :-P [02:15] only the summary of all languages a translator knows, right? [02:17] on the overview page, full summary [02:17] daf: upps, You need to update your database to get working new rosetta [02:17] this is the thing that Mark wanted, remember? [02:17] with the overall project language stats [02:17] carlos: huh? [02:18] daf: rosetta servers have my last code changes [02:18] but the database does not have the needed data [02:18] limi: I know [02:18] ok [02:18] :)@ [02:18] but I'm focusing on the other part of the stats [02:19] on the overview page (is this an Effort?), the current stats make less sense [02:19] limi: why? [02:20] because you need some aggregation anyway [02:21] if it should show anything, it's the summary of all the products inside the project [02:21] can you easily report that? [02:22] per language or globally? [02:23] I can do both [02:24] per language would be nice [02:25] limi: that's what we have already at https://rosetta.warthogs.hbd.com/++skin++Debug/rosetta/projects/gnome [02:25] hmm [02:25] ok [02:25] no, sorry, is not the same [02:25] but the code is the same [02:25] so it's already done [02:25] ok === limi probably has to rework that page a bit [02:26] but we have separate pages for Effort and Project now, right? [02:26] not yet [02:26] but we will have it soon [02:27] SteveA: please ping me as soon as you are free, I need to know the status of the login/session code. thanks [02:27] daf: until I get an answer from Steve, I will finish the efforts part. Ok? [02:28] ok [02:28] :) [02:28] nice work [02:29] limi: did you saw the new statistics vars? Do you need anything else? [02:32] limi: I suppose you should add a note at /rosetta/projects/gnome so the user knows that the values are related to all languages she's interested on translate [02:32] yes [02:32] I'm going to move things about a bit :) [02:34] limi: ok [02:35] carlos: there are more important things than translation efforts [02:35] carlos: I think you can start writing the template for the preference page without Steve's work [02:36] daf: But I don't have any idea about how will it work, where will it be hosted and if it's a rosetta specific page or launchpad one [02:36] ok [02:37] for now, we will put it at /rosetta/preferences [02:37] and the only preference it will have is the language preferences [02:37] ok [02:37] hi carlos. I'll be merging the auth code today [02:38] and I think it should work more or less like the other forms we have in Rosetta [02:38] SteveA: ok, please notify me it as soon as it's ready [02:38] you might like to look at test/test_browser.py for test cases I've added for the view classes [02:38] ok [02:38] daf: ok === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad [02:41] shhh, everybody be quiet, lulu is back O:) [02:41] :-P [02:43] SteveA: sorry hon - was away from my desk.... [02:43] SteveA: sure... [02:43] hi [02:43] hey - how was your trip back? [02:44] it was okay. I felt really tired yesterday, though. [02:44] much better today [02:45] so, I took yesterday off, as the bank holiday. [02:45] good - I'm sure everyone's needed some recovery time. [02:45] websites and authentication: we have the ubuntu plone site. [02:45] I also need to hat to you about the app server. James is already onto the webserver stuff. Zope and Plone are huge! :o) [02:46] we discussed having the plone site do authentication against a launchpad app server via xmlrpc (or something similar) [02:46] yup [02:47] McQuarie = app server and not accessing Emperor direct makes James very happy. [02:47] ok. I can arrange for the code to be written in launchpad that will do this. Who will write the code to make plone do this? [02:47] is this part of upfront's contract? [02:48] No. They are purely commissioned to do installation and config. But I can ask them to quote on it, if they have the know how. [02:48] limi: what's the standard way to do pluggable auth in plone? [02:48] I will need a comprehensive spec from you please. [02:48] any way Zope does it [02:49] I wonder what roche would recommend. [02:50] lulu: how about I mail roche, explain the overall plan, and ask him what he'd suggest? [02:50] sure - I'll send you an email with his details - pls cc me on correspondence with him, [02:51] I'll cc you. I know roche already, though. [02:54] SteveA: great. === limi gets lunch [03:00] good idea [03:07] lulu: btw, could you forward me the summary we made of the theft at the hotel? my insurance company wants it. [03:08] Limi: sure. [03:09] limi: Jane is looking for you & also - the Squid setup for Plone file - could you check with James that it's readable and what he needs. Thanks :o) [03:11] the squid set-up for the parts that forward requests to launchpad will be a bit different. [03:11] but, we can add that to the set-up later on, after the ubuntu and canonical parts are done. [03:14] lulu: uhm, I've already sent the file twice, what's missing? [03:16] limi: as you saw from James' email - is that what he should be expecting? I cannot read the binary. Pls check with him he has what he needs. cheers. === justdave_ [~dave@24.247.63.44.gha.mi.chartermi.net] has joined #launchpad === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad [] === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad [05:46] limi: ping === limi pongs [05:47] limi: I need some help [05:47] with a page [05:47] ok [05:47] it's a list of languages [05:47] and the user will select the ones he/she knows about [05:48] ok [05:48] here you have the output I get: [05:48] http://gollum.pemas.net/~carlos/translator.html [05:48] I don't have the .css but it's the translator's dashboard modified [05:49] yup [05:49] I have a widget for that [05:49] I know it's not a good way to put that information [05:49] so don't blame me for the big list :-P [05:50] why are all the language names in English? [05:50] The code that generate that page will be at rocketfuel in some minutes [05:50] limi: just testing :-) [05:50] ok [05:50] should I change anything at browser.py to use the widget? === carlos has no idea about widgets [05:52] no, I don't mean widgets in the Z3 sense ;) [05:54] daf: we need a way to cache the language list, we have now 632 in the database and the webpage I have to list all them takes about 3 seconds in my laptop to query the list do some checks and render it [05:54] it can be cached heavily, it really doesn't change very often [05:54] limi: then, Should I do anything, or just implement the form summit for that page as I have it now? [05:55] carlos: just put in what you have, and I will go and add the widgets [05:55] limi: it's now at rocketfuel [05:56] the submit is not yet at rocketfuel, I'm still working on it [05:56] ok [05:58] carlos: well, it should run much faster on the server [05:59] carlos: if it's still slow on the server, we'll optimise it then [05:59] ok [05:59] daf: could you update the server's database, rosetta is broken until it's update [05:59] ? [05:59] ok [06:00] thanks [06:03] one [06:03] done [06:03] (I think) [06:05] daf: yes, it works now [06:06] daf: hmm, I don't get this error in my computer: https://rosetta.warthogs.hbd.com/++skin++Debug/rosetta/translator [06:08] neither do I [06:09] SteveA: I'm getting a weird error [06:10] SteveA: I think it's because sqlos is trying to create a DatabaseException with the wrong number of parameters [06:10] daf: it comes from my latest changes, do you have them? [06:10] no, I don't [06:10] then it's normal you don't get the error in your local machine :-) [06:11] daf: can you paste it into jabber? [06:11] SteveA: sure [06:11] carlos: :) [06:32] daf: How could I know if a checkbox is checked or not from the Submit method? [06:33] self.request.form[checkbox_name] .checked? [06:33] this is a tough problem [06:33] no [06:33] so, all you can tell is if a checkbox is checked [06:34] you cannot tell the difference between a checkbox being unchecked, and a checkbox not being there at all [06:34] hmm [06:34] ok, it should not be a problem [06:34] for this page in concrete [06:34] to see what you get out of a particular form, put
a the bottom of a page [06:34] thanks [06:34] you'll see a bulleted-list output of the request [06:35] ok === daf <3 tla undo [06:39] or, to put it differently, === daf tla undo === limi switches encoding to daf-8 [06:42] X-) [06:43] daf: the tla undo is the only thing that keeps me to blame arch :-) [06:43] carlos: sorry? [06:45] daf: sorry, /s/blame/speak badly about/ [06:46] "keeps me to" or "keeps me from"? :) [06:46] from [06:47] keep moving, nothing to see here... [06:47] :-P [06:48] no worries, English idioms are hard :) [06:50] muy difcil [06:50] daf: :-) [06:52] humph: [06:52] DatabaseException: unindexable object [06:53] SteveA: How could I use different sentences like
inside the same template?, It's a template with three forms and I want to use different methods for every form [06:53] daf: URL? [06:54] carlos: there are various ways of doing this [06:54] first though, I must point out the usability pitfall: [06:54] is it obvious to someone using one part of the form that values they enter or change in the other parts of the form will be lost? [06:55] actually, you have a choice about this, if you take the approach I will describe. [06:55] so, have one form. That is, one set of
...
[06:55] yes, it's easy to know that the other changes will be lost [06:56] inside the form, have three submit buttons with different names: [06:56] [06:56] [06:56] [06:57] also, as with other forms, include a
element, or something similar that calls "processForm()" on the view class. [06:58] then, in the processForm method, you can have an "if" statement that decides which button was pressed. [06:58] [06:58] Another method of doing this whole thing is to have three separate
elements. [06:59] hmm, and how could I know which button was pressed? like the checkbutton? if it's pressed it will be there as a form element? [06:59] you can make the submit buttons have the magic name [06:59] this will cause the "handlerOne()" method on your view class to be called [06:59] when the form is submitted. [06:59] I advise against doing this, though [07:00] as it is rather magical [07:00] ok, then we forget this option :-) [07:01] if you want to make the forms distinct, then have three form elements, but use different names on the submit buttons to distinguish them === elmo [~james@83.216.141.215] has joined #launchpad [07:01] and handle them the same [07:02] carlos: it's something to do with my local changes, I think [07:02] daf: ok [07:02] the last bit of Rosetta code in the trace is a .count() call [07:02] SteveA: ok [07:03] thanks === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad [] [07:49] daf: I need to get the ID for a row of the Schema table from browser.py and I don't know how could I do it without using the SQL Objects methods, is there any way to use getUtility to do it? [07:55] if you need that, it should be part of the interface you're using [07:55] that way, it is just an integer id [07:55] you don't care if it comes from the database or whatever [07:58] SteveA: but I need a way to query that object [07:59] with the languages it's done with getUtility(ILanguages) and I get an object that let's me iterate over all available languages [08:01] oh, okay [08:01] so, you'll need one of those for schemas, I guess [08:02] ok === carlos was not sure if there is a better way than that, create a new object only for this looks like adding unned [08:03] grrr === carlos was not sure if there is a better way than that, create a new object only for this looks like adding unnecessary complexity to the interface [08:03] you need to search for a particular schema object, right? [08:04] so, you'll need an object that gives you an ability to do that search [08:04] yes [08:04] ok [08:34] who wrote: from canonical.rosetta.interfaces import * ? [08:35] in sql.py [08:35] we can only use "from xxx import *" where "xxx" defines an __all__ in the module [08:37] No idea === limi is now known as limi|food [08:56] SteveA: ok [08:56] SteveA: I can't remember who wrote that [08:56] I might be guilty [08:56] the dependencies are now unclear [08:57] I think I'm almost ready to check in the auth stuff [08:57] I'll half-heartedly argue that it's not so bad in this case because interfaces.py contains (absolutely should contain) nothing but interface declarations [08:57] it obviously also contains Interface and Attribute [08:57] and perhaps other schema stuff [08:58] ah, right [08:58] and also any interfaces that the rosetta interfaces extend [09:17] hmm [09:17] funny... [09:17] ProgrammingError: ERROR: column personlabel.id does not exist SELECT PersonLabel.id, PersonLabel.person, PersonLabel.label FROM PersonLabel WHERE PersonLabel.person = 14 AND PersonLabel.label = 4 LIMIT 1 [09:17] The table does not have such field 'id' [09:19] daf: Any idea about how could I do a select in that case? [09:19] personLabel = RosettaPersonLabel.select(''' [09:19] PersonLabel.person = %d AND [09:19] PersonLabel.label = %d''' % [09:19] (self.id, label.id))[0] [09:20] hmm [09:20] that's what I have now, before that I had a selectBy, but It also fails [09:20] I think SQLObject does not like tables without IDs :) [09:21] correct [09:21] funny [09:21] SteveA: any suggestion? [09:21] I just merged auth into RF [09:21] but, it was a messy merge [09:21] so, I might have accidentally broken something [09:21] I only need a SQLObject to add and remove records to that table nothing more [09:22] at your earliest convenience, can you try merging from RF, and see if stuff works for you? [09:22] the "normal" queries are handled by a RelatedJoin [09:23] SteveA: according to the PQM log, your merge up contained patches doing nothing but merging down [09:23] hmm === daf finds the commit summary page much more useful now that the log problem has been fixed [09:24] tla changes here shows nothing === limi [~limi@159.80-202-72.nextgentel.com] has joined #launchpad [09:24] did you merge the correct branch? [09:24] SteveA: are you sure you have your mirror updated? [09:24] new files are committed to my archive [09:25] perhaps I do not have my mirror updated [09:25] "tla tree-lint"? [09:25] what's the "do a mirror" command? [09:26] tla push-mirror $ARCH_ARCHIVE $ARCH_CATEGORY [09:26] tla archive-mirror [09:26] carlos: one of the ftests is failing because you added sample data, I think [09:26] hmmm [09:26] daf: yes, it's possible [09:26] "make fullcheck" [09:26] daf: the multiline && plural forms one [09:27] ok, I am mirroring [09:27] thanks carlos [09:27] carlos: exactly [09:27] I will fix it now [09:29] thanks [09:29] daf: I need to leave now (after fixing the test) if I want to have a chance to pass tomorrow's exam. The Language edition is more or less implemented, It lacks some error checks and fix the problem with SQLObjects and perhaps any other thing I forgot, but I'm not able to fix it now. Do you want it committed or what should I do? [09:31] go and revise :) [09:31] if you like, you could send me a changeset and I could finish it off [09:32] grmmm: [09:32] File "/home/daf/src/canonical/dists/launchpad/lib/sqlobject/dbconnection.py", line 189, in _executeRetry [09:32] return cursor.execute(query.encode('utf8')) [09:32] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 96: ordinal not in range(128) [09:32] well, indeed [09:33] the query is not ascii nor unicode [09:33] daf: ok, I will send you the patch [09:33] why that is, I do not know [09:34] it's in latin-1 [09:34] that is bad [09:35] strings in python are just bytes [09:35] they do not know what encoding they are in [09:35] where does the latin-1 string come from? [09:35] I was just observing === daf looks around for an [09:35] for an? [09:37] daf: the ftest fails because a problem in sql.py [09:37] File "/home/carlos/Work/dists/launchpad/lib/canonical/rosetta/sql.py", line 385, in __getitem__ [09:37] elif isinstance(key, string): [09:37] NameError: global name 'string' is not defined [09:37] also, I need to update the test [09:37] SteveA: capital A with tilde [09:37] but there are other problems there [09:37] ? [09:37] that should be isinstance(key, str) [09:38] there are other ocurrences of 0xc3, but no A-tilde [09:38] there should not be an A-tilde in the source [09:38] as our source should be all in ascii [09:38] they are in the test data [09:38] oh [09:38] how is the test data getting into the software? [09:39] through the test code, I imagine [09:39] I'm not familiar with the import/export tests [09:39] daf: the test data should have only escaped unicode chars .. [09:39] carlos: "escaped"? [09:39] it all looks like UTF-8 to me [09:39] \traducci\xc3\xb3n [09:40] ok, my merge went through [09:40] carlos: gnome-terminal.po [09:40] yes, sorry, utf-8 chars not unicode ones [09:40] apologies in advance if I broke something [09:40] daf: aahh, no idea then [09:41] when strings get into the domain code, and the database code, they should be one of two things: [09:41] * python unicode objects [09:41] * python str objects that are to be treated as opaque 8-bit data [09:41] there should be no str objects meant to be treated as character strings [09:42] the code that interacts with the outside world (browser, files, database, etc.) must carefully deal with encoded strings, and convert them to unicode objects [09:42] unless we really want to preserve the data, in which case it is "data" [09:44] daf: File "/home/carlos/Work/dists/launchpad/lib/canonical/rosetta/sql.py", line 397, in __getitem__ [09:44] sets = RosettaPOMessageSet.select(''' [09:44] NameError: global name 'msgid_obj' is not defined [09:45] daf: I'm going to have dinner now, please commit all fixes when you finish and that way I will be able to get the missing data easily. Ok? [09:45] carlos: I've fixed that one [09:46] daf: did you requested a merge? [09:46] I'm tring to fix the Unicode problem first [09:46] ok [09:47] just tell me when it's done and I will fix it tonight [09:47] later [09:50] ah, I think it was because of a message being encoded as UTF-8 twice [09:51] once in canonical.rosetta.sql and again in sqlo{s,bject} [10:13] SteveA: I think you forgot to update the SQL test generation code when you modified canonical.rosetta.interfaces [11:27] daf: Now that you mention it... I did some interfaces update and did not update it, sorry. I will add the tests tomorrow. === carlos backs to study