*** alga has quit IRC | 02:13 | |
*** replaceafill has joined #schooltool | 04:39 | |
*** replaceafill has quit IRC | 08:13 | |
*** replaceafill has joined #schooltool | 08:20 | |
replaceafill | aelkner, zyt? | 08:21 |
---|---|---|
replaceafill | no javascript in ftests means we pass a | 08:21 |
replaceafill | query string | 08:21 |
replaceafill | >>> manager.open(manager.url + '?schoolyear=2004-2005') | 08:21 |
replaceafill | you can change the value of the dropdown and the call manager.getForm().submit() | 08:22 |
aelkner | ah, i see | 08:22 |
replaceafill | i try to avoid open calls in ftests | 08:23 |
aelkner | i was looking at your splitup of the gradebook tests, but you didn't change that part | 08:23 |
aelkner | so i didn't think it was changable | 08:23 |
replaceafill | ? | 08:23 |
replaceafill | what part? | 08:23 |
aelkner | gradebook_management.txt has a lot of open calls | 08:23 |
replaceafill | ah!?!? | 08:24 |
* replaceafill goes to see... | 08:24 | |
replaceafill | aelkner, i only see 3 ;) | 08:25 |
replaceafill | and they are needed because there's no way to set those parameters using a form control | 08:26 |
aelkner | so where do you use .getForm().submit()? | 08:26 |
replaceafill | ./request_reports.txt | 08:27 |
replaceafill | ./report_sheets.txt | 08:27 |
replaceafill | ./column_linking.txt | 08:27 |
replaceafill | ./due_date_filter.txt | 08:27 |
replaceafill | ./export.txt | 08:27 |
replaceafill | ./gradebook_management.txt | 08:27 |
replaceafill | ./rml_student.txt | 08:27 |
replaceafill | ./last_visited_section.txt | 08:27 |
replaceafill | ./sections_without_course.txt | 08:27 |
replaceafill | :D | 08:27 |
aelkner | i only see one case of it | 08:28 |
aelkner | but i'm looking at the egg | 08:28 |
aelkner | let me check my recent checkout of trunk | 08:28 |
replaceafill | look at trunk | 08:28 |
aelkner | ah, good, lots of examples | 08:29 |
aelkner | thanks for the tip | 08:29 |
replaceafill | :) | 08:29 |
* replaceafill is learning about administrative divisions of cambodia... | 08:31 | |
aelkner | how the government is structured? | 08:31 |
replaceafill | yes | 08:31 |
replaceafill | http://en.wikipedia.org/wiki/Khan_%28Cambodia%29 | 08:31 |
replaceafill | there were some terms i didnt understand in the census :D | 08:32 |
aelkner | like their words for provinces and municipalities | 08:32 |
replaceafill | yes | 08:33 |
replaceafill | khan | 08:33 |
aelkner | khaet | 08:33 |
aelkner | so many ks | 08:33 |
replaceafill | :D | 08:33 |
aelkner | abd hs | 08:33 |
aelkner | khan i have some khotten khandy? | 08:34 |
replaceafill | :)) | 08:34 |
*** yvl has joined #schooltool | 08:44 | |
aelkner | yvl, hey | 09:10 |
yvl | hey aelkner | 09:13 |
aelkner | obviously, i'm going to bed soon, but i was hoping to get your reaction to my note real quick | 09:14 |
aelkner | do you think you'll have a chance to set up the trunk checkout and create a message there? | 09:15 |
aelkner | if you can just see the problem yourself, then i'll know that i'm not going crazy | 09:15 |
yvl | I'm doing that right now | 09:16 |
yvl | problem reproduced | 09:16 |
aelkner | thanks | 09:16 |
aelkner | cool | 09:16 |
yvl | you're not crazy :) | 09:16 |
aelkner | strange, isn't it? | 09:16 |
yvl | you'll need to manually ping persistence | 09:19 |
aelkner | where? | 09:19 |
yvl | accessing __dict__ directly doesn't change _p_state of the object | 09:19 |
yvl | for messages and goals | 09:19 |
aelkner | in evolve7? | 09:19 |
yvl | what happens is that you change the object in memory | 09:20 |
yvl | but it's not persisted back | 09:20 |
yvl | yes | 09:20 |
yvl | gimme a moment | 09:20 |
aelkner | ok, great | 09:20 |
yvl | umm | 09:29 |
aelkner | is it dir(obj)? | 09:30 |
aelkner | i found that in evolve4 | 09:30 |
yvl | you'll need to invoke setattr of the message and the goal | 09:30 |
aelkner | ah, setattr | 09:30 |
aelkner | obj._persons_responsible = obj.__dict__['persons_responsible'] | 09:31 |
yvl | something like message.___just_ping_persistence | 09:31 |
aelkner | that di that | 09:31 |
yvl | del message.__dict__['____just_ping_persistence'] | 09:31 |
aelkner | hugh? | 09:31 |
aelkner | messages don't have such an attribute | 09:31 |
aelkner | or do they because they inherit from Persistence? | 09:32 |
yvl | no | 09:32 |
yvl | it's a random name | 09:32 |
yvl | if they have titles or somehting, you can also do | 09:32 |
yvl | message.title = message.title | 09:32 |
aelkner | this seems hokey | 09:33 |
yvl | you can't do that with properties however | 09:33 |
aelkner | so, usually on changes an attribute and has no problem | 09:33 |
aelkner | but in this case, the properties are changind | 09:33 |
aelkner | and that doesn't result in setattr calls | 09:34 |
aelkner | and neither does del message.__dict__['sender']? | 09:34 |
aelkner | because i do that already | 09:35 |
yvl | the properties are not changed | 09:35 |
yvl | they are defined in class | 09:35 |
aelkner | they are class methods that result in calls to relationship methods, right? | 09:37 |
aelkner | so setattr is left out of the equation | 09:37 |
yvl | yes | 09:38 |
aelkner | ok, thanks | 09:40 |
aelkner | could you do me a favor and run the ftest coverage | 09:40 |
aelkner | actually, even easier | 09:40 |
aelkner | just put a pdb break after the if obj in util: in updatePersonsResponsible | 09:41 |
aelkner | and do a bin/test -f | 09:41 |
aelkner | it never reaches there, even though i have a special test file to prove that changing persons_responsible | 09:42 |
aelkner | changes the index | 09:42 |
aelkner | you'll note that i created a unit test for the same method, but those things get crazy some times | 09:42 |
aelkner | with having to stub out half of the objects | 09:42 |
aelkner | having an IntId utility that is predictable with it's intids | 09:43 |
aelkner | and that works the same way as the real thing is tricky | 09:43 |
aelkner | anyway, if i don't check if obj in util: the unit test crashes | 09:44 |
aelkner | i might be off base with that, i don't know | 09:44 |
yvl | well, if you need to stub that much it kind of shows how complicated this method actually is | 09:45 |
yvl | or how much it assumes | 09:45 |
yvl | so tests there are a good indicator | 09:45 |
yvl | ok | 09:46 |
yvl | aelkner, I'll email you later today | 09:46 |
aelkner | well, partly it assumes the complex data file that it will find in a real running environment | 09:46 |
yvl | if that's ok with you | 09:46 |
yvl | it's not a data file issue | 09:46 |
yvl | it's software design issue | 09:46 |
aelkner | that's dine, and we'll talk at the meeting, too | 09:47 |
yvl | sure | 09:47 |
yvl | and I was not saying that design is bad | 09:47 |
yvl | just that tests show how much (or little) the method assumes | 09:47 |
aelkner | well, the method is actually simple, but the server needs lots of complicated uilities and such | 09:48 |
aelkner | it's not special to any method, most of them do | 09:48 |
aelkner | one always is doing a queryUtility | 09:49 |
aelkner | and one assumes that they can find the typical ones | 09:49 |
aelkner | InitIds | 09:49 |
aelkner | Catalogs (before) | 09:49 |
aelkner | i can't remember what else at the moment | 09:49 |
yvl | good point | 09:50 |
aelkner | point is all these things are hooked up together | 09:50 |
aelkner | they depend on each other, and it's a pain in the ass | 09:50 |
aelkner | i mean i haven't even mentioned the need for an app | 09:50 |
aelkner | and the folders that go under it | 09:50 |
aelkner | most code that does anything meaningful ties together these pieces | 09:50 |
aelkner | so they all need to be stubbed | 09:51 |
aelkner | it would be better if we had a more standard way od creating the stubbed environment | 09:51 |
aelkner | rather than reconceiving how to stub every time one wants to write a unit test | 09:51 |
aelkner | it's a waste of time in my opinion | 09:53 |
yvl | I agree :) | 09:53 |
yvl | that's what I meant by good point | 09:53 |
aelkner | didn't mean to belabor it :) | 09:53 |
yvl | then again - that's why we have setUp methods in tests | 09:54 |
yvl | they create the relevant part of environment | 09:54 |
aelkner | that's the re-conceiving thing i was talking about | 09:54 |
yvl | but you usually want to create as little as possible | 09:54 |
yvl | because, for one, tests that need a lot of set-up run slow | 09:55 |
aelkner | you know what might help | 09:55 |
yvl | more importantly - this means that both code and tests depend on many things set up somewhere else | 09:55 |
aelkner | again my point about meaningful code having a knack for linking many parts together | 09:56 |
yvl | say, updatePersonsResponsibleIndex | 09:57 |
yvl | this one updates specific catalog, so we need to set up that | 09:57 |
yvl | and it's there because of relationship property | 09:58 |
yvl | so we need to set up relationships | 09:58 |
yvl | it also relies on objects providing one of two given interfaces | 09:58 |
yvl | so we need to stub that | 09:58 |
aelkner | don't forget the trickiest part, the IntIds utility | 09:59 |
aelkner | anyway, i did all of that, but it's pain is all | 09:59 |
aelkner | anyway... | 10:00 |
aelkner | please look into why my functional test for the catalog change works even if the method does nothing | 10:01 |
yvl | sure | 10:01 |
yvl | but later today, please | 10:01 |
aelkner | np, i'm going to sleep now | 10:01 |
yvl | good night :) | 10:02 |
*** menesis has joined #schooltool | 10:35 | |
*** replaceafill has quit IRC | 10:36 | |
*** alga has joined #schooltool | 11:24 | |
*** ignas has joined #schooltool | 12:36 | |
*** ignas has quit IRC | 13:39 | |
*** ignas has joined #schooltool | 14:11 | |
*** jelkner has joined #schooltool | 14:22 | |
*** menesis has quit IRC | 14:57 | |
*** th1a has joined #schooltool | 15:25 | |
*** replaceafill has joined #schooltool | 15:26 | |
th1a | hi replaceafill, aelkner, yvl. | 15:30 |
replaceafill | good morning/afternoon | 15:30 |
aelkner | morning | 15:31 |
th1a | Would you like to start us off replaceafill? Learn anything particularly useful at PyCon? | 15:32 |
replaceafill | pyramid is getting popular :) | 15:32 |
th1a | What do people like about it? | 15:33 |
yvl | morning guys | 15:33 |
replaceafill | it's "easy" and zope people like it has done well what zope did wrong | 15:34 |
replaceafill | there was a very interesting open space about zope | 15:34 |
replaceafill | with all the big names talking about what went wrong | 15:34 |
replaceafill | anyway... | 15:35 |
replaceafill | my report: | 15:35 |
replaceafill | i merged the views to manage students and teachers in a class in cambodia | 15:36 |
replaceafill | and started to implement the 'disconnect subjects from levels' feature | 15:36 |
replaceafill | but now i have to ask (again) how that will affect the average calculations | 15:36 |
*** menesis has joined #schooltool | 15:36 | |
replaceafill | (i already asked that but have no answer) | 15:36 |
th1a | hi menesis. | 15:37 |
replaceafill | and im preparing a very long email with lots of questions about the many reports i've got recently | 15:37 |
menesis | hi | 15:37 |
th1a | Yes, lots of sample reports generate lots of questions. | 15:37 |
replaceafill | i also met with matt gallagher and david welsh this week | 15:37 |
replaceafill | they were trying to enable cando + other plugins | 15:38 |
replaceafill | i also found this: http://novatillasku.com/2011/03/13/schooltool-estara-en-los-archivos-de-ubuntu-11-04/ | 15:38 |
replaceafill | (it's in spanish) | 15:38 |
replaceafill | it's the announcement that schooltool will be in natty | 15:38 |
th1a | Nice. | 15:38 |
replaceafill | which got me in touch with Franco Ontivero, who i've been helping to set up his schooltool instance | 15:39 |
th1a | Good catch. | 15:40 |
replaceafill | also, i'm almost ready to attend the sugar summit | 15:40 |
th1a | Bags packed? | 15:40 |
replaceafill | will ask you in a future meeting about what topics should i talk about there | 15:40 |
replaceafill | :)) | 15:40 |
replaceafill | no, not yet | 15:40 |
menesis | also, see http://www.edubuntu.org/2011-03-12/schooltool-in-ubuntu-1104 | 15:41 |
menesis | about the same | 15:41 |
replaceafill | also, jelkner and his team is helping setting up an XS with aks RPMs to demonstrate maybe in the summit | 15:41 |
replaceafill | and this week i should start with the census forms for cambodia's primary and secondary schools | 15:42 |
replaceafill | and i'd have some questions, but was thinking maybe i could meet with yvl tomorrow or on wednesday, if yvl has time of course | 15:43 |
yvl | for you - always :D | 15:43 |
replaceafill | because there are some design stuff i want to ask you about :) | 15:43 |
yvl | (and by you I meant all of you) | 15:43 |
replaceafill | th1a, to finish my report, i'm reviewing the reports chandara sent last night and will try to send all my questions in one batch | 15:44 |
replaceafill | with numbers | 15:44 |
*** ignas has quit IRC | 15:44 | |
replaceafill | so i can say "you didnt answer #20" | 15:44 |
th1a | Sounds good. | 15:45 |
replaceafill | i guess that's it from me | 15:45 |
th1a | Thanks, replaceafill. | 15:45 |
replaceafill | yvl, i'll ask you about times after the meeting, ok? | 15:46 |
yvl | sure | 15:46 |
replaceafill | thanks | 15:46 |
th1a | yvl? | 15:46 |
yvl | I finished "view" views for former timetable schemas | 15:46 |
yvl | and wrote evolution for the schemas | 15:47 |
yvl | this week the primary target will be section scheduling | 15:47 |
yvl | secondary (but there won't be enough time to finish) - calendar events | 15:48 |
yvl | that's it. | 15:48 |
th1a | Does that put you on schedule? | 15:48 |
aelkner | don't gorget help me out :) | 15:48 |
yvl | that goes without questioning :) | 15:48 |
yvl | yes, th1a | 15:48 |
aelkner | i bent yvl's ear quite a bit last week | 15:49 |
th1a | Thanks, yvl. | 15:49 |
th1a | aelkner? | 15:49 |
aelkner | so last week i had to work on changing the intervention catalog to new style | 15:49 |
aelkner | it was worth it for sparing us evolution every time the catalog changes | 15:50 |
aelkner | it had to change it to index differently for persons_responsible anyway, so... | 15:50 |
aelkner | i created a new subscriber for when that attribute is changed, and unit tested it | 15:51 |
aelkner | then when i put in a functional test for changing persons_responsible | 15:51 |
aelkner | the test worked great, if i removed a teacher from a goal, they didn't see it in the inbox | 15:52 |
aelkner | putting them back made the goal appear again | 15:52 |
aelkner | it wasn't until i ran ftest coverage on it that i realized that the code wasn't even run | 15:53 |
aelkner | so the index is updated without the subscriber even running | 15:53 |
yvl | umm | 15:53 |
yvl | if you run functional tests, the updatePersonsResponsible is used | 15:54 |
yvl | same goes if you run: make ftest-coverage | 15:54 |
aelkner | did you see the three lines that are not reached? | 15:55 |
yvl | sorry, no, will check now | 15:56 |
aelkner | they come after if obj in util: | 15:56 |
aelkner | i needed to make sure the object was in the intid utility rather than assuming it | 15:56 |
aelkner | and it always seem to not be there, so it doesn't actualy reach the reindex line | 15:57 |
aelkner | i can discuss this with yvl after the meeting | 15:57 |
aelkner | anyway | 15:57 |
yvl | oh | 15:57 |
yvl | you should have used util.queryId | 15:58 |
yvl | instead of if object in util | 15:58 |
aelkner | there was also a scary evolve issue which yvl and i discussed last night | 15:58 |
aelkner | and i should be able to ix it by forcing the persistence mechanism to fire for each object | 15:59 |
aelkner | although, how to test that is another thing since we use stubs | 15:59 |
aelkner | if i say message.title = message.title, for instance | 15:59 |
aelkner | that may fix the evolve bug | 15:59 |
yvl | I'd like to exand on this for a few seconds | 16:00 |
th1a | We've got time. | 16:00 |
yvl | http://bazaar.launchpad.net/~aelkner/schooltool.intervention/test_coverage/view/head:/src/schooltool/intervention/generations/evolve7.py | 16:00 |
aelkner | but if the message is a stub in the test, then i can't test that the persistence engine fired | 16:00 |
yvl | persistent objects are a bit finicky | 16:00 |
yvl | they exist in ghost (unloaded) state until you actually try to read from them | 16:01 |
yvl | also, they are saved back to the database only when they consider themselves 'changed' | 16:01 |
yvl | if you look at fixMessage from the code above | 16:01 |
yvl | you'll notice it tries to access and modify __dict__ directly | 16:02 |
yvl | __dict__, like __class__, __of__, __del__ and... __setstate__ IIRC, | 16:02 |
yvl | are treated in a special way | 16:02 |
yvl | they do not unghostify the object | 16:03 |
yvl | which means - until you try to read some other attribute, the object will not be loaded | 16:03 |
yvl | also | 16:03 |
yvl | finicking with __dict__ directly does not make the object 'changed' | 16:04 |
aelkner | so i have learnered! | 16:04 |
yvl | the hard way ;) | 16:04 |
aelkner | :) | 16:04 |
aelkner | how to test? | 16:04 |
yvl | you can check if _p_changed is set to True | 16:04 |
yvl | for those objects | 16:04 |
aelkner | with stubs thaqt don't inherit from Persistent? | 16:05 |
yvl | no, it won't work with them | 16:05 |
yvl | you can't test if persistence mechanism was triggered for non-persistent objects | 16:05 |
aelkner | so i need to change my stubs to inherit from Persistent, right? | 16:05 |
aelkner | and i can cahnge for _p_changed | 16:06 |
aelkner | test for | 16:06 |
yvl | hmm | 16:06 |
yvl | probably yes | 16:07 |
aelkner | i'll try that out today and report my findings tonight | 16:07 |
yvl | but check if _p_changed is not True at the beginning | 16:07 |
yvl | if you can't do a quick fix, just don't test | 16:07 |
yvl | ideally it would be best to set the old object, commit a transaction | 16:08 |
yvl | then execute evolve | 16:08 |
yvl | then see if the object is changed | 16:08 |
yvl | but for the fix | 16:09 |
yvl | you do have several options there | 16:09 |
yvl | one is to just bluntly use message.created | 16:09 |
yvl | created = message.created | 16:09 |
yvl | if 'sender' in message.__dict__: | 16:10 |
yvl | do stuff | 16:10 |
aelkner | i thought it was message.created = message.created | 16:10 |
yvl | message.created = created | 16:10 |
aelkner | in order for settatr to run | 16:10 |
aelkner | oh, only do it if the object is gong to change | 16:10 |
yvl | yes, that would be nicer | 16:10 |
aelkner | anyway, what about the test stubs? | 16:11 |
yvl | umm? | 16:11 |
aelkner | inherit from Persistent? | 16:11 |
yvl | oh | 16:11 |
yvl | yes | 16:11 |
aelkner | ok, will do, and i'll test _p_changed | 16:11 |
yvl | but don't waste too much time on this | 16:11 |
yvl | I mean - we should have decent infrastructure for this | 16:12 |
yvl | but evolution tests never got enough love :) | 16:12 |
yvl | maybe some time soon | 16:13 |
aelkner | they could use some love because this esoteric bug was a bad one | 16:13 |
yvl | yes | 16:13 |
aelkner | anyway, moving on to updatePersonsResponsible | 16:13 |
yvl | and as I'm writing timetable evolution, I'm extremely interested in what got persisted | 16:13 |
aelkner | it doesn't seem i even needed it for my new test to pass | 16:14 |
yvl | hmm | 16:14 |
aelkner | when my test changes persons_responsible using the goal edit view | 16:14 |
yvl | sure | 16:14 |
aelkner | the index is updated even though the reindex is not called in updatePersonsResponsible | 16:15 |
yvl | try manually breaking the relationships | 16:15 |
yvl | and checking if the catalog reflects the new values | 16:15 |
aelkner | yeah, i didn't test having the manger remove the teacher | 16:15 |
yvl | no | 16:15 |
yvl | not from the views | 16:15 |
yvl | unless you want to have the data model that breaks unexpectedly once somebody adds another view | 16:16 |
aelkner | the scenario is removing the teacher from the system altogether | 16:16 |
aelkner | that will cause the contact to go away | 16:16 |
yvl | the scenario you should test for is | 16:16 |
aelkner | and that would call updatePersonsResponsible to fire | 16:16 |
yvl | unrelating the goal and the contact | 16:17 |
aelkner | that's what i'm saying | 16:17 |
yvl | no | 16:17 |
aelkner | the only way to unrelate them is removing the teacher form the system | 16:17 |
yvl | no!!! | 16:17 |
aelkner | how then? | 16:17 |
yvl | bad Alan! | 16:17 |
yvl | ;)))) | 16:18 |
yvl | sorry :) | 16:18 |
yvl | you should test two things | 16:18 |
aelkner | speak to me | 16:18 |
yvl | 1) - what you said | 16:18 |
yvl | manager deleting the contact, that in turn kills all relationships, this fires events, catalogs get updated | 16:18 |
yvl | but that is not enough | 16:18 |
yvl | 2) | 16:18 |
yvl | somebody from code unrelates message and the contact | 16:19 |
aelkner | there is no code writen for that, so how to test?! | 16:19 |
yvl | ah! | 16:19 |
yvl | somebody can write that cod | 16:19 |
yvl | e | 16:19 |
yvl | as a new view | 16:19 |
yvl | as import script | 16:19 |
yvl | I would probably do an "integration test" | 16:20 |
aelkner | there's no use case for an import script, no user calling for it | 16:20 |
aelkner | you're speaking theoretically | 16:20 |
yvl | yes | 16:20 |
yvl | but your code should test that | 16:20 |
yvl | or - remove the code | 16:20 |
aelkner | but this is reality | 16:20 |
yvl | so? | 16:20 |
yvl | you want to have code that breaks once anybody writes anything reasonable? | 16:21 |
yvl | there is a method that does stuff | 16:21 |
aelkner | so should i create a view that is registered only in ftesting.zcml | 16:22 |
yvl | you should test that it does stuff well | 16:22 |
aelkner | that changes the relationship? | 16:22 |
yvl | thanks! | 16:22 |
yvl | that is one option | 16:22 |
yvl | there is another option | 16:22 |
yvl | [looking for example] | 16:22 |
yvl | dammit, can't find a good one on the sport | 16:23 |
yvl | spot | 16:23 |
yvl | ah | 16:23 |
yvl | there it is | 16:23 |
yvl | securitypolicy/tests/test_txt.py | 16:24 |
yvl | method setUpSecurityDirectives | 16:24 |
aelkner | that's not a functional test | 16:24 |
yvl | you can have a separate unit test that includes the most important zcml you need | 16:24 |
aelkner | i need a funcitonal test | 16:24 |
yvl | you need both | 16:24 |
yvl | a functional - that shows that everything works | 16:24 |
aelkner | i already have the unit test | 16:24 |
yvl | when users do their stuff | 16:25 |
yvl | good point | 16:25 |
yvl | apologies, I totally forgot that | 16:25 |
aelkner | np, so i create a test only view registered only in ftesting.zcml | 16:25 |
yvl | ah, right | 16:26 |
aelkner | i call it using query string to change the relationship | 16:26 |
yvl | the test is broken | 16:26 |
aelkner | what test is broken? | 16:26 |
yvl | text_updatePersonsResponsibleIndex | 16:27 |
yvl | test_* | 16:27 |
aelkner | how is it broken? | 16:27 |
yvl | __contains__ return True always | 16:27 |
yvl | you check if your_object in intid_util | 16:27 |
yvl | which is never | 16:27 |
yvl | because that's not how int id utilities work | 16:27 |
yvl | ok | 16:28 |
yvl | thats out of scope for this meeting | 16:28 |
yvl | for now | 16:28 |
yvl | change the updatePersons* code | 16:28 |
yvl | to use | 16:29 |
yvl | int_id = util.queryId(obj) | 16:29 |
yvl | if int_id is not None: | 16:29 |
yvl | ... | 16:29 |
aelkner | and the stub? | 16:29 |
yvl | umm | 16:30 |
yvl | fix it :) | 16:30 |
yvl | for example... | 16:30 |
yvl | have a dict of {id: object} | 16:30 |
yvl | and make queryId of the stub do: | 16:30 |
yvl | def queryId(self, object, default=None): | 16:31 |
yvl | return the_dict.get(object, default) | 16:31 |
aelkner | the dict is keyed by the message object? | 16:32 |
yvl | and I'll keep in mind that we need decent helpers for int id testing | 16:32 |
yvl | ouch | 16:32 |
yvl | that's what I get for writing in a hurry | 16:32 |
yvl | yes, you can do that | 16:32 |
yvl | or you can have a list of objects | 16:33 |
yvl | and return if object in list, list.index(object) | 16:33 |
yvl | anything | 16:33 |
aelkner | you'll admit that this is a total pain in the ass, yes? | 16:33 |
yvl | of course! | 16:33 |
yvl | it's not difficult, but it's pain | 16:33 |
yvl | but you know | 16:34 |
aelkner | no, i disagree, it's VERY difficult | 16:34 |
yvl | it's kind of our job to do that | 16:34 |
yvl | and it's my job to write helpers | 16:34 |
aelkner | rocket science for making a blender run | 16:34 |
yvl | sigh | 16:34 |
yvl | ok | 16:35 |
aelkner | anyway, i'll give it another pass | 16:35 |
yvl | I do agree that this is overkill | 16:35 |
yvl | let's move on :) | 16:35 |
aelkner | yes | 16:35 |
aelkner | additionally, i added lots of test coverage | 16:35 |
aelkner | and updated README.txt to use more explicit XPATH tests | 16:35 |
aelkner | removing the old stephan pattern that i mistakenly followed | 16:36 |
aelkner | no more print manager.contents | 16:36 |
replaceafill | yay! | 16:36 |
replaceafill | :) | 16:36 |
aelkner | th1a, at some point the package will need to be revisited to remove dependency on schooltool.gradebook | 16:37 |
aelkner | adn at that point, there will be tests that will change anyway | 16:37 |
aelkner | so i'll leave those uncovered line there until then | 16:37 |
th1a | Didn't we decide that was near the top of your list? | 16:38 |
aelkner | maybe, i don't remember | 16:38 |
aelkner | i would prefer to do it soon while the project is fully loaded in my mind | 16:38 |
th1a | You can just continue into that if you want. | 16:39 |
aelkner | fine, will do | 16:39 |
th1a | OK, is that it for now, aelkner? | 16:39 |
aelkner | i can write up something during the week and send to maling list | 16:39 |
jelkner | quick question: aelkner will be available to help fsuftchi this wednesday from 2 to 7 pm, yes? | 16:39 |
aelkner | jelkner, definitely | 16:39 |
yvl | by the way, aelkner - I do appreciate you improving the codebase, you know ;) | 16:39 |
jelkner | thanks! | 16:40 |
aelkner | yvl, thanks, good to be appreciated | 16:40 |
aelkner | i'd like to move the templates unto a templates directory as a small task | 16:40 |
aelkner | keep cleaning up the browser package | 16:40 |
replaceafill | aelkner, is it worth to split the long README.txt ftest in intervention? | 16:41 |
aelkner | i already split out the dashboard tests | 16:41 |
aelkner | but mostly README.txt tests the message/goal adding/editing | 16:42 |
aelkner | and the intervention center | 16:42 |
aelkner | and should stay as it is | 16:42 |
replaceafill | ok | 16:42 |
aelkner | so. i think i've reported enough for one day :) | 16:43 |
aelkner | i'll keep giving the package some love | 16:44 |
th1a | replaceafill: Should I be looking at Selenium 2? | 16:44 |
replaceafill | th1a, there's a stable 2 already?!?! | 16:45 |
th1a | No. | 16:45 |
th1a | Otherwise I wouldn't need to ask. ;-) | 16:45 |
th1a | But beta2, right? | 16:45 |
replaceafill | yes | 16:45 |
replaceafill | haven't played with it yet :( | 16:46 |
replaceafill | because of the beta status | 16:46 |
th1a | OK. | 16:46 |
th1a | Thanks. | 16:46 |
th1a | So I'm waiting to hear back from the design people (I called on Friday) and need to start figuring out my new Selenium strategy as inspired by replaceafill. | 16:46 |
th1a | Have a great week gentlemen! | 16:47 |
th1a | Oh... | 16:47 |
th1a | menesis! | 16:47 |
th1a | News? | 16:47 |
menesis | I have been somewhat blocked by Developer membership board | 16:48 |
th1a | Yes. | 16:48 |
th1a | I couldn't fully interpret that last email. | 16:48 |
menesis | that is not functioning after latest elections on February, it seems | 16:48 |
menesis | so I still don't have permissions to upload half zope packages and, most importantly, schooltool packages | 16:49 |
menesis | but I finally got a reply yesterday | 16:49 |
menesis | should be implemented sometime soon | 16:50 |
menesis | meanwhile | 16:50 |
menesis | I have been finalising zope packages | 16:50 |
menesis | uploaded those that I can, left others for later | 16:51 |
menesis | some work on zope upstream, fixing copyrights, dependencies etc., as I discover them when touching packages | 16:51 |
th1a | OK. Sounds good. | 16:52 |
menesis | also, preparing a beta release | 16:52 |
th1a | Just started snowing here... | 16:52 |
menesis | March 24th is beta freeze | 16:52 |
th1a | Yes. | 16:52 |
menesis | have to update release notes, merge translations, and will make a beta release then | 16:53 |
aelkner | weird, it's supposed to get to 58 degrees here today | 16:53 |
aelkner | not far south from you | 16:53 |
menesis | as I understand there are no new fixes or features in this beta release | 16:54 |
th1a | OK, thanks menesis. | 16:54 |
th1a | Yes. | 16:54 |
menesis | ok | 16:56 |
th1a | Any last questions? | 16:58 |
th1a | Have a great week gentlemen. | 16:58 |
yvl | (I've already talked to Douglas about being available on IRC) | 16:58 |
yvl | great week to you, guys! | 16:58 |
* th1a drops the bag of gravel. | 16:58 | |
replaceafill | thanks everybody | 17:00 |
aelkner | great week everyone | 17:00 |
*** alga has quit IRC | 17:28 | |
*** replaceafill has quit IRC | 18:16 | |
*** replaceafill has joined #schooltool | 18:20 | |
*** jelkner has quit IRC | 18:54 | |
*** menesis has quit IRC | 21:09 | |
*** replaceafill has quit IRC | 21:34 | |
*** menesis has joined #schooltool | 21:52 | |
*** th1a has quit IRC | 22:06 | |
*** th1a has joined #schooltool | 22:08 | |
*** menesis has quit IRC | 22:30 | |
*** menesis has joined #schooltool | 22:44 | |
*** alga has joined #schooltool | 23:30 | |
*** menesis has quit IRC | 23:40 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!