IRC log of #schooltool for Wednesday, 2012-10-31

*** jelkner has joined #schooltool00:12
*** jelkner has quit IRC00:13
*** menesis has quit IRC01:48
*** replaceafill has quit IRC04:41
*** menesis has joined #schooltool10:49
*** magespawn has quit IRC12:15
*** menesis has quit IRC12:31
*** menesis has joined #schooltool12:32
*** replaceafill has joined #schooltool13:16
*** menesis has quit IRC13:18
*** menesis has joined #schooltool13:26
*** yvl has quit IRC13:36
th1ahi menesis, replaceafill, aelkner.15:31
replaceafillgood morning/afternoon15:31
th1aOK, let's talk a little about goals for the next release.15:32
th1aThe April release.15:32
th1aI am hoping to get this reports update into a 2.3 update.15:33
*** replaceafill has quit IRC15:33
th1aBefore Christmas.15:33
th1aBeyond that, we have to get 2.4 done early, and we've got a number of things not entirely digested from the summer,15:34
th1aso to us this isn't going to seem like a lot in 2.4.15:34
th1aBut it will be the big architectural change that yvl has put into motion.15:34
th1aThe more I look at JuJu the more it makes sense to push that at the same time.15:35
th1aUnfortunately there doesn't seem to already be a lot of the relevant charms for are various pieces.15:35
*** replaceafill has joined #schooltool15:35
replaceafill(sorry, my laptop froze)15:36
th1aYou know how to find the logs.  ;-)15:36
th1aSo we also have per skill score systems,15:36
th1aI'd like to get the year statuses in.15:36
th1aSome fixes to report sheets.15:37
th1aMaybe the read-only role.15:37
th1aThose are the things on my board right now.15:37
th1aReports and imports going asynchonously.15:37
th1aOh!  Also I have the usability review from Schwa.15:38
th1aI'm not even going to get into that until we finish the reports, but there are some good ideas there.15:38
th1aSo that's probably more than we can get to right there.15:38
th1aThen, like this year, the big drive for an October release, which I think I'll announce right now will just be released to the PPA in October like we did this year.15:39
th1aThe one long cycle, one short one works pretty well for us.15:39
th1amenesis:  Do you know where yvl is?15:40
menesismenesis: no15:41
th1aAnyhow, questions?15:41
th1aThat make sense?15:41
menesisI haven't seen yvl's celery changes15:42
replaceafillis schwa's review on their basecamp?15:42
menesisand how to make that work in ubuntu15:42
replaceafilli don't remember that email, maybe i have it already...15:42
th1areplaceafill: it is on basecamp.15:43
replaceafillah ok15:43
th1amenesis:  You and yvl are going to have to get synced up on it.15:43
th1aIt will be a big update for you.15:43
menesisI saw that working on yvl's laptop15:43
th1aIt seems like a good fit for JuJu.15:44
menesisand all the new dependencies are in Ubuntu15:44
menesisabout the short/long cycle15:45
menesisthat was only my fault15:45
menesisthat I haven't uploaded in time15:46
th1aWell, we were still adding stuff.15:46
menesisDone button changes came late15:47
menesisbut it was possible to make release on time15:47
th1aWell, I need to leave more lead time.  Anyhow...15:48
th1amenesis:  Would you like to go first?15:49
menesisI have uploaded 2.3 to Raring today15:49
menesisand renewed membership in my ubuntu teams, that have been expiring15:50
menesislooked at trystack as you suggested, but they only offer ARM server as I see15:51
menesisdon't know what to do with that yet15:51
menesiswill only start reading about clouds/juju today15:52
th1aI tried getting it running locally yesterday.15:52
menesisbtw, tomorrow is an All saints holiday in Lithuania15:52
menesiswill be away15:53
th1aYes, I remember menesis.  Thanks.15:53
menesisdon't think there's anything else to report15:54
th1aI got stuck with this:
menesisth1a: what charm you planned to play with?15:55
th1aWordpress with mysql was the example.15:55
th1aI'm a little confused by the fact that there is no Apache charm.15:55
menesismaybe apache is not required15:58
th1aPerhaps not for wordpress.15:58
th1aI guess apache just wasn't in the main repository.15:59
menesiswe use schooltool without apache15:59
th1aRight, but we really want people to use Apache, don't we, to get port 80 and SSL?15:59
menesishave to see it running16:00
menesismaybe apache is implicit16:01
th1aWell, my point is that with JuJu, we should be able to do:16:01
th1ajuju deploy schooltool16:01
th1ajuju deploy apache216:01
th1ajuju add-relation schooltool apache216:01
th1ajuju deploy openldap (which unfortunately doesn't seem to exist)16:02
th1ajuju add-relation schooltool-openldap16:02
th1aAt least that's the way I'm understanding it at this point.16:02
menesisyes I understand that's what we want to achieve16:03
th1aOK.  Cool.16:05
th1aAll right, thanks menesis.16:06
replaceafilli finished the validation fix for the score student view16:06
replaceafillalso the student competency record view change16:07
replaceafillboth now use table formatters16:07
replaceafillwhich makes them easy to modify16:07
replaceafill(i added a couple of columns to a custom view for schooltool quiz) :)16:07
replaceafilli also investigated the problem when deleting sections16:08
replaceafillit's a problem with relationships, but i don't know how to fix it16:08
replaceafillwhen you delete the section16:08
replaceafilla subscriber in cando is called16:08
replaceafillwhich is registered to react when the course changes16:09
replaceafillsince the section is "unrelated" from the course16:09
replaceafillthe course changes16:09
replaceafilland the subscriber fires up16:09
replaceafilli should probably file a bug and assign it to yvl16:10
replaceafillhe's better with relationship stuff :(16:10
replaceafilli can only think of some "if ..." comparison which i'm not sure if it's appropriate16:11
replaceafilli also have a question about jquery16:11
th1aSo they can't delete sections at all right now?16:11
replaceafillth1a, correct16:12
th1aOK.  Well, bear in mind that yvl is off the rest of the week.16:12
replaceafilli'll try my best to get a decent fix :)16:12
replaceafilland add some nice XXX ;)16:13
*** magespawn has joined #schooltool16:13
replaceafilli'll save my jquery question for monday16:13
replaceafillsince it's not urgen16:13
replaceafilli'm leaving for toronto next week16:14
replaceafilli'm attending pycon canada16:14
replaceafillgiving a talk about schooltool16:14
replaceafilli plan to work normally on the week though16:14
replaceafillthe conference is during the weekend16:14
replaceafillth1a, maybe we can touch base on friday about IEP UI?16:15
th1aOK.  Yes.16:15
replaceafillthat's it from me16:15
th1aThanks replaceafill.16:16
aelknerok, still working on modifying yvl's catalog-based aggregate table16:17
aelknerto include the layers checkboxes in the search16:17
aelknerwas hoping to ask yvl questions about the catalog logic, but i guess i'll have to figure it out on my own16:17
aelkneri think i will be able to though16:18
aelknernothing else to report at this point16:18
th1aI guess that's it.  Can you send yvl an email, aelkner?16:19
aelkneryes, i'll try to get any answers i need via email16:20
replaceafillevents provide interfaces!!!16:20
replaceafillthat's the solution16:20
replaceafill(sorry for interrupting)16:20
replaceafillth1a, maybe the fix is easier than i thought16:21
th1aOK, good.16:21
th1aDoesn't seem like it should be hard.  ;-)16:21
th1aOK, thanks guys.16:23
th1aHappy Halloween and All Saints Day.16:24
th1aHave a nice week and weekend!16:24
* th1a drops the bag of gravel.16:24
replaceafillthanks everybody16:24
aelknerthanks guys, have a great weekend16:24
*** yvl has joined #schooltool16:28
th1ayvl:  We're still on DST.  ;-)16:30
yvlhi :)16:30
th1aaelkner has some questions.16:30
replaceafillhey yvl is here!16:30
* replaceafill too16:30
yvlgimme a sec to read the logs16:31
replaceafillth1a, when do you change your time?16:31
replaceafilllast week of nov?16:31
th1aUh... soon?16:32
yvlth1a, can we undrop the bag of gravel for 10 minutes? ;)16:34
* th1a picks up the bag of gravel.16:34
th1aDo we have aelkner?16:34
aelknerah, yvl's here16:34
yvlok, I'll just quickly update, and then we'll go with the questions :)16:35
yvlthere's (not finished) branch at bzr+ssh://
yvlif you guys are curiuos16:36
yvlthere's PDFPage16:36
yvlwe now have flourish:pdf directive (to register the PDF views)16:36
yvlalso, a small but important feature16:37
yvlin zcml, you can prepend xml: before the template file name16:37
yvlthat sets the content_type of the template to text/xml16:38
yvland it is required for reports16:38
yvlso there are viewlets that look like this: content_template="xml:templates/"16:38
yvlalso, I think we should move pdf templates to a separate folder "reports"16:39
yvlhmm, what else...16:39
yvlthere are some interesting templates, like pdf_colors.pt16:40
yvlit will contain the default color scheme16:40 - it's like the page.css16:40
yvlthe pdfs themselves are split into many viewlets, much like our flourished pages16:41
th1ayvl:  If you could just send me the outputs of anything interesting you have, that would be helpful.16:41
th1aThe pdf's.16:41
yvlnothing interesting for you, th1a :/16:41
yvlI have a pdf that almost looks like the one replaceafill made16:42
yvlso it was just plumbing16:42
yvlbut it's shaping up pretty well16:42
yvlit seems we'll end up with something we should be able to bake reports on rather quickly16:43
yvlso feel free to look at the code16:43
yvlfor now, I'll be "remaking" section roster16:44
yvl(as in - I'll do that Monday)16:44
replaceafillyvl, i have a report request for you :)16:45
replaceafillcould you give us something to "translate" table formatters into reports :)16:45
yvlI was thinking about that16:45
yvldo you think that would be useful?16:46
replaceafilli just love table formatters :D16:46
replaceafilland i know16:46
replaceafilltwo va reports that will need it16:46
replaceafilland they already use table formatters16:46
yvlhmm, ok16:47
yvlI'd guess it's some 4-12 hours worth of dev16:47
replaceafilli've been going lately from "huge update in view class" to nice small table formatter components16:47
replaceafilland the reuse is priceless :)16:48
yvlallright then16:48
yvlI think th1a won't mind16:48
replaceafilli may be "abusing" them, but...16:48
replaceafillth1a, please!16:48
th1aIt sounds like a good idea to me.16:48
replaceafillit will save us time16:48
replaceafillah ok :)16:48
th1aTHe less re-writing between print and html the better.16:48
yvlso all in all it was more plumbing than I expected -- but not a tar pit16:49
yvlbtw, th1a16:50
yvlare we going to just rewrite the existing reports16:50
yvlor are we putting some amount of new ones in?16:51
th1aWe're going to write new ones, too.16:51
yvlI'd appreciate if you shared -- at least some abstract list -- of what the new reports could be16:52
* yvl is pretty sure they are obvious to th1a, but not so obvious to yvl ;)16:52
th1aSome abstract list.  :-D16:52
th1aNo, I should write down the actual list.16:52
th1aI was thinking about that yesterday.16:53
th1aOK, I'll send that out today.16:53
yvland please add a short description for reports you guess I know nothing about :)16:54
yvlsection roster - obvious, report card... well, not so much16:54
yvlallright then16:55
* yvl done :)16:55
yvltime for Q&A :D16:55
aelknerok, i have questions16:56
aelknerAggregateNodesTableFilter has a filter routine16:56
aelknerin it, you have a for catalog in self.catalog: index = catalog[self.search_index]16:56
aelknerwhich basically means, iterate over node, skillset and skill catalogs and get the 'text' index16:57
aelknerapply the query built from the contents of the search field16:57
aelknernow, that confuses me, the nodes catalog, for instance, is an attribute catalog16:58
aelknerso it has indeces for label, description, etc.16:58
aelknerthen you added a 'text' and two layers-related indeces in the constructor16:58
aelknerso why are you only interested in the 'text' index in the filter method16:59
aelknerand how does work, i put in a search for the word 'virtual', and got a skill whose description had it16:59
aelknereven though the title didn't, how did that happen?16:59
aelknerhow does the searchable text index work i guess is partly what i'm asking17:00
yvlso there is a class called SearcheableTextnode17:00
yvlin model.py17:00
yvlit adapts a Node17:00
yvland is used to build a set of words, separated by spaces17:01
aelknerah, i see now17:01
yvltext index indexes those words17:01
aelknerthat includes the layer titles i see17:02
aelknerbut not the __name__17:02
aelknerand what about the two indeces, 'layers' and 'layer_titles'?17:02
aelknerwhere do they come in?17:02
yvlthey are not used at the moment17:03
aelknerso should SearchableTextNode be changed to include the __name__ of the layers?17:03
yvlbut if one wanted to make the Layer column sortable -- anywhere -- layer_titles would be the index to use17:04
yvlaelkner, definitely not17:04
yvlyou do not want to search for layer __name__ from the search box17:04
yvlit is auto-generated17:04
*** menesis has quit IRC17:04
aelknerwell, i need to change the filter method to include the layers that the user checked17:05
aelknerquery is built using: query = buildQueryString(self.request['SEARCH'])17:05
yvlso here you can use the 'layers' index17:05
aelknerand i noticed it took the contents of the search box and added an * to it17:06
aelknerso you're saying i won't be wanting to add the checked layers to query?17:07
yvlI don't think so17:07
aelknerbut rather, have a separate call to the apply() method of the layers index?17:08
yvlI actually don't remember the syntax17:09
yvlbut the principle is, that you need to get the intersection of doc_ids from search query17:09
yvland from layers query17:09
aelkneri see the set() logic there, so that should be no problem17:10
aelkneri'm ust wondering what i need to pass to the apply() method if the user wants nodes that are17:10
aelknerfor any one of a list of layers17:10
aelkneror do i need to take a different approach17:11
aelknerfor instance, i looked at the values_to_documents attrbute and say the two keys, 'cluster' and 'course'17:12
yvlI really don't remember now17:12
aelknerdo i want to write my own logic for looping through values_to_documents and compare to the list of layers17:12
yvllet's table it, I'll check and get back to you17:13
yvlthere should be query or something17:13
replaceafillyvl, isn't the {'any_of': ....} logic?17:13
yvlsomething like this17:13
replaceafillthat should be applied17:13
th1ayvl:  I'd rather not table it until Monday.17:13
yvlno, table it for 10 minutes ;)17:13
replaceafillsee zc/catalog/setindex.txt17:13
yvlunles replaceafill remembers :)17:13
replaceafilli think that's the doc17:14
aelknerreplaceafill, thanks, i looked at the code, but didn't think to look at the tests17:14
yvlright, they have it documented! :D17:14
aelknerhow about that!  that's a nice change17:15
aelknerok, much better, thanks17:15
aelknernow i have a comment17:15
aelkneryvl, you really got after me about a year back about using providedBy17:15
* replaceafill saw this one coming ;)17:16
yvlbut you do notice the difference in usage ;)17:16
aelknerso i've been using if ISomeInterface(object, None) s not None17:16
aelknerto replace it17:16
aelknerdidn't notice a difference in the usage17:16
yvl(btw - yes, that case is a hack)17:17
aelkneryou mean that you should have done the adapt and test for is None?17:18
yvlI mean the code should be such that you didn't have that problem17:18
aelknerhave what problem?17:18
yvlof needing ISomething.providedBy17:18
yvl99% of the cases you want to use it indicate that the code should be redesigned there17:19
yvlor refactored if you will17:19
yvla static filter of a catalog is somewhat of a gray area though17:19
yvlhacks are hacks, but I didn't want to make an aggregating catalog17:20
yvland the filters are static anyway17:20
yvland it's not like you'll ever want to make anything pluggable there17:20
aelknerwhat about the idea of simply changing the code as i suggested, using adapter and test for is not None?17:21
yvland it's not like when you change stuff catalog needs to be reindexed completely, so I would question the whole idea of plugability in filters17:21
yvlwell, there's a catch with that17:21
yvlif some thing that is not ISomething is passed there, but you can adapt it to ISomething -- your test will pass17:22
yvlpersons become contacts, for example17:22
yvland None becomes a SchoolToolApplication17:23
yvlISchoolToolApplication.providedBy(None) -> False17:23
yvlISchoolToolApplication(None) is not None -> True17:23
yvlwhat I'm saying -- I would avoid it for "is a" checks17:24
yvlbut if you need "can be adapted to" checks, it's ok17:24
aelknerwell, i've been doing that for a long time now, ever since you yelled repeatedly about using providedBy17:24
aelknerand you didn't complain about the is not None logic17:24
aelkneri've been it many, many times17:24
yvlmissed that completely somehow17:25
yvlno problem, I'll review those later17:25
aelknerok, enough said, just thought i'd ask17:25
yvlaelkner, do you remember where you used such expressions?17:25
yvlthanks for bringing this up, aelkner!17:26
yvlas in17:26
aelknerum, i'm thinking gradebook mostly, but i'd have to check17:26
yvlI probably missed some commits to gradebook17:27
yvl(maybe even a lot)17:27
aelknerreturn interfaces.ISectionJournalData(section, None) is not None17:27
replaceafillif INode(self.context, None) is not None:17:28
yvlwell, now the journal data check is good and well17:29
yvlyou check if journal can be obtained from section17:29
aelknerif IEquipment(r, None) is not None17:29
yvlthe Equipment thing is more questionable17:30
aelknerok, grepping core and gradebook combined for this yields a lot less results than i expected17:30
yvlyou are asking there: if equipment can be deduced from this resource17:31
yvlin our current data model, this will work fine17:31
yvlif somebody makes a new resource though17:31
aelkneri need to know if the resource is a location or equiptment17:31
yvlsome resource you can adapt to Location or Equipment17:31
aelknerin the past, i would have used provideBy17:31
aelknerbut i stopped using that17:32
aelknerbecause you told me it was a great sin17:32
aelknerso you can see why i would tease you about using it yourself :)17:32
yvlok, so the resources fall on gray line17:33
yvlthe journal data check is great17:33
yvlmy hacks are acceptable :P17:33
aelknerok, you have spoken, thine will be done...17:34
aelknerok, so that's all the questions i had17:34
aelknercan i reach you at all for the rest of the week, friday?17:34
yvlprobably not :/17:35
aelknerok, np, thanks for your answers17:35
yvlI hope it helps17:35
replaceafillyvl, i have a couple of questions17:36
yvland I wish I could explain clearly where to use the adaptation and where you should avoid it17:36
yvlsure, replaceafill17:36
replaceafillok, we have a problem deleting sections now, right?17:36
replaceafillcould you explain the reason of the IRelationshipRemovedEvent subscriber there17:36
replaceafillcurrently, when you delete the section17:37
replaceafillthat subscriber gets fired17:37
replaceafilland the init_id utility fails to find the section anymore17:37
yvlwhat if I said it was a bug?17:38
yvland an accident :)17:38
replaceafillthe subscriber?17:38
yvland that I should be more careful copy-pasting stuff in the future?17:38
replaceafilli kind of felt it was like that17:39
yvlno need to update on Remove event17:39
replaceafillbecause i can't find a reason17:39
replaceafillfor it17:39
yvlthere is none :)17:39
replaceafillcool, it should get fixed by removing it17:39
replaceafill(i think)17:39
yvlyes - thanks!17:39
replaceafillok, second question17:39
replaceafilli've been using some table formatters17:40
replaceafillwith custom renderHeaders method17:40
replaceafilllike the one in the app/browser/app/CSSFormatter17:40
replaceafill(i'm not sure about the name) ;)17:40
replaceafillthe one that gives you "th.skill", "th.foobar", classes17:41
replaceafilland so on17:41
replaceafilldo you mind if we add that to the default table formatter in schooltool.table.ajax?17:41
replaceafilli think it doesn't hurt, right?17:41
replaceafilland all our tables would have classes in their headers at least17:42
yvlif you can point me to the code17:42
replaceafillsure, hold on17:42
yvlif you're talking about what I think you're talking about, then +117:42
replaceafilli've used it in:17:42
replaceafilland in virginia too iirc17:43
replaceafillit's mostly when i need to apply widths17:43
replaceafillto the columns17:43
replaceafillthat's the approach i use17:43
yvlah, ok17:44
yvlfeel free to do this in trunk17:44
replaceafillwill do17:44
replaceafillthe other one17:44
replaceafillis about visible columns17:44
replaceafilli've been relying lately on invisible ones :)17:44
replaceafillfor sorting mostly17:44
replaceafilli use one localeaware column17:45
replaceafillwhich i don't show17:45
replaceafillbecause i group stuff by it17:45
replaceafilland visible_column_names is a standard zc.table parameter17:45
replaceafillcould we add it to trunk too?17:45
replaceafilli think it's the only one missing from the renderTable call17:46
replaceafillyou can see CanDoGradeStudentTableBase in the link above17:46
replaceafilli pasted the wrong link :(17:46
replaceafilli set visible_column_names in the Table class and pass it to renderTable17:47
replaceafillnot very important17:47
replaceafilljust curious that is not included in the default call17:48
yvlthere was no reason to include it many years ago I would think17:48
replaceafillmaybe there's no reason yet ;)17:48
* yvl shrugs17:48
replaceafilli'll let it go :)17:48
replaceafilllast one17:48
yvlbut feel free to add that into core17:49
replaceafilli needed to create an input tag17:49
replaceafill<input type="text" name="foo" />17:49
replaceafilland pass some parameters that i could get in jquery17:49
replaceafillat first i was doing something like17:49
replaceafill<input type="text" name="part1.part2" />17:49
replaceafilland splitting in jquery17:50
replaceafillwhich is obviously fragile/wrong/sin17:50
yvlbad replaceafill17:50
replaceafillthen i thought about jquery's data(...)17:50
replaceafillwhat do you think of a template17:50
replaceafill<input type="text" name="foo" data-part1="..." data-part2="..." />17:51
replaceafilland having jquery use data(...) to get those attrs?17:51
yvlor you could write a more cumbersome and ugly template :)17:51
yvlone that on document.ready puts the .data on the element17:52
replaceafilli wanted to take advantage of the cell_formatter17:52
yvl$('foo').data('part1', 'PART')17:52
yvl$('foo').data('part2', 'ANOTHER PART')17:53
replaceafilla separate call using table.items17:53
replaceafillyes, that's cleaner17:53
replaceafillok, i have get rid of some sins ;)17:54
replaceafillthanks yvl17:54
* replaceafill done17:54
yvlok, hope it helped17:55
replaceafillit did, thanks17:55
th1aAnything else, gentlemen?17:55
replaceafillnothing from me17:55
yvlapologies for missing the meeting, 16:30 is baked as meeting time in my head17:57
th1anp yvl.17:57
* th1a re-drops the bag of gravel.17:57
yvlsee you guys Mon :)17:58
th1aHave a good break.17:58
yvlHappy Halloween17:58
aelknergreat break yvl17:58
yvlthanks guys18:00
*** yvl has quit IRC18:00
*** paulproteus has quit IRC18:02
*** th1a_iPhone has joined #schooltool18:03
*** paulproteus has joined #schooltool18:07
*** th1a_iPhone has quit IRC18:08
*** th1a_iPhone has joined #schooltool19:24
th1ath1a_iPhone, ping19:24
th1ath1a_iPhone, ping19:25
th1ath1a_iPhone, ping19:44
th1ath1a_iPhone, ping19:44
th1ath1a_iPhone, ping19:45
th1ath1a_iPhone, ping19:45
th1ath1a_iPhone, ping19:45
th1ath1a_iPhone, ping19:45
th1aI'm a little unclear on when this times me out...19:45
th1aLet's see...19:47
*** th1a_iPhone has quit IRC19:55
th1areplaceafill: What did we call the last old version of CanDo?21:50
th1aCanDo 2011?21:50
replaceafillfrom one of dwelsh's google doc:21:52
replaceafill"CanDo2012 is going to look differently than CanDo2011."21:52
*** replaceafill has quit IRC22:11

Generated by 2.15.1 by Marius Gedminas - find it at!