*** replaceafill has joined #schooltool | 01:03 | |
*** ignas has joined #schooltool | 01:24 | |
replaceafill | aelkner, zyt? | 01:29 |
---|---|---|
*** ignas has quit IRC | 02:03 | |
*** replaceafill has quit IRC | 02:04 | |
*** replaceafill has joined #schooltool | 02:17 | |
*** th1a_ has joined #schooltool | 02:18 | |
*** replaceafill has quit IRC | 02:24 | |
*** replaceafill has joined #schooltool | 02:38 | |
aelkner | replaceafill, ayt? | 02:51 |
replaceafill | hey aelkner | 02:51 |
aelkner | hey | 02:51 |
aelkner | 'tsup? | 02:52 |
replaceafill | listen, can we talk like in a hour? will you be around? | 02:52 |
aelkner | yep | 02:52 |
replaceafill | i have a few questions about the gradebook | 02:52 |
replaceafill | but i have to go out now | 02:52 |
aelkner | ok | 02:52 |
replaceafill | will ping you in about one hour, ok? | 02:52 |
aelkner | right | 02:52 |
replaceafill | thanks aelkner | 02:52 |
aelkner | np | 02:53 |
*** replaceafill has quit IRC | 02:57 | |
*** th1a_ has quit IRC | 03:08 | |
*** povbot has joined #schooltool | 03:22 | |
*** replaceafill has joined #schooltool | 03:55 | |
aelkner | hey replaceafill | 03:56 |
replaceafill | hey aelkner | 03:56 |
replaceafill | do you have time? | 03:56 |
replaceafill | just like 3 questions | 03:56 |
aelkner | i'm here, what's up? | 03:56 |
replaceafill | did you the latest bug i reported? | 03:56 |
replaceafill | https://bugs.launchpad.net/schooltool.gradebook/+bug/581825 | 03:56 |
aelkner | i'd say using the title for the value is unnecessary and therefore incorrect, would you agree? | 04:00 |
replaceafill | unnecessary? | 04:00 |
aelkner | the value is not visable to the user, right? | 04:01 |
replaceafill | right | 04:01 |
replaceafill | but how can we identify the ScoreSystem uniquely? | 04:01 |
aelkner | so it could be anything we want, an id for instance | 04:01 |
aelkner | it's __name__ would probably work | 04:01 |
aelkner | anything that makes it unique | 04:01 |
replaceafill | but correct me if i'm wrong here, some ScoreSystem are not persistent | 04:01 |
replaceafill | i tried the __name__ attribute and I got some errors for some scoresystems | 04:02 |
aelkner | you could identify them a different way in and except clause perhaps? | 04:03 |
aelkner | id(ss) | 04:03 |
aelkner | if it isn't persistent, then its in code | 04:03 |
aelkner | and each one will have a unique id | 04:03 |
aelkner | so, your method for converting an object to the value | 04:04 |
aelkner | can be used against all scoresystems in your list to match the one the user selects | 04:04 |
replaceafill | that brings me another question | 04:05 |
replaceafill | if we do that (assigning id(ss)), will we break schooltool.gradebook.browser.report_card.ReportScoreSystem | 04:05 |
replaceafill | those __setattr__ and __getattr__ seem like they depend a lot of names of things | 04:06 |
replaceafill | or probably i don't get them right | 04:06 |
replaceafill | i mean, understand them | 04:07 |
replaceafill | rv = None?? | 04:07 |
replaceafill | rangevalue? | 04:07 |
aelkner | so much code is needed to so such a little thing with z3c forms | 04:11 |
replaceafill | :) | 04:12 |
aelkner | ok, so when adding a report activity using the add view | 04:13 |
aelkner | the score system you chose for that activity can either be an existing one or a generated one | 04:14 |
replaceafill | generated one means RangedValuesScoreSystem, right? | 04:15 |
aelkner | that's what the vocabulary does, delivers the existing one and one null one with value 'ranged' | 04:15 |
aelkner | that causes that virtual object to create one | 04:15 |
aelkner | so yeah, that one is set to self.context.scoresystem | 04:17 |
aelkner | and has no __name__ | 04:17 |
replaceafill | since it's an attribute of the ReportActivity | 04:18 |
aelkner | but why wouldn't 'ranged' which is nto what the user see be an ok value? | 04:18 |
aelkner | right | 04:18 |
replaceafill | 'ranged' is messed up because the translation you get | 04:18 |
replaceafill | rangedTerm = UtilityTerm('ranged', _('-- Use range below --')) | 04:19 |
aelkner | it shouldn't be translated | 04:19 |
aelkner | see how it isn't wrapped with _() | 04:19 |
aelkner | it's an id, not a use visable | 04:19 |
aelkner | user | 04:19 |
aelkner | so as long as we don't set the option value to _('-- Use range below --') | 04:20 |
replaceafill | look at the init of UtilityTerm: | 04:20 |
aelkner | ot will never be aything but 'ranged'n | 04:20 |
replaceafill | def __init__(self, value, token): | 04:20 |
replaceafill | the token parameter is used as the value of the <option...> element | 04:21 |
replaceafill | and in this case the token is translated in the view | 04:21 |
replaceafill | so, the form gets the translated token back | 04:21 |
replaceafill | it looks for the translated string in the vocabulary and doesn't find it | 04:22 |
aelkner | why is the token translated in the view? | 04:22 |
*** ignas has joined #schooltool | 04:22 | |
replaceafill | z3c.form translates it because it sees the _(...) | 04:23 |
aelkner | it is the add scoresystem view we're talking about, right? | 04:23 |
replaceafill | no! | 04:23 |
replaceafill | class ReportActivityAddView(form.AddForm): | 04:23 |
aelkner | sorry, that's what i meant | 04:23 |
aelkner | my bad | 04:23 |
replaceafill | ah ok | 04:23 |
replaceafill | yep, that's the one | 04:23 |
aelkner | what line of code are you refering to? | 04:24 |
replaceafill | 119 | 04:24 |
aelkner | so the second parameter is translated, but the first isn't | 04:25 |
replaceafill | yes | 04:25 |
replaceafill | the first isn't showed to the user | 04:25 |
replaceafill | the second is and should | 04:25 |
replaceafill | i think we need a vocabulary that handles tokens AND titles | 04:26 |
replaceafill | titletokenized something something :) | 04:26 |
replaceafill | the title is shown to the user | 04:26 |
replaceafill | and can be anything | 04:26 |
replaceafill | according to what i've read tokens should be ascii :) | 04:27 |
aelkner | yeah, we can't change the option field because we use the macro which generated it itself | 04:27 |
replaceafill | ? | 04:27 |
aelkner | that could be the ticket | 04:27 |
replaceafill | can you rephrase that please? | 04:28 |
aelkner | never mind, i was just saying that i forgot that we couldn't put what we want for the option field | 04:28 |
aelkner | like when you have your own page template and don't use form macros | 04:28 |
aelkner | that's why i don't like using form macros and zc3 forms because you're always having to hack everything | 04:29 |
replaceafill | i guess we just don't use them well :P | 04:29 |
aelkner | i'm used to making the buttons and other fields whatever way i like | 04:29 |
replaceafill | at least me ;) | 04:29 |
aelkner | who could? | 04:29 |
replaceafill | :)) | 04:29 |
replaceafill | well, i'll keep digging on that bug | 04:30 |
replaceafill | but i had two other questions | 04:30 |
aelkner | ask away | 04:30 |
replaceafill | ok, i talked to th1a about the Salvadoran use case for the gradebook | 04:30 |
replaceafill | he recommended using report sheets (as we talked about today in the meeting) | 04:30 |
aelkner | yep | 04:31 |
replaceafill | there will be three sheets, for three trimesters | 04:31 |
replaceafill | trimester, is that the right word? | 04:31 |
replaceafill | three month period | 04:31 |
replaceafill | :) | 04:31 |
aelkner | yes :) | 04:31 |
replaceafill | ah ok | 04:31 |
replaceafill | so, they use three trimesters | 04:31 |
replaceafill | but at the end of each trimester they need a "trimester average" | 04:32 |
replaceafill | can report sheet calculate average? | 04:32 |
replaceafill | do you have the average column in report sheets? | 04:32 |
aelkner | deployed report sheets will work the same in the gradebook, so yes, the gradebook view will show the average | 04:33 |
replaceafill | great | 04:33 |
replaceafill | and finally, the teachers need the final grade, the average of the three trimesters | 04:33 |
replaceafill | so th1a suggested a summary worksheet | 04:33 |
replaceafill | if i recall correctly | 04:34 |
aelkner | sounds right | 04:34 |
aelkner | in the preferences view, the user can create one | 04:34 |
replaceafill | summary worksheets work with linked activities, correct? | 04:34 |
aelkner | yes | 04:34 |
replaceafill | but it's not possible to link activities in a report sheet, right? | 04:35 |
replaceafill | just regular worksheets | 04:35 |
replaceafill | or at least i couldnt find it in the UI | 04:35 |
aelkner | there may be code to block report sheets in providing that list | 04:36 |
aelkner | that may or may not have been necessary, don't remember off hand | 04:37 |
replaceafill | but in "theory" it could be possible to create summary worksheets for the report sheets, correct? | 04:37 |
aelkner | definitely | 04:37 |
aelkner | the only thing that distinguishes a report sheet is that it's deployed | 04:38 |
aelkner | that helps distinguish it when we need it to | 04:38 |
replaceafill | ah ok | 04:38 |
replaceafill | well, i'll look into that too then | 04:39 |
replaceafill | thanks for the help aelkner | 04:39 |
aelkner | no problem, always a pleasure :) | 04:39 |
replaceafill | i feel like i'm bending the gradebook :P | 04:39 |
aelkner | well, if you make any decisions like opening up report sheets to linkage | 04:40 |
aelkner | just make sure th1a gives you the double-checked go-ahead | 04:41 |
replaceafill | yes | 04:41 |
aelkner | i mean, give him a chance to consider if he see any implications | 04:41 |
aelkner | but first make sure that you don't find any coding snags doing it | 04:41 |
replaceafill | yes, i'm going to report a new bug about that too, so he can read it | 04:41 |
aelkner | cool | 04:41 |
replaceafill | thanks man | 04:42 |
aelkner | np | 04:42 |
*** th1a has quit IRC | 06:07 | |
*** ignas has quit IRC | 06:17 | |
replaceafill | aelkner, u up? :) | 08:36 |
*** replaceafill has quit IRC | 08:48 | |
*** yvl has joined #schooltool | 09:02 | |
*** alga_ has joined #schooltool | 09:23 | |
*** alga has joined #schooltool | 09:23 | |
*** replaceafill has joined #schooltool | 10:00 | |
replaceafill | yvl, you around? | 10:20 |
yvl | good evening, replaceafill | 10:20 |
replaceafill | good morning, yvl :) | 10:21 |
replaceafill | i'm using the schooltool.gradebook trunk | 10:21 |
replaceafill | and i compiled the es_SV translations | 10:21 |
replaceafill | and they work if i set up the lang in my browser | 10:21 |
replaceafill | however, if i erase all my languages in the browser | 10:21 |
replaceafill | and try to set up 'lang es_SV' in schooltool.conf in my instance | 10:22 |
replaceafill | the language variation (_SV) doesnt work | 10:22 |
replaceafill | do i have to do something extra to make the lang work from the schooltool.conf file? | 10:22 |
yvl | hmm, let me check | 10:23 |
replaceafill | if i set 'lang es' it works with the spanish (es) translations | 10:23 |
replaceafill | i tracked it down to schooltool.app.main.setLanguage | 10:24 |
replaceafill | and the lang == 'es_SV' is set correctly | 10:24 |
replaceafill | maybe i need to set up something in the OS... | 10:25 |
yvl | well, it looks like a bug | 10:25 |
replaceafill | :( | 10:26 |
yvl | either in .conf example or in code ;) | 10:28 |
replaceafill | i bet on .conf :P | 10:28 |
* yvl too | 10:28 | |
replaceafill | ah wonderful! | 10:29 |
replaceafill | it's not es_SV, it's es-sv >:( | 10:30 |
replaceafill | 'lang es-sv' works | 10:30 |
replaceafill | # Examples: | 10:30 |
replaceafill | # lang en_UK | 10:30 |
yvl | yep | 10:31 |
* yvl tested that too | 10:31 | |
replaceafill | that should be en-gb maybe | 10:31 |
yvl | http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 | 10:31 |
replaceafill | :| | 10:31 |
yvl | can you file a bug? | 10:32 |
replaceafill | on the .conf template, correct? | 10:32 |
replaceafill | i mean, the example is misleading | 10:32 |
yvl | conf template, also ST book: http://book.schooltool.org/htmlhelp/translations.html | 10:33 |
replaceafill | ah | 10:33 |
yvl | not sure about what to do with deb-installed .conf's | 10:33 |
replaceafill | :S | 10:34 |
yvl | just subscribe menesis also ;) | 10:34 |
replaceafill | ah ok | 10:34 |
replaceafill | yvl, https://bugs.launchpad.net/schooltool/+bug/582136 | 10:48 |
yvl | thanks :) | 10:49 |
replaceafill | yvl, could you please check this ugly hack when you have time https://code.launchpad.net/~replaceafill/schooltool.gradebook/schooltool.gradebook_fix_581825/+merge/25489 | 10:54 |
yvl | looking... | 11:01 |
aelkner | replaceafill, why did the tests change to have a dash at the end of the score systems | 11:09 |
replaceafill | aelkner, punycode encoding | 11:09 |
aelkner | meaning? | 11:10 |
replaceafill | safer to use as tokens | 11:10 |
replaceafill | or value=... attributes for <option ...> elements | 11:10 |
aelkner | ah | 11:10 |
aelkner | got it, so since those tests are for values, the changes don't mean changes to what the user sees | 11:11 |
replaceafill | yep | 11:11 |
aelkner | cool | 11:12 |
replaceafill | i still see it like a hack | 11:12 |
replaceafill | that append at the beginning... | 11:12 |
replaceafill | ('ranged', 'ranged', _(...)) | 11:12 |
aelkner | you often need to mix apples and oranges in an option field | 11:13 |
aelkner | most of the time, you'll have a bunch of choices | 11:14 |
aelkner | and 'none of the above' as the no-choice choice | 11:14 |
yvl | well ideally the ranged score system should be wired as utility... | 11:15 |
aelkner | it's hacky if you do that, too | 11:16 |
aelkner | there's no way around it being hacky as it's a complicated problem | 11:17 |
replaceafill | i thought persistent utilities were a bad idea | 11:17 |
aelkner | i never said that | 11:17 |
replaceafill | in plugins i mean | 11:17 |
aelkner | the scoresystems that users want to create | 11:17 |
aelkner | are saved as persistent utilities | 11:18 |
aelkner | i also evolved ones that were once in code to the same place, the site manager | 11:18 |
aelkner | together, they make up the choices for the user when creating a report activity | 11:19 |
aelkner | except | 11:19 |
yvl | actually this (I think) breaks the database if you turn off the gradebook | 11:19 |
aelkner | if the user wants to dynamically create a ranged values score system | 11:19 |
aelkner | which is NOT a persistent utility | 11:19 |
replaceafill | yvl, yes, you lose references, right? | 11:19 |
yvl | well, you loose the code :) | 11:20 |
aelkner | yes, that could be | 11:20 |
replaceafill | btw aelkner, we can delete persistent scoresystems, right? | 11:20 |
aelkner | you can hide them | 11:20 |
replaceafill | there's a Delete? checkbox | 11:20 |
yvl | I'll rework the scoresystem storage (at some point) if nobody minds | 11:20 |
replaceafill | aelkner, so, Delete? is actually Hide? | 11:20 |
aelkner | yvl: better be sure to know what you're doing | 11:20 |
aelkner | there's a lot of ways the scoresytems are being used | 11:21 |
aelkner | that might be a bigger project than you think is all i'm saying | 11:22 |
yvl | that's also the part I'm not very fond of | 11:22 |
yvl | yes | 11:22 |
yvl | I know it won't be trivial :) | 11:22 |
aelkner | well, there are application needs that drive things like this | 11:22 |
replaceafill | aelkner, if I Delete/Hide a scoresystem, it still appears in the report activity options | 11:22 |
aelkner | the vocabulary need to filter that | 11:23 |
aelkner | good catch | 11:23 |
aelkner | yvl: mostly, such a project would require extensive mind-share, not a solo-flyer | 11:25 |
yvl | I'm certainly not planning to do "stuff" to gradebook's code and then just leave it :) | 11:27 |
aelkner | :) | 11:28 |
yvl | and anyway, one of the goals would be to check if the way scoresystems are stored / used can be simplified | 11:29 |
replaceafill | + hidden = getattr(utility, 'hidden', False) | 11:30 |
replaceafill | + if not hidden: | 11:30 |
aelkner | exactly | 11:31 |
replaceafill | :) | 11:31 |
aelkner | yvl: in theory, they need not be utilities, but changing them to be objects | 11:32 |
aelkner | stored off o app['schooltool.gradebook'] would solve the plugin problem | 11:33 |
replaceafill | is it me or pypi is down? | 11:33 |
yvl | pypi is down :( | 11:33 |
yvl | aelkner, yes, something like that | 11:33 |
aelkner | but that means lots of changes to lots of code where score systems are looked up and stored | 11:35 |
aelkner | doable, but large task | 11:35 |
aelkner | the advantage of utilities is getUtilitiesFor(..) | 11:35 |
aelkner | one idea that wold allow plugins to install utilities to the site manager | 11:36 |
aelkner | is enforcing an orderly remval of plugins with a AppRemove event like AppInit | 11:37 |
yvl | I'm thinking more along the lines: here's a mechanism to get a "bucket" where you can store the plugin's data | 11:38 |
yvl | please use only this bucket for your data and not other places in ST | 11:38 |
yvl | also something to generate buckets for "multiple objects" | 11:39 |
yvl | like "for every person - schoolyear pair create a something to store my additional data" | 11:39 |
yvl | and then leave it up to ST core to take care of the buckets | 11:40 |
yvl | the thing with "AppRemove" | 11:40 |
yvl | is that it is code | 11:40 |
yvl | and when you remove plugin, you don't have the plugin code any more | 11:40 |
aelkner | i was thinking, by orderly removal, forcing removal of plugin using a tool | 11:41 |
aelkner | ut i suppose that wold be a bit inconvenient | 11:41 |
yvl | precisely | 11:41 |
yvl | I'd rather notify a plugin that it has been disconnected for a while | 11:42 |
yvl | and it's up to the plugin to make it's data "synchronised" with the rest of ST | 11:42 |
yvl | the plugin can the nuke the old data | 11:42 |
yvl | or check if there are new schoolyears or something | 11:42 |
yvl | or even ask users in some web page what they want to do with the old data :) | 11:43 |
aelkner | you have the 'what if' machine in full gear :) | 11:44 |
yvl | [yay, pypi is up again] | 11:44 |
yvl | aelkner, I've been tossing the unpluggable plugin idea for a while now, so... ;) | 11:44 |
aelkner | :) | 11:45 |
yvl | but the most important part is that plugin developers should be clear about what they have to do | 11:45 |
yvl | and what they need not worry about | 11:45 |
*** Aiste has joined #schooltool | 11:46 | |
*** yvl has quit IRC | 12:47 | |
*** replaceafill has quit IRC | 12:48 | |
*** aelkner has quit IRC | 13:06 | |
*** aelkner has joined #schooltool | 13:06 | |
*** ignas has joined #schooltool | 13:20 | |
*** Aiste has quit IRC | 15:19 | |
*** menesis has quit IRC | 15:44 | |
*** menesis has joined #schooltool | 16:37 | |
*** replaceafill has joined #schooltool | 17:14 | |
*** mgedmin has joined #schooltool | 17:20 | |
*** ignas has quit IRC | 20:03 | |
*** mgedmin has quit IRC | 20:18 | |
*** alga_ has quit IRC | 20:41 | |
*** alga has quit IRC | 20:41 | |
*** menesis has quit IRC | 20:50 | |
*** alga has joined #schooltool | 21:55 | |
*** alga_ has joined #schooltool | 21:55 | |
*** jelkner has joined #schooltool | 22:13 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!