IRC log of #schooltool for Monday, 2005-12-12

*** th1a_ is now known as th1a00:25
*** ignas has joined #schooltool01:08
*** ignas has quit IRC02:03
*** jinty has left #schooltool04:22
povbot`/svn/commits: * hoffman committed revision 5420:08:08
povbot`/svn/commits: Small edits and a few XXX-ed comments.08:08
povbot`/svn/commits: * hoffman committed revision 5421:08:44
povbot`/svn/commits: I added a few "how to use this document" paragraphs to the end of the README.  Perhaps they should go earlier in the document.08:44
*** Aiste has quit IRC09:25
*** Aiste has joined #schooltool10:02
*** jinty has joined #schooltool10:58
*** ignas has joined #schooltool12:29
*** vidasp has joined #schooltool13:03
*** alga has joined #SchoolTool13:37
*** mgedmin has joined #schooltool13:42
*** thisfred has joined #schooltool14:40
*** mgedmin has quit IRC15:22
tiredbonessrichter, are you going to be given a talk, at the boston-pig, on zope 3 soon?15:35
*** alga has quit IRC15:43
th1aHello everyone.16:30
th1aEveryone awake?  srichter, mgedmin, ignas?16:32
th1aOK, that's one...16:35
*** mgedmin has joined #schooltool16:37
th1aAh.  There's mgedmin.16:37
mgedminhi, th1a16:38
th1ahi mgedmin.16:38
th1aSo how did things go last week.16:38
th1aSeemed like you made some progress on Friday.16:38
mgedminwe finished the Sci-Fi, I think16:38
mgedminalthough one of the stories is a bit unclear16:38
mgedminth1a, perhaps you could elaborate on the absence workflow user interface16:39
*** alga has joined #SchoolTool16:39
mgedminthe story just says "If the16:39
mgedminuser has the proper access, he or she can modify the workflow status16:39
mgedminof unresolved incidents from the attendance view."16:39
th1aalga:  How was windsurfing?16:39
th1amgedmin:  I hadn't given that a lot of thought.16:40
algath1a: brilliant, thanks16:40
mgedminth1a, nice article btw:
mgedmin(hint, hint)16:40
th1amgedmin:  That's very encouraging, thanks.16:41
mgedminback to pov status\16:42
mgedminsci-fi (aka API design): finished16:42
mgedminAPI implementation: 50% done16:42
mgedminrealtime attendance form: just started16:42
mgedminschool-wide timezone preference: 80% done16:43
mgedminhave I left anything out? ignas, vidasp. alga?16:43
* mgedmin over16:44
th1aOK, let's discuss the workflow interface for a bit.16:44
th1aThese will be resolved whenever a student brings in an excuse.16:45
mgedminso, a text area for entering the excuse16:45
mgedminand two buttons "accept & resolve", or "reject and wait for a new excuse"?16:45
th1aThat sounds right.16:46
th1aNavigate to the individual absence event.16:46
th1aFrom the person to the absence, I'd think.16:46
th1aDoes that make sense?16:47
mgedminso, each absence has an individual page for adding explanations & resolving it16:48
mgedminyou may enter more than one explanation16:48
th1aHm... I suppose sometimes you'll have one excuse that covers several days.16:49
mgedmininitially an explanation is not reviewed, and you get two buttons next to it16:49
mgedmin"accept" and "reject"16:49
mgedminif you hit "accept", the workflow is finished and the absence is excused16:49
mgedminif you hit "reject", the explanation is marked as rejected and displayed accordingly16:49
mgedminand you have to add a new explanation16:49
mgedmindoes that sound right?16:49
* mgedmin hmms16:49
mgedminyeah, or even if you skipped just one day, you may have a day absence and five section absences16:50
srichtergood morning16:50
mgedminhi, srichter16:50
th1aGood morning, srichter.16:50
srichtersorry for being late, dropping car at the dealer took longer than expected16:50
mgedminsrichter is strong if he can lift and drop cars on people16:50
th1aWell, the section absences have to be associated with the day absence somehow.16:51
mgedminor did you use a crane16:51
srichterno, pure mussles :-)16:51
mgedminalga, it also says "no laptops" :)16:51
mgedminth1a, do you have any suggestions about the association?16:52
mgedmina student's attendance view16:52
mgedminthat lists all unresolved absences16:52
mgedminand you can select several of them16:52
mgedminand click "resolve"16:52
mgedminwhich would give you a form for entering the explanation16:52
mgedminand a checkbox saying whether that explanation was acceptable16:52
mgedmin(if yes, then all those absences are excused, and workflow ends)16:53
mgedmin(if no, explanation gets stored, but the absences remain unexcused)16:53
th1aYes, it probably needs to work like that.16:53
mgedminth1a, one question: will the accept/reject decision be done at the same time and by the same person who enters the student's explanation into the system,16:54
mgedminor should entering the explanation and accepting/rejecting be separate steps16:54
mgedminperhaps done by different people16:54
th1aFrom the users point of view, if there is a day absence, they don't want to see all the individual section absences on that view as well.16:54
mgedminat different times16:54
th1aAccept/reject is mostly done later, although it should be possible to do it at the same time.16:55
th1aAnd it might be the same or different people.16:55
mgedminth1a, it would be very nice to have some user interface sketches... (in html, or scanned pencil & paper drawings)16:55
th1aI don't see the resolution form being very elaborate.16:57
th1aDo you have any questions for srichter about viewlets?16:58
mgedminnot at this point16:58
mgedmindo we plan to use viewlets for attendance?16:58
th1aYes, we do.16:59
mgedminI imagined that a student's attendance page will be a separate page16:59
mgedminnot included as a sidebar on some existing page16:59
th1asrichter:  Do you want to jump in here?16:59
*** pingswept has quit IRC17:00
srichterI agree with MArius17:00
srichterviewlets are not something you decide to use in a particular feature17:00
srichterbut something that you use to not make your packages depend on each other17:00
th1aRight, but won't they need to register things in an "Actions" viewlet or something like that?17:01
srichterfor example, I will make the "note sidebar" a viewlet as part of the documentaiton effort17:01
mgedminthat's a menu17:01
srichterI think the actions are still menus, right17:01
srichterso I am contemplating converting them to viewlets17:01
srichterin fact, I think for Zoep 3.3 I might suggest implementing menus as viewlets17:02
srichterthe action might be more than a link17:02
mgedminso, would the whole menu be a viewled, or would each menu item be a viewlet?17:02
srichterI also find the conditions being TALES somewhat limiting17:02
srichterright, a menu item would be a viewlet and a menu would be a viewlet manager17:03
mgedminbut that's all under the hood, right?  you would still use just a single zcml directive to register a simple menu item17:03
mgedmin(and you could write a fully-fledged viewlet if you wanted an highly dynamic menu item etc)17:04
th1aSo to achieve the goal of "to not make your packages depend on each other," is there anything in particular POV needs to be aware of?17:04
* mgedmin would be very happy if we managed to eradicate circular imports in ST17:05
srichter*sigh*, yes!17:05
srichterbasically, don't write view code that should really belong to another package inside your code17:06
srichterthe prime example, again, is the note for a person17:06
* mgedmin nods17:06
srichterthe person detail screen should never know about notes17:06
srichterthis can be solved using a viewlet17:06
* mgedmin nods17:06
srichterbasically, the person detail view defines a right column (viewlet manager) with which other packages can register viewlets, for example the notes17:07
srichterI will do this particular conversion, because I want to add commendation viewlets in that screen as well17:07
th1aOK, so does that make sense?17:09
th1aAll right.  Moving on then.17:09
th1aWe need to put out a snapshot tarball either before Christmas or New Years.17:10
th1aI would like the attendance system to do something at that point, although I know it won't be done.17:10
th1aWould you guys prefer to have that release come before Christmas or between Christmas and New Year's?17:10
mgedminmore time == better17:11
th1aThe "release process" in this case just consists of creating a tarball and putting it on the web.17:11
mgedminand giving it a version number perhaps17:11
mgedminor at least making sure db generation evolution scripts work17:11
ignasso if we will semi accidentaly manage to make it on christmas - we can do a release ?17:11
th1aSo Dec. 30th?17:11
ignas+1 :)17:12
mgedminwe should have a candidate a couple of days earlier17:12
th1aJan 3rd?17:12
mgedminand test it a bit17:12
th1aWe'll do our regular Tuesday release.17:12
mgedmintuesday is either 27 or 317:12
th1aSo candidate on the 29th and release the 3rd?17:13
th1aOK.  That's settled.17:13
th1aAll right, let's talk about Stephan's commendation package for a minute.17:14
th1aIf everyone else can take a second to skim over the documents.17:14
th1asrichter:  I checked in an addition to the README last night.17:15
srichterI just read through it17:15
th1aFeel free to edit it.17:15
srichteryep, right now it looks good17:15
th1aProbably it should be above the table of contents.17:16
srichteron Friday I got a bit stuck on what to do17:16
th1aIn terms of?17:16
srichterI can either implement a namespace for commendations or I take the note approach, in which case all commendation views are views of components providing IHaveCommendation17:17
srichterthe first approach allows me to use more common patterns17:17
srichterthe second make the implementation a bit easier, since you do not have a namespace17:17
* mgedmin does not want to see '++' signs in URLs, ever17:18
srichterI, on the other hand love them :-)17:18
th1aProbably easier is better.17:19
srichternamespaces are so easy to use :-)17:19
mgedmindark side is tempting17:19
th1aSo far my reaction to the tutorial is "oh, so *that's* all you have to do?"17:19
srichterwhy do you think it is dark?17:19
srichterth1a: great!17:19
srichterthough the hard part is coming17:20
srichterI'll take Marius' dislike-sentiment for now and shy away from namespaces17:20
th1aI'd like to know mgedmin's reasons, anyhow.17:20
mgedminreadable URLs17:21
th1asrichter:  I think you need to add two things to make this a bit more clear.17:21
th1a* more explanation of the individual steps in the doctest.17:21
th1aFor example "First, we have to make a stub implementation of the student class:"17:22
srichterwhat is not redable about "stephan/++notes++/reminder"?17:22
th1aYou sort of assume that all Python code is inherently readable.17:22
mgedminthe ++ signs are completely gratuitous17:23
mgedminwhat's wrong with stephan/notes/reminder?17:23
th1a* more comments in the code17:23
srichterI guess our new pluggable traverser framework makes it easier to not use namespaces17:23
srichterbtw, we should strive to get that package into Zope 3.317:24
th1aI know comments make the code look longer and more complicated than it is, but if someone has gotten to the tutorial, they've got pretty good motivation.17:24
srichterth1a: ok17:24
th1aOtherwise, I think it works pretty well.17:24
povbot`/svn/commits: * mg committed revision 5422:17:24
povbot`/svn/commits: Stripped trailing whitespace; added the missing newline at the end of file, converted "ReStructured Text" to a hyperlink to the RST website.17:24
th1aAdding comments shouldn't be hard.  Pretty much just short  "this is what is happening here" type stuff.17:25
th1aOK.  Last thing.17:25
th1aI got an estimate from Aiste of POV's availability over the next six months.17:26
th1aWhich estimates 90 developer days between the end of this contract in June.17:26
Aisteth1a: it is a conservative estimate17:26
th1aAiste:  Well, it is good for me to work from that.17:27
Aisteyes :)17:27
th1aSince in my planning I tend to overestimate that resource.17:27
Aisteso I figured, it is better to get more than expected than less17:27
th1aSo that generally looks like enough time to finish attendance and make some fixes to calendaring.17:28
th1aAnd probably create some reports.17:28
th1aSo I'm thinking someone else will be doing the demographics system.17:29
th1aI'm working on who that will be.17:29
th1aMake sense?17:29
mgedminI guess so17:30
th1aSo... was this a "bad meeting?"17:31
mgedminno, this was a good meeting17:32
algaLooked fine to me :-)17:32
th1aOK.  Just wanted to make sure.17:32
th1aAside the fact that some people were late...17:33
mgedminis it over?17:33
mgedminwe still have 3 minutes, since some people were late (sorry)17:33
* th1a strikes the virtual gavel.17:33
th1aThat's all I've got.17:33
*** alga has quit IRC18:12
povbot`/svn/commits: * vidas committed revision 5423:18:43
povbot`/svn/commits: Made all calendar views use ViewPreferences instead of IPersonPreferences.18:43
mgedminsrichter, are viewlets currently used anywhere in schooltool?19:08
mgedminI want to make calendar event display pluggable19:21
mgedminso I'm looking into viewlets19:21
mgedminI think I need a new viewlet manager19:25
srichtersorry I was (and am) on the phone19:39
mgedminnp, I think I figured it out19:41
mgedminwe need a new interface (ICalendarEventManager?) inheriting IViewletManager19:42
mgedminregister it with <browser:viewletManager>19:42
mgedminthen in use tal:replace="structure provider:schooltool.CalendarEvent" inside the daily event div19:42
mgedminand register viewlets for showing event booking info or whatever else we need19:42
mgedminhm, viewlets by default are unordered?19:44
mgedminso I would need to reuse the __cmp__ from NavigationViewlet if I want zcml-defined ordering?19:44
srichterok, now I am back19:54
srichtercorrect (to the procedure)19:55
srichtermgedmin: viewlet managers have a sort method that you can implement19:55
srichterwhether it uses information from the viewlet itself or uses other external info for sorting is up to the viewlet manager19:56
srichter__cmp__ is just the default implementation19:56
srichternote that a common pattern is that a special viewlet manager interface is associated with a specific viewlet interface19:57
mgedminquestion: why NavigationViewlet.__cmp__ converts self.order into int explicitly?19:57
mgedminwhen you specify the order in zcml, is it stored as a string internally?19:58
mgedmincan you specify arbitrary string attributes in <viewlet> directives?19:58
mgedminor is the order specified explicitly in Python code?19:58
* mgedmin greps19:58
srichteryes, arbitrary string attributes are possible19:58
mgedminorder is specified in zcml19:58
srichterright, order is one of the arbitrary field attributes19:59
srichterorder is there to make life easier19:59
srichterI tend to encourage people to find different sorting mechanisms, if possible20:00
mgedmindiversity is good, right20:03
mgedminI'm tempted to have a 'weight' attribute and have heavier viewlets settle on the bottom20:04
srichterbut that would be similar to order with the same drawbacks20:04
srichterif you talk about events, you could sort by date for example20:04
mgedminI'm talking about chunks of info inside a single event box20:13
mgedminsuch as booking information20:13
mgedminand I want to add a link to the attendance form inside a section event box20:14
mgedmin'cause that seems to be the best UI for finding the form20:14
povbot`/svn/commits: * mg committed revision 5424:20:14
povbot`/svn/commits: Added a missing unit test for NavigationViewlet.__cmp__.20:14
th1amgedmin:  I just realized that generally speaking, when you convert an absence to a tardy, the student will often have their excuse with them (if they were talking to another teacher, for instance).20:14
th1aSo the realtime attendance UI should probably be like this.20:15
th1aJose Hidalgo |||||||||| [ ]20:15
th1aThat is, you start with name, sparklines and a checkbox.20:16
th1aThen you have:20:16
th1aJose Hidalgo [V]  [ Make tardy ]20:16
th1aJose Hidalgo |||||||||| [V]  [ Make tardy ]20:17
th1aSo you've checked the absence/tardy box, and then you get a "Make tardy" button, which if you click, you get a form to change the entry time and also enter an excuse.20:18
povbot`/svn/commits: * mg committed revision 5425:20:25
povbot`/svn/commits: Refactored OrderedViewlet as a new base class of NavigationViewlet.  Added all the missing unit tests.20:25
mgedminactually, the more I think, the less I like the idea of comparing 'order' in a viewlet's __cmp__20:26
mgedminI think the boston skin chose the right path with its OrderedViewlet and overriding of sort() in the manager20:26
mgedmineverything will break in unobvious ways if you insert a viewlet that doesn't have the appropriate __cmp__ among other viewlets thatdo20:27
*** alga has joined #SchoolTool20:31
povbot`/svn/commits: * vidas committed revision 5426:20:41
povbot`/svn/commits: Made ViewPreferences return default values when in test environment.20:41
mgedminin what interface is IViewletManager.sort defined?20:46
*** ignas has quit IRC20:52
povbot`/svn/commits: * mg committed revision 5427:20:54
povbot`/svn/commits: Use a OrderedViewletManager to sort the viewlets instead of relying that all of them will inherit from OrderedViewlet.20:54
*** vidasp has quit IRC20:55
*** alga_ has joined #SchoolTool21:02
*** alga_ has quit IRC21:02
*** dman13_ has joined #schooltool21:29
*** dman13_ is now known as dman1321:29
povbot`/svn/commits: * mg committed revision 5428:21:34
povbot`/svn/commits: Fixed a buglet in EventForDisplay.renderShort; refactored it somewhat.21:34
*** thisfred_ has joined #schooltool21:43
povbot`/svn/commits: * mg committed revision 5429:21:58
povbot`/svn/commits: Extract the unit tests for EventForDisplay.getBooker and getBookedResources into a separate test.21:58
*** thisfred has quit IRC22:01
povbot`/svn/commits: * mg committed revision 5430:22:08
povbot`/svn/commits: Another minor timezone bugfix; this time in EventForDisplay.editLink.22:08
srichtermgedmin: I just checked and it is not a method publically defined, but an implementation detail of the default viewlet manager22:22
srichteri.e. if you use zope.viewlet.manager.ViewletManagerBase, you can override the sort() or filter() method22:23
*** thisfred_ has quit IRC22:24
povbot`/svn/commits: * mg committed revision 5431:22:48
povbot`/svn/commits: Cleaning up the mess that has become: instead of convoluted string: TALES expressions that jump through tal:condition hoops to avoid exceptions defined three new EventForDisplay methods and used them in the template: ev.viewLink(), ev.deleteLink(), and ev.bookingLink().  Fixed some really stupid expressions in the page template.  Removed some of the duplication22:48
povbot`/svn/commits: with judicious use of tal:omit-tag.  Pretty-printed certain portions.22:48
povbot`/svn/commits: Am wondering if all-day events really should be displayed quite differenly from regular events (e.g. no resource booking information whatsoever; no shortening of overlong titles).  Probably not.22:48
mgedminthanks, I figured that out22:48
mgedminoops, my last commit had a <tal:comment>XXX bla bla</tal:comment>22:56
mgedminwith no condition="nothing" clause22:56
povbot`/svn/commits: * jinty committed revision 5432:23:11
povbot`/svn/commits: Make sure there are no absolute paths in the .pot file comments. Some were sneaking in because of the zcml in schooltool-skel.23:11
povbot`/svn/commits: * mg committed revision 5433:23:22
povbot`/svn/commits: Mercilessly refactored the template: extracter portions of the event box into macros (defined in the same file), so that the template is easier to read.  Removed a bunch of unused variables.23:23
povbot`/svn/commits: Fixed the <tal:comment> (with omitted condition="nothing") bug I introduced in my previous checkin.23:23
povbot`/svn/commits: Fixed the grid height problem -- use sum of row heights instead of 4em * number_of_rows as the height for the outer div.23:23
*** jinty has quit IRC23:24
povbot`/svn/commits: * hoffman committed revision 5434:23:26
povbot`/svn/commits: Tiny typo.23:26
povbot`/svn/commits: * mg committed revision 5435:23:32
povbot`/svn/commits: Added an (incomplete) functional test for the realtime attendance form.23:32
povbot`/svn/commits: * mg committed revision 5436:23:34
povbot`/svn/commits: Register a viewlet manager schooltool.CalendarEvent.23:34
povbot`/svn/commits: will use it in the near future instead of23:34
povbot`/svn/commits: <metal:block use-macro="template/macros/event-core-info" /> <metal:block use-macro="template/macros/event-resource-booking-info" />23:34
povbot`/svn/commits: More importantly, schooltool.attendance will be able to hook into it and include an "attendance" link if the event is a section meeting event.23:34
povbot`/svn/commits: * mg committed revision 5437:23:38
povbot`/svn/commits: Filename tab-completion for bin/runfdoctests.py23:38
*** mgedmin has quit IRC23:55

Generated by 2.15.1 by Marius Gedminas - find it at!