carlos | spiv: ok, thanks for look at it :-) | 12:04 |
---|---|---|
carlos | people, good night | 12:04 |
limi|busy | daf? | 12:07 |
daf | limi|busy? | 12:12 |
=== limi|busy might have figured it out ;) | ||
limi|busy | give me 20 seconds, and we'll know | 12:12 |
limi|busy | Module canonical.rosetta.browser, line 75, in products | 12:13 |
limi|busy | total = product.messageCount() | 12:13 |
limi|busy | ForbiddenAttribute: ('messageCount', <Product at 0x | 12:13 |
limi|busy | latest merges from rocketfuel | 12:14 |
limi|busy | re-built DB | 12:14 |
limi|busy | daf: this is when accessing the GNOME project in Rosetta | 12:14 |
daf | bah | 12:15 |
daf | can you give the complete last line of the error message? | 12:16 |
limi|busy | yes | 12:16 |
limi|busy | Module zope.tal.talinterpreter, line 311, in interpret | 12:16 |
limi|busy | handlers[opcode] (self, args) | 12:16 |
limi|busy | Module zope.tal.talinterpreter, line 723, in do_loop_tal | 12:16 |
limi|busy | iterator = self.engine.setRepeat(name, expr) | 12:16 |
limi|busy | Module zope.tales.tales, line 687, in setRepeat | 12:16 |
limi|busy | it = self._engine.iteratorFactory(name, expr, self) | 12:16 |
limi|busy | Module zope.tales.tales, line 109, in __init__ | 12:16 |
limi|busy | self._next = i.next() | 12:16 |
limi|busy | Module canonical.rosetta.browser, line 75, in products | 12:16 |
limi|busy | total = product.messageCount() | 12:16 |
limi|busy | ForbiddenAttribute: ('messageCount', <Product at 0x38292d0 | 12:16 |
limi|busy | > | 12:17 |
limi|busy | ) | 12:17 |
limi|busy | :) | 12:17 |
daf | hmm | 12:17 |
limi|busy | daf: any idea what it could be? | 12:36 |
daf | a bug? | 12:43 |
spiv | Gah. | 12:50 |
daf | I don't understand it | 12:50 |
spiv | SteveA: Around? | 12:50 |
daf | spiv: I suspect not, given his timezone | 12:51 |
spiv | daf: Ah, ok. I've no idea what time it is anywhere anymore ;) | 12:51 |
limi|busy | time zones are for wimps | 12:51 |
daf | spiv: :) | 12:52 |
daf | limi|busy: ah, I think I see what's going on | 12:53 |
limi|busy | ok | 12:53 |
=== limi|busy rearranges Stuff | ||
daf | limi|busy: in lib/canonical/rosetta/browser.py | 12:54 |
spiv | daf: Anyway, I *may* have found the cause of carlos's bug. | 12:54 |
daf | spiv: the mystery of the missing END? | 12:55 |
limi|busy | daf: do continue ;) | 12:55 |
limi|busy | the suspense is killing me | 12:55 |
limi|busy | ;) | 12:55 |
daf | --- orig/lib/canonical/rosetta/browser.py | 12:55 |
daf | +++ orig/lib/canonical/rosetta/browser.py | 12:56 |
limi|busy | there's a conflict that got merged? | 12:56 |
daf | @@ -58,3 +58,3 @@ | 12:56 |
daf | person = IPerson(self.request.principal, None) | 12:57 |
daf | if person is not None: | 12:58 |
limi|busy | daf, the manual diffing machine | 12:58 |
daf | for language in person.languages(): | 12:58 |
daf | - yield LanguageProducts(language, self.context.products) | 12:58 |
=== daf gives up | ||
limi|busy | remove that line and... | 12:58 |
daf | add this one: | 12:59 |
daf | yield LanguageProducts(language, self.context.rosettaProducts) | 12:59 |
daf | well, give that a try and see if it fixes it | 01:00 |
limi|busy | testing | 01:00 |
=== mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad | ||
daf | oh, Friday | 01:00 |
limi|busy | lovely Friday | 01:00 |
limi|busy | daf: same error | 01:02 |
limi|busy | or; similar | 01:02 |
limi|busy | Module zope.tales.tales, line 109, in __init__ | 01:03 |
limi|busy | self._next = i.next() | 01:03 |
limi|busy | Module canonical.rosetta.browser, line 75, in products | 01:03 |
limi|busy | total = product.messageCount() | 01:03 |
limi|busy | ForbiddenAttribute: ('messageCount', <Product at 0x3843750>) | 01:03 |
=== limi|busy still wonders why nobody else sees these | ||
daf | hmmm | 01:03 |
=== elmo [~james@83.216.141.215] has joined #launchpad | ||
daf | limi|busy: I'm trying to reproduce this error locally | 01:11 |
limi|busy | ok | 01:11 |
=== limi|busy goes back to the prefs form tweaking | ||
spiv | daf: Yep, I definitely know why carlos's thiing isn't being committed. | 01:21 |
spiv | daf: What I don't know is what the right way to fix that is :) | 01:21 |
=== spiv goes to think about it over dinner | ||
daf | spiv: another sqlobject/slos bug? | 01:24 |
limi|busy | carlos does insane things to ZPT at times :] | 01:44 |
limi|busy | daf: any idea where the actual language list is coming from? | 01:48 |
limi|busy | ie. which file is it in? | 01:49 |
limi|busy | or does it grab it from the system? | 01:50 |
limi|busy | daf: ping? :) | 02:03 |
limi|busy | spiv? | 02:03 |
limi|busy | :) | 02:04 |
limi|busy | anyone? :] | 02:04 |
=== limi|busy feels alone | ||
daf | limi|busy: from the database | 02:04 |
daf | sorry, got distracted | 02:04 |
limi|busy | daf: aha | 02:04 |
limi|busy | anyway | 02:04 |
limi|busy | I have a more complex question ;) | 02:04 |
daf | eek! | 02:05 |
limi|busy | how can I get the languages the logged-in person has? | 02:05 |
limi|busy | I didn't quite understand what kind of structure carlos was using in the dashboard | 02:05 |
daf | um | 02:05 |
limi|busy | the "select your languages" part | 02:05 |
daf | should be something like | 02:05 |
daf | request/lp:person/languages | 02:05 |
=== limi|busy tests | ||
daf | grep around for something like that; I think it's used in at least one template already | 02:06 |
limi|busy | Module zope.interface.interface, line 684, in __call__ | 02:07 |
limi|busy | raise TypeError("Could not adapt", obj, self) | 02:07 |
limi|busy | TypeError: ('Could not adapt', <zope.app.security.principalregistry.UnauthenticatedPrincipal object at 0x29a3a50>, <InterfaceClass canonical.rosetta.interfaces.IPerson>) | 02:07 |
limi|busy | nothing greppable that I can find :( | 02:07 |
daf | bah, that error again | 02:08 |
=== limi|busy gets some litchi | ||
daf | hmm | 02:11 |
daf | you know that error you had before? | 02:11 |
limi|busy | oh well, I can leave it for carlos to sort it out | 02:12 |
limi|busy | yes? | 02:12 |
daf | what does line 65 of your browser.py say? | 02:12 |
limi|busy | yield LanguageProducts(language, self.context.products) | 02:13 |
limi|busy | change to rosettaProducts? | 02:13 |
daf | what line did you change before? | 02:13 |
limi|busy | 58 | 02:13 |
daf | aha | 02:14 |
daf | ok, both lines 58 and 65 should read ".rosettaProducts()" instead of ".products" | 02:14 |
limi|busy | ok | 02:14 |
limi|busy | and why is it only me that has this problem? :) | 02:15 |
=== limi|busy feels singled out | ||
limi|busy | :] | 02:15 |
daf | I didn't get it because I was not up-to-date, I think | 02:15 |
daf | or because I wasn't looking at that page | 02:16 |
limi|busy | ok :) | 02:16 |
daf | or because the moon is Waning Gibbous | 02:16 |
limi|busy | well, it's just the project page, it's not like it's important or anything O:) | 02:16 |
daf | :) | 02:16 |
limi|busy | that language list in the DB is on crack, btw | 02:17 |
limi|busy | 70% of it is dead/unused languages | 02:17 |
limi|busy | :] | 02:17 |
limi|busy | daf: almost: | 02:19 |
limi|busy | Module zope.tales.tales, line 109, in __init__ | 02:19 |
limi|busy | self._next = i.next() | 02:19 |
limi|busy | Module canonical.rosetta.browser, line 74, in products | 02:19 |
limi|busy | for product in self._products: | 02:19 |
limi|busy | TypeError: iteration over non-sequence | 02:19 |
limi|busy | ;) | 02:19 |
daf | wtf? | 02:19 |
daf | that is *so* a sequence | 02:19 |
limi|busy | haha | 02:19 |
limi|busy | not _rosettaProducts? | 02:19 |
daf | try slapping a list() around self.context.rosettaProducts() | 02:20 |
limi|busy | ok | 02:20 |
limi|busy | both lines? | 02:20 |
daf | aye | 02:20 |
=== limi|busy feels like the Java days again | ||
limi|busy | typecasting all over the place ;) | 02:21 |
daf | haha :) | 02:22 |
limi|busy | same error | 02:22 |
daf | humph | 02:22 |
daf | Works For Me <tm> | 02:25 |
limi|busy | Doesn't Help | 02:26 |
limi|busy | ;) | 02:26 |
=== daf scratches his head | ||
daf | try rebuilding your database | 02:27 |
daf | "make -C database/schema launchpad_test", IIRC | 02:27 |
limi|busy | I did that after I updated last, but... | 02:29 |
=== limi|busy tries again | ||
daf | and you did restart Launchpad, right? | 02:30 |
limi|busy | yes | 02:31 |
daf | then you *are* being singled out :) | 02:31 |
limi|busy | hehe | 02:32 |
limi|busy | Module zope.tales.tales, line 109, in __init__ | 02:32 |
limi|busy | self._next = i.next() | 02:32 |
limi|busy | Module canonical.rosetta.browser, line 65, in languageProducts | 02:32 |
limi|busy | yield LanguageProducts(language, list(self.context.rosettaProducts)) | 02:32 |
limi|busy | TypeError: iteration over non-sequenc | 02:32 |
limi|busy | still no worky | 02:33 |
daf | you missed out the () | 02:33 |
limi|busy | ? | 02:33 |
daf | rosettaProducts() | 02:33 |
limi|busy | aha | 02:33 |
daf | if you add the (), you can probably get rid of the list() | 02:34 |
daf | (both of them) | 02:34 |
limi|busy | yes, did that ;) | 02:34 |
limi|busy | daf: what's a "temporal hack", btw? is that where you get 25 hours in a day? | 02:35 |
daf | :) | 02:35 |
limi|busy | O:) | 02:35 |
daf | :D | 02:35 |
daf | I think that's Carlosspeak for "temporary hack" :) | 02:35 |
limi|busy | hehe | 02:35 |
=== limi|busy is no longer singled out! | ||
daf | limi has gone mainstream :) | 02:36 |
=== limi|busy breaks Rosetta 0.2s later: | ||
limi|busy | Module zope.app.publication.publicationtraverse, line 57, in traverseName | 02:37 |
limi|busy | ob2 = adapter.publishTraverse(request, nm) | 02:37 |
limi|busy | Module canonical.metazcml, line 148, in publishTraverse | 02:37 |
limi|busy | traversed_to = getattr(self.context, self._getter)(name) | 02:37 |
limi|busy | ForbiddenAttribute: ('product', <canonical.rosetta.domain.RosettaProject object at 0x38678f0>) | 02:37 |
limi|busy | when clicking a product in GNOME project page | 02:37 |
=== limi|busy adds some UI porn instead | ||
daf | oh, bloody ForbiddenAttributes | 02:39 |
daf | bah, file system full >:-| | 02:42 |
limi|busy | ouch | 02:43 |
daf | Filesystem Size Used Avail Use% Mounted on | 02:43 |
daf | /dev/hda2 24G 22G 0 100% / | 02:43 |
daf | um, isn't there 2G missing there? | 02:44 |
limi|busy | depends how it counts it | 02:46 |
limi|busy | there's always block slack | 02:46 |
limi|busy | if you have lots of small files, that may be a correct number | 02:46 |
daf | I know, but it's annoying when you're desparately looking around for free space | 02:46 |
limi|busy | get rid of some mp3s :] | 02:47 |
daf | eek! | 02:48 |
justdave | the Avail and the Use% indicate userspace on the disk | 03:31 |
justdave | there's a bit reserved for root | 03:31 |
mdz | daf: it doesn't count space which is reserved for root | 03:33 |
mdz | by default 5% | 03:33 |
mdz | so 1G and change in your case | 03:33 |
daf | mdz: interesting, thanks | 03:40 |
daf | mdz: this is something which can be configured, right? | 03:41 |
mdz | daf: yes | 03:41 |
mdz | daf: tune2fs -l /dev/hda2 to view it | 03:41 |
mdz | tune2fs -m <percentage> /dev/hda2 to change it | 03:41 |
daf | groovy | 03:41 |
daf | can this be changed on a mounted filesystem? | 03:42 |
mdz | it's probably not dangerous to do so, but it wouldn't take effect until the filesystem was remounted | 03:42 |
daf | hmm, df is reporting the change immediately | 03:43 |
!dmwaters:*! hi all! I'm going to wake everyone up a bit.:) I need to switch out one main rotation server for another. basically, replacing an old box with a new one.:) this won't take long. 1800 users affected. | 04:14 | |
=== spiv [~andrew@fuchsia.puzzling.org] has joined #launchpad | ||
=== SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad | ||
mdz | that seems plausible | 04:21 |
mdz | I wouldn't expect it to be enforced yet, though, but I suppose it's possible | 04:21 |
daf | we shall see :) | 04:27 |
=== mdz_ [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad | ||
=== mdz_ is now known as mdz | ||
spiv | SteveA: I'm off to bed now, so just a quick note that BrowserPublication defines two different beforeTraversal methods! | 06:43 |
!lilo:*! So, it occurs to me to wonder what the maximum practical latency between participants in a peer-directed project might be: http://www.reuters.com/newsArticle.jhtml?type=scienceNews&storyID=6133976&src=eDialog/GetContent§ion=news | 07:29 | |
SteveA | thanks! | 09:16 |
SteveA | I'll fix that | 09:16 |
=== carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad | ||
carlos | morning | 11:10 |
SteveA | morning | 11:32 |
SteveA | spiv found the database error | 11:32 |
SteveA | I'd introduced a bug when I merged in the auth changes | 11:32 |
SteveA | there are two beforeTraversal methods defined in BrowserPublication | 11:32 |
carlos | SteveA: then, it's already fixed? | 11:40 |
SteveA | I don't believe anything is checked in yet | 11:57 |
SteveA | but, I also just read andrew's note about a bug in sqlobject joins | 11:57 |
=== carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad | ||
=== carlos_ [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad | ||
=== carlos_ is now known as carlos | ||
carlos | SteveA: I'm having a problem with this page https://rosetta.warthogs.hbd.com/rosetta/prefs | 12:54 |
carlos | SteveA: if I select only a entry from "Available languages", the request gives me something like: availablelanguages: itemSelected | 12:55 |
carlos | but If I select more than one, I get something like: availablelanguages: u'item1', u'item2', u'item3' | 12:56 |
carlos | and when I try to iterate over all values, it does not work as it should | 12:57 |
carlos | because in the first case, it itereates over all letters instead of just retrieve the value | 12:57 |
SteveA | ok, that sounds like what I'd expect it to do | 01:09 |
SteveA | when there is more than one, what kind of object is it? | 01:09 |
SteveA | you can also change the code in the page template to say availablelanguages:list rather than just availablelanguages | 01:10 |
SteveA | like: | 01:10 |
SteveA | <select name="availablelanguages:list"> | 01:10 |
SteveA | yeah, try making it a list: | 01:12 |
SteveA | <select id="prefs-available-languages" name="availablelanguages" size="10" style="width: 20em;" multiple="multiple" ondblclick="javascript:addSelectedKeywords('prefs-available-languages','prefs-selected-languages');return false;"> | 01:12 |
SteveA | change that to contain name="availablelanguages:list" | 01:12 |
carlos | ok | 01:12 |
SteveA | oh, wait... | 01:12 |
SteveA | you want "selectedLanguages" not "availableLangauges" dont' you? | 01:12 |
carlos | I want both | 01:13 |
SteveA | well, all in lower | 01:13 |
carlos | yes | 01:13 |
SteveA | I don't know how what I suggested would interact with the fancy javascript | 01:13 |
SteveA | so, better to handle this in your form-processing method | 01:13 |
carlos | the add submit gets the available, the remove submit gets the selected | 01:13 |
SteveA | test the type of availablelanguages | 01:14 |
carlos | well, in fact, I don't know why, but the javascript is not working anymore here | 01:14 |
SteveA | isinstance(availablelanguages, list) | 01:14 |
carlos | but that's another problem | 01:14 |
carlos | SteveA: is there any way to do the javascript magic without submit it? | 01:15 |
carlos | or just ignoring it is enough? | 01:15 |
SteveA | I don't know exactly what you mean | 01:15 |
carlos | with the limi's code, we have three submit buttons | 01:15 |
SteveA | let's solve your original problem first | 01:15 |
carlos | one to save and two for add/remove | 01:15 |
carlos | ok | 01:15 |
SteveA | can you try to use isinstance(availablelanguages, list) to see if it is a string or a list? | 01:16 |
carlos | SteveA: ok, it works | 01:18 |
SteveA | great | 01:19 |
SteveA | now, on stopping buttons from submitting | 01:20 |
SteveA | you need to ensure the javascipt returns false | 01:20 |
SteveA | that should stop them from hitting the server | 01:20 |
SteveA | but, it looks like it does that already | 01:20 |
carlos | and it's fixed now | 01:20 |
carlos | if isinstance(self.request.form['availablelanguages'] , list): | 01:20 |
carlos | newLanguages = self.request.form['availablelanguages'] | 01:20 |
carlos | else: | 01:20 |
carlos | newLanguages = [ self.request.form['availablelanguages'] ] | 01:20 |
carlos | for englishName in newLanguages: | 01:20 |
=== limi [~limi@159.80-202-72.nextgentel.com] has joined #launchpad | ||
SteveA | okay | 01:21 |
carlos | SteveA: hmm, I think I was wrong the add/remove button should submit always because if the languages are not selected the request does not have the list of items... | 01:21 |
carlos | limi: hey | 01:21 |
carlos | limi: I'm broking your templates :-P | 01:22 |
limi | hehe | 01:22 |
carlos | but then, I don't understand the utility of the javascript... | 01:22 |
carlos | limi: if the submit buttons work, the javascript has any utility? | 01:22 |
carlos | I mean, Is it useful? | 01:23 |
limi | what do you mean? | 01:23 |
carlos | limi: in my local machine, the javascript code has not effect anymore and I just changed the template so the list of selected languages is filled with user's preferences | 01:24 |
carlos | /s/just/only/ | 01:24 |
carlos | from the template, from browser.py I changed lot of things | 01:25 |
limi | you probably changed the variable names, right? | 01:25 |
SteveA | I must go out and buy some optician stuff. probably get some lunch too. back later. | 01:27 |
carlos | limi: only the browser.py ones, not the javascript ones or the html objects ones | 01:28 |
carlos | SteveA: later | 01:28 |
carlos | limi: my changes: | 01:29 |
carlos | <div metal:fill-slot="main" | 01:29 |
carlos | - tal:define="languages view/languages"> | 01:29 |
carlos | + tal:define="languages view/languages; selectedLanguages view/selectedLanguages" > | 01:29 |
carlos | - <form action="translator" method="post"> | 01:29 |
carlos | + <form action="prefs" method="post"> | 01:29 |
carlos | - <option>Dummy</option> | 01:29 |
carlos | + | 01:29 |
carlos | + <option tal:repeat="language selectedLanguages" | 01:29 |
carlos | + tal:content="language/englishName" | 01:29 |
carlos | + tal:attributes="name language/code" /> | 01:29 |
carlos | nothing more | 01:29 |
limi | should work then | 01:30 |
=== limi updates | ||
carlos | I know :-) | 01:30 |
carlos | It's not yet at rocketfuel | 01:30 |
limi | ok | 01:30 |
carlos | do you want it? | 01:30 |
limi | yes, mail it to me? | 01:30 |
limi | limi at plone.org | 01:30 |
carlos | ok | 01:30 |
carlos | sent | 01:36 |
carlos | limi: also, I think we don't need the Save button | 01:39 |
limi | well, it depends | 01:40 |
carlos | because the only way to save the new list is every time we push the add/delete one | 01:40 |
limi | yes, but there might be more preferences later | 01:40 |
carlos | seems like the View object is created every time after the submit | 01:40 |
SteveA | the view object is created on every request | 01:40 |
limi | not sure I follow you | 01:40 |
SteveA | you cannot cache data in the view object between requests | 01:41 |
limi | the page shouldn't reload | 01:41 |
carlos | limi: When you click on the add button | 01:41 |
limi | yes | 01:41 |
carlos | I create a list with the additions | 01:41 |
limi | and reload the page? | 01:41 |
carlos | but if you click again in any other button that list does not exists anymore | 01:41 |
limi | ? | 01:42 |
carlos | limi: new object, new variables | 01:42 |
limi | you are only concerned with the list on the right | 01:42 |
SteveA | when I click the "add to my languages" button, there is no request back to the server. | 01:42 |
limi | save that to the user prefs | 01:42 |
limi | SteveA: exactly | 01:42 |
SteveA | the javascript has a "return false;" in it | 01:42 |
limi | I don't want to rely on XmlHttpRequest (not just yet, at least) | 01:43 |
carlos | limi: ok, that's fine for me, but with my changes, I don't know why, the submit is done | 01:43 |
limi | carlos: just take the list on the right and save that to the user prefs | 01:43 |
limi | carlos: then that needs to be fixed ;) | 01:43 |
SteveA | you can tell what button is pressed in your form handling method | 01:44 |
carlos | limi: ok, if you could tell me what did I broke... | 01:44 |
carlos | :-) | 01:44 |
limi | hehe | 01:44 |
carlos | SteveA: I know | 01:44 |
=== limi looks | ||
SteveA | so, the form handler should do nothing (but maybe emit a warning) unless "save" is pressed | 01:44 |
carlos | SteveA: then the submit is always done? | 01:44 |
carlos | then, the problem is that I added code to handle all buttons | 01:44 |
SteveA | can you ask that question in another way? | 01:44 |
SteveA | only the save button should submit the form to the server | 01:45 |
SteveA | the other buttons might, if javascript is turned off | 01:45 |
SteveA | unless limi has done more magic to make them appear only when javascript is working | 01:45 |
carlos | SteveA: with javascript on and the current configuration, the view should never get a request from add/remove? | 01:45 |
SteveA | yes | 01:45 |
SteveA | the server should get no request from add/remove | 01:46 |
limi | correct | 01:46 |
SteveA | "no no no no absolutely not", to quote "Bad News" | 01:46 |
carlos | SteveA: I got those requests, and I have javascript enabled, because without my changes the javascript works | 01:46 |
limi | you just save the list on the right | 01:46 |
SteveA | playing a bastardized version of "Bohemian Rhapsody" | 01:46 |
carlos | ok, the problem is that I was handling "add" submit | 01:47 |
carlos | removing it makes it work again | 01:47 |
carlos | but then the submit is done always | 01:47 |
SteveA | ok, but it shouldn't actually hit the server | 01:47 |
SteveA | check in the rendered page | 01:47 |
SteveA | see if you have "return false;" at the end of the javascript in the add/remove buttons | 01:48 |
SteveA | 01:48 | |
SteveA | <div style="float: left; padding-top: 5em;"> | 01:48 |
SteveA | <input type="submit" name="add" value="Add to my languages »" onclick="javascript:addSelectedKeywords('prefs-available-languages','prefs-selected-languages');return false;" /> | 01:48 |
SteveA | see, at the end of the onclick attribute | 01:48 |
SteveA | that "return false;" will stop the browser from treating the click as a real form submit | 01:49 |
SteveA | limi: why do paragraphs change colour when my mouse goes over them? | 01:49 |
limi | paragraphs? | 01:50 |
limi | oh, the help text? | 01:50 |
SteveA | " Add or remove languages in your language list by double clicking the entries or using the labeled buttons. Use Ctrl to select multiple elements". | 01:52 |
=== SteveA really goes out now | ||
carlos | the return false is still there but for some reason does not work... | 01:55 |
carlos | btw, it's not important now, just remove the code to handle those buttons and that's it | 01:55 |
carlos | limi: I don't have a way to get the list of selected languages | 01:59 |
carlos | limi: they should be "selected" so the request send me that list | 01:59 |
limi | you are going about this the wrong way :) | 02:00 |
carlos | I'm using <div tal:content="request" /> | 02:00 |
carlos | to see the request | 02:00 |
limi | the list on the left is always static, and a separate item | 02:00 |
limi | the list on the right is the variable stored on the user | 02:00 |
carlos | and every time I press the Save button I don't get that list | 02:00 |
limi | don't make them one variable | 02:00 |
carlos | forget the code I sent you | 02:01 |
carlos | just look at this: | 02:01 |
carlos | CHANNEL_CREATION_TIME: 1094212731.84 CONNECTION_TYPE: keep-alive CONTENT_LENGTH: 33 CONTENT_TYPE: application/x-www-form-urlencoded GATEWAY_INTERFACE: CGI/1.1 HTTP_ACCEPT: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7 HTTP_ACCEPT_ENCODING: gzip,deflate HTTP_ACCEPT_LANGUAGE: es,en-gb;q=0.7,en;q=0.3 HTTP_HOST: localhost:8085 HTTP | 02:01 |
carlos | _KEEP_ALIVE: 300 HTTP_REFERER: http://localhost:8085/++skin++Debug/rosetta/prefs HTTP_USER_AGENT: Mozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.7.2) Gecko/20040814 Epiphany/1.3.7 PATH_INFO: /++skin++Debug/rosetta/prefs REMOTE_ADDR: 127.0.0.1 REQUEST_METHOD: POST SAVE: Save SCRIPT_NAME: SERVER_NAME: frodo SERVER_PORT: 8085 SERVER_PROTOCOL: HTTP/1.1 SERVER_SOFTWARE: zope.server.http (HTTP) availablelanguages: Akan | 02:01 |
carlos | I get that after add the Akan language with javascript (without the submit) | 02:01 |
carlos | and the pressing the Save button | 02:02 |
carlos | I only get availablelanguages: Akan, because It's still selected from the available list when I added it with javascript | 02:02 |
carlos | I don't see a way to get the list of selectedlanguages | 02:02 |
limi | ask SteveA when he gets back, this is request magic :) | 02:05 |
limi | shouldn't be a problem if you know how (I don't ;) | 02:06 |
carlos | limi: SteveA told me that the way it works is: you only get what you have selected | 02:06 |
carlos | is the same with a checkbox | 02:07 |
carlos | if the checkbox is not checked, you don't get it with the request object | 02:07 |
limi | yes, but it should select the selected languages on submit | 02:07 |
=== limi checks | ||
carlos | that's why I was working with the add/remove buttons | 02:07 |
SteveA | I see no code that would select languages in the "my languages" select box before submitting | 02:08 |
limi | ok, let me look at it | 02:09 |
=== SteveA really really goes now :-) | ||
=== SteveA isn't here any more | ||
carlos | SteveA: X-) | 02:12 |
carlos | lunch time | 02:27 |
carlos | later | 02:27 |
=== limi subjects himself to a temporal hack | ||
daf | somebody broke the server | 03:02 |
daf | carlos: I think it was you | 03:02 |
daf | carlos: syntax error in lib/canonical/browser.py, line 326 | 03:02 |
daf | did SteveA say when he'd be back? | 03:08 |
limi | nope | 03:08 |
carlos | daf: hmm, I checked it before commit | 03:43 |
carlos | let me see... | 03:43 |
carlos | shit | 03:44 |
carlos | daf: sorry, was my fault | 03:45 |
carlos | daf: merge request to fix it sent | 03:47 |
daf | thanks | 03:50 |
carlos | daf: could we add all pending things to bugzilla so we can track its status and pick the "free" ones when we are free to pick another task? | 03:57 |
carlos | hmm I thought our bugzilla is at https://bugzilla.warthogs.hbd.com/ but seems like it's not there, which one is the correct URL? | 03:59 |
=== limi [~limi@159.80-202-72.nextgentel.com] has joined #launchpad | ||
daf | http://bugzilla.warthogs.hbd.com/bugzilla? | 04:01 |
carlos | daf: yes | 04:02 |
carlos | thanks | 04:02 |
daf | doo itashimashite | 04:02 |
carlos | daf: :-? | 04:02 |
daf | carlos: de nada | 04:03 |
carlos | :-P | 04:04 |
carlos | ok | 04:04 |
=== SteveA is back | ||
daf | SteveA: hi | 04:07 |
carlos | SteveA: Did you saw the talk I had with limi about the request object? | 04:07 |
daf | SteveA: do you have time to help me with this problem I'm having? | 04:07 |
=== carlos can wait | ||
SteveA | carlos: should I read the irc logs for when I was at lunch? | 04:18 |
SteveA | daf: what's the problem? | 04:18 |
daf | in a nutshell: | 04:19 |
daf | NotFoundError: (<RosettaProject at 0xb414896c>, 'title') | 04:19 |
carlos | SteveA: no, it was just before you leave. As soon as you end helping daf I will explain again the problem, ok? | 04:19 |
SteveA | ok | 04:20 |
SteveA | daf: that doesn't tell me much | 04:20 |
daf | SteveA: I'm miffed because RosettaProject implements IRosettaProject which is derived from doap.IProject which has a title attribute | 04:20 |
daf | SteveA: and, in sql.zcml, the IRosettaProject interface is allowed for RosettaProject | 04:20 |
daf | the error ocurrs on the TAL expression 'context/product/project/title' | 04:21 |
daf | in pdb: | 04:22 |
daf | (Pdb) self.context | 04:22 |
daf | <RosettaPOTemplate at 0xb4204b2c> | 04:22 |
daf | (Pdb) self.context.product | 04:22 |
daf | <RosettaProduct at 0xb41fb58c> | 04:22 |
daf | (Pdb) self.context.product.project | 04:22 |
daf | <RosettaProject at 0xb41aeecc> | 04:22 |
daf | (Pdb) self.context.product.project.title | 04:22 |
daf | *** ForbiddenAttribute: ('title', <RosettaProject at 0xb41aeecc>) | 04:22 |
SteveA | what box are you working on? | 04:22 |
SteveA | your laptop? | 04:22 |
daf | yes | 04:22 |
SteveA | can you give me a login there, and we can use screen for some pair-programming debugging? | 04:23 |
daf | sure | 04:23 |
=== SteveA goes to make a cup of tea while daf gets set up | ||
daf | it's been a while since I've done this | 04:23 |
SteveA | keep notes to put up on a wiki page perhaps | 04:25 |
daf | good idea | 04:25 |
SteveA | this will be even better when we can use voip and screen together | 04:25 |
daf | :) | 04:28 |
carlos | https://rosetta.warthogs.hbd.com/++skin++Debug/rosetta/projects/gnome/evolution/ | 04:33 |
carlos | SteveA: I think that error is related to that bug | 04:33 |
SteveA | I think you're right | 04:35 |
SteveA | want to talk about requests while daf gets ready? | 04:36 |
carlos | ok | 04:36 |
carlos | It's about the page to select interested languages | 04:36 |
carlos | Limi creates a list with javascript | 04:36 |
carlos | when you click on add/remove | 04:36 |
carlos | and in theory, when you click on "Save", I should get that list | 04:37 |
SteveA | ok | 04:37 |
limi | I probably need to do a select all on that click | 04:37 |
SteveA | yes | 04:37 |
SteveA | I expect so | 04:37 |
SteveA | otherwise, nothing will be sent | 04:37 |
carlos | that's what I thought :-P | 04:37 |
SteveA | otherwise, when you add items to the select box, also add a hidden form field | 04:37 |
SteveA | but that sounds complex | 04:37 |
SteveA | when you consider removal too | 04:38 |
SteveA | don't even know if it would work :) | 04:38 |
limi | we are using it in production with the select all :) | 04:38 |
limi | so I should be able to locate that | 04:38 |
SteveA | so, carlos, limi will fix it with javascript | 04:39 |
SteveA | to test for now, you can manually select all the items before submitting | 04:39 |
limi | +1 | 04:39 |
limi | :) | 04:39 |
carlos | ok | 04:39 |
carlos | limi: and is there any way to get the language code instead of the language name? | 04:39 |
SteveA | carlos: maybe add a note to the UI saying "XXX select all items before submitting" | 04:39 |
carlos | SteveA: ok | 04:40 |
limi | it has the lang code now, afaik? | 04:40 |
carlos | limi: no, the submit send the language name | 04:40 |
limi | ok | 04:40 |
carlos | limi: I just merged into rocketfuel the project-index.pt updated so it does not shows anything about a language | 04:41 |
daf | SteveA: ssh stevea@earthsea.homedns.org | 04:44 |
SteveA | hmm | 04:51 |
SteveA | debug1: Connecting to earthsea.homedns.org [80.69.60.252] port 22. | 04:51 |
daf | hmm | 04:52 |
SteveA | I can't get any response telnetting to port 22 either | 04:56 |
daf | probably a problem with the router | 04:56 |
SteveA | let's see if I can connect to your launchpad | 04:57 |
SteveA | run it on 8085, and I'll try to connect | 04:57 |
SteveA | can I run a portscan on you? | 04:58 |
SteveA | will your isp think I'm cracking? | 04:59 |
daf | no, they're sane | 05:02 |
daf | hm, I tried opening port 2222 also | 05:02 |
daf | but that doesn't seem to work either | 05:02 |
daf | perhaps I'll just set up an ssh tunnel | 05:02 |
carlos | limi: the preferences page is implemented but does some funny things until the DB commit is fixed | 05:05 |
daf | SteveA: try "ssh stevea@muse.19inch.net -p 2222" | 05:06 |
SteveA | ok, need password | 05:07 |
daf | /msg'd | 05:07 |
daf | now: screen -x daf/ | 05:08 |
daf | (I think) | 05:08 |
SteveA | Must run suid root for multiuser support. | 05:08 |
daf | hrm | 05:08 |
daf | try again | 05:09 |
carlos | wow, I didn't know that screen's feature | 05:10 |
=== SteveA waits for daf to type something in screen | ||
SteveA | 3 minute workrave time | 05:11 |
SteveA | ok, let's debug | 05:17 |
SteveA | how about we do gossip and screen | 05:17 |
SteveA | ? | 05:17 |
daf | sure | 05:20 |
daf | http://muse.19inch.net/~daf/misc/multiuser-screen.html | 05:22 |
SteveA | still there? | 05:25 |
daf | yes | 05:27 |
daf | the screen session has two windows | 05:28 |
SteveA | so, we can talk on gossip | 05:28 |
daf | one for running launchpad in | 05:28 |
daf | and the other for modifying code in | 05:28 |
SteveA | I have my terminal arranged so I can see our talk in gossip, and the screen session | 05:28 |
SteveA | mainly, I want to get into the debugger at the point the error fails | 05:28 |
SteveA | so, PM debug the permissions problem | 05:28 |
daf | I have an explicit "import pdb; pdb.set_trace()" in the code at the moment | 05:29 |
daf | we can debug from where that runs | 05:29 |
daf | (in browser.py) | 05:29 |
daf | or we can debug from the point whre it was failing of its own accord | 05:29 |
SteveA | let's use the post-mortem debugger for now | 05:30 |
SteveA | I want you to see how I'd debug one of these permissions problems | 05:30 |
daf | well, both suggestions apply to the PMD | 05:30 |
daf | oh, right | 05:30 |
daf | ok, I'll disable the explicit debugger invocation | 05:31 |
=== debonzi [~debonzi@200.158.100.251] has joined #launchpad | ||
!lilo:*! Hi all. We need translator assistance in translating an English-language email for speakers of Spanish in the Dominican Republic....please message me if you can help | 05:58 | |
=== justdave [~dave@24.247.63.44.gha.mi.chartermi.net] has joined #launchpad | ||
=== carlos goes to the university to study. See you!! | ||
=== elmo [~james@83.216.141.215] has joined #launchpad | ||
=== SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad | ||
daf | limi: the color scheme change seem to only happen for some pages | 07:11 |
daf | limi: also, I noticed you discussing the "change-colour-on-hover" behaviour of some text with Steve -- did you come to a conclusion about it? | 07:12 |
limi | it's on the help text class - from Plone | 07:15 |
limi | it was essentially added since some hard-of-sight people didn't like grayed-out text for the help | 07:15 |
limi | easily removed if we don't like it | 07:15 |
limi | one line of CSS ;) | 07:15 |
limi | the color change should happen everywhere, make sure your cache is fresh | 07:16 |
limi | shift-reload where it looks like the old version | 07:16 |
limi | anyway, still waiting for the designs from the agency | 07:16 |
limi | was just tired of it looking like Plone :) | 07:17 |
daf | :) | 07:17 |
daf | which agency is this? | 07:17 |
limi | the logo people | 07:17 |
daf | (I find the black-on-dark-blue a little difficult to read) | 07:17 |
daf | oh dear | 07:17 |
=== limi fears the worst | ||
=== lalo [~lalo@200-203-022-120.paemt7002.dsl.brasiltelecom.net.br] has joined #launchpad | ||
daf | hurrah! | 08:24 |
daf | DatabaseException: unindexable object | 08:24 |
daf | I didn't think I'd be happy to see that again... | 08:25 |
daf | spiv: around? | 08:26 |
daf | lalo: "fixed DB regression introduced by SteveA when integrating authentication." -- was that yours? | 08:28 |
SteveA | that was me | 08:32 |
SteveA | what's up? | 08:33 |
SteveA | are you glad you got an "unindexable object" error? | 08:34 |
daf | SteveA: did you forget to mirror? | 08:34 |
daf | SteveA: no patches were merged | 08:34 |
daf | SteveA: yes, I'm glad | 08:34 |
daf | because that's what I was working on a few days ago before I got sidetracked by other things | 08:35 |
SteveA | oh, yes... I forgot that my mirror hook isn't there | 08:35 |
daf | I'd really like to get this error fixed | 08:37 |
daf | because I don't think there's much else in the way of getting database submission merged to rocketfuel | 08:37 |
daf | perhaps spiv's at lunch | 08:38 |
SteveA | I just submitted a merge | 08:42 |
SteveA | that should fix the database error I introduced | 08:42 |
daf | which one? | 08:42 |
SteveA | there were two beforeTraversal methods | 08:43 |
SteveA | they should have been merged into one | 08:43 |
SteveA | so, the transaction wasn't being started correctly, and the connection pool wasn't being cleared | 08:44 |
daf | oh, right | 08:44 |
=== limi_ [~limi@159.80-202-72.nextgentel.com] has joined #launchpad | ||
SteveA | nono nononono nononono nono | 08:44 |
SteveA | there's no limi | 08:44 |
=== limi_ is now known as limi | ||
limi | O:) | 08:44 |
SteveA | chris morris interviewed the performers of that song (2 unlimited) about the semantic content of the lyrics | 08:45 |
SteveA | "so, do you think there should be limits on anything at all?" | 08:45 |
daf | :D | 08:46 |
daf | chris morris... the name rings a bell, faintly | 08:46 |
daf | was the the guy behind Brass Eye? | 08:46 |
SteveA | yes | 08:47 |
SteveA | '"No, no, no no no no, no no no" - don't you think it's a bit negative?' | 08:47 |
=== limi grins | ||
SteveA | daf: technically, the man in front of brass eye | 08:54 |
SteveA | brass eye is a crude anatomical reference | 09:00 |
=== debonzi [~debonzi@200.158.100.251] has joined #launchpad | ||
!lilo:*! Hi all. Just a reminder for those who wish to attend the official Gentoo meeting in Manchester UK tomorrow---if you're interested and you can make it there, please visit #gentoo-uk. Kudos to everyone involved for all the time they've put in to put this happen, and we know it will be an excellent event. | 09:57 | |
spiv | daf: Yep, am now. | 10:44 |
=== limi [~limi@sparkit.easynet.no] has joined #launchpad | ||
daf | spiv: I've tried escaping the '%'s in the query | 11:51 |
daf | spiv: but I'm still getting the same error | 11:51 |
spiv | daf: Hmm. Can you find out what the query string is? (and what's the final part of the traceback?) | 11:53 |
daf | sure | 11:58 |
daf | 'Opening %%d contact will open %%d new window as well.\r\nDo you really want to display this contact?' is the string in question | 11:58 |
daf | any easy way to get hold of the query? | 11:58 |
daf | or shall I just turn postgres statement loggin on? | 11:59 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!