IRC log of #schooltool for Wednesday, 2013-01-16

*** pgulley has joined #schooltool00:03
*** replaceafill has quit IRC00:10
*** veloutin has quit IRC00:11
*** veloutin has joined #schooltool00:12
*** menesis has quit IRC01:22
*** pgulley has quit IRC07:03
*** menesis has joined #schooltool09:18
*** menesis has quit IRC13:18
*** ignas has joined #schooltool14:16
*** pgulley has joined #schooltool14:28
*** menesis has joined #schooltool14:35
*** replaceafill has joined #schooltool15:47
*** ignas has quit IRC16:28
th1ahi replaceafill, menesis, yvl.16:30
replaceafillgood morning/afternoon16:31
yvlgood morning :)16:31
*** paulproteus has quit IRC16:31
*** paulproteus has joined #schooltool16:33
th1aOK, so hotwebmatter's SchoolTool Book edits are done and here: lp:~matt-obert/+junk/schooltool-book16:34
th1aIt is mostly copy editing, consistency, etc.16:34
th1aHe ended up not having a lot of time to work on it.16:34
th1aThe classic problem of a contractor divided between SchoolTool and a very hyper and needy commercial client.16:35
th1aGlad I haven't been dealing with that regularly for the past 5 years.16:35
th1aSo, menesis, could you merge that?16:36
menesiswith pleasure16:36
th1aHas anyone heard of St. Kitts and Nevis?16:37
th1aThey're interested in CanDo for
replaceafillan island?16:38
th1aAn island.16:38
th1aThe smallest nation in the Americas, apparently.16:38
th1aWe'll work our way up from smallest to largest.  ;-)16:38
th1aThat's the world domination plan.16:38
th1aSo this may be a SIELibre hosting contract.16:39
th1aI'm going to approach it as such.16:39
th1aOK, yvl?16:40
yvlI'm working on tasks that I sent you yesterday16:41
yvlcurrently on "notifications"16:41
yvland fixing task cleanup16:42
* yvl wants to finish musts this week16:42
th1aHow do you see notifications working?16:42
yvla number of new notifications near your username16:42
yvlnear your name16:43
yvlwhere login is16:43
yvlfor example: "Schooltool Manager (5)"16:43
yvlthen a list in you home page16:43
th1aI mean, technically16:43
yvlsimple container + catalog16:44
yvlto store tombstones of finished celery tasks in ZODB16:44
yvlwe can also put other things there16:44
th1aWalk me through the timeline.16:44
th1a1) I submit a report request...16:44
yvldo you want me to walk you through first implementation or later implementation?16:45
yvlok, let's do the simplest one first16:46
yvl- submit a request for report / import16:46
yvl- get a dialog with spinner "waiting in queue", just with better/saner message16:46
yvl- dialog also says you can close me now, and find report when it's done16:47
yvlwhen report is being generated - if the user has not closed the dialog16:47
yvlthe text will change to "generating"16:47
yvland then to a download link for the report16:48
th1aMeanwhile, an event was sent to Celery?16:48
yvllet's go again16:48
yvl- user requests a report16:48
yvl- task is built with requested parameters16:49
yvl- a two-phase commit is executed16:49
yvl- a task "handler" is logged in ZODB16:49
yvl- a task is pushed to celery broker16:49
yvlmeanwhile the html for dialog is returned that knows how to request the status of the task16:50
yvldialog requests the status of the task and tries to render it16:50
yvlprobably hits "waiting", so renders that16:51
yvlbroker picks a proper task queue and finds a free worker - or not16:51
yvlat some point some celery worker starts executing the task (well, first try to execute it to be precise)16:52
yvland set16:52
th1aSo the dialog polls the task status in the zodb?16:52
yvland updates the task status in redis16:52
yvlbtw - redis is also used by the task broker16:53
yvldialog polls bottle to query redis16:53
yvland return status16:53
yvlat some point the task completes, and commits the result to ZODB16:54
yvlthis will be a notification object and the PDF (in ZODB blob)16:54
yvla dialog renders the link to get the PDF16:55
yvlif it was not close yet of course16:55
yvlthen... it depends16:56
yvlif I'm not done with direct file serving, the PDF can be downloaded by clicking on the link and rendering the "file" object with Zope - as we do now16:57
yvlif I'm done with direct file serving, the link will request bottle maybe via paster maybe to serve a file from file system directly maybe16:57
th1aSo there isn't a "done" message passed to Zope via REST or anything like that.16:57
yvlI don't know what to say.16:58
yvlyes and no16:58
yvlno REST16:58
yvlresult is written into ZODB, so yes16:58
yvlif I do channels with long poll16:59
yvlthen it will feel as if some done message was passed16:59
th1aI mean...17:00
th1aI'm not being critical.17:00
yvlI understand17:00
* yvl may be bad at explaining :(17:00
th1aI guess you can't literally push a status update to a webpage that someone is looking at.17:00
th1aThe page has to ask for more info.17:00
yvlbut there are techniques of cours17:00
yvlone is to ask the server if there's something new17:01
yvlanother is to do a long poll17:01
th1aYes, I'm getting it now.17:01
yvlrequest with javascript for something new,17:01
yvland server just does not send the response17:01
yvluntil there's something new17:01
yvla long request17:01
yvlactually it starts sending the response17:02
th1aSo we might end up with something where if we have a little "new event arrived" indicator in the top part of every page, every page will try to poll the server say, once a minute?17:02
yvland then does not finish it for a long time17:02
yvlthat's why I want to do long polling17:02
yvlthis also means I can't do that via Zope17:02
yvlit may be a good thing ;)17:03
yvlZope is bad for serving lots of things;17:04
yvlit's also not very good at serving big things17:04
yvltask updates (like import progress bar) are served separately, outside Zope17:05
yvlwe should reserve an hour or so for this at the sprint17:06
yvljust me walking through recent changes17:06
yvland reasons for them17:06
th1aWell, I think we're going to be spending a lot more time than that going over all this.17:07
yvlit is possible :)17:07
th1aOK.  Anything else?17:09
* yvl done, I think.17:09
th1aOK, thanks!17:10
replaceafilli've been working on dwelsh report requests17:11
replaceafilladded iep information to the score student view17:11
replaceafilland the student competency report17:11
replaceafilli also updated the completion and progress reports17:11
replaceafilland their descriptions17:11
replaceafill(we still had some XXX around)17:11
replaceafilladded an extra column dwelsh requested for the new completion report17:12
replaceafillall of that is finished17:12
replaceafillnow i'm going to work on pdfs17:12
replaceafillstarting with the student competency report17:13
replaceafilli mean, porting it17:13
replaceafilland then adding the validated resume report + pdf17:13
th1aWhich version is that?17:13
replaceafillthe one in standard cando17:13
th1aNumbers or graphs?17:13
replaceafillit uses the scoresystem labels17:14
replaceafilllabel, required, skill, date, rating17:14
replaceafillfor one section of the student17:14
replaceafillso i'll work on that today17:15
replaceafilli also met with aelkner to discuss the skill scoresystem issue17:15
replaceafillyesterday i spent some time investigating why some tests are really slow17:15
replaceafillhad a good chat with yvl about it :)17:15
th1aThe student competency report is what?17:16
replaceafillth1a, want to see a screenshot?17:16
th1aWe have to be working together on printed reports now.17:17
th1aThey all have to be done to new specifications which don't completely exist yet.17:17
replaceafillah ok17:17
replaceafilli was going to start by having basic functionality17:17
th1aExcept for Satan's report, which you can do however you want.17:17
replaceafilland the focus on design17:17
replaceafilli'll set up a testing instance so we can work on this17:20
replaceafillinstead of using screenshots ;)17:20
replaceafillthat's too 2009 :P17:20
th1aOK, I see.17:20
th1aLet me know when you've got a first draft.17:21
th1aCan we use the table magic yvl wrote?17:21
replaceafilli hope so ;)17:21
th1aI guess I'd say I need to see these BEFORE Welsh does.17:21
replaceafilli hope this will be smooth17:21
replaceafilloh, and i replied mr keiper about how schooltool calculates averages17:22
replaceafill(the german user)17:22
replaceafillwhen weighted categories are being used17:22
* replaceafill done17:22
th1aDid he reply?17:23
replaceafillto my second email no17:24
replaceafillhe did to my first one17:24
th1aDid I not see it?17:24
th1aDid it go through LP?17:24
replaceafillhe just replied to me17:24
replaceafillbut i cc you and yvl on my second email17:24
replaceafilland there's the thread17:24
replaceafillthanks top-posting!17:24
replaceafillth1a, btw17:25
replaceafilli think we might be interested in adding the validated resume to standard cando17:25
replaceafilllet me take a good screenshot so we can discuss it later17:25
th1aWe should assume that everything is going into standard CanDo unless it is extremely Virginia specific or the Spawn of Satan.17:27
replaceafillseems pretty "standard" to me :)17:27
th1aWelsh admitted, unprompted, that he can't that report.17:27
th1a(the evil one)17:28
th1aAnyhow, anything else, replaceafill?17:28
replaceafillthat's it17:28
menesisI have been working on releases17:29
menesismerged translations, fixed some msgids17:29
menesisreviewed my branches whether I have anything to merge17:30
menesiswill release schooltool shortly17:30
menesisalso worked on scripts in celery branch - refactored management commands to a new script17:31
menesisupdated/created milestones and bugs on launchpad17:32
menesisuploaded schooltool-book to the PPA and updated needs-packaging bug to be ready for inclusion17:33
menesisyou can try install it17:34
th1aWhat does the package actually do with the book?17:34
menesisthe package installs the book contents to /usr/share/doc/schooltool-book/html17:34
menesisand registers it with doc-base, whatever that means17:35
th1aSo you can view it if you know to point your browser there.17:36
menesisto show up in server documentation viewers (dwww, dhelp)17:36
menesisthe files only are useful if you install on your desktop17:37
menesisthey are not exposed via apache17:38
th1aIn this form.17:38
th1aOK, but that's a later step.  I'd like to do it later this year.17:38
menesisunless you use general tools like dhelp17:39
menesisapache setup is not automatic17:39
menesisI can add a /book alias to the virtualhost example17:39
th1aThat would be nice for now.17:40
menesiswe need a link from the app17:40
menesishaven't thought how to do that17:41
replaceafilllink in sidebar in /about.html?17:41
th1aWell, for starters it could just be in the footer.17:42
th1aBut it really should be context sensitive.17:42
th1aEssentially, the help system.17:42
th1aHelp link that takes you to the right page in the book.17:42
th1aThat's not an immediate priority now though.17:43
menesisreplaceafill: have you finished your virginia changes?17:44
replaceafillmenesis, yes17:44
replaceafilli mean17:45
replaceafilli still have things to do for dwelsh17:45
menesisso the skills/projects issue you discussed in email is resolved?17:45
replaceafillah no17:45
replaceafillaelkner, is working on that17:45
replaceafillmenesis, i moved to something else in the meantime17:46
menesisno problem17:46
menesisI was switching between tasks, too17:46
* menesis done17:46
replaceafillyvl, i have two quick questions17:46
replaceafillabout pdfs17:46
replaceafilli've noticed that the section roster and the resource report17:47
replaceafill2013-01-16 09:44:06,992 Directive 'pto_header' could not be processed and was ignored. (file resource_report_1301160944.pdf, line 199)17:47
replaceafill2013-01-16 09:44:06,992 Directive 'pto_trailer' could not be processed and was ignored. (file resource_report_1301160944.pdf, line 199)17:47
replaceafillthese are no biggie, right?17:47
replaceafilli mean, not important :)17:47
yvlif you wonder why that happens17:48
yvlthe signature is empty17:48
yvlthough it supposed to announce that it handles pto_header and pto_trailer17:48
replaceafilland my second question17:48
replaceafillif i have an html view with a table formatter17:49
replaceafilland i want to use the same formatter for the pdf17:49
replaceafilland say i have sortable columns in the table17:49
replaceafillwould it be possible to produce the pdf based on the "current" sorting of the table17:49
replaceafillit's yagni17:49
replaceafilli'm just curious :D17:49
yvlthe answer is yes17:50
yvlyou do not break the flow of request params from table to pdf17:50
replaceafillah ok17:51
yvlin other words you'll have to submit the table sorting form to the pdf rendering view17:51
replaceafillno idea if it's useful, but i'd like to try it :D17:51
replaceafill"pdf what you see" ;)17:51
yvlwell, it's useful if you want to apply filters17:51
yvlor search17:51
* replaceafill done asking ;)17:52
th1aOK, thanks guys!17:53
th1aHave a good week/end, and see you soon!17:53
* th1a drops the bag of gravel.17:53
replaceafillthanks everybody17:53
th1aI'm sending the invoices in today, btw.17:53
replaceafillth1a, question18:01
replaceafilli'm not sure if you said something about it18:01
replaceafillare you ok with "Export as PDF" option under Reports for the Student Competency Report18:01
* replaceafill vaguely remembers something about "export as..." links18:02
th1aOh... that sounds ok.18:02
replaceafillah cool18:03
th1aExport table as PDF?18:03
th1aPrint table?18:03
replaceafillhhmm to me that makes sense in the case of "lists"?18:03
replaceafillthe SCR is info about one single person18:04
replaceafilland his/her skills18:04
replaceafilli'd use "export table as pdf" for the resources report for instance18:04
replaceafilljust my 0.0218:04
th1athat phrases it in a highly technical way.18:05
th1aI was thinking about putting the link closer to the table itself.18:07
th1aSo then you don't have to be as descriptive.18:07
replaceafillah, good idea18:07
th1aLike a "Print formatted" link.18:07
th1aI kind of want to be specific enough that people can understand "well, technically I could print this web page but this other version should look better"18:08
th1aBut maybe we should just expect people to come to grips with "pdf"18:09
th1aLet's say "Export table as pdf"18:09
th1aIt is tricky because literally we don't know that they really want to print, even if they want a pdf.18:09
replaceafillyvl, you gone?18:20
replaceafillth1a, we only have 2 pdf's with the new layout, right?18:21
replaceafillsection roster and resources18:21
th1aSounds right.18:21
replaceafillneither of them use table formatters yet (i think)18:22
replaceafillyvl, Person -> Profile raises "ValueError: max() arg is an empty sequence"18:26
th1aYou might have to pull an overnight shift to get these going with yvl.18:27
th1aLithuanian time.18:27
replaceafillyay! i almost got it19:11
replaceafillthank you yvl for using good commit comments :D19:11
replaceafillah :( i spoke too soon19:14
*** menesis has quit IRC19:52
*** menesis has joined #schooltool21:55
*** dreich has joined #schooltool22:12
replaceafilldreich, pgulley ping22:14
dreichreplaceafill pong!22:14
replaceafillhey dreich22:15
replaceafillu ready?22:15
dreichalthough, that fix you gave me with docutils isn't working, I don't think22:15
dreichbut I got the google doc22:16
replaceafilldid you run "bin/buildout"?22:16
dreich"KeyError: 'test-headless'"22:17
replaceafillcan you paste your buildout.cfg file at
replaceafillhhmm your buildout.cfg file works for me22:22
dreichdocutils doesn't seem to be connected to the error, actually.  If I take that line out it still happens22:23
replaceafillmake clean22:23
replaceafilland paste the console output at please22:24
replaceafilldid you download chromedriver?22:24
dreichI think so22:25
dreichI mean, I did, but I might have done so wrong in a way that I don't know22:25
replaceafillbuildout shouldn't fail anyway because of that22:26
dreichlooks like it worked this time!22:26
dreichmaking run now.22:27
replaceafillsee if you can access the broken quizzes22:27
dreichI don't have that error, I can view the quizzes now22:27
replaceafillmake sure to:22:28
replaceafillbzr pull22:28
replaceafillfrom all the directories22:28
replaceafillschooltool, schooltool.gradebook, etc22:28
replaceafillyou can do that later, np22:28
replaceafillok, do you have questions so far?22:28
dreichI think I get it22:28
dreichI mean, other than that I want to know what the error was :P22:29
replaceafillyou mean the broken quizzes one?22:29
dreichbut it doesn't matter too much now22:29
replaceafillyou could check the module in quiz22:29
replaceafillit uses Sphix + docutils22:30
replaceafillto render math22:30
replaceafilldocutils made a change in version 0.822:30
replaceafillthat breaks that module22:30
replaceafillso, at some point we need to update our module22:30
replaceafillso i shared jelkner's google doc22:31
replaceafillabout the logic he wants for the feature22:31
replaceafilli think it's pretty stratightforward (the doc)22:32
dreichyeah, I agree22:32
replaceafillcheck the documentation for the fractions module in python too22:32
replaceafillalso pretty straightforward22:32
dreichIt seems like it'll take more of our effort to get back into the code than to actually write the feature/tests22:32
replaceafillbut once you know the code, you can keep adding new features :)22:33
replaceafillso it's a good effort22:33
replaceafilllike the tons of features you'll add in pycon :D22:33
replaceafillso, i was thinking, and i wrote a little in our google doc22:33
replaceafillto talk about the data model of quiz22:34
replaceafillquiz = schooltool.quiz22:34
replaceafillit's pretty simple22:34
replaceafillsee Meeting 2 - Data Model22:34
replaceafillin the google doc22:34
replaceafillbasically there's only 3 models22:35
replaceafillfor this feature you'll probably care about QuizItem more than the other two22:35
dreichand we subclass QuizItem?22:35
replaceafillnot really22:35
replaceafillhere's my "idea" to handle the feature22:35
replaceafillfeel free to do it completely different22:36
replaceafillhold on22:36
replaceafilldef QuizItemTypeVocabulary(context):22:36
replaceafillin that vocabulary you add a new item22:37
replaceafillor something like that22:37
replaceafill(key, i18n_message)22:37
replaceafillso, that should give you a new option in the Add -> Question form22:37
replaceafillnow check quiz.browser.quizitem.QuizItemAddView22:38
replaceafillthat's the class to handle the question add form22:38
replaceafillso basically, the quizitem carries this type_22:39
replaceafill(rational, for your new case)22:39
replaceafillthere's some logic too to know if a question is an open question22:40
replaceafilllike _open_question_token22:40
replaceafillwhich has some relationship with the vocabulary22:40
replaceafilland some is_open_question methods22:40
dreichcan we just ignore those specifics for rational though?22:41
replaceafillbasically these are for handling choices22:41
replaceafilli'm talking about open, because rational will behave a lot like open22:41
replaceafillimho, rational should be "open + validation"22:41
replaceafilli mean22:42
dreichso we'll learn from those, but have seperate methods22:42
replaceafillteacher creates a question22:42
replaceafillhe selects Rational22:42
replaceafillwhat he should see is exactly what he sees for open22:42
replaceafillbody + solution22:42
replaceafillwhen he tries to save the question, solution should be validated22:42
replaceafillagainst the rules described in jelkner's doc22:43
pgulleyreplaceafill, dreich, sorry I'm late22:43
replaceafillyou don't even need to "save" the solution in a rational form22:43
replaceafillhey pgulley22:44
replaceafillpgulley, i'm explaining a little my idea on how to handle your feature22:44
replaceafillyou can check the logs of the channel btw22:44
pgulleyCool, I'm caught up, and I've got your doc22:45
replaceafillpgulley, did your environment work?22:45
replaceafilldreich, ok, so you don't need the rational solution stored22:46
replaceafillyou can do it on the fly every time you need it22:46
replaceafillsuppose the teacher wrote: 4 + 1/222:47
replaceafillfor the solution22:47
dreichwe just store "4 + 1/2"?22:47
replaceafillat least, that's what i think22:48
replaceafillwe should do22:48
replaceafillbut again22:48
replaceafillyou validate it before saving22:48
replaceafillone of your first steps should be22:48
replaceafillwriting the validation22:48
replaceafillbecause you can do that easily without UI22:48
dreichand we use the same validation for both teachers and students, right?22:49
dreich(and yeah)22:49
replaceafillyou could try inserting the new type in the form22:50
replaceafillin the add question form22:50
replaceafillor at least22:50
replaceafillfollow the logic for open questions22:50
replaceafillsee for instance22:50
replaceafillif self.view.is_open_question() and not value:22:50
replaceafill    raise SolutionRequiredError(value)22:51
replaceafillthat what's triggered when the teacher tries to create an open question with no solution22:51
replaceafillz3c.form at first is very unfriendly22:51
replaceafillyour validation routine could be called after this for instance22:51
replaceafilland raise RationalParsingError(value)22:52
replaceafillor something along those lines22:52
replaceafillyou can see the error above22:52
replaceafillit's just the message to show22:52
replaceafillyours could have something like:22:53
replaceafill__doc__ = _('I don't undrestand this!!!")22:53
replaceafillbut better ;)22:53
pgulleyYep, I'm all set.22:53
replaceafillpgulley, good22:53
dreichI couldn't quite follow that in real-time because I had to find all the stuff in the code22:54
replaceafilldreich, punt everything rational related in a new module22:54
dreichbut it makes sense, and I've got the logs!22:54
dreichand ok22:54
replaceafilldreich, i know22:54
replaceafillbut i can help you connecting everything22:54
replaceafillso, you'll need to instruct the forms: "there's a new type of question"22:55
replaceafilllet's start with that22:55
replaceafillthere's some javascript to handle the quiz item form22:55
replaceafillquiz item = question btw22:56
replaceafillcheck browser/templates/quiz_item_form_script.pt22:56
replaceafillit may have no sense at the beginning22:56
*** dreich_ has joined #schooltool22:56
replaceafillbut at least it would give you an idea of  what's going on in that view22:56
replaceafill(client side)22:56
dreich_hey, back, I moved around in the school and our wifi is bad22:56
replaceafilland feel free to improve anything you think it can be imporoved22:57
replaceafilldreich_, :)22:57
replaceafilli think once you're done with your validation routine and adding the new type of question to the add form, we can talk "evaluations"22:57
replaceafilland how deployed quizzes handle that22:57
replaceafill(the answers of the students)22:57
replaceafill(the view to "take" the quiz, etc)22:58
*** dreich_ has quit IRC22:58
replaceafillso, does that sounds like a good target for next week (validation routine + new type of question added)22:58
*** dreich has quit IRC22:58
pgulleyI'll speak for him- I think so.22:59
replaceafillif you have any questions feel free to email, ok?23:00
*** dreich has joined #schooltool23:00
dreichsorry, this keeps on going in and out23:01
replaceafillwb dreich23:01
dreichI haven't seen much of anything for the past few minutes, but I'l read the log23:01
pgulleydriech- can we get the new question added, with the validation, by next week?23:01
pgulleyor that23:01
dreichpgulley, probably not, but we can try23:01
replaceafillnp, do what you can23:01
pgulleyWe can discuss logistics later, I don't see it as a problem.23:02
pgulleybut that's normally how it works.23:02
replaceafillagain, once you have those 2, we'll move on23:02
replaceafillsounds like a plan?23:02
dreichAnyway, I really have to get going now.  We'll talk again next week and/or by email!23:02
dreichand yes it does23:02
replaceafillthanks both of you23:02
dreichthank you!23:03
replaceafillsee you next week23:03
*** dreich has quit IRC23:03
pgulleyaighto, bye.23:03
*** pgulley has quit IRC23:03

Generated by 2.15.1 by Marius Gedminas - find it at!