IRC log of #schooltool for Wednesday, 2007-03-21

*** wrobel has quit IRC03:23
*** jinty has quit IRC03:36
*** Fujitsu has joined #schooltool03:45
*** filip101 has quit IRC04:26
*** lisppaste5 has quit IRC04:50
*** pcardune has quit IRC04:54
*** lisppaste5 has joined #schooltool04:58
*** alga has quit IRC05:03
*** Bhaskar has joined #schooltool05:42
*** pcardune has joined #schooltool06:14
*** Bhaskar has quit IRC06:39
*** Bhaskar has joined #schooltool07:32
*** Bhaskar has quit IRC07:34
*** Bhaskar has joined #schooltool07:34
*** Bhaskar has quit IRC07:35
*** Bhaskar has joined #schooltool07:35
*** Fujitsu has quit IRC08:24
*** Bhaskar has quit IRC08:41
*** Aiste has quit IRC08:41
*** didymo has quit IRC08:41
*** Bhaskar has joined #schooltool08:41
*** Aiste has joined #schooltool08:41
*** didymo has joined #schooltool08:41
*** Fujitsu has joined #schooltool09:04
*** pcardune has quit IRC09:05
*** wrobel has joined #schooltool09:10
*** jfroche has joined #schooltool10:29
*** Aiste_ has joined #schooltool10:45
*** Aiste has quit IRC10:47
*** alga has joined #SchoolTool11:24
*** Bhaskar has quit IRC11:40
*** Fujitsu has quit IRC11:49
*** Bhaskar has joined #schooltool12:12
*** jinty has joined #schooltool12:16
*** Bhaskar has quit IRC12:36
*** Fujitsu has joined #schooltool12:55
*** ignas has joined #schooltool13:19
*** alga has quit IRC13:35
*** mgedmin has joined #schooltool14:01
*** alga has joined #SchoolTool14:04
*** dwelsh has left #schooltool16:01
*** Aiste_ is now known as Aiste16:07
*** pcardune has joined #schooltool16:12
*** alga has quit IRC16:16
*** wdickers has joined #schooltool16:55
pcardunehi wdickers16:57
wdickersgood morning16:58
pcardunewdickers: I wanted to talk to you about the status of the schooltool SIF agent you are working on16:59
pcardunewhat is the status?16:59
*** didymo has quit IRC17:00
*** didymo has joined #schooltool17:00
wdickersright now I am working on accessing the actual person objects of schooltool. I have not began working on other SIF data objects yet17:00
pcarduneis there a repository where I can see your code so far?17:01
wdickersyes, let me just commit it17:01
pcarduneWe are thinking of putting more developer resources on SIF stuff17:01
wdickersyeah, I heard from Jeff that SIF compliancy is a big goal17:02
pcardunewhich one is it? stAgent1? stAgent2? stAgentPackage?17:03
wdickerswell stAgent contains the code for the agent, stAgent1/2 are there for when it's a provider or a subscriber, and stAgentPackage is what goes into cando/schooltool17:04
pcardunewdickers: do you think you could explain a bit about how it works to me?17:06
pcarduneTom told me a little about it17:06
pcardunethat you need to set up ZEO17:06
wdickersOur agent or the SIF in general?17:06
pcarduneyour agent17:07
wdickersOh. Well you have to have the ZEO running. Then you run the '' with an argument of stAgent1 or 2 depending if it's providing. The page within cando appends to a queue that stAgent.pollQueue() reads17:08
wdickersrunZeo must be in cando/Schooltool and runAgent must be in stAgent/17:08
pcardunein general though, won't schooltool be both a provider and a subscriber?17:10
wdickersstAgentPackage should be in SchoolTool/src/cando17:10
wdickersno, only one instance can be a provider per zone. That will be the 'master' instance, where data will be entered and then propogated throughout the zone17:11
pcardunewell, here is our usecase, and we wondering if it can be solved with the st agent17:12
pcarduneWe have a student in one schooltool instance, and we want to transfer the student and all his grades, journals, and other records to another school17:12
pcardunebut this seems like it would be done best with a peer to peer model rather than the provider/subscriber model17:14
pcardunewhat do you think of that?17:15
wdickersyeah. SIF is useful when trying to syncronize databases where changes are made often. A transfer like that would be more difficult. However, if the master agent were to be registered as a 'pull' agent to the new school's SIF, then that school could request all data17:15
pcardunebut that would be more for like... getting *all* the students17:16
pcarduneand not just one... right?17:17
wdickersNo, the school could request all data for one student by asking for him/her by username17:18
wdickersI believe this is the case, but you should ask Tom, he knows SIF much better than I17:18
wdickershe might actually be online now17:18
pcarduneth1a: ?17:19
th1apcardune: yessir.17:19
th1aOh, I didn't see you guys talking.17:19
th1aReading backlog...17:19
pcarduneok :)17:19
wdickersin the meantime I have a question for you pcardune: I am trying to access the person objects from the Data.fs file. I've gotten down to root['Application']['persons'], but all the values/keys are OOBTree objects. How do I proceed?17:21
pcardunejust build a list by iterations17:21
pcardunei.e. [person for person in container.values()]17:22
th1apcardune: In this case you could send a query for information about the person from one system to another.17:23
pcardunewould it make sense for schooltool instances to be both subscribers and providers?17:23
th1aWell, it is a little slippery here.17:23
pcardunei guess we wouldn't necessarily want one school to 'subscribe' to another school for just one person's data17:23
th1aIt depends on if they are all in the same zone.17:24
pcardunewe want to literally *move* the data17:24
pcarduneI guess they would be different zones17:24
th1aAnd I think at this point you can hive hierarchical zones.17:24
pcardunethat is what I was about to ask17:24
th1aI can't say I've worried about the details of that though.17:24
th1aI think it is in the new 2.0 spec.17:24
th1aWe're working on 1.5r1.17:24
pcardunebecause we might get demographic information from a county server17:25
pcardunebut grades from an individual schooltool server17:25
th1aAlso, there is a specific set of specs for "Vertical Reporting" which might apply in this case.17:25
th1aIt is certainly a problem which has been considered within SIF.17:25
pcarduneso in terms of *moving* data, what kind of sif setup would you have?17:26
th1aWell, I'd say the new school's SchoolTool would have to send a query to the old school's.17:27
ignaspcardune:  [person for person in container.values()] is better written list(container.values())17:27
th1aThe old school would just set the student as withdrawn.17:27
pcarduneignas: yeah... that works too :)17:27
th1apcardune: That's the simplest way to do it, assuming they're both in the same Zone.17:28
pcarduneso the old school would have to be a provider? and the new school a subscriber?17:28
th1aThis isn't a publish/subscribe type event.17:28
th1aYou can't subscribe to "people moving to my school."17:29
th1aThis case probably does involve multiple zones.17:29
pcarduneso how does a query work?17:29
th1aBut really, that's way beyond where our infrastructure is.17:29
th1aI mean, beyond our implementation of SIF so far.17:29
th1aWe're pretty solid for a single zone.17:30
pcarduneso let's say you had a single zone: arlington county17:30
th1aEven that is complicated then.17:30
pcardunethen you have two schooltool servers, one for yorktown, and one for hb woodlawn17:30
*** alga has joined #SchoolTool17:30
th1aOK... in reality... here's the deal.17:31
th1aIn that case, if Arlington County is a zone,17:31
th1aneither SchoolTool servers are publishing StudentPersonal data.17:31
th1aThey're consuming it from the district's big honking enterprise system.17:32
th1aThey're both subscribers.17:32
wdickersSo there's no way different zones can communicate without subscribing?17:33
th1aYou can send queries.17:33
th1aYou can construct complex queries in XML.17:33
th1aBut messages can only be passed within a zone, between agents registered in the zone.17:34
pcarduneso one agent can query another agent?17:34
pcarduneso what if instead of the schools being subscribers to arlington's big honking enterprise system, they were each just on their own17:35
pcardunebut they were still part of the arlington zone17:35
pcardunethey would have separate student data17:35
pcardunecould you send queries between their shooltool servers?17:36
th1aAgain, to get the definitive answer we'd have to dig into the new spec a bit, because I think there are some features specific to this kind of case.17:37
th1a(which I don't have time to do right now)17:37
th1aI have to give a talk on SchoolTool tonight to the "Providence Geeks."17:38
pcardunehe he, nice name17:38
th1aI am a founding member.17:38
pcarduneso what would be your recommendation for how we can transfer specific bits of data from one schooltool instance to another schooltool instance in the relatively short term (like this summer)17:39
th1aWork on implementing SIF_Request and SIF_Response messages.17:40
pcardunepush hard and get SIF agent stuff implemented? or write our own quick and dirty import/export functionality17:40
wdickersAlright, well I'm about out of time. Hopefully by the end of the week the stAgent will be using the actual database :)17:40
th1awdickers: Cool.17:40
pcardunewdickers: that is good to hear17:40
wdickersoh, one more thing, what is the best way to create a person object, simply by using Person()\17:41
th1apcardune: The thing is, if we implement SIF_Request/Response, it is a standard way of moving the data around.17:41
pcarduneso is that something to be implemented in st agent or tinyZIS?17:41
th1aEven if we ultimately implement it in a slightly hacky way, in terms of how the Zone is organized.17:41
th1aTinyZIS doesn't care what the content of the message is.  It just routes it.17:42
wdickersasee you guys17:42
th1aSo nothing needs to be done there.17:42
*** wdickers has quit IRC17:42
pcarduneso you would say that this is something which can be implemented in the near future17:43
th1aLet me look at exactly how much chesty does right now.17:43
th1aIn terms of integrating with SchoolTool, it is probably the most complicated part.17:43
th1aBecause you have to be able to parse fairly complicated queries from XML, make the query and format the response.17:44
th1apcardune: You use these objects to create a query:
th1aThis turns it into XML:17:49
th1aclass Request(REQUEST):17:49
th1a    def __init__(self, conf, objectName, elements=[], conditionGroup=None):17:49
th1a        REQUEST.__init__(self, conf)17:49
th1a        self.vars['objectName'] = objectName17:49
th1a        self.vars['elements'] = elements17:49
th1a        self.vars['conditionGroup'] = conditionGroup17:49
th1a        self.vars['render_conditionGroup'] = render_conditionGroup17:49
th1a        self.message = self.template.render('request', vars=self.vars).strip()17:49
pcarduneok, well I'm going to finish work on skill drivers first17:50
pcardunethen start looking more into that17:50
th1aIt is fun!  Really!17:50
pcarduneignas: the new test runner makes running cando tests a pain...17:53
th1apcardune: I think I've asked you this before, but I forget the answer -- what's the easiest way for me to set up a demo of CanDo for my little talk tonight?17:53
th1apcardune: I mean, in terms of getting competencies and fake classes in there?17:53
pcarduneyou'll want the versoimport plugin then17:54
pcardunestick that in the Schooltool/src directory and copy over the versoimport-configure.zcml to schooltool-skel17:55
pcardunethen there is a sample data generator you can use via devmode17:56
th1aIt adds the competencies to courses?17:56
pcarduneand it can do competency evaluation... but that is quite processor intensive17:59
pcarduneignas: when I try to run cando functional tests, it runs them without loading the cando source code... so all cando links are don't exist... how do I fix this?18:03
ignaspcardune: ftesting.zcml18:04
ignaspcardune: look at ftesting setups in for example courses, notes18:04
ignaspcardune: or lyceum18:04
ignaspcardune: you must add a CanDo layer18:04
pcardunei see18:04
ignasso you will be able to have "CanDo" tests18:04
ignaswhile all the original schooltool tests will stay unmodified18:04
pcarduneLumiere: *big* skill driver committ18:23
*** ignas has quit IRC18:42
*** jfroche has quit IRC18:44
*** jinty has quit IRC20:19
pcardunemgedmin: could you help me with a small problem I'm having?  I register an adapter in zcml *without* a provides attribute and zope asks for one even though I use the adapts function in the adapter class definition...20:42
mgedminare you aware of the difference between 'adapts' and 'provides'?20:43
mgedminzope uses the implements() directive in your class to figure out what your adapter provides20:43
mgedminbut if your class implements more than one interface, you'll have to specify the provides="..." attribute in zcml explicitly in any case20:44
pcarduneright, so i have a call to implements as well20:44
pcarduneooooh, ok, the "more than one interface" part is what got me20:44
pcardunehmmm, it is still not working20:46
lisppaste5pcardune pasted "traverse subscriber problems" at
pcardunemgedmin: how can you query a subscriber like the one I pasted above?  Is it the same as queryMultiAdapter?21:07
mgedminno, there's something else21:08
mgedminzope.component.subscribers(), I think21:08
mgedminI rarely use subscriber adapters, so I don't remember21:08
pcarduneyou were right :)21:14
th1apcardune: This is out of date, right?
pcardunemgedmin: is it not good to have nested adapter traverser plugins?  The the plugin higher in the tree works, but the one lower in the tree doesn't.  For some reason the subscriber isn't being called21:27
* mgedmin does not know21:28
*** Ninno has joined #schooltool22:07
*** Ninno has quit IRC22:17
pcarduneLumiere: ayt?23:06
Lumierenice timing23:16
Lumiereeww... I broke my client... I just got every message for the last 8 hours23:17
Lumierepcardune: here now23:17
pcarduneso, i told you guys yesterday that I would have something to show...23:18
pcardunethis afternoon... which is now23:18
pcarduneand I do23:18
LumiereI'm at home23:18
pcarduneand it is pretty slick, and just a wee bit sketch (i'm still working on the sketchyness factor)23:18
Lumiereno welsh around23:18
Lumierebut... I'll look23:18
Lumierecause we all know I am way cooler then welsh23:18
pcarduneok, let me set up a server real quick23:19
pcarduneok, Lumiere,
pcarduneLumiere: I'm generating some data for it23:40
Lumierewe should swap maddog and bonnieb imo23:41
Lumierethis is on the old skin23:41
pcardunethe trunk is on the old skin23:41
pcardunebecause the new skin has not been merged into the trunk yet23:42
pcarduneLumiere: there are now students/courses/sections/teachers/etc23:42
pcarduneyou just need to add in comps23:42
Lumierepcardune: so... what am I diing this for XD23:43
Lumieredoing even23:43
pcardunealthough if you give me another few minutes i'll get all the standard comps imported23:44
LumiereI'll wait23:44
pcardunedid you get a float division error? :)23:46
pcarduneDave is on gmail too23:46
LumiereI am talking with him now23:48
pcarduneok, comps are in23:49
pcarduneLumiere: take a look again23:49

Generated by 2.15.1 by Marius Gedminas - find it at!