*** replaceafill has joined #schooltool | 00:42 | |
*** alga has quit IRC | 02:51 | |
*** replaceafill has quit IRC | 03:44 | |
*** aks has joined #schooltool | 06:18 | |
*** alga has joined #schooltool | 09:58 | |
*** menesis has joined #schooltool | 12:35 | |
*** hlsousa has joined #schooltool | 13:26 | |
*** aks has quit IRC | 15:02 | |
*** hlsousa has quit IRC | 16:02 | |
*** replaceafill has joined #schooltool | 16:22 | |
*** th1a has joined #schooltool | 16:31 | |
th1a | hi aelkner, replaceafill, yvl, menesis | 16:32 |
---|---|---|
menesis | hi | 16:32 |
replaceafill | good morning/afternoon | 16:32 |
yvl | hi | 16:33 |
aelkner | morning | 16:33 |
th1a | I read your chat from yesterday. | 16:34 |
th1a | The one thing that struck me is that we probably do need to talk about the input format. | 16:34 |
th1a | I think yvl had a plan at the sprint. | 16:35 |
th1a | Which we probably didn't write down... | 16:35 |
th1a | yvl? | 16:36 |
yvl | soryr | 16:37 |
yvl | what input format are you talking about? | 16:37 |
th1a | xls import of skills? | 16:37 |
yvl | ah | 16:38 |
th1a | I may be hallucinating. | 16:38 |
yvl | well, I'd say go the way we discussed at the sprint | 16:38 |
yvl | (and actually showed to David :) ) | 16:38 |
yvl | (so he may have taken notes) | 16:38 |
th1a | Did we only have it on a giant post-it? | 16:40 |
yvl | likely | 16:40 |
yvl | or it may be in some shared doc | 16:41 |
* yvl hasn't checked | 16:41 | |
th1a | Well, regardless, do you remember in general terms? | 16:41 |
yvl | vaguely | 16:43 |
th1a | ... | 16:44 |
yvl | there should be a document model importer that defines the document model | 16:45 |
* th1a has been kicking himself over leaving those post-its. | 16:45 | |
yvl | basically: levels with lists of child levels | 16:45 |
aelkner | didn't we take a picture of the post its? | 16:45 |
aelkner | sorry for interrupting | 16:45 |
yvl | there should also be a skill importer, it depends on data model | 16:46 |
yvl | basically | 16:46 |
yvl | lev1 lev2 levr skillset skill | 16:46 |
yvl | cells | 16:46 |
aelkner | by data model, you mean levels, right? | 16:46 |
yvl | yes | 16:46 |
th1a | I think aelkner was the one with a camera phone. | 16:46 |
yvl | so, those cells | 16:46 |
yvl | and blank cells mean --- // --- | 16:47 |
yvl | as in - same a above | 16:47 |
yvl | also there will be some sharp edges, I don't remember off hand | 16:47 |
aelkner | sounds like the flat tables that i've been working on lately | 16:47 |
yvl | yes, like that | 16:48 |
th1a | Yes. | 16:48 |
th1a | It wasn't anything particularly non-obvious. | 16:48 |
yvl | reimport will be tricky | 16:48 |
aelkner | i was thinking about that, too, last ight | 16:49 |
aelkner | how do you think it will be tricky? | 16:49 |
yvl | also read "VERSO revision continuinity" if you missed it somehow | 16:49 |
yvl | just a hunch, aelkner | 16:49 |
aelkner | i started being concerned, but then i remembered how our other imports work | 16:50 |
aelkner | reimporting is just a case of ignoring keys that are already there, i.e., don't add | 16:50 |
aelkner | only titles, descriptions get updated | 16:50 |
aelkner | my conclusion was that we would be ok here for the same reason | 16:50 |
aelkner | but i could be wrong | 16:51 |
aelkner | in either case, that should be my problem to solve | 16:51 |
yvl | true | 16:52 |
th1a | I just wanted to make sure we were on the same page on the issue. | 16:52 |
th1a | Not marching in different directions entirely. | 16:52 |
yvl | if for some reason datamodel does not fit, please bug me, aelkner | 16:52 |
th1a | OK. So... other issues, questions aelkner? | 16:53 |
aelkner | th1a, i need to handle theses things, and i will bug you, yvl, as i am concerned about something | 16:53 |
aelkner | but i haven't gotten that far yet to be concerned | 16:53 |
aelkner | still groking the incoming code | 16:53 |
aelkner | yvl, you're adding stuff too fast :) | 16:54 |
aelkner | but for today, if i may: | 16:54 |
aelkner | so far, i noticed that we have levels and nodes by school year | 16:54 |
aelkner | ok, stating over | 16:55 |
aelkner | the way i want to approach this is devide and concur, for my small mind | 16:55 |
aelkner | the first thing is levels because they don't depend on anything | 16:55 |
aelkner | so one sheet for those | 16:55 |
yvl | yes | 16:55 |
aelkner | then, nodes, depend on level ids, so one sheet for those | 16:55 |
aelkner | oh, and i say one sheet because i'm assuming that we will have on flat table for all years? | 16:56 |
yvl | I'd say - a sheet for a year | 16:56 |
yvl | or rather - importer for a year | 16:57 |
yvl | as opposed of importer for a school | 16:57 |
yvl | * opposed to | 16:57 |
yvl | and I think nodes and skills go together | 16:57 |
yvl | into the same sheet | 16:57 |
aelkner | if the importer is for a year, then we could have it run off of the year as context | 16:57 |
aelkner | that would greatly simplify it for sure | 16:57 |
th1a | Too many sheets will make users unhappy. | 16:58 |
yvl | does not compute, th1a | 16:59 |
aelkner | so are we agreed that the cando importer is only run from year context? | 16:59 |
yvl | well, at least it is registered that way now | 16:59 |
yvl | see cando/browser/configure.zcml and cando/browser/importer.py | 16:59 |
th1a | yvl: I was trying to agree that nodes and skills should go on the same sheet if possible. | 17:00 |
yvl | ah! | 17:00 |
yvl | thanks | 17:00 |
yvl | text parsing error on my side :) | 17:00 |
th1a | np | 17:00 |
th1a | It is a miracle we can communicate at all. | 17:00 |
yvl | :D | 17:00 |
aelkner | :) | 17:00 |
aelkner | yvl, side note, not using flourush.zcml name for browser config? | 17:01 |
yvl | no | 17:01 |
aelkner | because there is no old version | 17:01 |
yvl | and not using FlourishXXX names | 17:01 |
yvl | yes | 17:01 |
yvl | we should have renamed everything in ST from flrousihXXX to XXX | 17:02 |
yvl | but, well, time limits and all | 17:02 |
aelkner | i was just thinking about that recently, why didn't we rename old stuff to old_configure.zcml and OldViewClasss | 17:03 |
aelkner | but, like you said, time limits | 17:03 |
aelkner | anyway, the model skills imported | 17:03 |
aelkner | is that for the levels and nodes? | 17:03 |
th1a | ? | 17:05 |
yvl | ModelImporter - for "levels" | 17:05 |
yvl | SkillsImporter - nodes + skillsets + skills | 17:06 |
aelkner | ah, i see | 17:06 |
yvl | feel free to rename them better :) | 17:06 |
aelkner | i think the name of the sheet and the column headings within the sheet should match the ui | 17:07 |
aelkner | whatever we call a level when we have the user add it in the ui, that's what we should call it in the xls | 17:07 |
yvl | absolutely your call ;) | 17:08 |
aelkner | yvl, i'll just follow your ui choices | 17:08 |
aelkner | i'm curious, you are working on ttw skills, did you already do ttw levels? | 17:09 |
yvl | no, like I said yesterday | 17:09 |
yvl | hmm | 17:09 |
yvl | let me quickly report :D | 17:09 |
aelkner | sure | 17:10 |
yvl | I did ttw skillset/skill creation | 17:10 |
yvl | they're stored in a global container | 17:10 |
yvl | now I'm doing skillset assigning to courses | 17:10 |
yvl | once that is done, replaceafill should be able to start working on skill gradebook | 17:10 |
yvl | after that - levels | 17:10 |
yvl | after that nodes | 17:10 |
yvl | after that - linking nodes with skillsets | 17:11 |
aelkner | if skills depend on the existence of levels, how can you code one without the other? | 17:11 |
yvl | like I said yesterday | 17:11 |
aelkner | are you hard-coding levels for now? | 17:11 |
yvl | they do not | 17:11 |
yvl | nodes depend on levels | 17:12 |
yvl | nodes get linked with skillsets | 17:12 |
aelkner | what do skillsets mean without being linked to nodes? | 17:13 |
yvl | a skillset is a set of skills | 17:14 |
yvl | roughly - a worksheet | 17:14 |
yvl | or - a project | 17:14 |
yvl | think about it this way: | 17:15 |
yvl | why would you need to know the pathway or occupation the skillset is part of | 17:15 |
yvl | to use the skillset in a gradebook? | 17:15 |
yvl | or to put it in CTE terms | 17:16 |
yvl | you can create and assign duty areas to courses | 17:16 |
* yvl apologizes if not being very clear | 17:17 | |
aelkner | a lot was said at the sprint, and some understand our decisions better than others | 17:20 |
aelkner | especially those who made the decisions :) | 17:20 |
aelkner | i'm still needing to catch up to these things | 17:20 |
aelkner | i still have the idea in my head from the old cando, that comps are stored globally | 17:21 |
aelkner | then assigned to a course, at which time they can be graded | 17:21 |
aelkner | but the dependency of course comps on comps was there | 17:21 |
aelkner | so i'm not sure how you see grading something that is not linked to a skill | 17:22 |
yvl | comps are called skills | 17:22 |
yvl | skills are not linked to skills for grading | 17:22 |
yvl | skills are graded | 17:22 |
yvl | skills are kept in skillsets | 17:23 |
yvl | which is like a worksheet | 17:23 |
yvl | skill being like an activity | 17:23 |
yvl | ok, frankly, I just don't see how you don't see it | 17:23 |
th1a | (VA CTE uses "skills" btw) | 17:24 |
yvl | really? | 17:24 |
aelkner | sorry i mentioned comps only because i was referring to old cando | 17:24 |
yvl | not "tasks"? | 17:24 |
yvl | ok | 17:24 |
th1a | Or maybe I'm wrong... | 17:25 |
th1a | I thought that was part of the reason we switched to "skills," but whatever. I don't want to launch a thread on that. | 17:25 |
aelkner | ok, this is weird, in the current gradebook, the user can add worksheets and activities | 17:26 |
aelkner | to their hearts content | 17:26 |
yvl | yes | 17:26 |
yvl | same happens with "projects" | 17:26 |
aelkner | but they aren't concerned with global reporting as we are in cando | 17:26 |
aelkner | in old cando, the gradebook graded things that were globally linked | 17:26 |
aelkner | what you're talking about is having a kind of worksheet with activities that act alone | 17:27 |
aelkner | can't be reported on because they aren't linked to a global skill | 17:27 |
yvl | you are right about that | 17:27 |
yvl | can't be reported on | 17:27 |
yvl | but we are not doing the reports | 17:27 |
yvl | well, at least not now | 17:28 |
aelkner | i thought the point of cando was that all teachers are grading the same things | 17:28 |
yvl | that's why | 17:28 |
yvl | we need only things that allow grading | 17:28 |
yvl | and yes, there is a global SkillSetContainer | 17:28 |
yvl | (see skill.py) | 17:28 |
yvl | I'm just not doing the part with the node creation, assigning to pathways, conforming to "document model" and so on | 17:29 |
aelkner | so, may i ask a kind of summary question at this juncture? | 17:29 |
yvl | or to be more precise | 17:29 |
aelkner | go ahead | 17:29 |
yvl | that is done, but there is no way to input data | 17:29 |
yvl | I am not doing TTW input today | 17:29 |
yvl | but I will do that in few days or so | 17:30 |
yvl | meanwhile, you *are* doing that with the importer | 17:30 |
yvl | please ask the question :) | 17:30 |
aelkner | the question was: unlike old cando, the user can use cando gradebook much like current | 17:30 |
aelkner | that is, create a column (activity) as they please | 17:31 |
yvl | yes and no | 17:31 |
aelkner | does not need to be linked to a skill if they don't want to | 17:31 |
yvl | as discussed in spirint. | 17:31 |
yvl | let's start from the beginning | 17:31 |
yvl | there will be two gradebooks | 17:31 |
yvl | one will be called skills gradebook | 17:31 |
yvl | the second - projects gradebook | 17:31 |
yvl | the purpose of projects gradebook is for teachers to create freeform projects | 17:32 |
yvl | and grade them | 17:32 |
yvl | same way the normal gradebook is done | 17:32 |
replaceafill | the old skill drivers or assignments | 17:32 |
yvl | (probably - me can't recall what "skill drivers" were :) ) | 17:32 |
yvl | and the skills gradebook is assigned to courses | 17:33 |
replaceafill | that, custom sets of skills put together :) | 17:33 |
yvl | and is a global one | 17:33 |
yvl | teachers cant change skills for a section | 17:33 |
yvl | skills are for courses | 17:33 |
yvl | skills are stored globally | 17:33 |
yvl | and then there is the "document" | 17:34 |
yvl | one, or more in reality | 17:34 |
yvl | hierarchical trees | 17:35 |
yvl | that describe where skill sets fit in some system | 17:35 |
yvl | for example | 17:35 |
yvl | how skills fit in INDUSTRY vs EDUCATION mentioned by David | 17:36 |
* yvl done | 17:36 | |
aelkner | level trees are the "document" you refer to, correct? | 17:37 |
yvl | did I answer some questions aelkner, or was I just blabbering :) | 17:37 |
yvl | yes | 17:37 |
aelkner | not blabbering, everything you can say is helpful | 17:37 |
* th1a figures each hour of conversation here saves a day of development time. | 17:37 | |
yvl | :D | 17:37 |
aelkner | right | 17:38 |
th1a | I think one point is that the new CanDo will *allow* teachers to do things which won't necessarily be automatically included in school-level reports. | 17:39 |
th1a | Making up their own skills, etc. | 17:39 |
th1a | But that is ok. | 17:39 |
replaceafill | hhmm? | 17:40 |
th1a | Or at least the model will allow it. | 17:40 |
replaceafill | i thought teachers were going to "select" existing skills... | 17:40 |
replaceafill | to use in their own projects | 17:40 |
th1a | Let's just say the model will allow it. | 17:40 |
aelkner | replaceafill, you and i are on the same page, old cando | 17:40 |
aelkner | that's why i have been speaking of this dependency, because the user has expected it | 17:40 |
aelkner | however | 17:41 |
th1a | There could be skills in the system that aren't really anchored to the document model and thus could be scored but probably not caught by the reports. | 17:41 |
aelkner | jelkner has often wanted to create skills that virginia did not, so... | 17:41 |
th1a | Does that make sense, yvl? | 17:42 |
yvl | if I got you right, yes | 17:42 |
th1a | Reporting will be dependent on the overall structure. | 17:43 |
th1a | Scoring could potentially just be done by creating skills and adding them to projects. | 17:44 |
yvl | yes | 17:44 |
aelkner | the jelkner type user will be happy to be free from the global tree | 17:44 |
th1a | Those skills wouldn't show up in reports based on the document model, which is what people would expect, but they can be scored and used within the section. | 17:44 |
yvl | admins can also create a second model | 17:44 |
yvl | like | 17:44 |
th1a | y | 17:44 |
yvl | EDUCATION vs INDUSTRY | 17:45 |
yvl | and assign whatever skills to whatever :) | 17:45 |
th1a | Any other questions aelkner? | 17:45 |
aelkner | this was good, i'd say move on for now, i have groking to do on the subject anyway | 17:45 |
aelkner | yvl, it's interesting how you have been thinking about it | 17:46 |
aelkner | probably as a result of working on the gradebook with replaceafill first | 17:47 |
aelkner | i'm just coming at it from a top down model point of view | 17:47 |
aelkner | and global comp come first | 17:47 |
aelkner | global skills now | 17:47 |
aelkner | anyway, we can move on | 17:48 |
th1a | I'd say it is more that once you need to have a flexible document structure, it is easier to just not be dependent on that at all. | 17:48 |
yvl | yes | 17:48 |
aelkner | i can see how that is helping us, yes | 17:48 |
th1a | Creating a model that is flexible and required (has meaningful validation, etc) is harder. | 17:48 |
th1a | And gains you little if anything. | 17:49 |
aelkner | well put, that's the goal | 17:49 |
aelkner | xml docs are like that | 17:49 |
aelkner | you can create any type you want, but you could also validate against a schema | 17:49 |
yvl | allright then... I'd like to leave in some 10 minutes if possible | 17:49 |
th1a | ok yvl. | 17:50 |
th1a | replaceafill? | 17:50 |
aelkner | one sec | 17:50 |
aelkner | before we letyvl go | 17:50 |
aelkner | since i haven't groked the whole new model as we have been discussing, i'm not likely to import aything today | 17:50 |
aelkner | however, i could import levels | 17:51 |
aelkner | they are the root of the model and dependent on nothing | 17:51 |
aelkner | they form a tree | 17:51 |
aelkner | but, as you just said, and as i see in the code, there can be more than one tree | 17:51 |
aelkner | i could create a flat table | 17:52 |
yvl | yes | 17:52 |
yvl | basically you need to look it like this: | 17:52 |
aelkner | first column is the name of the tree, i guess | 17:52 |
yvl | [level] [parents] | 17:52 |
aelkner | ah, flatter still | 17:52 |
yvl | [cluster] [] | 17:52 |
aelkner | level id, title, parents | 17:52 |
yvl | [pathway] [cluster] | 17:52 |
yvl | [occupation] [cluster] | 17:52 |
yvl | oh, and they're called "layers" in the code :D | 17:53 |
yvl | and have no id's per se | 17:53 |
aelkner | oops :) | 17:53 |
yvl | so you can just use titles | 17:53 |
aelkner | layers have an id in the layers container for the year | 17:54 |
aelkner | but they have a title as well | 17:54 |
yvl | and as you may notice, usually they will look like linked-lists rather than trees | 17:54 |
aelkner | capitalized, likely | 17:54 |
aelkner | yes, it's not a single rooted tree as in old cando, it's a directional graph | 17:54 |
yvl | cluster -> pathway -> occupation -> course | 17:54 |
aelkner | no cycles allowed, as i have seen | 17:55 |
yvl | yes | 17:55 |
aelkner | so, restating, we need a three column sheet | 17:55 |
aelkner | level id (the key), title, parents list of keys for parents | 17:55 |
aelkner | i would need to do two passes | 17:56 |
aelkner | sorry, saying level instead of layer | 17:56 |
aelkner | when things are close, i switch them | 17:56 |
aelkner | the parents could be comma delimited list, but perhaps better would be: | 17:57 |
aelkner | one cell for each parent, but that would mean we couldn't decide to add a new column after parents | 17:57 |
yvl | btw, I don't understand why you need level id, and why you need two passes | 17:58 |
aelkner | hey, i got you saying level | 17:58 |
yvl | :D | 17:58 |
aelkner | to answer your question, the id is how to uniquely identify the layer, like with a person username | 17:59 |
yvl | why not title | 17:59 |
yvl | well nevermind | 18:00 |
yvl | ok, I really would like to run | 18:00 |
aelkner | the id and title may be different, you allow for that in the object | 18:00 |
th1a | OK, we should let yvl go home. | 18:00 |
th1a | Thanks yvl! | 18:00 |
yvl | thanks guys | 18:00 |
th1a | Can you do this tomorrow, same time? | 18:00 |
yvl | wee you tomorrow! | 18:00 |
yvl | see :D | 18:00 |
yvl | my God | 18:00 |
aelkner | cya then | 18:00 |
yvl | see you tomorrow :) | 18:00 |
replaceafill | bye yvl | 18:01 |
aelkner | yes, and please don't pee on us :) | 18:01 |
th1a | OK, maybe we should give menesis a chance... | 18:02 |
th1a | Any news menesis? | 18:02 |
menesis | I did not work on cando :) | 18:02 |
menesis | ok | 18:02 |
menesis | I made some progress on philippines project | 18:03 |
menesis | installed for them and saw the initial demo | 18:03 |
menesis | on evenings also prepared the release | 18:04 |
menesis | fixed a few smallbugs | 18:04 |
menesis | added a link to the student in popup from both gradebook and journal | 18:04 |
menesis | https://bugs.launchpad.net/schooltool.lyceum.journal/+bug/661243 | 18:05 |
menesis | merged translations, will do 2.1.0 releases/packages tonight | 18:05 |
th1a | OK. Great. | 18:06 |
th1a | Should we just push it to precise now and then really release it on the Precise release date to the other versions? | 18:07 |
th1a | If you know what I mean? | 18:07 |
menesis | is there a point to wait? | 18:07 |
th1a | We can have a coherent announcement on a predictable date. | 18:08 |
menesis | that date can be a few days earlier than precise ;) | 18:09 |
th1a | Well, I'm not ready to do it today. | 18:09 |
menesis | I can upload to ppa later | 18:10 |
th1a | That's my point. | 18:10 |
menesis | it takes some effort | 18:10 |
menesis | will not be today anyway | 18:10 |
menesis | but | 18:10 |
menesis | I will be on vacation next week | 18:10 |
menesis | without internet | 18:11 |
* th1a would appreciate it if his release manager would not schedule his vacations for release dates. | 18:12 | |
th1a | Since we only have two a year at the same time every year. | 18:12 |
menesis | the plan was to make the release and then go on vacation | 18:13 |
menesis | release candidate is tomorrow, not next week | 18:13 |
th1a | OK. | 18:14 |
th1a | ... | 18:14 |
menesis | with the Philippines project with tight schedule | 18:15 |
menesis | this turned out badly | 18:15 |
th1a | So now we're looking at the dreaded "release on Friday and go on vacation for a week" scenario. | 18:15 |
th1a | Maybe just push to precise now and wait for the rest. | 18:16 |
th1a | Until you get back. | 18:16 |
menesis | well, sorry, should have done the release last week | 18:16 |
th1a | Nobody is going to break an existing instance upgrading to precise (probably). | 18:16 |
th1a | The Philippines thing made things more complicated, I know. | 18:17 |
th1a | It is well worth it though. | 18:17 |
menesis | true | 18:17 |
th1a | Just push it to Precise and hold off on the rest. | 18:17 |
menesis | ok... | 18:18 |
th1a | That way we have no unexpected surprises to deployed instances. | 18:19 |
th1a | And I don't have to send yvl driving into the wilderness to find you. | 18:20 |
menesis | I don't see how waiting longer will reduce unexpected surprises | 18:20 |
th1a | Well... we'll have you here to push fixes. And I'll be using the Precise version. | 18:20 |
menesis | people upgrading immediately after release and reporting bugs? | 18:21 |
th1a | Yes. | 18:21 |
menesis | but there are many unsolved bugs, including exceptions, as it is | 18:22 |
th1a | Yes, but if people suddenly can't do something that they used to be able to we have to be able to push fixes immedately. | 18:23 |
th1a | Look, I'm perfectly fine with pushing the changes to precise now, announcing the release right on the precise release date, and then pushing to our PPA's a week later. | 18:24 |
menesis | understood | 18:24 |
th1a | OK. | 18:25 |
menesis | i will be back on 28th | 18:25 |
th1a | OK. Sounds good. | 18:26 |
th1a | Anything else, menesis? | 18:27 |
menesis | no | 18:27 |
th1a | OK. Thanks. | 18:27 |
th1a | Enjoy your vacation. ;-) | 18:27 |
th1a | replaceafill? | 18:27 |
menesis | hope so :) | 18:27 |
replaceafill | ok | 18:27 |
replaceafill | th1a, i made the change you suggested to the third-nav, about deactivating the arrows | 18:28 |
replaceafill | showed it to yvl and aelkner yesterday | 18:28 |
replaceafill | and they gave me more ideas :) | 18:28 |
th1a | I saw. | 18:28 |
replaceafill | i think i can do it, but i'm focusing on other (more important) stuff now | 18:29 |
replaceafill | like autosave | 18:29 |
replaceafill | and the ajax tabs | 18:29 |
th1a | That's what I was going to suggest. | 18:29 |
replaceafill | yes | 18:29 |
replaceafill | i did a little test on autosave and it worked | 18:30 |
replaceafill | but i'd like to finish the tabs first | 18:30 |
replaceafill | so i'm in the middle of that one now | 18:30 |
replaceafill | hope to have something to show tomorrow | 18:30 |
replaceafill | or friday for sure | 18:30 |
th1a | OK. | 18:31 |
* replaceafill done | 18:31 | |
th1a | Thanks replaceafill. | 18:31 |
th1a | One more thing aelkner. | 18:31 |
aelkner | yes? | 18:31 |
th1a | I need you to take a look at that contacts import bug from Australia. | 18:31 |
aelkner | i looked at it and am prepared to discuss it | 18:32 |
th1a | Are we creating unlinked self-contacts automatically for some reason? | 18:32 |
th1a | Go ahead. | 18:32 |
aelkner | ok, our code has an adpater IContact(IBasicPerson) which creates a bound contact | 18:33 |
aelkner | i guess we could call that the self contact | 18:33 |
aelkner | but the PersonImporter does not envoke IContact(person) | 18:33 |
aelkner | if, however, the user in question navigates to the link in flourish 'John Doe as Contact | 18:34 |
aelkner | that would cause the adapter to get called, which, in turn, would create the bound contact | 18:34 |
aelkner | so checking on the existence of the contact actually creates it :) | 18:35 |
aelkner | kind of like the uncertainty principle of the observer affecting the observed | 18:36 |
aelkner | but as for the part of the report that says they see the First and Last name in the contact | 18:36 |
th1a | Crap, I don't have a running 2.0 on this laptop. | 18:36 |
aelkner | i don't understand that | 18:36 |
aelkner | is this flourish, they are using | 18:36 |
th1a | Presumably, but we should ask. | 18:36 |
th1a | So you don't see any reason an UNLINKED self contact would be created on import. | 18:37 |
th1a | That's what they're describing as far as I can tell | 18:37 |
aelkner | if the Contact Persons and Contact Relationships sheets are empty as they suggest, not IContact call is made | 18:37 |
aelkner | that i can say for sure | 18:38 |
aelkner | btw, an unlined sel contact. how would one even know such a thing exists? | 18:39 |
th1a | Listed under contacts, I presume. | 18:39 |
aelkner | we don't list self contacts under contacts | 18:39 |
aelkner | you have to click the Manage Contacts link within the accordion | 18:39 |
aelkner | then there is the 'John Doe as self' link | 18:40 |
th1a | OK, so then I have no idea. | 18:40 |
th1a | OK, follow-up question time then. | 18:40 |
th1a | All right, thanks aelkner. | 18:40 |
aelkner | me, neither | 18:40 |
replaceafill | aelkner, they maybe went to /contacts | 18:40 |
replaceafill | and saw the imported persons there | 18:40 |
replaceafill | and that's why they're confused | 18:40 |
th1a | Right. | 18:40 |
replaceafill | they don't want the persons there | 18:41 |
aelkner | we should have them send us a screenshot | 18:41 |
replaceafill | afaict | 18:41 |
th1a | Can you send me a link to a running schooltool, replaceafill? | 18:41 |
replaceafill | http://69.164.203.135:6662/contacts | 18:41 |
replaceafill | sample data | 18:41 |
replaceafill | http://69.164.203.135:6662/persons/student011/contact | 18:42 |
replaceafill | i think that's what they mean | 18:42 |
replaceafill | "just first name and last name" | 18:42 |
replaceafill | and they only want to see "real contacts" there | 18:42 |
replaceafill | i mean in /contacts | 18:42 |
aelkner | that could be it | 18:43 |
th1a | OK. I should have looked at that first. | 18:43 |
replaceafill | D: | 18:43 |
replaceafill | :D | 18:43 |
aelkner | a ui change request | 18:43 |
aelkner | good thinking replaceafill | 18:43 |
replaceafill | maybe a checkbox or something to filter "bound contacts"... | 18:43 |
aelkner | 'personal contacts' would be perhaps more user friendly | 18:44 |
aelkner | the only other mention of them is the link which says 'User as contact' | 18:44 |
th1a | Well, that's exactly what they described. Blank contacts for users. | 18:45 |
th1a | Created by default -- is that only done by the importer? | 18:45 |
aelkner | asked and answered, your honor :) | 18:45 |
th1a | Why are those there at all? | 18:46 |
th1a | Where do they come from? | 18:46 |
aelkner | the code has to call IConact(person), the user has to do something to make that happen | 18:46 |
aelkner | visiting the 'User as contact' link is the only way i know of | 18:46 |
th1a | I don't think that's what we're looking at. | 18:47 |
replaceafill | aelkner, not really | 18:47 |
th1a | Unless someone did that on replaceafill's instance. | 18:47 |
replaceafill | aelkner, create a person using the ui | 18:47 |
replaceafill | then go to /contacts | 18:47 |
replaceafill | you'll see the person there | 18:47 |
aelkner | well, perhaps creating the person fires off a subscriber | 18:47 |
replaceafill | autovivify_person_contact | 18:48 |
replaceafill | :) | 18:48 |
th1a | Oh, it even happens when you just create them through the UI. | 18:48 |
replaceafill | yep | 18:48 |
th1a | Ah. | 18:48 |
aelkner | ah, no | 18:48 |
th1a | So, I guess the question is if there is a good reason for that. | 18:48 |
aelkner | it's the contacts list | 18:49 |
aelkner | that, why looking for it, creates it | 18:49 |
aelkner | maybe :) | 18:49 |
aelkner | someone calls IConact(person), that much has to be the case | 18:49 |
replaceafill | aelkner, you mean when we call /contacts, the cocntact gets created? | 18:49 |
th1a | This is peculiar. | 18:50 |
aelkner | sorry, i missed your autovivify_person_contact comment while i was groking, typing | 18:50 |
aelkner | replaceafill, what file is that in? | 18:50 |
replaceafill | aelkner, :) | 18:50 |
th1a | If you go to the person, there isn't a self contact. But if you go to /contacts, there is a blank self record. | 18:50 |
replaceafill | schooltool.contact.basicperson.PersonAddedSubscriber | 18:50 |
replaceafill | lol | 18:50 |
replaceafill | it's called: | 18:50 |
replaceafill | PersonAddedSubsciber | 18:51 |
replaceafill | :D | 18:51 |
aelkner | yes, that's it | 18:51 |
th1a | This seems to have more to do with the /contacts view itself. | 18:52 |
aelkner | th1a, yes, sorry for the confusion | 18:52 |
th1a | It is just confusing. ;-) | 18:52 |
aelkner | when a person is created, no additional code is required in a view class to make the contact be created | 18:52 |
aelkner | it happens due to the person added subscriber we just mentioned | 18:53 |
th1a | Why doesn't this show up in the contacts section of the person view? | 18:53 |
aelkner | so that's a model feature that we are bound to at this point | 18:53 |
aelkner | it isn't a contact | 18:53 |
replaceafill | th1a, they are two different type of objects | 18:53 |
th1a | Then why is it in /contacts? | 18:53 |
replaceafill | the Contacts accordion lists only one type | 18:54 |
replaceafill | not the bound one | 18:54 |
aelkner | it is a contact object | 18:54 |
aelkner | but, in the ui, we don't list it | 18:54 |
replaceafill | because /contacts lists both types | 18:54 |
th1a | So what if we just make /contacts only show one type? | 18:54 |
aelkner | replaceafill had suggested a checkbox, but we could just eliminate them unconditionally | 18:55 |
replaceafill | -1 | 18:55 |
th1a | What good are they? | 18:55 |
replaceafill | but that's my 0.02 :) | 18:55 |
aelkner | the user needs an email, too | 18:55 |
aelkner | not just the email of their parents, etc. | 18:55 |
aelkner | any contact info which is needed for parents is also needed for the student or any teacher for that matter | 18:56 |
aelkner | we just have a confusing way of getting to the info in the ui | 18:56 |
th1a | OK. | 18:56 |
aelkner | we could show the self contact in the contacts accordion | 18:57 |
th1a | Well, now it seems to me that I can't see the self contact data from the person at all. | 18:57 |
aelkner | and stop asking them to hit Manage Contact -> 'User as contact' | 18:57 |
th1a | So THAT'S a bug. | 18:57 |
menesis | Add > User as Contact | 18:57 |
menesis | in the sidebar | 18:57 |
th1a | I would say that ideally the self contacts wouldn't show up under /contacts if they had no data. | 18:58 |
th1a | But self contacts MUST show up from the person view (if they have data). | 18:58 |
aelkner | may i recommend something? | 18:58 |
th1a | Sure. | 18:58 |
aelkner | the contacts accordion, it is the obvious place for the user to go, so making the user go to | 18:59 |
th1a | Actually, I don't know why the self contact exists before doing "(Person) as Contact." | 18:59 |
aelkner | Manage Contacts in order to see the self contact is the problem | 18:59 |
aelkner | even if there is no info, i'd recommend just adding a line at the top | 19:00 |
th1a | Yes the self contact MUST be in the accordion. | 19:00 |
replaceafill | i'd add a new accordion "Contact Information", for bound contact | 19:00 |
replaceafill | and leave the "Contacts" accordion as it is | 19:00 |
aelkner | even if empty, the user's name could appear with pencil | 19:00 |
th1a | In many, many, many cases there is no self contact information. | 19:00 |
aelkner | no email, for instance | 19:01 |
th1a | Essentially every student under the age of 12. | 19:01 |
aelkner | still, a single line with student name and pencil at the top of the accordion wouldn't be hostile imo | 19:01 |
th1a | I don't see it as necessary. | 19:01 |
th1a | I just don't know why we are automatically creating this blank object for every person. | 19:02 |
th1a | We should just create it as needed. | 19:02 |
th1a | And treat it as a regular contact under contacts. | 19:02 |
aelkner | let's table that question for tomorrow when yvl can weigh in | 19:02 |
aelkner | he may have had his reasons for doing it that way | 19:02 |
th1a | I think he's responsible for autovivifying. | 19:02 |
th1a | Yes, this isn't a super-quick fix. | 19:03 |
replaceafill | th1a, he is | 19:03 |
aelkner | that's what i'm saying, so he needs to weigh in | 19:03 |
th1a | OK. In that case... | 19:03 |
* th1a drops the bag of gravel. | 19:03 | |
replaceafill | http://bazaar.launchpad.net/~schooltool-owners/schooltool/flourish/revision/2530 | 19:04 |
replaceafill | :) | 19:04 |
replaceafill | long time ago | 19:04 |
aelkner | how did you find that? | 19:04 |
aelkner | what bzr command did you use? | 19:04 |
replaceafill | bzr annotate | 19:04 |
replaceafill | oops | 19:04 |
replaceafill | http://bazaar.launchpad.net/~schooltool-owners/schooltool/flourish/revision/2531 | 19:05 |
replaceafill | :D | 19:05 |
th1a | I'll be in the meeting for part of the time tomorrow, but then I have to Skype with Helen from the Shuttleworth Foundation. | 19:05 |
*** menesis has quit IRC | 21:32 | |
*** paulproteus has quit IRC | 21:48 | |
*** paulproteus has joined #schooltool | 21:52 | |
*** menesis has joined #schooltool | 23:27 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!