IRC log of #schooltool for Monday, 2011-07-25

*** ignas has quit IRC02:52
*** ignas has joined #schooltool03:24
*** ignas has quit IRC03:47
*** replaceafill has joined #schooltool03:48
replaceafillaelkner you there?03:49
aelknerreplaceafill, hey03:55
replaceafillhey aelkner03:56
replaceafilljust something i found today:03:56
replaceafillgo to the add schoolyear/term forms03:57
replaceafilland hit submit with no values03:57
replaceafillyou'll get an error03:57
replaceafillit's the simplefieldvalidators03:57
aelknerok03:57
replaceafillconfirm if you get the error03:57
aelkneryes03:58
replaceafill:)03:58
aelknerso....03:58
replaceafilli thought you wrote those...03:58
aelkneroh03:58
aelknerdon't give me credit for something i didn't do :)03:59
replaceafillreally?03:59
replaceafilloh sorry03:59
replaceafilli thought you did /schoolyears and /terms03:59
replaceafilland the add forms03:59
replaceafillfor those03:59
aelkneryeah, but i didn't have to do anything to get those errors to come out03:59
replaceafilli wonder who converted them to simplefieldvalidators04:00
aelknerthat's just the field validators that already existed04:00
replaceafillthey wer invariants04:00
aelkneri added special form validators for flourish for handling errors that had to do with04:00
aelknermultiple fields at the same time, like first last dates04:01
replaceafill2850.1.168 aelkner | class FlourishInvalidDateRangeError(ValidationError):04:01
aelknerexactly04:01
aelknerso i didn't have to add anything for Required field missing04:01
aelknerof even invalid date04:02
replaceafillyes, but your validator is getting called04:02
replaceafillclass FlourishOverlapValidator(SimpleFieldValidator):04:02
aelknerit's a form validator, so it needs to get called04:02
replaceafilllast_value = last_widget._toFieldValue(last_value)04:02
replaceafillthat's the line with the error04:02
replaceafillsee the except: below04:03
replaceafillit's returning04:03
replaceafillit means, success04:03
aelkneryes, that's a hack04:03
aelknerif the error is caught by the field validarot04:03
aelkneri hate typing that word04:03
aelknervalidator04:03
aelknerthen it will already be shown to the user04:03
replaceafillvalue is NOne04:04
aelkneri'm just returning safely at that point because the rest of the form tests are not necessary at that point04:04
replaceafillyou're not returning safely04:04
replaceafillyou're saying there's no error04:04
replaceafilland there is04:04
replaceafillexcept:04:05
replaceafill    return04:05
aelkneryeah, but it was already caught04:05
replaceafillby who?04:05
aelknerthe field validators04:05
aelknerthis is a form validator04:05
replaceafillit's a bare except!04:05
replaceafillwith no type for the exception04:05
replaceafillif you get any kind of error in the method04:05
replaceafillyou just say "it's ok"04:05
replaceafilland return04:06
aelknerwhatever error i would get, the field validator would get, so it's redundant for me to habdle it04:06
aelkneri don't want to raise a form error!04:06
aelknerit's a field error, and it will be handled04:07
replaceafillok, try this:04:07
replaceafilldisable your validator04:07
replaceafilland submit the form with no value04:07
replaceafillyou'll get the appropriate behaviour04:07
replaceafillrequired input04:07
aelknerwait, stp rght there04:07
aelknerwhat behavior does the user see that is not appropriate04:07
aelkner?04:07
replaceafillthe exception?04:07
aelknerthe user sees the exception?04:08
replaceafilli see it04:08
replaceafilldont you?04:08
aelknerok, what was the input to new school year again?04:08
replaceafillnothing04:09
aelknerok, so i entered nothing and hit Submit, and i get a form error at the top:04:09
aelknerPlease correct the marked fields below04:09
aelknernext to the three fields, i see Required input is missing04:09
aelknerthis is not an exception04:09
aelknerthis is clean output to the user04:09
* replaceafill goes to check04:10
replaceafill  File "/home/replaceafill/.buildout/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/widget.py", line 483, in _getCurrentValueHelper04:11
replaceafill    input_value = self.getInputValue()04:11
replaceafill  File "/home/replaceafill/.buildout/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/widget.py", line 407, in getInputValue04:11
replaceafill    value = self._toFieldValue(self._getFormInput())04:11
replaceafill  File "/home/replaceafill/.buildout/eggs/zc.datetimewidget-0.7.0-py2.6.egg/zc/datetimewidget/datetimewidget.py", line 330, in _toFieldValue04:11
replaceafill    return self.context.missing_value04:11
replaceafillForbiddenAttribute: ('missing_value', <schooltool.schoolyear.schoolyear.SchoolYear object at 0x9396c80>)04:11
replaceafilllet me see if it happens in my online sandbox04:12
aelknertry my demo instance: http://69.164.203.135:36660/schoolyears04:13
aelknerit doesn't happen there either04:13
aelknermaybe you haven't merged your own branch with trunk recently enough?04:13
replaceafilli just did04:14
replaceafillgot your changes from like 30 mins ago04:14
aelknerok, never mind that then04:14
aelknercan you give me a url where this crash happens?04:14
replaceafillhttp://69.164.203.135:6660/schoolyears/2011/add.html04:15
replaceafilli just updated to trunk04:15
replaceafilli wanted to add two terms to 201104:16
replaceafillbut i made a mistake and added the first for the whole year04:16
aelknerman, something funky on your instance04:16
replaceafillwhen i tried to add the second i got the error04:16
aelknerreplaceafill, sorry, i was lying04:19
aelknerit is a field validator04:19
replaceafilllier! :P04:19
replaceafilllet me try something04:19
aelknerso it should raise an error if it gets one04:19
replaceafilli'll stop my instance04:19
replaceafillyeah04:19
replaceafilli'm not friend with bare excepts04:19
aelknertry reraise04:19
aelkneras a replacement for return04:20
aelknerand exception e:04:20
aelkneri guess it's reraise(e)?04:20
aelkneri don't remember04:20
replaceafillhttp://69.164.203.135:6660/schoolyears/add.html04:21
replaceafillthere04:21
replaceafillno Data.fs04:21
replaceafilli mean, fresh Data.fs04:21
replaceafilli thought i was the Data.fs04:21
replaceafillbut it's not04:21
replaceafillcould you try with a fresh Data.fs?04:22
aelkneri just tried it and it doesn't crash04:25
aelkneri hit submit with no data in add school year04:25
aelknerit gave me good errors04:25
aelknerthen i added a valid school year04:25
aelknerthen i went to add a term to that year, bitting Submit with no data, good errors04:26
aelkneri added a good term, no problem04:27
replaceafillweird04:27
replaceafillif we both have trunk :(04:27
replaceafilli'll create a new sandbox just to test04:27
aelkneri'm working off of my branch, but i could try with trunk now04:27
aelkneri never ran my tunk sandbox, just used it for merging04:28
aelknerit's downloading eggs now04:28
replaceafillmine too04:29
replaceafillaelkner got it!04:34
replaceafillwell, it's my last change04:34
replaceafillto customize the error classes04:35
aelknerin trunk?04:36
replaceafillyes04:36
replaceafillskin.flourish.form.FlourishErrorViewSnippet04:36
aelkneri don't have that class in that file04:38
aelknerwhat revision in trunk is it?04:38
aelkneroh, the last one04:38
replaceafill301904:39
replaceafillyes04:39
aelkneryou pushed that right after me :)04:39
aelkneri didn't think to pull immediately after pushing04:39
replaceafillah!04:39
aelknerso what happened?  did you try changing the validator to reraise?04:40
replaceafilli inserted a pdb before the except04:40
replaceafilland you get a ForbiddenAttribute04:40
aelknerwhat if you say exception e:04:41
aelknerreraise e04:41
aelkneror whatever sytanx is correct04:41
aelkneri mean the empty except is already there04:41
aelknerthat's what i'm suggesting you try changing04:42
replaceafilli know that's the problem04:42
replaceafillbut i don't understand why the new viewsnippet shows it04:42
replaceafilland the old one doesnt04:42
aelknerlet me take a closer look04:42
aelkneryvl would not like:04:44
aelknerclass python:view.error is not None and 'error' or None04:44
aelkneranything that needs python needs a view method in his opinion04:44
aelknerand the thing is, he doesn't mind:04:44
aelknerclass python view.someMethod(error)04:45
aelknerit's just having the python logic in there that is the no-no04:45
replaceafillok, i'll ask him04:45
aelkneri'm guessing the idea is that view classes can be tested easily with unit tests04:45
aelknerusing a fake Request object, and an actual context, the test that your talking about cold be made04:45
aelkneras a unit test04:46
aelknerthis is only a guess as to why he doesn't wat the python logic04:46
aelknerbut, yeah, bring it up at the meeting if you could04:46
aelkneranyway, still looking...04:46
aelknerok, so the only relavent lines to the problem are the registration and definition of the snippet class04:48
replaceafillyes04:48
aelknerso you're capturing an error too soon perhaps04:49
aelkneri think you should try the reraise04:49
replaceafillwill do04:49
aelkneri think you exposed my bug04:49
replaceafillafter i understand how i exposed it :D04:49
aelkneri figured i could return because it worked!04:49
aelknerany tests against it would pass04:49
aelknerhowever04:49
replaceafillreturn means "success" in validators04:49
aelkneri was relying on a side-effect04:50
aelknerand you removed it, darn you :)04:50
replaceafilli wonder why it's not catched in the z3c.form version04:50
replaceafillanyway, i'll look into it04:50
replaceafillthanks for the help aelkner04:50
aelkneri give you permission to speculate on that one :)04:50
replaceafillsorry for the noise :)04:50
aelkneryeah, np04:50
aelknerbut what's the status?04:51
aelkneris the reraise fix correct?04:51
replaceafilli havent tried it yet, i'm debuggind the viewsnippet04:51
replaceafillturning it on and off04:51
replaceafilland checking the flow04:51
replaceafillit's a nice way to set the error class, but i don't want it to be a problem for us04:52
replaceafillso if i notice it's doing something wrong i'll remove it04:52
aelknersure, but if you are exposing a false reliance n side-effect, that's worth removing, too04:52
replaceafilldefinitely04:53
aelknerlet me know when you've reraised04:53
aelknerreplaceafill, btw, the curios thing was that if i didn't do the try: except:, it wouldn't work04:55
replaceafillwhat were you getting?04:55
aelknerbut whule pdb'ing, i realized i could pass the buck along04:55
aelkneri don't remember04:55
replaceafillah ok04:55
aelknerbut if you have your hands in there, you'll be the one to tell me what you get04:56
aelkneryou could try commenting out the registration of your validator and see what happens with no try: except:04:56
aelkneroh, that's what you were turning on and off04:57
replaceafillaelkner found it!05:33
replaceafillpermission issue on the adapter registration05:33
replaceafill:)05:33
replaceafilli'll leave the simple field validators alone :D05:34
replaceafillfix pushed to trunk05:35
aelknerreplaceafill, oh, man, that's not friendly, making you go through all that just for permission issue05:40
aelknerbut that's zope sometimes05:40
replaceafill:D05:41
aelkner+1 for not changing what i did until we have test coverage05:41
replaceafillagree05:41
replaceafillif it aint broken D:05:42
replaceafill:D05:42
*** aks has joined #schooltool06:15
*** aks has joined #schooltool06:15
*** aks has quit IRC06:48
*** replaceafill has quit IRC06:49
*** aks has joined #schooltool06:54
*** yvl has joined #schooltool09:43
*** ignas has joined #schooltool10:12
*** aks_ has joined #schooltool11:55
*** aks has quit IRC11:56
*** aks_ is now known as aks11:56
*** aks_ has joined #schooltool11:56
*** aks_ has quit IRC12:00
*** aks has quit IRC14:17
*** fsufitch has quit IRC14:38
*** replaceafill has joined #schooltool16:08
*** th1a has joined #schooltool16:24
th1ahi aelkner, replaceafill, yvl.16:30
replaceafillgood morning/afternoon16:30
aelknermorning16:30
th1aWhile we wait for yvl...16:32
th1aaelkner: What's your status?16:32
yvlgood morning!16:33
* yvl was getting some coffee :)16:33
* th1a knew it.16:33
th1aEnjoy your vacation, yvl?16:33
yvlyes, thanks :)16:33
th1ayvl:  Have you tried to catch up on what we've done?16:35
th1aNothing too earth-shattering, I don't think.16:35
yvlI'm almost done rummaging with code reviews16:35
yvlnice work, guys :)16:36
yvla big personal thank you for XXX'es in places that deserved them16:36
th1aI think we're in pretty good shape time wise.16:36
th1aWe can't slow down, but I think we'll make our goal.16:37
th1aCalendar and interventions might get shortchanged.16:37
th1aBut at least superficially flourished.16:37
th1aSo... questions for yvl or from yvl?16:38
yvlumm, please give me a few more minutes16:38
yvl4 revisions left :)16:38
th1aI know aelkner and replaceafill had some issues they wanted to raise.16:38
th1aOK. Anything to report from Friday afternoon or the weekend, aelkner & replaceafill?16:38
aelkneri can start16:39
aelkneri added Done buttons to index.html views that take you back to container views16:39
aelknerand i added (finally) links to the School tab (/manage) for the container views that i worked on16:39
aelkneri'd like to go over the whole navigation after the meeting to make any adjustments you see fit16:40
aelkneradditionally, i looked at the jquery plug-in we found on friday16:40
th1aMore important is going over all the navigation once we settle on the root views.16:40
aelknerfor instance, the School tab does not work the same as the School breadcrumb16:41
aelknerwhich it probably should at some point16:41
aelknerbut getting bac to the plug-in16:41
aelkneri figured out how it worked using firebug16:41
aelknerhere's the demo of the example with both row and column locking16:42
aelknerhttp://jcbulanadi.oni.cc/sfht_freezecolumn_sortable_blue.html16:42
aelknerit works by copying the rows and columns that need to be locked to another div16:43
yvl(you guys did notice that the plug-in is a bit glitchy, right?)16:43
aelknerthat has identical info bu at a higher z-index16:43
aelknerwe could do the same without using the pluh-in if we didn't want to waste time16:44
th1ayvl:  In what way?16:44
aelknerlearning and depending upon a pluc-in which may or may not be buggy16:44
th1aNot using the whole plug-in is an option, to be sure.16:44
yvlFFox 3.6: if you scroll so that say row 19 is at the bottom and scroll horizontally16:45
yvlpart of the row is erased with other column information16:45
yvland you basically get garbage there16:46
aelknerare you referring to the very link i posted?16:46
yvlyes16:46
th1aSeems to work for me.16:46
aelknerme, too16:47
replaceafillsame here, ff 3.516:47
yvlsame bug on chromium16:47
th1aWorks for me on Mac Chrome.16:47
* aelkner has version 3.6.1816:47
aelknerof firefox os course16:47
th1aYou're just scrolling down and scrolling back and forth?16:48
yvllet me get a screenshot16:48
replaceafill:| got "Warning: Suspected phishing site!" in chrome16:48
yvlreplaceafill, what's the address of pic dump you use?16:48
replaceafillhttp://imageshack.us/16:48
yvloh, right :D16:48
aelknerreplaceafill, why did you post that link?16:49
aelkneri need to sign up for something?!16:49
replaceafillaelkner no, yvl asked for it16:49
aelkneroh16:49
yvlhttp://imageshack.us/photo/my-images/88/freezecolumn.png/16:50
aelkneryvl, so where's the problem?16:50
yvltell me what's written in column 1916:50
replaceafillah!16:51
th1aThe little split row at the bottom?16:51
replaceafillit happens if you leave the last row to the middle16:51
replaceafillconfirmed16:51
yvlyep16:51
yvla bit glitchy16:51
replaceafillscroll down, leave the bottom  row at the middle16:51
replaceafilland scroll horizontally16:51
th1aAh.16:51
th1aI see it.16:51
aelkneryou mean row 19?16:51
replaceafillany row aelkner16:51
th1aLeave a half-row at the bottom and scroll.16:52
aelknerthere are not 19 columns, so what?16:52
th1aNo...16:52
th1aSee the glitch at the bottom of the last row?16:52
th1aIt is still usable, but definitely a little glitch.16:53
aelknerok, o see it noq16:53
aelkneri see it now16:53
yvlbut we can sure use this idea16:53
th1aI say we steal the technique.16:53
aelkner+116:54
yvl+1 :)16:54
aelknera question16:54
aelknerinstead of copying the divs using js like the plug-ing does16:54
aelknercouldn't we just deliver the divs ourselves in the template16:54
aelknerthis way we may be able to avoid the bleeding that we see here16:55
aelknerbecause we will have more control over how it gets rendered16:55
yvlI don't see how, sorry16:55
aelkneri mean copying into the DOM dynamically is nice, but not as easy to control the outcome16:55
yvlI mean - I don't see the benefit16:56
aelknerwell, perhaps the css for the overlaying divs needs to have a slightly higher width/height16:57
aelknerto avoid the bleeding that we see16:57
yvlwell, if you try that with Chromium and FFox16:57
yvlyou should notice that the bleed area height is a bit different16:58
yvland we can also control widht/height with JS16:58
yvlso I'd say stay with JS here16:58
aelknerok16:59
aelknerwhat i'd like to do first is get the gradebook grid to render today without locked rows/columns17:00
aelknerbut inside the scrool area that our demo has17:00
aelknerjust to get me started, that is17:01
aelknerdoes anyone know off hand what makes that table have scrool bars?17:01
th1aThat's fine.17:01
replaceafilloverflow property17:01
aelkneron the table or a parent div?17:01
aelknerreplaceafill, and what is the exact css rule?17:02
replaceafilllet me look17:02
aelkneroverflow-x: visible?17:02
replaceafilllook for:17:02
replaceafilldiv.sfhtData17:03
replaceafillalso div.sfhtHeader17:04
replaceafilloveflow: auto and overflow: hidden17:04
aelknerwhere?17:05
aelknerin the css course file?17:05
replaceafillhttp://jcbulanadi.oni.cc/css/scrollableFixedHeaderTable.css17:05
aelknerwait, there's an iframe in the DOM17:06
replaceafillyeah, but it's not used for the table17:06
replaceafill(i think)17:06
aelkneryeah, never mind17:06
aelkneri noticed it came after all the table divs17:07
aelkneranyway, i'll start by getting gradebook views to render in flourish17:08
th1aOK.17:08
th1aSo do we have other questions for or from yvl?17:08
replaceafillyvl have you seen rev 3019 yet?17:09
yvlyes :)17:09
replaceafillRemoved JS used to assign css error class to widgets. The class is now assigned in the error view snippet.17:09
replaceafilli like your comment on that one17:09
replaceafillis it the right place?17:09
replaceafillto set the error class17:09
replaceafilli know i like it more than js :)17:09
yvlI think so17:10
yvla great commit replaceafill  ;)17:10
replaceafill:D17:10
replaceafillalso:17:10
* yvl was going to suggest this until I saw that you'd already done that17:10
replaceafillMoved div.error above div.widget in z3c.form templates. We're floating div.error to the right, so this change top-aligns both divs.17:10
replaceafillyeah, it was a nagging issue i wanted to get out of the way17:10
replaceafillanyway, i changed the order of the divs because of radio buttons17:11
replaceafillhttp://69.164.203.135:6660/resource_demographics/addText.html17:11
replaceafillfor example when you submit with no data17:11
replaceafillyou used to get the error rendering at the bottom right of the radio buttons17:11
replaceafillit also happened with the zc.datetimewidget17:11
replaceafillchanging the order top-aligns both divs17:12
replaceafillsmall change, but better i think17:12
yvlprobably yes17:12
replaceafilli also was checking the security settings and how they affect the app17:12
replaceafilland noticed:17:12
yvlthe error message looks a bit out of align to be honest17:12
replaceafillOld version: The access control setting "Users cannot make their own calendars public." makes impossible for the user to Edit Preferences.17:13
yvl(as in 4-6 px to high)17:13
th1areplaceafill: For now we should probably just change the permission description.17:14
replaceafillso, if the setting is on, the Preferences links shouldnt be rendered17:14
replaceafillor you'll get a login form in the dialog17:14
replaceafillth1a ah ok17:14
th1aI guess so.17:14
th1aThe alternative is to hide the choice in the form?17:15
replaceafillno, you cannot access the view17:15
replaceafillat all17:15
th1aBut if you fixed it, it would hide the choice in the form?17:15
replaceafilli didnt get to the bottom of the permission issue, i'll look17:16
replaceafilli think the permission is not on the view, but on ${person}/preferences object17:16
th1aEither way, this is a very low priority.17:16
replaceafillyes17:16
replaceafillagree17:16
replaceafillah, i had this question for yvl17:16
replaceafillcould we make the IPageRefineManager viewlet manager to filter based on content rendered by the viewlets?17:17
replaceafilli'll try to explain17:17
yvlyes we should17:17
replaceafillah ok :D17:17
yvlyou mean the renderableItems thing, right?17:18
replaceafilli hacked something like that for the tertiary navigations17:18
replaceafillcorrect17:18
replaceafillit's useful for not getting the empty space in the sidebar17:18
yvltrue17:18
* yvl made a note on that today17:18
replaceafill:)17:18
replaceafilllast one (i think):17:18
replaceafilland this is related to a long discussion we had about tests17:19
replaceafilland not changing old classes, etc etc17:19
replaceafilli'd like to add a css_class attribute to our table formatter17:19
* yvl too17:19
yvlsorry for interruption :)17:20
replaceafillah no prob17:20
replaceafillit's just that it's hard to customize classes right now17:20
replaceafillyou have to hack the render method17:20
yvlI noticed :|17:21
replaceafillalso i added a CSSFormatter that set css classes based on column names17:21
replaceafillthat's why i also added a name attribute to your ImageInputColumn17:21
yvlright17:21
yvlI kind of wanted some name sanitization there, btw17:22
replaceafill+117:22
yvlto make sure we dont get "john smith" css class :)17:22
yvlor something like that17:22
replaceafill:D17:22
replaceafillok, i have some other small things, but not important17:23
replaceafilli'll bring them up later in the week or next meeting17:23
yvlsure!17:23
replaceafillgood to have you back yvl  :)17:23
yvlgood to be back! :)17:23
th1areplaceafill: What's in your queue now?17:23
* yvl has a short comment on changing base classes17:23
replaceafillyvl go ahead17:24
yvl(regarding tests)17:24
yvlI think the UI remake - if implemented correctly - should not need to touch the "data model" interfaces17:24
*** menesis has joined #schooltool17:24
yvlif we absolutely need to - that means that something is wrong17:24
aelkner+117:25
yvlso it's a good test in itself on how clean our implementation is17:25
th1aThe only case it is really coming up is in interface descriptions.17:25
yvlyes17:25
yvland they *should* be easily overridable17:25
aelknerwhich we can override in the view calsses17:25
aelkneryes, widget overrides17:25
th1aWell... we're improving them though.17:26
yvlif they're not - that means we don't have something implemented17:26
th1aThey are bugfixes.17:26
yvlyes17:26
yvlbut still - if it's not easy to change them in some places17:26
yvli.e. the flourish layer17:27
yvlit means we won't be able to change them in similar situations17:27
yvllike on two different containers or whatever17:27
yvland I'd better have helpers to make that easy17:27
yvlinstead of having the excuse "Zope works this way"17:27
th1aI think this is too hypothetical.17:27
* yvl does not17:28
yvland it's easier to do I think than to discuss this :)17:28
* yvl just wanted to say17:28
yvlif we get to similar situation17:28
yvlit's probably unclean implementation17:29
yvlon some helpers missing as it is often with Zope17:29
yvland so far writing helpers seemed to improve dev speed17:29
yvlok, that's my 2 cents17:29
th1aThanks, yvl.17:30
th1amember:replaceafill: What's in your queue now?17:30
replaceafillth1a keep going through section views17:30
replaceafilllink/unlink17:30
th1aOh yes.17:30
replaceafilland finally add/edit17:31
replaceafillth1a are you going to be around today17:31
th1aOK, yvl, I've been waiting on you to tackle Application | School17:31
th1areplaceafill: yes, in and out.17:31
replaceafillah ok17:31
th1aNo official plans.17:32
* yvl is listening17:32
* th1a is at his parents.17:32
th1ayvl: Well, I don't have any brilliant ideas.17:32
th1aThings split between Application and School pretty easily.17:32
th1aAnd links group rather easily too.17:33
* yvl was thinking that School should be a dashboard of the user - as in Home17:33
th1aHm.17:33
th1aI was thinking School was for the School Administrator and Application was for the Site Administrator.17:33
th1aSite Manager, I guess we say.17:34
yvlwell yes17:34
aelkner+117:34
yvlbut I tend to lean to merge Home and School17:34
yvlfor some reason17:34
aelknerHome could be an additional tab17:34
yvlnot saying that I'm right on this one17:34
th1aEssentially, there isn't going to be a new dashboard in this iteration.17:34
th1aWe really just have time to organize the existing links.17:35
yvlthere's actually not much to put in the School view17:36
yvlapart form some overview/summary/something17:36
th1aOh...17:36
yvlour manage view was pretty emtpy actually17:36
th1aYes!17:36
yvlbut we do need a place to put our "School" links, like persons, terms, etc17:37
yvland things like "please set up a year"17:37
th1aYes.17:37
th1aI'm a little blocked on that.17:38
aelknerand the School breadcrumb should match the School tab, yes?17:38
th1aPresumably.17:38
th1aSo yvl, do you want to have a crack at that?17:39
yvlI can try17:39
yvlis some summary like thing ok?17:39
yvllike this is your active schoolyear with these terms17:40
yvlyou have 30 teachers (add)17:40
yvland such17:40
th1aYes.17:40
yvlok17:40
th1aI guess the main thing I was stuck on was forgetting that there should be more actual info on that page and not just links.17:40
th1aBut functionally, it obviously needs the links.17:40
yvlyes17:41
th1aOK, have a crack at that.17:41
yvlsure, th1a17:41
th1aCan we meet an hour earlier tomorrow?17:41
* yvl is good with that :)17:41
replaceafill+117:42
aelkner+117:42
th1aOK.  See you then.17:43
* th1a drops the bag of gravel.17:43
replaceafillthanks everybody17:43
yvlthanks guys17:43
yvlth1a, can you stick around for few minutes?17:43
aelkneryvl, good to have you back17:43
yvlok, I'll just put some things down17:44
th1aI can, yvl .17:44
yvllooking over the recent code changes, seems that we have a ~ day of plumbing17:44
yvlsome small "security"/stability holes are spreading over the code17:45
th1aA tilde day?17:45
yvlmostly output sanitization17:45
yvlroughly a day :)17:45
yvlsome templates look overbloated and probably should be made (almost) generic17:46
yvlI'll probably comment on some commits via email17:46
yvlalso - looked over selenium again17:46
th1aWell... the question is whether this is the time to really "sprint" to get all the views flourished by feature freeze.17:46
aelkneryvl, ~ a day is clearer than a ~ day :)17:46
th1aAnd then fix them.17:46
yvlyes17:46
th1aI don't understand tilde at all.17:47
aelknerapproximately17:47
yvlI just wanted to keep you informed17:47
aelknerthat's standard math english17:47
yvlalso there's the test issue17:47
aelknerah, yes, that17:47
yvlI think we'll end up with manually run selenium tests just before the release17:47
aelknerwe need to get tests to pass some time soon17:47
yvlat least some of the tests17:48
yvlthen again - we'll be pushing some new ground there17:48
th1aI'd be more comfortable doing these things after we get all the views done for feature freeze.17:48
yvlyes, of course!17:49
th1aOK.  ;-)17:49
yvljust that it seemed like a good time to stop for a few hours17:49
yvland look a bit ahead :)17:49
yvlyou know - just after vacation and having 6 hours until meeting :)17:49
th1aI'm trying to stay focused on the next three weeks.17:49
*** menesis has quit IRC17:49
yvlok17:49
yvlI won't bother you with that stuff then17:50
yvland guys... I think we won't have good tests for a while17:50
th1aBother me in three weeks.  ;-)17:50
yvlsure ;)17:50
yvloverall it seems like we're going to make it17:51
yvlso again - nice work guys :)17:51
yvlwell, thanks th1a  :)17:52
yvlreplaceafill, do you have some small questions maybe? ;)17:52
yvl /s/small/quick17:52
replaceafillcan we enable at least unit tests for evolution?17:53
replaceafillwe'll need small evolution for resources17:53
replaceafillto make their type a demographics field17:53
yvllooking...17:54
replaceafilli tried to run the test but it complained about the journal, iirc17:54
replaceafilli haven't pushed that one yet17:54
replaceafillbut in general, no evolution test works17:54
replaceafillyvl what do you think of css classes like ".bold" or ".center"?17:55
* yvl is a bit neutral on that topic17:55
replaceafillah ok17:55
yvlI don't know if they make a lot of sense17:55
yvlok, ST core evolution tests mostly work17:56
replaceafillreally?17:56
* replaceafill goes to try them again17:56
yvl(when not including gradebook or intervention)17:56
replaceafillah!17:56
yvlevolve28 is broken though17:56
replaceafillah good, i can test my evolution script then!17:57
* yvl will find some time to look at the test situation this week17:57
replaceafilljust with core17:57
yvlsure17:58
replaceafill* could we remove getColumnsBefore from skin.flourish.container.TableContainerView?17:58
replaceafillit's setting the checkbox17:58
replaceafillwhich we dont use much now17:58
replaceafillnot remove17:58
replaceafillmake it return []17:58
yvlfeel free to :)17:58
replaceafill* can we make title column in default schooltool table formatter locale aware getter instead of just getter?17:59
replaceafilli've been setting tableformatters just for the locale awareness17:59
yvlyes, please17:59
replaceafill* Selection List Fields in person/resource demographics should be rendered as optional18:00
replaceafillwhen you set a demographics field, the form is rendered with the first option selected18:00
replaceafillwe could set prompt and prompmessage on them i think18:00
yvlhmm, I think so18:00
* yvl goes to look at it18:01
replaceafillyvl that's it basically :)18:01
replaceafillah18:01
replaceafilllast one :D18:01
replaceafill+<!-- XXX: any reason why canModify is called here?18:02
replaceafill+          it prevents public views on containers, right? -->18:02
replaceafillthat's from:18:02
yvltrue, we should add prompt to selection list fields18:02
replaceafillschooltool/skin/flourish/templates/table_container.pt18:02
replaceafilli know i can set canModify to return True18:02
replaceafillto allow public access18:03
replaceafillbut was wondering why was required in the template if it's not used18:03
yvlno, I think that's a leftover from skin/templates/table_container.pt18:03
replaceafillah, ok18:03
yvlfor the delete button18:04
yvlsorry, missed that somehow :)18:04
replaceafill:D18:04
replaceafilland:18:04
replaceafillTableContainerView18:04
replaceafillcould we delay the table look up to update18:04
replaceafillinstead of __init__?18:04
replaceafilland make it use the self.container instead of context?18:04
replaceafillfor the look up18:05
yvl+1 for delaying until update18:05
yvlnot sure about container vs context18:05
yvlI mean - logically - yes18:05
yvlyou know what, +1 :)18:06
replaceafill:D18:06
replaceafillit's just that /courses and /groups use app as context18:07
replaceafilland i wanted the table formatter on coursecontainer and groupcontainer18:07
replaceafill:)18:07
yvlright18:07
yvlby the way18:08
yvlreplaceafill, aelkner18:08
yvlabout try/except18:08
aelkneryes?18:08
yvlplease never ever use empty excepts18:08
replaceafill+118:08
*** menesis has joined #schooltool18:08
replaceafillbare excepts i call them18:08
yvlthey're very... what's the word18:08
replaceafilldangerous!?!!?18:08
replaceafill:D18:08
yvltreacherous18:08
aelknerif you look above, you see XXX18:08
yvlyes18:09
aelknerthe whole thing is a hack18:09
* yvl just wanted to say why18:09
aelknergo on18:09
yvlimagine you call this function inside the try: block18:09
yvldef foo():18:09
yvl   print this_is_not_a_variable18:09
yvlthis raises an exception and silently gets eaten by except18:09
aelkneri know that at the time of writing that block18:10
aelkneragain, the XXX18:10
yvlsure18:10
yvljust wanted to remind18:10
yvlsorry for the obvious...18:11
replaceafillaelkner but the XXX is for accessing the request18:11
replaceafillnot for the bare except18:11
aelknerideally, the exception would be handled by whoever called the discriminator18:11
aelknerbut it doesn't!18:11
yvlno, not that18:11
replaceafillit's not that the whole thing it's a hack18:11
yvlyou should simply specify what exceptions you expect18:11
aelknertoFieldValue could generate any number of exceptions18:11
yvlexcept SomeValidationError e:18:11
aelknerit seems stupid to have to seek them out and list them18:12
yvlwell, some of them have base classes18:12
aelkneragain, why are they not handled by the alled of the discrimnator18:12
yvlbut it's really dangerous to have bare excepts18:12
aelknercaller18:12
yvlaelkner - I do agree that it should be implemented differently18:12
aelkneryvl, ok, enough wth the obvious coding rule18:12
aelknerlet's deal with the problem18:13
yvlsure18:13
aelknerand sorry to sound abrupt, just can't keep up with you guys with typing speed :)18:13
replaceafill:)18:14
yvlsure aelkner18:14
yvlblame our early days of IRC chatter ;)18:14
aelknerreplaceafill, the XXX is because the whole thing is a workaround, a hack for hiding form errors18:14
aelknerremember?18:14
replaceafillaelkner no18:14
replaceafillah18:15
replaceafillyou mean in the validator18:15
replaceafillyes18:15
aelkneryes18:15
replaceafillbut not the bare except is the hack, right?18:15
replaceafilloops18:15
replaceafillthat went out wrong :D18:15
yvlfor me bare excepts are almost as evil as committing in "import pdb; pdb.set_trace()"18:15
aelknerthe bare except is the hack within the hack18:15
replaceafillbut the bare except is not THE hack :)18:15
replaceafillaelkner :D18:15
aelknera workarond of a workaround18:15
aelkner:)18:15
aelkneranyway...18:16
yvlright18:16
* yvl was not a fan of document.write('\074style\076 input.chk { display: none } \074/style\076');18:16
aelknerif someone wants to solve the hiding form errors issue, they have m approval18:16
yvlsure aelkner ;)18:16
replaceafillyvl your opinion on this one:18:17
replaceafill          <input id="username" name="username" type="text" tabindex="1"18:17
replaceafill                 tal:attributes="value request/username|nothing;18:17
replaceafill                                 class python:view.error is not None and 'error' or None" />18:17
replaceafillis the python: ... that evil too?18:17
replaceafillto be moved to the class18:17
replaceafilli mean, to the view class18:17
yvlwell it does look awkward18:18
replaceafillkk, is our policy 100% no python: ... in templates?18:18
replaceafilli'll move it to the view class18:18
*** menesis has quit IRC18:18
aelkneryvl, about empty except vrs pdb, in my opinion much different18:19
aelknerif we have test coverage18:19
aelknerthen any code that works is ok at one level18:19
aelknerif we have pdb, it couldn't possibly be working code18:19
yvlwell yes18:19
yvlhence - "almost as evil"18:19
yvlas in - one step from oblivion18:19
aelkner:)18:19
yvlreplaceafill, it's not that 100% no python in templates18:20
yvlbut this check does look out of place, doesn't it?18:20
replaceafillwould python: view.method(fooargument) be ok?18:20
yvlespecially with is not None ... or None18:20
replaceafilllike in a tal:repeat18:20
replaceafilli liked aelkner's point that having all in the view class makes it easy to test18:21
yvla very good point, aelkner18:21
aelknera good guess18:21
replaceafillso, i'll stay away from python:... in templates :)18:21
yvlan educated guess ;)18:21
yvlview.method(fooargument) is ok18:22
aelknerbut was there anyting else you don't like about python in templates18:22
yvlbut then again - I'd rather use dicts of stuff where possible18:22
aelknerother than the testing issue18:22
yvl  * yvl's opinion might change ;)18:22
replaceafill:D18:22
*** menesis has joined #schooltool18:22
replaceafillyvl if you clean the templates, could you create a table-display macro?18:23
aelknerok, but anyway, we all have a rule that we can follow, so that's something18:23
replaceafillaelkner +118:23
yvlpython strings are long, a bit inconvenient to read in that context, they have to avoid " and are mostly testable via funcional tests18:23
yvlthat's enough reasons I think18:23
aelkner+118:23
yvlreplaceafill, a table-display?18:24
replaceafillit's that th1a sometimes want index views to be tables with the field values, right?18:24
replaceafilllike label: value18:24
replaceafillrows18:24
replaceafilli know we could adjust the z3c-schooltool-display template to do it18:25
replaceafillbut it's easier with tables18:25
yvlhmm, I'll keep that in mind18:25
replaceafillso i copied the table template from z3c.formui18:25
yvlfeel free to write that if you work on something similar thoughy18:25
yvlthough18:25
replaceafillbut when i saw that i needed it again and again18:26
replaceafilli said, this has to be a general template18:26
th1aGenerally speaking, yes, putting random values in tables is how we're formatting them.18:26
replaceafilland then we needed to insert more sections at the bottom, etc18:26
replaceafillso it started to smell like macro template18:26
replaceafill:)18:26
* yvl thinks he has a list that includes those templates with repeating tables18:27
*** menesis has quit IRC18:27
yvlallrgiht... I won't keep you any longer from coding18:27
replaceafillin my head, so far we have these use cases for templates: one fieldset forms, multi fieldset forms and table ike displays18:27
yvlgood to see you guys again :)18:27
yvltrue replaceafill18:28
* yvl want's to do some stuff later on for multi-fieldset forms18:28
yvlbut not in these three weeks18:28
yvl(probably)18:29
* replaceafill goes back to sections18:29
*** menesis has joined #schooltool18:31
yvlsee you guys tomorrow :)18:31
replaceafillthanks yvl, see you18:31
th1aThanks yvl .18:31
aelknercya yvl18:32
replaceafillth1a Schwadesign is the company you hired, correct?18:33
* replaceafill just got an email from them18:33
th1aYes.18:33
th1aDid you get an email about their Basecamp?18:33
replaceafillyes18:33
yvldarn spammers18:33
replaceafill:D18:33
replaceafilli think i found a bug in the add term view18:41
replaceafillhttp://69.164.203.135:6660/schoolyears/2012/add.html18:41
replaceafilltitle: 201218:42
replaceafillstart date: 2011-01-0118:42
replaceafillend date: 2012-12-3118:42
replaceafillnext18:42
replaceafilladd term18:42
replaceafillyou get an exception18:42
aelknerwhat's the exception?18:43
aelknerreplaceafill, could this be a continuation of last night's issues18:43
replaceafilllet me check an older instance18:44
replaceafillaelkner no, it's not related18:52
replaceafillit happens in rev 3018 as well18:52
replaceafillhttp://69.164.203.135:6661/schoolyears/2010/add.html18:52
replaceafillrev 3018 is before my changes18:52
replaceafillthe exception is: ValueError: Term can't start before the school year starts!18:53
aelkneri got that error before without getting an exception19:04
aelknerplease try and track this down and fix whatever you find19:04
replaceafillon it :)19:04
aelknerthanks19:04
replaceafillit's weird that it works for the last date19:04
replaceafillbut not for the first19:04
replaceafilloops! i'm fixing revision 3018 :D19:05
* replaceafill moves to trunk ;)19:05
*** menesis has quit IRC19:08
*** menesis has joined #schooltool19:10
*** ignas has quit IRC20:36
*** menesis has quit IRC20:53
*** fsufitch has joined #schooltool21:36
*** ignas has joined #schooltool23:16

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