*** wrobel has quit IRC | 03:23 | |
*** jinty has quit IRC | 03:36 | |
*** Fujitsu has joined #schooltool | 03:45 | |
*** filip101 has quit IRC | 04:26 | |
*** lisppaste5 has quit IRC | 04:50 | |
*** pcardune has quit IRC | 04:54 | |
*** lisppaste5 has joined #schooltool | 04:58 | |
*** alga has quit IRC | 05:03 | |
*** Bhaskar has joined #schooltool | 05:42 | |
*** pcardune has joined #schooltool | 06:14 | |
*** Bhaskar has quit IRC | 06:39 | |
*** Bhaskar has joined #schooltool | 07:32 | |
*** Bhaskar has quit IRC | 07:34 | |
*** Bhaskar has joined #schooltool | 07:34 | |
*** Bhaskar has quit IRC | 07:35 | |
*** Bhaskar has joined #schooltool | 07:35 | |
*** Fujitsu has quit IRC | 08:24 | |
*** Bhaskar has quit IRC | 08:41 | |
*** Aiste has quit IRC | 08:41 | |
*** didymo has quit IRC | 08:41 | |
*** Bhaskar has joined #schooltool | 08:41 | |
*** Aiste has joined #schooltool | 08:41 | |
*** didymo has joined #schooltool | 08:41 | |
*** Fujitsu has joined #schooltool | 09:04 | |
*** pcardune has quit IRC | 09:05 | |
*** wrobel has joined #schooltool | 09:10 | |
*** jfroche has joined #schooltool | 10:29 | |
*** Aiste_ has joined #schooltool | 10:45 | |
*** Aiste has quit IRC | 10:47 | |
*** alga has joined #SchoolTool | 11:24 | |
*** Bhaskar has quit IRC | 11:40 | |
*** Fujitsu has quit IRC | 11:49 | |
*** Bhaskar has joined #schooltool | 12:12 | |
*** jinty has joined #schooltool | 12:16 | |
*** Bhaskar has quit IRC | 12:36 | |
*** Fujitsu has joined #schooltool | 12:55 | |
*** ignas has joined #schooltool | 13:19 | |
*** alga has quit IRC | 13:35 | |
*** mgedmin has joined #schooltool | 14:01 | |
*** alga has joined #SchoolTool | 14:04 | |
*** dwelsh has left #schooltool | 16:01 | |
*** Aiste_ is now known as Aiste | 16:07 | |
*** pcardune has joined #schooltool | 16:12 | |
*** alga has quit IRC | 16:16 | |
*** wdickers has joined #schooltool | 16:55 | |
pcardune | hi wdickers | 16:57 |
---|---|---|
wdickers | good morning | 16:58 |
pcardune | wdickers: I wanted to talk to you about the status of the schooltool SIF agent you are working on | 16:59 |
pcardune | what is the status? | 16:59 |
*** didymo has quit IRC | 17:00 | |
*** didymo has joined #schooltool | 17:00 | |
wdickers | right now I am working on accessing the actual person objects of schooltool. I have not began working on other SIF data objects yet | 17:00 |
pcardune | is there a repository where I can see your code so far? | 17:01 |
wdickers | yes, let me just commit it | 17:01 |
pcardune | We are thinking of putting more developer resources on SIF stuff | 17:01 |
wdickers | subversion https://svn1.hosted-projects.com/sif/pyagentlib/trunk/stAgent | 17:02 |
wdickers | yeah, I heard from Jeff that SIF compliancy is a big goal | 17:02 |
pcardune | which one is it? stAgent1? stAgent2? stAgentPackage? | 17:03 |
wdickers | well 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/schooltool | 17:04 |
pcardune | ok | 17:05 |
pcardune | wdickers: do you think you could explain a bit about how it works to me? | 17:06 |
pcardune | Tom told me a little about it | 17:06 |
pcardune | that you need to set up ZEO | 17:06 |
wdickers | Our agent or the SIF in general? | 17:06 |
pcardune | your agent | 17:07 |
wdickers | Oh. Well you have to have the ZEO running. Then you run the 'runAgent.py' with an argument of stAgent1 or 2 depending if it's providing. The page within cando appends to a queue that stAgent.pollQueue() reads | 17:08 |
wdickers | runZeo must be in cando/Schooltool and runAgent must be in stAgent/ | 17:08 |
pcardune | in general though, won't schooltool be both a provider and a subscriber? | 17:10 |
wdickers | stAgentPackage should be in SchoolTool/src/cando | 17:10 |
wdickers | no, 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 zone | 17:11 |
pcardune | ok | 17:12 |
pcardune | well, here is our usecase, and we wondering if it can be solved with the st agent | 17:12 |
pcardune | We have a student in one schooltool instance, and we want to transfer the student and all his grades, journals, and other records to another school | 17:12 |
pcardune | but this seems like it would be done best with a peer to peer model rather than the provider/subscriber model | 17:14 |
pcardune | what do you think of that? | 17:15 |
wdickers | yeah. 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 data | 17:15 |
pcardune | but that would be more for like... getting *all* the students | 17:16 |
pcardune | and not just one... right? | 17:17 |
wdickers | No, the school could request all data for one student by asking for him/her by username | 17:18 |
wdickers | I believe this is the case, but you should ask Tom, he knows SIF much better than I | 17:18 |
wdickers | he might actually be online now | 17:18 |
pcardune | th1a: ? | 17:19 |
th1a | pcardune: yessir. | 17:19 |
th1a | Oh, I didn't see you guys talking. | 17:19 |
th1a | Reading backlog... | 17:19 |
pcardune | ok :) | 17:19 |
wdickers | in 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 |
th1a | Hm... | 17:21 |
pcardune | just build a list by iterations | 17:21 |
pcardune | i.e. [person for person in container.values()] | 17:22 |
wdickers | thanks | 17:23 |
th1a | pcardune: In this case you could send a query for information about the person from one system to another. | 17:23 |
pcardune | would it make sense for schooltool instances to be both subscribers and providers? | 17:23 |
th1a | Well, it is a little slippery here. | 17:23 |
pcardune | i guess we wouldn't necessarily want one school to 'subscribe' to another school for just one person's data | 17:23 |
th1a | It depends on if they are all in the same zone. | 17:24 |
pcardune | we want to literally *move* the data | 17:24 |
pcardune | I guess they would be different zones | 17:24 |
th1a | And I think at this point you can hive hierarchical zones. | 17:24 |
th1a | have | 17:24 |
pcardune | that is what I was about to ask | 17:24 |
th1a | I can't say I've worried about the details of that though. | 17:24 |
th1a | I think it is in the new 2.0 spec. | 17:24 |
th1a | We're working on 1.5r1. | 17:24 |
pcardune | because we might get demographic information from a county server | 17:25 |
pcardune | but grades from an individual schooltool server | 17:25 |
pcardune | ok | 17:25 |
th1a | Also, there is a specific set of specs for "Vertical Reporting" which might apply in this case. | 17:25 |
th1a | It is certainly a problem which has been considered within SIF. | 17:25 |
pcardune | so in terms of *moving* data, what kind of sif setup would you have? | 17:26 |
th1a | Well, I'd say the new school's SchoolTool would have to send a query to the old school's. | 17:27 |
ignas | pcardune: [person for person in container.values()] is better written list(container.values()) | 17:27 |
th1a | The old school would just set the student as withdrawn. | 17:27 |
pcardune | ignas: yeah... that works too :) | 17:27 |
pcardune | ok | 17:27 |
th1a | pcardune: That's the simplest way to do it, assuming they're both in the same Zone. | 17:28 |
pcardune | so the old school would have to be a provider? and the new school a subscriber? | 17:28 |
th1a | No. | 17:28 |
th1a | This isn't a publish/subscribe type event. | 17:28 |
th1a | You can't subscribe to "people moving to my school." | 17:29 |
pcardune | right | 17:29 |
th1a | This case probably does involve multiple zones. | 17:29 |
pcardune | so how does a query work? | 17:29 |
th1a | But really, that's way beyond where our infrastructure is. | 17:29 |
th1a | I mean, beyond our implementation of SIF so far. | 17:29 |
th1a | We're pretty solid for a single zone. | 17:30 |
pcardune | ok | 17:30 |
pcardune | so let's say you had a single zone: arlington county | 17:30 |
th1a | Well... | 17:30 |
th1a | Even that is complicated then. | 17:30 |
pcardune | then you have two schooltool servers, one for yorktown, and one for hb woodlawn | 17:30 |
*** alga has joined #SchoolTool | 17:30 | |
pcardune | hmm | 17:31 |
th1a | OK... in reality... here's the deal. | 17:31 |
th1a | In that case, if Arlington County is a zone, | 17:31 |
th1a | neither SchoolTool servers are publishing StudentPersonal data. | 17:31 |
th1a | They're consuming it from the district's big honking enterprise system. | 17:32 |
th1a | They're both subscribers. | 17:32 |
pcardune | ok | 17:32 |
wdickers | So there's no way different zones can communicate without subscribing? | 17:33 |
th1a | You can send queries. | 17:33 |
th1a | You can construct complex queries in XML. | 17:33 |
th1a | But messages can only be passed within a zone, between agents registered in the zone. | 17:34 |
pcardune | so one agent can query another agent? | 17:34 |
th1a | Yes. | 17:34 |
pcardune | ok | 17:34 |
pcardune | so what if instead of the schools being subscribers to arlington's big honking enterprise system, they were each just on their own | 17:35 |
pcardune | but they were still part of the arlington zone | 17:35 |
pcardune | they would have separate student data | 17:35 |
pcardune | could you send queries between their shooltool servers? | 17:36 |
th1a | Yes. | 17:36 |
th1a | Again, 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 |
pcardune | ok | 17:37 |
th1a | (which I don't have time to do right now) | 17:37 |
th1a | I have to give a talk on SchoolTool tonight to the "Providence Geeks." | 17:38 |
pcardune | he he, nice name | 17:38 |
th1a | I am a founding member. | 17:38 |
pcardune | so 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 |
th1a | Work on implementing SIF_Request and SIF_Response messages. | 17:40 |
pcardune | push hard and get SIF agent stuff implemented? or write our own quick and dirty import/export functionality | 17:40 |
wdickers | Alright, well I'm about out of time. Hopefully by the end of the week the stAgent will be using the actual database :) | 17:40 |
th1a | wdickers: Cool. | 17:40 |
pcardune | wdickers: that is good to hear | 17:40 |
wdickers | oh, one more thing, what is the best way to create a person object, simply by using Person()\ | 17:41 |
th1a | pcardune: The thing is, if we implement SIF_Request/Response, it is a standard way of moving the data around. | 17:41 |
pcardune | yeah | 17:41 |
pcardune | so is that something to be implemented in st agent or tinyZIS? | 17:41 |
th1a | Even if we ultimately implement it in a slightly hacky way, in terms of how the Zone is organized. | 17:41 |
th1a | TinyZIS doesn't care what the content of the message is. It just routes it. | 17:42 |
wdickers | asee you guys | 17:42 |
th1a | So nothing needs to be done there. | 17:42 |
*** wdickers has quit IRC | 17:42 | |
pcardune | ok | 17:42 |
pcardune | so you would say that this is something which can be implemented in the near future | 17:43 |
th1a | Let me look at exactly how much chesty does right now. | 17:43 |
th1a | In terms of integrating with SchoolTool, it is probably the most complicated part. | 17:43 |
th1a | Because you have to be able to parse fairly complicated queries from XML, make the query and format the response. | 17:44 |
pcardune | ok | 17:45 |
th1a | pcardune: You use these objects to create a query: http://www.hosted-projects.com/trac/sif/pyagentlib/browser/trunk/chesty/src/chesty/condition.py | 17:47 |
th1a | This turns it into XML: | 17:49 |
th1a | class 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'] = objectName | 17:49 |
th1a | self.vars['elements'] = elements | 17:49 |
th1a | self.vars['conditionGroup'] = conditionGroup | 17:49 |
th1a | self.vars['render_conditionGroup'] = render_conditionGroup | 17:49 |
th1a | self.message = self.template.render('request', vars=self.vars).strip() | 17:49 |
th1a | (in request.py) | 17:49 |
pcardune | ok, well I'm going to finish work on skill drivers first | 17:50 |
pcardune | then start looking more into that | 17:50 |
th1a | It is fun! Really! | 17:50 |
pcardune | ignas: the new test runner makes running cando tests a pain... | 17:53 |
th1a | pcardune: 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 |
th1a | pcardune: I mean, in terms of getting competencies and fake classes in there? | 17:53 |
pcardune | oh | 17:53 |
pcardune | ummm | 17:54 |
pcardune | you'll want the versoimport plugin then | 17:54 |
pcardune | http://bazaar.launchpad.net/~paulcarduner/cando/versoimport | 17:55 |
pcardune | stick that in the Schooltool/src directory and copy over the versoimport-configure.zcml to schooltool-skel | 17:55 |
pcardune | then there is a sample data generator you can use via devmode | 17:56 |
th1a | Ah. | 17:56 |
th1a | It adds the competencies to courses? | 17:56 |
pcardune | yeah | 17:58 |
pcardune | and it can do competency evaluation... but that is quite processor intensive | 17:59 |
pcardune | ignas: 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 |
ignas | pcardune: ftesting.zcml | 18:04 |
ignas | pcardune: look at ftesting setups in for example courses, notes | 18:04 |
ignas | pcardune: or lyceum | 18:04 |
ignas | pcardune: you must add a CanDo layer | 18:04 |
pcardune | oh | 18:04 |
pcardune | i see | 18:04 |
ignas | so you will be able to have "CanDo" tests | 18:04 |
ignas | while all the original schooltool tests will stay unmodified | 18:04 |
pcardune | Lumiere: *big* skill driver committ | 18:23 |
*** ignas has quit IRC | 18:42 | |
*** jfroche has quit IRC | 18:44 | |
*** jinty has quit IRC | 20:19 | |
pcardune | mgedmin: 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 |
mgedmin | are you aware of the difference between 'adapts' and 'provides'? | 20:43 |
mgedmin | zope uses the implements() directive in your class to figure out what your adapter provides | 20:43 |
mgedmin | but if your class implements more than one interface, you'll have to specify the provides="..." attribute in zcml explicitly in any case | 20:44 |
pcardune | right, so i have a call to implements as well | 20:44 |
pcardune | ooooh, ok, the "more than one interface" part is what got me | 20:44 |
pcardune | thanks | 20:44 |
pcardune | hmmm, it is still not working | 20:46 |
lisppaste5 | pcardune pasted "traverse subscriber problems" at http://paste.lisp.org/display/38445 | 21:06 |
pcardune | mgedmin: how can you query a subscriber like the one I pasted above? Is it the same as queryMultiAdapter? | 21:07 |
mgedmin | no, there's something else | 21:08 |
mgedmin | zope.component.subscribers(), I think | 21:08 |
mgedmin | I rarely use subscriber adapters, so I don't remember | 21:08 |
pcardune | you were right :) | 21:14 |
th1a | pcardune: This is out of date, right? http://www.careercenter.arlington.k12.va.us/cando/screenshots/grade_section.htm | 21:15 |
pcardune | yes | 21:15 |
pcardune | mgedmin: 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 called | 21:27 |
* mgedmin does not know | 21:28 | |
pcardune | hmm | 21:30 |
*** Ninno has joined #schooltool | 22:07 | |
*** Ninno has quit IRC | 22:17 | |
pcardune | Lumiere: ayt? | 23:06 |
Lumiere | yes | 23:16 |
Lumiere | nice timing | 23:16 |
Lumiere | eww... I broke my client... I just got every message for the last 8 hours | 23:17 |
Lumiere | pcardune: here now | 23:17 |
pcardune | oops | 23:17 |
pcardune | so, i told you guys yesterday that I would have something to show... | 23:18 |
pcardune | this afternoon... which is now | 23:18 |
pcardune | and I do | 23:18 |
Lumiere | I'm at home | 23:18 |
pcardune | and it is pretty slick, and just a wee bit sketch (i'm still working on the sketchyness factor) | 23:18 |
Lumiere | no welsh around | 23:18 |
pcardune | oh | 23:18 |
Lumiere | but... I'll look | 23:18 |
Lumiere | cause we all know I am way cooler then welsh | 23:18 |
pcardune | ok, let me set up a server real quick | 23:19 |
Lumiere | kk | 23:19 |
pcardune | ok, Lumiere, http://bonnieb.yhspatriot.net:7080 | 23:40 |
pcardune | Lumiere: I'm generating some data for it | 23:40 |
Lumiere | k | 23:41 |
Lumiere | we should swap maddog and bonnieb imo | 23:41 |
Lumiere | whoa | 23:41 |
Lumiere | this is on the old skin | 23:41 |
pcardune | yeah | 23:41 |
pcardune | the trunk is on the old skin | 23:41 |
pcardune | because the new skin has not been merged into the trunk yet | 23:42 |
Lumiere | ah | 23:42 |
pcardune | Lumiere: there are now students/courses/sections/teachers/etc | 23:42 |
pcardune | you just need to add in comps | 23:42 |
Lumiere | pcardune: so... what am I diing this for XD | 23:43 |
Lumiere | doing even | 23:43 |
pcardune | although if you give me another few minutes i'll get all the standard comps imported | 23:44 |
Lumiere | ok | 23:44 |
Lumiere | I'll wait | 23:44 |
pcardune | did you get a float division error? :) | 23:46 |
pcardune | Dave is on gmail too | 23:46 |
Lumiere | yea | 23:46 |
Lumiere | yea | 23:48 |
Lumiere | I am talking with him now | 23:48 |
pcardune | ok, comps are in | 23:49 |
pcardune | Lumiere: take a look again | 23:49 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!