IRC log of #schooltool for Monday, 2011-01-24

*** alga has joined #schooltool00:32
*** ignas has quit IRC00:33
*** ignas has joined #schooltool00:44
*** menesis has quit IRC01:14
*** ignas has quit IRC03:32
*** alga has quit IRC03:44
*** ignas has joined #schooltool03:45
*** ignas has quit IRC05:37
*** yvl has joined #schooltool08:12
*** menesis has joined #schooltool12:42
*** alga has joined #schooltool13:15
*** menesis has quit IRC13:57
*** ignas has joined #schooltool14:29
*** menesis has joined #schooltool15:05
*** th1a has joined #schooltool16:09
*** replaceafill has joined #schooltool16:19
th1aHi aelkner_, replaceafill, yvl, menesis.16:31
* th1a is back from the dead.16:31
replaceafillgood morning/afternoon16:31
yvlmorning :)16:31
aelkner_and the steelers have died and gone to heaven16:31
yvlglad to hear, th1a :)16:32
th1aAnd I'm going to have to figure out how to watch the Super Bowl in Portugal.16:32
th1aThat was the nastiest cold I've had in years.16:33
th1aOK, did you guys read aelkner_'s email about report registration?16:34
th1aAny issues?16:34
replaceafillmy only comment:16:35
replaceafillaelkner_, if you're going to sort things by title, use the ICollator adapter16:35
aelkner_why is that?16:36
replaceafillaelkner_, so things are ordered appropriately according to user's locale16:36
yvlsome of the languages in this world do not use the latin alphabet16:36
replaceafillam i right, yvl?16:37
aelkner_can you point me to an example use of IColattor?16:37
yvlCoursesViewlet, for example16:37
yvlGroupsViewlet, etc...16:38
aelkner_ok, thanks16:38
yvland just to keep in mind, schooltool.table has LocaleAwareGetterColumn16:39
yvlit was a bit odd that you want to use utilities there, though16:39
yvlI'm probably not grasping the whole design16:40
th1ayvl: Utilities vs what?16:40
yvlvs viewlet managers16:40
aelkner_viewlet managers?!16:41
th1ayvl:  Yeah, I think you're missing the point.16:42
yvlI thought you just wanted to register lists of links to reports on some pages?16:42
yvlstarting with Manage->Reports16:42
yvlthen maybe adding to teachers' home pages, etc.?16:43
yvlmaybe I missed something, but I failed to see what specifying the interface for the utility gives us16:44
yvlI'm probably missing the point16:45
th1aWell, I want a clear way to plug in new reports.16:45
yvlin my head, reports are not physical objects, they are simply views - pdf, but coulde be xls, csv or anything else16:45
yvlso in essence it's all about navigation16:46
yvlcan you elaborate a little16:46
menesisI think an adapter is enough, don't need a named utility16:46
th1aYes, they are just views, but to the local user they are the whole point of the system.16:47
yvlI understand16:47
th1aI mean, it is sort of a question of semantics.16:47
yvldon't take me wrong, aelkner_, I'm not rejecting your idea :)16:48
th1aI think it is a little clearer for future users/developers to be extra-explicit about registering reports.16:48
yvl(and I liked the "originally I thought..." part)16:48
th1aYes, there is a lot more we can do with this.16:49
th1aOK, I think we can move on.16:49
aelkner_regarding utilities versus adapters:16:49
aelkner_the reason i chose the former is that utilities can be added dynamically to the site manager by a user16:49
aelkner_in the case of user-defined reports16:50
aelkner_i didn't mention that in my note because we don't have a plan for that16:50
aelkner_but as with our custom score systems, the user can't create adapters16:50
aelkner_but they can create utilities if we provide the mechanism16:50
yvlumm, ok, but the part I did not understand, was that utilities have title, description and interface16:50
yvlwhat title and description gives us, I get16:51
yvlwhat's the profit of interface...16:51
yvlI'm a bit confused16:51
aelkner_the interface is the context type of the object against which the report runs16:51
aelkner_there are schoolyear reports, group reports, term reports, etc.16:51
aelkner_so, ISchoolYear, IGroup, ITerm would be the interface values in those cases16:52
yvlI get that part16:52
yvlwhat I don't understand is how precisely you are going to use it16:52
yvlso I'll just have to wait and see ;)16:53
aelkner_for now, the interface will be used to generate the link16:53
replaceafillaelkner_, how will you know from the interface which person i want to generate the report on?16:53
aelkner_well, for that i can write an adapter that adapts the interface to the link16:53
yvlno, you cannot16:53
yvlyou can write an adapter, that adapts an object that implements the interface16:54
yvlnot the interface itself16:54
yvland why not just... include the link in the utility?16:54
yvland then reuse the OrderedViewletManager for "utility" (in that case viewlet) collection and sorting?..16:55
yvlit's probably all clearer in your head :)16:55
aelkner_i don't understand this OrderedViewletManager idea you mention here16:56
aelkner_i just need to list links in a table16:56
aelkner_just like we do with the person container view16:56
aelkner_and the links need to navigate the user to the context16:56
aelkner_also, the utilities are defined for the convenience of the packages that define the reports16:57
aelkner_they don't need to know about the reports view, they just need to register themselves16:57
th1aI just want all this to operate at a lower, more abstract level.16:58
aelkner_it's the reports view that figures out the links based on the interface16:58
yvlok guys, sorry for spreading confusion16:58
yvlI'll just wait for the code - no sense in wasting everybody's meeting time :)16:58
yvlI really do not get the implementation you wrote about16:58
th1aNo problem.  I don't think we have a lot of other things to talk about.16:59
* replaceafill is definitely confused :(16:59
aelkner_if util.interface == ISchoolYear:16:59
yvloh boy...16:59
aelkner_    link = absoluteurl(activie_year, request)16:59
yvlplease, please change it to:16:59 = absoluteurl(activie_year, request)16:59
aelkner_no, no, no17:00
aelkner_the utility is defined in the package where the report lives17:00
aelkner_it doesn't know about any stinking links created in some other view17:00
aelkner_it only knows about itself17:00
aelkner_the reports view can figure out the links based on the interface defined in the utilitly17:01
yvlwhere are you going to put the if?17:01
aelkner_in the reports view17:01
aelkner_it's a table view17:02
yvlso, if you need to register, say, schooltool.intervention reports17:02
yvlyou will import schooltool.intervention in schooltool/reports/... ?17:02
aelkner_no, of course not17:02
aelkner_the utility defined in schooltool.intervention17:02
aelkner_(we don't have any intervention reports, but if we did)17:03
yvllet's say, gradebook17:03
yvlwe do have gradebook reports17:03
aelkner_the interface would probably be ISchoolYear or IBasicPerson17:03
replaceafillaelkner_, could you use the student report card as an example?17:03
aelkner_i already did in my note17:03
replaceafillstudent report card for th1a17:03
aelkner_how is this not clear?17:03
aelkner_ok, the interface would be IBasicPerson17:03
yvlwhere does the link come from17:04
yvlbasic person, ok17:04
yvlwhat if we don't want to add IBasicPerson17:04
yvlbut instead17:04
yvlwe want to add something crazy, as...17:04
th1aProbably the issue is that this does much LESS than yvl thinks.17:04
yvlintervention  InterventionStudent?17:04
yvlwhere are you going to put the link then?17:05
yvlso that the link takes you directly to the intervention centre17:05
aelkner_no, IBasicPerson17:05
aelkner_the user is navigated to the person container17:06
aelkner_they select the person17:06
th1aAt this point you still have to navigate yourself.17:06
aelkner_the person context already has a Reports action link17:06
yvlthen I really don't get why invent stuff with utilities and it's interface and the "if == ISomething"17:07
yvlinstead of plain navigation viewlet17:07
aelkner_navigation viewlet?!17:07
yvlok, just a viewlet17:07
yvljust that we have a handy directive there, that's it17:08
aelkner_Manage->Reports is a link that needs to bring up a view, right?17:08
replaceafilli get that :)17:08
th1aThis is to me a foundational object that a lot of features may be hung on in the future.17:08
yvland in that view, you render a viewlet manager17:08
yvllike we do for links in schoolyear17:08
yvlbut this manager can be more sophisticated17:08
yvlwith filtering and such17:08
aelkner_for user defined reports (something that we could allow in the future)17:09
aelkner_how does a user reigister a viewlet?17:09
aelkner_users can't regster zcml, they just click around in schooltool17:10
replaceafillaelkner_, the user doesnt have to register the utility or adapter directly17:10
replaceafillaelkner_, like with score systems, he can create an object, and some piece of code could look into a container and the use those objects as utilities/adapters17:11
replaceafillof course, score systems dont work like that right now17:11
yvlI see where I'm missing the point... user defined reports17:12
yvlas I don't know anything how you want them to work17:12
yvl* ... anything about how ...17:12
aelkner_utilities are better than adapters in that they can be persistent objects added to the site manager17:13
yvland... we will never ever do that again17:13
replaceafilland then you can't disable them :(17:13
yvlthat is an awful practice17:13
replaceafilland if you remove the plugin/pilot code, the whole instance breaks17:13
th1aOK, that's a disadvantage.17:14
yvlthe whole instance becomes volatile17:14
yvlbut if you stored it hidden in some container17:14
yvlyou can avoid looking at that container after plugin is disabled17:14
yvland the rest of ST runs17:14
replaceafillyou just disable 'the piece of code' i was referring to before...17:15
yvlyes :)17:15
th1aOK, I think we're getting somewhere now.17:15
th1aIt would be good if reports could disappear without breaking things.17:16
aelkner_well, if we don't have user-defined reports, then adapters will do17:16
th1aAnd down the road there will be some kind of user-defined reports which should be able to be register themselves.17:16
th1aThat is, through-the-web, user defined reports.17:17
th1aStored only in the database.17:17
aelkner_how would a user-defined report register itself?17:17
th1aWell, that's the question.17:17
replaceafillaelkner_, the user defined report would provide an interface17:17
th1aThis is a "yes, we are going to need that" moment.17:17
replaceafilland an object would look for those objects17:17
replaceafillaelkner_, like with external interfaces17:17
replaceafillexternal activities17:18
replaceafillin the gradebook17:18
th1aWhat we're going for here is an implementation that doesn't do much right now but is the foundation for lots of subsequent elaboration.17:18
aelkner_replaceafill, how does the report provide the interface in a way that we find it in an adapter lookup?17:18
replaceafilla plugin 'announces' it has an iexternalactivities source17:18
replaceafillaelkner_, you put the interface you want to look for in schooltoo.report17:19
replaceafillplugins/pilot code implement taht17:19
replaceafillso in cambodia i could have my cambodiadummyreport implementing that interface17:19
replaceafilland would look for those 'sources'17:20
aelkner_ok, first of all, by user-defined report, i'm refering to a user, not code17:20
aelkner_users don't werite code17:20
*** ignas has quit IRC17:20
replaceafillbut users can create objects in the app17:20
replaceafilland those objects can provide interfaces17:20
yvlusers don't write schemas, but they do have demographics17:20
replaceafillaelkner_, users create skilldrivers in cando17:21
yvland if the users actually write something, it's probably XML... maybe17:21
replaceafillcando takes those and create external activities17:21
replaceafillthe gradebook looks for all things providing external activities and show those in the gradebook17:21
* replaceafill is sorry for using the only example he understands :(17:21
*** ignas has joined #schooltool17:21
aelkner_no, that's fine17:22
aelkner_so the cando user creates a skilldriver, and the code puts that skilldriver in a skilldriver container17:22
aelkner_but that does not in itself make the skilldriver locatable from external codde17:23
th1aLet's assume we eventually create a through-the-web report layout system.  Ideally, whatever mechanism we're using to register reports now would also be *possible* in an end-user defined report.17:23
th1a(yes aelkner_, I know I didn't say this last week)17:24
aelkner_no, you didn't leave anything out17:24
aelkner_but you just stated my point about user-defined reports, so that's right17:24
th1aAnd ideally, he can delete that report without crashing his database.  ;-)17:25
aelkner_an end-user defined report would be an object17:25
yvlwell, in my head, the hardest part of this, is the one where magic figures out how to collect the links to the reports17:25
yvlor to collections of reports17:25
aelkner_yvl, there are links to reports17:25
yvlor person container, or whatever17:26
replaceafillsadly, i'm still confused about the links :(17:26
aelkner_just to context containers or the active schoolyear17:26
yvlfor now, magic = hardcoded17:27
yvlwhich is ok17:27
th1aWell, right now there is no magic.17:27
th1aOr hardcoding.17:27
aelkner_yvl, i think your confusion comes from the context of these reports17:28
th1aHere's the thing:17:28
aelkner_even if a report is created in schooltool.intervention17:28
aelkner_it is still for one of the core context types17:28
th1aif you have a report on a person.17:28
aelkner_schoolyear, group, person17:28
aelkner_not for a special schooltool.intervention object17:28
yvlthat is bad.17:28
th1aFrom a generic report index, you can't just jump to the report itself because you don't know which person you're talking about.17:28
replaceafillth1a, correct!17:29
th1aBut basically, that just points out the limited utility of the generic report index.17:29
th1athere is one really important use case in the generic report index.17:29
th1aThe site administrator who doesn't know what reports are available on his instance!17:29
th1aThat's the use case for this page.17:30
replaceafillmore informative than 'functional'17:30
aelkner_like security descriptions, as i mentioned in y note17:30
th1aWe may not elaborate the index view at all.17:30
aelkner_th1a, elaborate the index view?  what does that mean?17:31
* replaceafill starts to understand the 'security descriptions' analogy...17:31
yvlok, so I'm really on the same page here17:31
yvlI just fail to see why we would need to use the interface in the utility, because it gives us nothing17:32
aelkner_yvl, you thought the system was going to request the reports automatically17:32
th1aIt usually takes us an hour to figure that out.  :-D17:32
yvlit can be a string17:32
yvlor a number!17:32
yvlit does not matter actually17:32
aelkner_yvl, ok, fair enough17:32
th1aI think these conversations are worthwhile, btw.17:32
aelkner_it could be a key17:32
yvland I don't understand why we want to artificially limit ourselves17:32
yvlto only links on basic types17:32
yvljust because17:33
yvlwe want to use "if" sentences with "numbers" to figure out links17:33
aelkner_yvl, that's a good point17:33
th1aIf the utility approach makes this more rigid for no reason, perhaps another way would be better.17:33
aelkner_so instead of interface, we need something that can be adapted to a link17:34
yvlor, we put the link directly17:34
yvlyou can have a class that inherits from OrderedViewletManager17:34
aelkner_how do we put the link to the active schoolyear in a utility that is registered in zcml?17:34
yvlwe don't use the utility :)17:35
aelkner_again, how do we register the link to the active schoolyear?17:35
yvlwe use a viewlet that has "def link(self):"17:35
yvlyou register a viewlet on the manager17:35
yvland in the viewlet's code17:35
yvlyou implement getting of a link17:36
yvlto the active school year17:36
yvlso, you'll need17:36
yvlthe Manage->Reports view17:36
yvlan class Something(OrderedViewletManager)17:36
yvland viewlets registered for the manager and the view17:36
yvlregistering them is somewhat similar to registering action buttons17:37
yvlor Manage->Reports link for that matter17:38
aelkner_viewlet managers and viewlets are one of the most cnfuing aspects of zope17:38
aelkner_adapters are easy enough to understand17:38
aelkner_a adapts to b17:38
replaceafillaelkner_, they're adapters17:38
replaceafillviewletmanager -> (context, request, view)17:38
aelkner_so why use viewlet managers and viewlets when we can write our own adapters?17:38
replaceafillviewlet -> (context, request, view, viewletmanager)17:39
th1aOK, so one other requirement here...17:39
th1aThis a part of SchoolTool which should be as accessible as possible to relative newb developers.17:39
aelkner_and viewlet mangers and viewlets is not for newb developers17:40
th1aEven if people don't know anything else about SchoolTool, it would be nice if we could write a little "writing a custom report package" tutorial that halfway made sense.17:40
th1aTo someone with a programming background.17:40
th1aImagine trying to help a small business customize SchoolTool for local clients.17:42
th1aSo keeping it simple in that way would be good.17:42
yvladding somewhat-official zcml directives would help17:42
yvllike we did with crowds, just keep it simpler17:42
aelkner_crowds don't use viewlet managers17:42
yvlyou are right17:43
yvlin a way they are similar to reports17:43
yvlwhen you look at an object, you can figure out the crowd, but not the other way around17:44
yvlsame goes for reports17:44
yvlyou can register report views on some objects, with some layer(!)17:44
yvlbut strictly speaking, you never know where the objects that have those views are17:45
yvlthink - traversal + skinning17:45
aelkner_i'm confused17:46
yvlwell, anyway - at this point we should probably start with writing something17:46
yvland then refactor along the way17:46
aelkner_but now i have no idea what i wold be writing17:46
yvlwell, sorry to ruin your day, but17:47
yvlboth approaches have their flaws17:47
yvland won't hold for long17:47
yvland I don't know how to make the best solution17:48
yvlneed to sit down and think about it17:48
yvland I remember ignas was thinking about this too :)17:48
th1aI'm ok with aelkner_ going ahead with the current plan.17:49
th1aLet's move on.17:49
yvlaelkner_, can you do a small favor for me there17:49
yvlinstead of giving an interface to the utility17:50
yvlgive it a function that returns a link17:50
aelkner_what is "it"?17:50
yvleach utility has title, description and code to calculate a link17:50
yvlwell, anyway17:51
aelkner_wait, i think i understand17:51
aelkner_so in schooltool.reports, i can create base classes for the utilties that deliver the various types of links17:52
aelkner_and in the packages themselves, i sub-class and just change title and description17:52
aelkner_does that sound right?17:52
yvland one more thing17:52
yvldon't forget that you can subclass and change the links they delive17:53
aelkner_yes, that's the future, user-defined idea17:53
yvlthanks :)17:53
aelkner_th1a, i think we have something here17:53
th1aOK.  Great!17:53
aelkner_yvl, thanks to you sir17:53
th1aWe should probably follow up on the phone.17:53
yvlwell, thank you for your patience :)17:54
th1areplaceafill:  Great job with the quick response to Cambodia.17:55
replaceafillth1a, :)17:55
th1aThey seem to have found someone to work with us there.17:55
th1aSo hopefully we'll start moving there again.17:55
replaceafillhope so17:55
th1areplaceafill:  Anything else in particular you'd like to bring up?17:55
th1a(we don't need a full recap at this point).17:56
replaceafilljust wanted to ask yvl or menesis if it's possible to include the ftest work i did in the gradebook in trunk17:56
aelkner_for the next release i hope~17:57
* yvl sneakily waits for menesis to take the merging ladle17:57
replaceafillwe still don't have 100% coverage, but we went from: ->
aelkner_replaceafill, nice17:57
replaceafillth1a, that's all, i'll come back to cambodia and do little more adjustments17:57
th1akk  thanks.17:58
yvlpushed tt some 30 hours forward17:58
yvlwe will have them by deadline, but chances of my bonus look 50/5017:58
yvl(well that was a short report...)17:59
th1aThanks, yvl.17:59
yvlby the way, replaceafill, you asked if we should use zope i18n formatter for dates/years17:59
yvlmaybe for displaying, no for input18:00
replaceafillah yes18:00
th1aI always feel a little silly trying to inspire people to work harder over IRC, but YOU CAN DO IT!18:00
yvlthanks th1a!18:00
replaceafillyvl, actually i have a lot of small questions, but i'll come up with them later18:00
replaceafillyvl, maybe in the sprint :)18:01
yvlemail the dev list!18:01
yvla live dev list makes th1a happy ;)18:01
menesisreplaceafill: you want me to merge your gradebook branch with much refactoring?18:01
replaceafillmenesis, please, not much gradebook code changed actually, just a couple of fixes18:01
menesisI see some forms were rewritten in z3c.form18:02
replaceafillah yes18:02
menesisbut that's good, there are more tests and they all pass18:03
menesiswill review18:03
replaceafillthanks menesis18:03
menesisplease make a merge request18:03
replaceafillah ok18:03
aelkner_replaceafill, you mean you hadn't already, the shame :)18:03
menesisth1a: last week I wrestled with zope.html package, made it and uploaded. that's the last zope package still not in18:04
replaceafillmenesis, merge requested18:04
th1aAnything else to be done between now and when we start uploading SchoolTool?18:04
menesisbut I want to fix a bug in it that we workaround in schooltool, so tried to fix upstream, but not committed18:05
th1aOr should we just start uploading the current SchoolTool packages?18:05
menesisno, there is some work to make schooltool work on natty18:05
menesisand package consolidation18:06
menesisthat's a goal for feb 318:06
menesisI will be able to upload proper schooltool packages only then18:06
th1aSounds good.18:07
th1aCan you try to get the packaging instructions to CL this week?18:07
th1aWe need to hold up our one post-meeting obligation.18:07
menesisabout package names, I want to drop schooltool-common and schooltool-200918:07
menesisbut also I would like not to upload a schooltool.lyceum.journal18:07
menesiscan we rename it to schooltool.journal?18:08
menesisth1a: I will post it18:08
th1amenesis:  Sure.18:09
menesishave too much stuff in my head and notes, was turning them into emails and tasks and blueprints, will post some today18:09
th1aDon't overwhelm yourself.18:10
menesisI don't18:10
menesisso you think it would be good to rename to schooltool.journal?18:11
th1aI'm ok in the abstract.18:11
th1aI'm not sure how much of a practical headache it will be.18:11
th1aI'd not consider it a high priority.18:12
menesiswill be more if we decide to rename later18:12
yvlwe can rename the package, but move the code later18:12
th1aCompared to the other renamings.18:12
th1aDefinitely kill schooltool-200918:12
yvlschooltool 1.6, named schooltool-2009, using stapp2007... madness.18:13
th1aAnything else, menesis?18:14
menesisThere was a question from TurnKey if we could do a backport to Lucid18:15
menesisI have copied the needed packages to ppa:schooltool-owners/dev18:15
menesisunchanged from maverick18:16
menesisso they can either use maverick ppa on lucid, or lucid ppa + lucid dev ppa18:16
menesisto get latest schooltool on lucid18:16
th1aCould you explain that to them?18:17
menesisbut, who do I write to or there was a blog post, I don't remember18:19
th1aThere is a comment thread on their site.18:20
th1aOn a bug or something.18:20
th1aOK, wrapping up.18:22
th1aI got a good report on how the Mpelembe deployment went from Jen, the American who was our intermediary at the school.18:22
th1aSo I'll be posting that soon.18:22
th1aGives us a little more concrete view of what it looks like from the other side.18:23
th1aOtherwise, have a great week, gentlemen!18:23
* th1a drops the bag of gravel.18:23
th1aaelkner_:  Are you going back to bed now or should we talk?18:24
aelkner_let's talk18:24
th1aOK, give me 15 minutes to grab a bite to eat.18:24
aelkner_ok, you call me18:24
replaceafillthanks guys18:25
yvlgood week to you guys :)18:25
replaceafillth1a, is the "I Got the Same Email!" story true?18:25
aelkner_great week everyone18:26
th1areplaceafill:  No!18:28
*** menesis has quit IRC18:37
*** ignas has quit IRC19:08
replaceafillaelkner_, you around?19:19
replaceafillth1a, still wondering if we should put a 'Cambodia SchoolTool Book' together...19:26
replaceafilli mean, so we can point new users, like mr chandara to it19:27
th1awhat else would we do with it?19:40
th1aBut yes, we do need one.19:42
th1aIs it stable enough to do it now though?19:42
replaceafillyeah, i was thinking the same19:42
replaceafillmaybe they'll request changes now that we get back to work19:43
replaceafillif they focus...19:43
replaceafill... they may find things they want changed19:43
aelkner_replaceafill, you rang?19:52
replaceafillaelkner_, ah no, i figured it out :)19:52
replaceafillwas testing your demographics work in cambodia19:52
replaceafilli just changed some List to EnumValueList19:53
replaceafilland deleted the custom widget that is not there anymore19:53
replaceafilland it seems to work :)19:53
aelkner_sounds good19:54
replaceafilli think i'll abuse that feature :)19:54
aelkner_abuse away :)19:55
*** menesis has joined #schooltool20:00
*** menesis has quit IRC20:00
*** alga has quit IRC20:08
*** alga has joined #schooltool21:24
*** replaceafill has quit IRC21:35
*** menesis has joined #schooltool22:54
*** alga_ has joined #schooltool23:05
*** alga has quit IRC23:07

Generated by 2.15.1 by Marius Gedminas - find it at!