*** alga_ has quit IRC | 02:39 | |
*** alga has quit IRC | 02:39 | |
*** Lumiere has quit IRC | 05:48 | |
*** Lumiere has joined #schooltool | 06:20 | |
*** Lumiere has quit IRC | 06:40 | |
*** Lumiere has joined #schooltool | 06:41 | |
*** yvl has joined #schooltool | 09:23 | |
*** menesis has quit IRC | 11:00 | |
*** menesis has joined #schooltool | 11:50 | |
*** mgedmin has joined #schooltool | 12:12 | |
*** Aiste has joined #schooltool | 12:34 | |
*** menesis has quit IRC | 12:47 | |
*** menesis1 has joined #schooltool | 12:47 | |
*** menesis1 is now known as menesis | 12:47 | |
*** alga has joined #schooltool | 13:22 | |
*** alga_ has joined #schooltool | 13:22 | |
*** Aiste has quit IRC | 15:07 | |
*** Aiste has joined #schooltool | 15:12 | |
*** Aiste has quit IRC | 15:58 | |
*** replaceafill has joined #schooltool | 16:01 | |
*** th1a has joined #schooltool | 16:24 | |
th1a | Good morning yvl, menesis, replaceafill, aelkner, Lumiere. | 16:31 |
---|---|---|
yvl | good morning! | 16:31 |
replaceafill | good morning/afternoon | 16:32 |
aelkner | morning | 16:32 |
th1a | So I spent an interesting afternoon digging into RapidSMS. | 16:33 |
th1a | On Friday. | 16:33 |
th1a | That's the UNESCO project to create a framework for SMS based apps for the developing world. | 16:34 |
th1a | I think that potentially we could use it to create a Django based app to aggregate data from multiple SchoolTools. | 16:34 |
*** alga_ has quit IRC | 16:34 | |
*** alga has quit IRC | 16:34 | |
th1a | Or at least it would be good for prototyping one. | 16:34 |
th1a | In the meantime, reading their internal development discussions in their mailing list was interesting. | 16:35 |
th1a | Lots of things we can relate to. | 16:35 |
th1a | You might enjoy: | 16:35 |
* Lumiere is wondering why add another environment to the ST architecture? | 16:35 | |
th1a | http://groups.google.com/group/rapidsms/attach/0877c2f505eda059/state+of+rapid+sms.pdf?part=4 | 16:36 |
th1a | http://groups.google.com/group/rapidsms/browse_thread/thread/ad4b1178303ea6fa/a6ce56176ec391cb?#a6ce56176ec391cb | 16:36 |
th1a | http://etherpad.unicefinnovation.org/rapidsms-refactoring-tasks | 16:37 |
th1a | Lumiere: Nothing has been decided, but since this application would just aggregate and report data, it wouldn't share a lot of code. | 16:38 |
Lumiere | k | 16:38 |
th1a | Also, the reasons against using ZODB would be even stronger in this case. | 16:38 |
th1a | You'd really rather have all those national statistics in tables. | 16:39 |
th1a | But anyhow, the tl;dr of the above is they're in the middle of a major refactoring which will allow you to do exciting things | 16:40 |
th1a | like run unit tests. | 16:40 |
th1a | So there is no screaming rush. | 16:40 |
th1a | (if those hairy URLs above even work for you) | 16:40 |
th1a | In other news, | 16:41 |
th1a | Alan and I visited SLA on Wednesday, | 16:41 |
th1a | and basically, we're having an amicable parting with them. | 16:41 |
th1a | I sent them an email saying, we need to figure out what needs to be squared away before we start ignoring you for an indefinite period of time, | 16:42 |
th1a | and they said, well actually, we're writing our own SIS now in PHP. | 16:42 |
th1a | So... that's a little discouraging, but we've got to keep our focus on the developing world now anyhow, so it is ok. | 16:44 |
yvl | what were the main reasons? | 16:44 |
th1a | Well, they want to integrate course management and content creation (e.g., Google Apps) | 16:45 |
th1a | into one system that works together nicely. | 16:45 |
th1a | And there just aren't protocols for doing so across applications. | 16:45 |
th1a | And Chris (the principal) is a PHP programmer, and Chris (the tech guy) is a PHP programmer. | 16:46 |
aelkner | that's your main reason right there | 16:46 |
aelkner | also, they didn't lke that they couldn't inspect schooltool data like an sql table | 16:47 |
th1a | And they've got this weird (weirder than I had realized) relationship with Chris (the tech guy) where he's also got a successful web development shop going and SLA is kind of his hobby for 40 hours a week. | 16:47 |
th1a | They're just used to SQL. | 16:47 |
th1a | Like every other programmer in the universe. ;-) | 16:47 |
replaceafill | :/ | 16:47 |
th1a | But anyhow, they actually have the capacity to do a pretty big project with local resources. | 16:48 |
th1a | Interoperability is the big sticking point. | 16:48 |
th1a | As always. | 16:48 |
aelkner | you can be sure they will have on app writing into sql tables of aother app | 16:49 |
th1a | Not necessarily. | 16:49 |
aelkner | pretty much like i was trying to do with moodle integration | 16:49 |
th1a | But anyhow. | 16:49 |
th1a | These things and other recent events have inspired me to come up with a new SchoolTool strategy document to send to Mark with the next batch of invoices. | 16:50 |
th1a | Which you will probably appreciate as well. | 16:50 |
yvl | can you roughly outline it now? | 16:51 |
th1a | Which will basically focus on "SchoolTool as SIS appliance for the developing world." | 16:51 |
th1a | That's pretty much it. | 16:51 |
th1a | More that, less everything else. | 16:51 |
yvl | sounds interesting | 16:52 |
yvl | is it a long term strategy, or..? | 16:52 |
th1a | Well, it is the niche where we can be successful in the medium term, at least. | 16:53 |
yvl | more like "two years and then we'll see" or "indefinitely"? | 16:53 |
th1a | We'll see what? | 16:53 |
th1a | If we can do more? | 16:53 |
yvl | hmm, I think you answered my poorly formulated question already :) | 16:54 |
yvl | just ignore it.. :) | 16:54 |
th1a | np | 16:54 |
th1a | It isn't a change of direction from what we've been doing, just making it more focused and starting to more clearly articulate that as our message. | 16:55 |
yvl | I got that correctly then :) | 16:56 |
th1a | OK, enough chatter from me. | 16:56 |
th1a | yvl: What have you been up to? | 16:56 |
yvl | I'm writing the ZODB exporter now | 16:57 |
yvl | scope of it grew somewhat, but the stuff is going to be useful for me later on | 16:57 |
yvl | basically, it's an XLS exporter for 0.11.4 database | 16:57 |
yvl | that does not use any of ST code | 16:57 |
yvl | and no Zope except for ZODB | 16:58 |
replaceafill | yvl, nice script the one of the broken objects :) | 16:58 |
yvl | thanks, replaceafill | 16:58 |
replaceafill | yvl, i learned a few tricks from it ;) | 16:58 |
yvl | well, the exporter is based on a similar thing | 16:58 |
yvl | I'm done 65% | 16:59 |
yvl | or something | 16:59 |
yvl | ah, and it works on newer Ubuntu versions of course | 16:59 |
yvl | (it'll probably work on anicent ones also) | 17:00 |
th1a | What data objects does it work on? | 17:00 |
yvl | at the moment - person records, sections, courses, terms | 17:01 |
yvl | but technically I don't care that much what to extract | 17:01 |
yvl | (still, at those times there wasn't a lot of data, like you said) | 17:01 |
th1a | Right. | 17:01 |
yvl | I forced 0.11.4 to run on Karmic, by the way | 17:02 |
th1a | Yeah, for this specific case, we don't need to get a lot out. | 17:02 |
th1a | So don't go crazy. ;-) | 17:02 |
yvl | I'm trying to resist | 17:02 |
th1a | Please. | 17:02 |
yvl | sure | 17:02 |
th1a | When you're done with that back to timetables? | 17:02 |
yvl | just I'll need some of the stuff for evolution later on (likely) | 17:02 |
yvl | yes | 17:03 |
yvl | one more thing about this | 17:03 |
yvl | if we need to populate SQL databases or export data in some way | 17:03 |
yvl | this approach is a viable option | 17:04 |
yvl | I mean - just using the database code | 17:04 |
yvl | and loading in python what we need | 17:04 |
yvl | it's a bit scary, but useful | 17:04 |
th1a | It is definitely something that is good for us to have experience with. | 17:05 |
yvl | yes | 17:05 |
th1a | Makes me feel more confident. ;-) | 17:05 |
* yvl too, actually :))) | 17:06 | |
yvl | well, that's my status report for now | 17:06 |
th1a | Thanks! | 17:06 |
th1a | menesis? | 17:06 |
menesis | yes, hi. | 17:07 |
menesis | I was busy with schooltool releases first few days | 17:07 |
menesis | backported a lot of bugfixes to the 1.0 series | 17:08 |
menesis | i.e. for hardy | 17:08 |
menesis | discovered a couple of bugs in xls import | 17:08 |
th1a | Yes. We have to refuse to do that again. | 17:08 |
replaceafill | +1 | 17:08 |
th1a | Lucid or bust! | 17:08 |
aelkner | xls import bugs? | 17:09 |
menesis | wasted a day or two fixing it and redoing releases | 17:09 |
replaceafill | th1a, is it possible to "officially" drop support for older versions? | 17:09 |
replaceafill | just curious :) | 17:09 |
menesis | well, what is support? | 17:09 |
replaceafill | menesis backporting stuff | 17:10 |
menesis | last time I made releases for Hardy was in March | 17:10 |
menesis | February, rather | 17:10 |
menesis | aelkner: your importer_fixes branch introduced a bug and was missing some error texts | 17:10 |
th1a | Well, technically we only need to do security fixes as support for old versions, right? | 17:11 |
menesis | I exported everything, imported back, and all Persons were broken because it was reading birth_date as text, not date. | 17:11 |
th1a | Or major bugs. | 17:11 |
replaceafill | ah | 17:11 |
aelkner | menesis, is your diff in trunk already? | 17:12 |
th1a | We don't have to keep them compatible with future plugins. ;-) | 17:12 |
menesis | aelkner: yes. or, https://code.launchpad.net/~menesis/schooltool/importer_fixes | 17:13 |
aelkner | menesis, thanks | 17:13 |
menesis | I've updated release notes in the book, sent announcements.. | 17:14 |
menesis | moved on to other things, preparing to upgrade trunk to newest zope packages from bluebream 1.0. | 17:15 |
menesis | fixed a bug in python-central.. | 17:16 |
menesis | will start updating zope packages for maverick | 17:16 |
aelkner | menesis, i see you had to bump the number of xls errors displayed to 25 for testing | 17:16 |
menesis | tomorrow. | 17:16 |
menesis | aelkner: yes, is that bad? | 17:17 |
th1a | menesis: Excellent news! | 17:17 |
aelkner | i wasn't sure what number would be appropriate there | 17:17 |
aelkner | i figured too many would mean the user would have to scroll down to get past the errors | 17:17 |
aelkner | and see the rest of the form, so i wasn't sure what number was appropriate | 17:18 |
aelkner | i guess 25 is ok though | 17:18 |
menesis | yes, too much is not needed | 17:18 |
menesis | but I have added two more tests cases to the XLS file and could not find why the last error disappears for a few hours | 17:19 |
aelkner | yeah, that part of your diff left me wondering | 17:19 |
menesis | ok | 17:19 |
aelkner | menesis, i don't get your change to test_all.py | 17:21 |
aelkner | i thought i did that already | 17:22 |
aelkner | to get it to pick up the txt files? | 17:22 |
menesis | level=2? | 17:23 |
menesis | it was like that before, because export/import tests are slow | 17:23 |
menesis | so are not run by default | 17:24 |
aelkner | how then? | 17:24 |
menesis | to get those tests run, use bin/test --at-level 2 | 17:24 |
aelkner | ooh, gross | 17:24 |
replaceafill | :)) | 17:25 |
aelkner | how amy i going to remember that?! | 17:25 |
yvl | make testall | 17:25 |
yvl | same thing | 17:25 |
th1a | bash alias? | 17:25 |
yvl | make rule | 17:25 |
aelkner | ok, so i just have to remember to look at Makefile | 17:25 |
replaceafill | yvl, it's not possible to filter packages using make testall, right? | 17:26 |
replaceafill | like saying i just want to test the gradebook, etc | 17:26 |
yvl | no, I think | 17:26 |
replaceafill | bin/test -s schooltool.gradebook --at-level 2 | 17:26 |
menesis | no, but you can pass all kinds of options to bin/test | 17:27 |
yvl | yes, replaceafill, yes menesis :) | 17:27 |
th1a | OK... moving on? | 17:28 |
menesis | yes | 17:29 |
th1a | Thanks menesis! | 17:29 |
th1a | Good luck uploading packages. | 17:29 |
th1a | replaceafill? | 17:29 |
replaceafill | ok | 17:29 |
replaceafill | 1. i know it's not a priority, but i learned a few things trying to install schooltool offline :) | 17:29 |
replaceafill | i guess that is a use case for el salvador | 17:30 |
th1a | It is a reasonable priority. | 17:30 |
replaceafill | 2. th1a, i focused on el calvario's work last week | 17:31 |
th1a | If not an *immediate* one. | 17:31 |
replaceafill | and i met with them on thursday | 17:31 |
replaceafill | i showed them the gradebook and they all agreed on using it | 17:31 |
replaceafill | as usual, some teachers are not used to computers | 17:31 |
replaceafill | and they handle evertything on paper | 17:32 |
replaceafill | some of them have spreadsheets already with this year's grades | 17:32 |
replaceafill | and they asked me if it was possible to get those spreadsheets and load them | 17:32 |
replaceafill | so they don't have to type them again | 17:32 |
replaceafill | i told them i would ask you | 17:33 |
replaceafill | also, the principal showed me a few reports she need for the end of the year | 17:33 |
replaceafill | we're planning they can enter grades from july-october | 17:34 |
replaceafill | they have vacation next week, and they asked me if it was possible to have everything ready for the second week of august | 17:34 |
th1a | As for the import, it doesn't seem like it would be too hard. | 17:35 |
replaceafill | no, not at all | 17:35 |
th1a | That all sounds good. The main thing is to not completely stop and lose touch with Cambodia. | 17:35 |
replaceafill | working on el calvario's gradebook made me realize something and i want you guys to confirm | 17:36 |
replaceafill | report sheets were designed for schools that use the same gradebook schema in all sections, correct? | 17:36 |
replaceafill | since they're deployed term-wide | 17:36 |
replaceafill | and they appear in all the sections | 17:36 |
th1a | Yes. | 17:37 |
replaceafill | report sheets work well for el calvario | 17:37 |
replaceafill | but they won't for cambodia :( | 17:37 |
replaceafill | cambodia has 2 grades with different grade needs | 17:37 |
replaceafill | 9 and 12 | 17:37 |
replaceafill | where you only have to store 2 semester grades | 17:37 |
th1a | Well, you'll have to judge how difficult it would be to make report sheets do that. | 17:38 |
replaceafill | i wasn't sure if report sheets were inteded to do that | 17:39 |
th1a | You have to stop thinking that way. | 17:39 |
replaceafill | i always thought of them as being a fast way to set up things | 17:39 |
th1a | They're meant to do whatever they need to do. | 17:39 |
replaceafill | oh ok, understood | 17:39 |
th1a | I mean, at a certain point, it just may be too complicated from a coding and/or UI point of view. | 17:40 |
replaceafill | yes, i always have the feeling like i'm bending stuff | 17:40 |
th1a | It is meant to be bent. | 17:40 |
replaceafill | got it :) | 17:40 |
th1a | In a sense, the priority is avoiding re-writing the gradebook interface five times. | 17:40 |
th1a | And making teachers look in five places for where to put their grades. | 17:41 |
replaceafill | ok, th1a this week i'm going to leave el calvario again and focus on cambodia | 17:41 |
*** ColonelPanik has joined #schooltool | 17:42 | |
th1a | What's the next step with them? | 17:42 |
replaceafill | using defaults for the form, address data mostly | 17:43 |
replaceafill | like "last province used" | 17:43 |
th1a | OK. | 17:44 |
th1a | Keep that feedback loop going with them. | 17:44 |
replaceafill | yes | 17:44 |
th1a | OK. Sounds good. | 17:44 |
th1a | Thanks replaceafill! | 17:44 |
th1a | aelkner? | 17:44 |
aelkner | i got the two csv exports written | 17:45 |
aelkner | the graebook one delivers the csv to the browser | 17:45 |
aelkner | the intervention one delivers a zip file containing the two csv files, messages and goals | 17:46 |
th1a | (these are for SLA) | 17:46 |
aelkner | yes, but you wanted them to be permanent parts of the gradebook and intervention | 17:46 |
aelkner | and that the links go in the Manage tab, remember? | 17:46 |
th1a | Just adding some context for the audience. | 17:46 |
aelkner | ok, sorry | 17:47 |
th1a | yvl: Actually, sometime in the next month we need contact export in the big .xls. | 17:47 |
th1a | I assigned a bug to you. | 17:47 |
yvl | sure | 17:47 |
yvl | I've been itching to write it for a while now ;) | 17:48 |
th1a | So you should be done with SLA, aelkner? | 17:48 |
aelkner | in order to create the zip file, i had to do someting that schooltool hasn't done yet | 17:48 |
aelkner | namely, using tempfile | 17:48 |
aelkner | menesis, yvl: is there any reason that it would be a mistake to use tempfile in a zope app? | 17:48 |
aelkner | the zipfile lib needs filenames | 17:49 |
aelkner | so feeding it a StrinIO file isn't possible like the csv lib allowed | 17:49 |
yvl | hmm | 17:50 |
yvl | I think you can pass it string io | 17:51 |
yvl | import zipfile | 17:51 |
menesis | I don't know why using temp files would be a problem. | 17:51 |
aelkner | i looked at the code | 17:51 |
yvl | data = StringIO() | 17:51 |
aelkner | it does an os.stat on the filename passed | 17:51 |
yvl | zipfile.ZipFile(data, 'w', zipfile.ZIP_DEFLATED) | 17:52 |
aelkner | it doesn't check to see if it is a file-like object | 17:52 |
yvl | and so on | 17:52 |
aelkner | so that doesn't work | 17:52 |
yvl | well, the code I wrote should work | 17:52 |
aelkner | it won't | 17:52 |
aelkner | yvl, sorry, you thought i meant the file for the zipfile | 17:53 |
aelkner | that can be a strinio | 17:53 |
aelkner | it's just the write() method | 17:53 |
aelkner | that expects a filename | 17:53 |
aelkner | so there i need to use tempfiles | 17:54 |
*** ColonelPanik has left #schooltool | 17:54 | |
yvl | yep, it works | 17:54 |
yvl | just tested | 17:54 |
yvl | you don't need tempfiles | 17:54 |
aelkner | you didn't test passing a stringio file to the write() method | 17:54 |
aelkner | or it would have failed | 17:54 |
yvl | ok, you write to the zipfile like this: | 17:55 |
yvl | output = zipfile.ZipFile(data, 'w', zipfile.ZIP_DEFLATED) | 17:55 |
aelkner | what data? | 17:55 |
yvl | output.writestr('myfile.zip', 'hello\nworld\n') | 17:55 |
aelkner | we have two files that are zipped | 17:56 |
yvl | the data you want zipped | 17:56 |
yvl | "in order to create the zip file" | 17:56 |
yvl | I'm assuming you are zipping data | 17:56 |
yvl | not unzipping | 17:56 |
aelkner | zipping files | 17:56 |
aelkner | not data | 17:56 |
aelkner | who zips data anyway?! | 17:56 |
menesis | output.writestr('goals.csv', goals.read()) | 17:56 |
yvl | yes | 17:57 |
menesis | oor whatever. write() takes an existing file, writestr() takes a filename and bytes | 17:57 |
yvl | exactly :) | 17:58 |
aelkner | i didn't see that in the docs i found, but i could try that out today | 17:58 |
aelkner | th1a, in the meantime, i was going to send alfano a note asking for their Data.fs | 17:59 |
aelkner | and that they don't have teachers changing it anymore | 17:59 |
aelkner | we agreed that i don't need to deploy, right? | 17:59 |
th1a | aelkner, Sounds good. | 17:59 |
th1a | Not unless there turns out to be a reason to do so. ;-) | 18:00 |
aelkner | i tried running sla with the new schooltool core, and the Home page crashes | 18:00 |
aelkner | it looks like something in zope changed | 18:00 |
th1a | It should be fine to just hand them the data. | 18:00 |
aelkner | so that the CourseInfoViewlet has to pass more to the base class | 18:00 |
th1a | OK, sounds good. | 18:01 |
th1a | Hopefully we'll hear from Mrs. Taiwo today. | 18:01 |
th1a | OK, let's wrap this up. | 18:01 |
th1a | Thanks gentlemen! | 18:01 |
th1a | Have a great week! | 18:01 |
aelkner | thanks, you too | 18:01 |
* th1a drops the bag of gravel | 18:01 | |
replaceafill | thanks guys | 18:02 |
yvl | great week to you all :) | 18:02 |
*** replaceafill has quit IRC | 18:30 | |
*** mgedmin has quit IRC | 18:32 | |
*** menesis has quit IRC | 18:58 | |
*** menesis has joined #schooltool | 19:58 | |
*** menesis1 has joined #schooltool | 20:20 | |
*** menesis has quit IRC | 20:20 | |
*** menesis1 is now known as menesis | 20:20 | |
*** alga has joined #schooltool | 22:09 | |
*** jelkner has joined #schooltool | 22:22 | |
*** jelkner has quit IRC | 22:23 | |
*** replaceafill has joined #schooltool | 23:04 | |
replaceafill | menesis, removing the logo from the pdf footer fixed the CTE Resource Center virtualhost problem :) | 23:05 |
*** replaceafill has quit IRC | 23:13 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!