IRC log of #schooltool for Monday, 2015-08-24

*** menesis has quit IRC02:31
*** menesis has joined #schooltool02:35
*** menesis has quit IRC02:49
*** menesis has joined #schooltool10:40
*** khildin has joined #schooltool12:11
*** yvl has joined #schooltool12:49
*** khildin has quit IRC13:13
*** khildin has joined #schooltool13:58
*** menesis has quit IRC14:56
*** menesis has joined #schooltool15:15
*** yvl has quit IRC16:57
*** replaceafill has joined #schooltool17:25
th1ahi replaceafill.17:34
replaceafillhey th1a17:34
th1aI don't know if I mentioned I was in Pittsburgh all weekend.17:34
th1aSo I'm getting a slow start.17:34
replaceafillno17:34
replaceafillok17:34
th1aForwarding an email from Niswonger.17:35
replaceafillok17:35
th1aI guess it is just about the subdomain.17:36
th1aOK, I can answer that.17:36
replaceafillok17:37
th1aSo otherwise, I've got nothing new other than Karl was feeling a little better than when I saw him last month.17:39
replaceafillah17:39
replaceafillglad to hear17:39
th1aHe's having more chemotherapy.17:40
th1aOtherwise I guess you should just work on Proximity.  I'll send Fran the new invoice.17:42
replaceafillok17:42
replaceafilli have a couple of questions/comments from my initial research/work17:43
th1aGo ahead.17:44
replaceafill1. when a person is added in the SchoolTool side17:44
replaceafillany person (teacher, student, admin, etc)17:44
replaceafilli think we need at least two canvas api calls, right?17:45
replaceafillone for searching if the person exists17:45
replaceafill(in canvas)17:45
replaceafilland the other for creating it (if it's not there) or updating it (if it's found)17:46
th1aPresumably, depending on how Canvas handles those two cases in the API.17:46
th1aI mean, it might be 1) try to add > if exists return error > then just try to update.17:47
replaceafillah ok17:47
th1aYou don't know what Canvas does if a person exists.17:47
replaceafillno, i'll test that17:48
th1aIt is so much easier to deal with an API that has a canonical running version.17:49
replaceafill:)17:50
replaceafillok17:50
replaceafill2. the canvas person id17:50
replaceafillin the api you reference people by their ids, right?17:50
th1aYes?17:51
replaceafillthese are not the logins that we'll match with the ST username17:51
replaceafillthey're integer numbers17:51
th1aOK.17:51
replaceafillso if i want to update douglas@sielibre.com (ST username)17:51
replaceafillwe either need to look for it first and get the id17:51
replaceafillor store the id in the ST side17:52
replaceafillto make calls directly17:52
th1aI'd say we should store it.17:52
replaceafillcool, me too17:52
replaceafilldemographics field?17:52
replaceafillor custom hidden/readonly annotation17:53
replaceafilli'd go with a custom annotation17:53
th1aSure.17:53
replaceafillkk17:53
replaceafill3. user/principal for the remote task17:54
th1aAh, yes.17:54
replaceafillso i was reading the oauth section the api docs17:54
replaceafilland i need your help with a section17:55
replaceafillnot technical help, but legal help :D17:55
replaceafillhold on17:55
replaceafillhttps://canvas.instructure.com/doc/api/file.oauth.html17:55
replaceafillOAuth2 Token Request Flow17:55
replaceafilli understand this is more for like mobile apps17:56
replaceafilloh sorry17:56
th1aOK, so we need a client ID?17:56
replaceafillwrong paragraph17:57
replaceafillManual Token Generation17:57
replaceafill"Note that asking any other user to manually generate a token and enter it into your application is a violation of Canvas' terms of service"17:57
replaceafilland so far, i've been doing the test calls with a token access attached to my douglas@sielibre.com account17:58
th1aSo Proximity should generate that?17:58
th1aWe should in theory be using their token?17:58
replaceafilli think we should generate a token for each call?17:59
replaceafillfor example17:59
replaceafillif Myken imports the xls17:59
replaceafilladding people17:59
replaceafillall the "add person" calls17:59
replaceafillshould be "invoked" under Myken's user?17:59
th1aIdeally.18:00
replaceafillif Jana edits someone info in ST18:00
replaceafillsame?18:00
replaceafillok18:00
th1aLet me know if that is a problem, because I'm sure in many cases of this kind of integration that does not happen.18:00
th1aBut obviously it is a desirable feature.18:00
replaceafillok18:01
th1aBasically, don't get the whole project behind to make that work.18:02
th1aIs there an additional "legal" question?18:02
replaceafillno, i don't think so18:02
th1aOK.18:03
replaceafilli also checked the docs about cost18:03
replaceafillperformance cost18:03
replaceafillof calls18:03
th1aAh.18:03
replaceafilli *think* we're ok in that regard18:04
replaceafillthere's a limit18:04
replaceafilland i tested a few different calls18:04
th1aA cap per minute or something?18:04
th1aA rate?18:04
replaceafillyes, a rate18:04
replaceafillhttps://canvas.instructure.com/doc/api/file.throttling.html18:04
replaceafillcost of simple calls is < 118:04
replaceafilland there's a limit of about 70018:05
replaceafilli did think about the response headers18:05
th1aWell, we've got a task scheduler that seems to work pretty well.18:05
replaceafillwhen you make a call, you get the response, right?18:05
th1aSo some of these may take a while to unwind.18:05
replaceafillit has some useful headers18:05
replaceafilllike the links header18:06
replaceafillhttps://canvas.instructure.com/doc/api/file.pagination.html18:06
th1aWe might need a "pending" state rather than just "in sync" boolean.18:06
replaceafillthat you use for paginated results18:06
th1aOK.18:06
replaceafilli was thinking of tracking the cost/limit headers18:07
replaceafilli mean, not a priority18:08
replaceafilli'm just not sure if it's worth18:08
replaceafillwe'll need to link with paginated results18:08
replaceafill(someday)18:08
th1aCan you save that until we see how it is going?18:09
th1aI would like to get as much infrastructure in this iteration as possible.18:09
*** khildin has quit IRC18:09
th1aSo that subsequent iterations are pretty quick and functionality focused.18:09
replaceafillsave as in "don't do it yet"?18:09
th1aDon't do it first.18:09
replaceafillok18:10
replaceafillsure18:10
replaceafillhhmm18:10
replaceafilli think that's it...18:11
replaceafilli'm much more confortable with our whole remote task/celery story18:11
replaceafillit took me a while...18:11
replaceafillbut i could explain a little better how everything relates18:11
th1aGood.  There are a lot of moving parts.18:12
replaceafillcan you explain this:18:12
replaceafill<th1a> We might need a "pending" state rather than just "in sync" boolean.18:12
th1aI mean, if there is going to be a delay in, say, a big import.18:13
replaceafillah18:13
th1aIf someone does the import, then lists unsyced, then trys to sync all the ones that are still waiting to sync... etc.18:13
replaceafillgood point18:13
replaceafillwe could track pending tasks on that person18:14
replaceafilland report accordingly18:14
th1aYeah.  I'd say the main thing is it shouldn't just be a bool, and we can add pending also as a "nice to have" depending on what we get done this week.18:15
*** khildin has joined #schooltool18:15
replaceafillso we just start with a bool?18:16
replaceafilland evolve it later?18:16
th1aI'd say.18:16
replaceafillkk18:16
th1aEr18:16
th1ano18:16
th1aI'd say don't start with a bool so we don't have to evolve it.18:16
th1aThat was my point.18:16
replaceafillah, the "nice to have" threw me off18:17
th1aStart with "u" and "s" and then add "p" on Thursday or Friday if possible.18:17
replaceafillgot it18:17
th1aDefinitely this is a "we want the basics to work for them on Friday" job.18:18
th1aAnd the main thing that can go wrong is putting in some unnecessary bits early and getting behind.18:18
replaceafillright18:18
replaceafillok18:19
* replaceafill done18:19
th1aBut in practice, even if the basics go really fast, there is two more days of things which we should get out of the way.18:19
replaceafillsure18:19
th1aI don't want the next iteration to be "well, this will be a week, because there is a lot of plumbing we didn't get to..."18:19
th1aOK, I'll let you get to it.18:19
th1aThanks replaceafill.18:20
replaceafilli understand18:20
replaceafillok18:20
replaceafillthanks th1a18:20
th1areplaceafill: ayt?19:06
replaceafillhey th1a19:07
th1aAh, is there any particular reason that Niswonger couldn't host themselves -- you did regular packaging for them anyhow?19:11
replaceafillyes19:11
replaceafillother than initial configuration19:11
replaceafilli don't see any problem19:11
th1aOK.19:12
replaceafillpackage is at: https://launchpad.net/~sielibre/+archive/ubuntu/niswonger19:12
replaceafillthey want to host it?19:12
th1aI just wanted to know if I could point that out.19:13
th1aSince we're now talking to IT.19:13
th1aEmailing to IT.19:14
replaceafillok19:14
*** menesis has quit IRC19:38
replaceafillth1a, canvas sends http errors when you try to add someone with existing pseudonym[unique_id] or pseudonym[sis_user_id]19:40
replaceafillso we can detect it19:40
th1aOK.19:57
replaceafillth1a, you there?20:20
th1aYes, replaceafill.20:20
replaceafillquick question:20:20
replaceafill"When a user is added or edited in SchoolTool, either through the web interface or .xls import"20:20
replaceafillwhich xls import?20:21
replaceafillstandard or proximity?20:21
replaceafillor both?20:21
th1aAh... I guess proximity.20:21
replaceafillah ok20:21
th1aYou could make the standard one a low priority item.20:22
replaceafillweb interface means "all person add views" right?20:22
replaceafillok20:22
th1aBasically, yes.20:23
replaceafillcool20:23
replaceafillthanks20:23
*** menesis has joined #schooltool21:42
*** menesis has quit IRC21:52
*** menesis has joined #schooltool22:08
*** khildin has quit IRC22:45
*** menesis has quit IRC23:53

Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!