IRC log of #schooltool for Monday, 2011-11-21

*** aks has joined #schooltool05:05
*** replaceafill has joined #schooltool05:41
th1ahi replaceafill.05:57
replaceafillhey th1a05:57
* th1a is up to adding courses in the book...05:58
replaceafillth1a, good call on the bottom sidebar05:58
replaceafilli mean05:58
replaceafilllink bar :)05:58
th1aWell, it isn't hard to notice...05:58
th1aOnce you start using the book.05:58
th1aWe could also do a floating bar.05:58
th1aAt the top or bottom.05:58
th1aLike if the gray bar would just stick when it scrolls up.05:59
replaceafilllike a sticky bar?05:59
replaceafillright05:59
th1aSticky bar.05:59
th1aI'm sure it is a thing.05:59
th1aDo credits still have to be an integer?06:02
replaceafillno06:02
replaceafillthey're float now06:02
replaceafilliirc06:02
*** aks has quit IRC06:02
replaceafillth1a, they *are* decimal06:02
th1akk06:03
*** aks has joined #schooltool06:03
*** aks has joined #schooltool06:03
th1aWe just need to update the hint.06:03
replaceafill:|!!!06:03
th1aI'm giving justas the small bugs tonight, since he'll be up.06:04
replaceafill:)06:04
th1aI still have shadow buttons.06:04
replaceafillthey're the ones we did together :(06:05
th1aYes........06:05
th1aCan you change that?06:05
replaceafillto gediminas ones?06:06
th1aYes.06:06
replaceafillah sure06:06
replaceafilljust have to match the hover, right?06:06
th1aUh...06:07
replaceafillnm06:07
th1aThe hover is fine as is.06:07
replaceafillth1a, on this https://bugs.launchpad.net/schooltool/+bug/88631006:13
replaceafillthis means we're deleting /database.html, right?06:13
th1aPretty much.06:14
th1aYou can just remove the link at this late date.06:15
replaceafillkk06:15
th1aIt is just two extra clicks to get to Pack Database and nothing else.06:15
th1aSo I'm doing screenshots in 2 sizes: 1024x768 or 864x544 (Ubuntu size).06:17
replaceafillah great, that will give us flexibility :)06:23
th1aCompared to one size?06:23
replaceafillyes06:24
th1aLess flexible than a zillion, which is what we had before.06:24
replaceafill:D06:24
th1aShould help when it comes time to try to produce a sane printed book.06:24
replaceafillth1a, http://69.164.203.135:6660/persons/add.html06:26
replaceafillapplied gediminas patch again :)06:27
th1aAh...06:28
th1aI'm not redoing all these screenshots.  ;-)06:28
replaceafillyou're doing it manually!??!?!06:28
th1abtw, I'm saving time by ditching selenium and just saving versions of the Data.fs as I go.06:28
replaceafillah!06:29
th1aI'm sure Selenium was a wash if not an outright waste of time for me.06:29
th1aI just gave me something to mess with instead of writing...06:29
th1aPushed tonight's changes to flourish-book.06:41
th1aGoing to bed.06:41
th1aCatch you tomorrow, replaceafill.06:41
replaceafillsee u th1a06:41
*** menesis has joined #schooltool08:06
*** yvl has joined #schooltool09:25
aelkneryvl, hey09:40
yvlhey man09:40
aelkneryou have a moment?09:40
aelkneri;ve been looking into a bug, https://bugs.launchpad.net/schooltool.gradebook/+bug/87680009:41
aelkneri created an html form for the modal request view that is not formlib based09:42
yvlsure09:42
aelknerso it doesn't render the date input field with the css classes09:42
yvlgimme a sec09:42
aelknerso i added  class="text-widget date-field" to the field named "day" in the form09:43
aelkneri notived in flourish.js that there is:09:43
aelkner$(document).ready(function() {09:43
aelkner        $('input.date-field').datepicker({09:43
aelkneretc.09:43
aelknerwhich i would presume causes the clicking on the on any input field with class date-field to bring up the datepicker09:44
aelknerbut it doesn't work, so i was wondering if the fact that the form is in a modal would have anything to do with that09:45
yvlhmm09:45
aelkneri put a js breakpoint at the datepicker instruction, but it didn't break there09:45
aelknerthe place i added the class="text-widget date-field" is in f_request_absences_by_day.pt to help you find it09:46
aelkneri know that this is usually done by formlib rendering the input widget09:47
aelknerbut i figure, as long as i render the same thing, it shouldn't matter09:47
aelknerand the class would seem to be the thing that drives the js09:47
yvlok, thath should have worked09:48
yvlif you put a class on input - "date-field"09:48
aelknerthis is the diff:09:48
aelkner-            <input type="text" id="day" name="day"09:48
aelkner+            <input type="text" id="day" name="day" class="text-widget date-field"09:48
aelknercould you apply that and try it out on your machine?09:49
yvlsure09:50
yvldoing that now09:50
aelknerthanks09:50
aelknerth1a assigned this bug to me, and i did my best to break it down, but i could use your expertise in the modal are09:51
aelknerarea09:51
yvlumm, I keep forgeting - where's the report of absences by day?09:52
yvlschoolyear09:53
yvldoh09:53
yvlok, so the thing is09:57
yvlyou need to manually bind datepicker after the dialog is loaded09:57
yvlbut it's a bit of a design issue, I must admit09:57
yvljust append at the end of template:09:58
yvl<script>09:58
yvl        $('input.date-field').datepicker({09:58
yvl                dateFormat: 'yy-mm-dd',09:58
yvl                changeMonth: true,09:58
yvl                changeYear: true,09:58
yvl                });09:58
yvl</script>09:58
yvlthere's a glitch though09:58
aelknerwhy does it need to be done manually?09:58
yvldialog builds new DOM objects09:59
yvlneed to assign datepicker handlers to new DOM objects09:59
yvland it's a mis-design09:59
yvlshould be automatic, but I haven't done that yet09:59
yvlsorry09:59
yvlyou know what...09:59
yvlI'll fix that10:00
aelkneri added the script and it brings up the datepicker, one thing though, it does it on load10:00
yvlgimme few minutes ;)10:00
aelkneri should do it when the user clicks the field10:00
aelknerok, so you'll look into a js change for modals that does the binding?10:01
yvlyes10:01
aelknerok, got it10:02
yvlI'll just bind them on dialog load10:02
aelknerand all my template will need is the added classes as in my diff, right?10:02
aelknerand no script in that case i assume10:03
yvlyes10:05
yvlfixed, aelkner10:37
aelknerexcellent, how do i get it?10:39
aelkneris it a small diff?10:39
aelkneri could apply it and commit it if you'd like10:40
yvlit's pushed to flourish trunk10:40
yvljust update and it should work10:41
aelknerah, cool10:41
aelkneryvl, i get a conflict when pulling trunk10:43
aelknerConflict: can't delete src/schooltool/demographics/browser because it is not empty.  Not deleting.10:43
aelknerthat's weird because i never get conflicts pulling trunk10:44
aelknermerging with my branch, maybe, but not pulling trunk, strange10:45
aelknerok, now i'm getting the same thing merging to my own branch10:46
aelkneranyway, i need to get some sleep10:46
aelknerthanks again, and cya at the meeting10:46
yvlsee you soon10:50
*** replaceafill has quit IRC11:32
*** aks has quit IRC13:19
*** menesis has quit IRC15:10
*** menesis has joined #schooltool15:47
*** replaceafill has joined #schooltool16:19
th1ahi replaceafill, aelkner, yvl, menesis.16:31
replaceafillgood morning/afternoon16:32
aelknermorning16:32
yvlgood morning16:32
aelknerth1a, may i go first?16:32
menesishi16:32
th1aI've got some things to go over first.16:32
aelknerok16:32
th1aFirst, we should give aelkner and replaceafill more credit on the about page.16:32
th1aWhat should we call you guys?16:33
menesistrue16:33
th1aCore developers?16:33
* replaceafill goes to see the about page :)16:33
th1aaelkner doesn't have any silly titles like replaceafill.16:33
aelknerreplaceafill, how are you looking at about page?16:33
replaceafillaelkner, footer link16:33
th1aClick on SchoolTool in the footer.16:34
replaceafillSchooltool 1.9 (flourish)16:34
aelkneri can't even get a pull of trunk to work16:34
aelknerreplaceafill, do you have a link?16:34
th1aOK, well, anyhow,16:34
replaceafillaelkner, you need to delete the pyc files in the demographics/browser directory16:34
th1aWe have a lead developer, a release manager, and...16:34
replaceafillaelkner, http://69.164.203.135:6660/about.html16:34
yvlaelkner, just remove the demographics folder manually16:34
th1aI'll let you guys ruminate about that...16:34
th1aI'm going to need a little help with the new documentation on using languages in SchoolTool.  I think replaceafill should be able to handle that with me at some point.16:35
* th1a is just going through his notes...16:35
replaceafillth1a, sure16:35
th1amenesis:  Do you have questions/comments about the release notes?  I think I at least should add more about changes to Intervention, since they were rather substantial.16:36
menesischanges to Intervention?16:37
menesisI think it saw the least amount of changes16:37
th1aWe simplified a number of things in the process of Flourishing.16:37
th1aWell... most in terms of actual functionality.16:37
th1aWe just cut out a number of confusing options.16:38
th1aA couple real wtf points.16:38
th1aAnyhow, do you need anything more in those notes from me?16:39
th1aOK, slogan.16:40
th1a"A free global student information system"16:40
menesisNo I don't have comments..16:40
th1aI know menesis has slogan concerns, replaceafill likes it, anyone else?16:40
* yvl has the same concerns as menesis16:41
th1aAgain, this is really aimed at decision makers above the level of a school.16:41
th1aIt is more to make someone in the ministry of education in Nigeria think SchoolTool would be applicable to his country.16:41
th1aDoes it make more sense then?16:42
th1a"A free global student information system"16:42
th1aor16:42
th1a"The free global student information system"16:42
th1aOr just "The free student information system for schools around the world."16:43
th1aC'mon you opinionated geeks, give me something here...16:44
yvlumm16:45
th1aI guess programmers are useless for this kind of thing...16:46
th1aI'll have to ask Welsh.16:46
yvlthat might be a good idea16:46
th1aOK. moving on...16:46
th1aaelkner, replaceafill:  "Core developers"16:47
th1aIs that ok, other ideas?16:47
replaceafillCore developers is fine to me16:47
aelkneryes, fine with me, too16:48
th1aOK menesis, make it so.16:48
th1aaelkner, you're up.16:48
aelkneri'm working with yvl to try and fix bzr merge difficulites16:49
aelknerwhat's up with the paste link here?16:49
aelknercan someone else click on it and tell me what they get?16:50
yvl?16:50
replaceafillaelkner, what link?16:50
yvlwhat paste link?16:50
aelknerat the top of the irc window, there's a link for posting a paste16:51
aelknerisn't that what you guys use?16:51
replaceafilli use pastebin.com16:51
menesisit is what ignas used ;)16:51
*** ChanServ sets mode: +o yvl16:51
*** yvl changes topic to "SchoolTool development | IRC logs at http://source.schooltool.org/irclogs/ | SchoolTool Dev meetings Mon, 13:30 UTC (15:30 EET, 9:30 EDT)"16:51
*** ChanServ sets mode: -o yvl16:52
aelknerhttp://pastebin.com/9FrBEmdZ16:52
replaceafillaelkner, the way i solved it: removed the pyc files in src/schooltool/demographics/browser and then "bzr resolve src/schooltool/demographics/browser"16:53
* yvl just deleted demographics manually and then resolved16:53
replaceafill:O16:53
aelkneri did that and it complains when i say the resolve command16:54
aelknersrc/schooltool/demographics does not exist16:54
yvltry resolving src/schooltool/demographics/browser16:54
menesisthere have to be two files left in src/schooltool/demographics16:54
aelknerthat worked!16:55
menesisbut for some reason two files in /browser conflict16:55
yvlgreat :)16:55
menesisyou have to bzr resolved src/schooltool/demographics/browser/configure.zcml or something as well16:55
menesisor maybe not16:55
menesisI though what I resolved does not happen to you16:56
menesisbut if everyones has this solved, lets move on16:56
aelknerwell, i wasn't able to do a simple bzr pull of trunk, should that ever happen?16:56
yvlnormally - no16:57
menesisbzr has become more cautious about removing files recently16:57
aelknerby more cautious, you mean, it allows a simple function it offers to stop working, great16:58
menesisin a clean branch there would be no conflicts16:58
menesis(without *.pyc files)16:58
yvloh come on17:00
yvllet's move on, please17:00
th1aThank you yvl.17:00
th1aWhat else aelkner.17:00
th1aHow's your queue look?17:01
aelknerempty17:01
th1aOK.17:01
th1aThanks aelkner.17:01
th1a(we'll get back to that)17:02
th1ayvl?17:02
yvlI fixed the bugs you assigned me17:02
yvl:)17:02
th1aThank you.17:02
th1aI hope you found them challenging and intellectually engaging.17:02
replaceafill:D17:02
yvlvery much :D17:02
th1aAnything else in your queue?17:03
th1aaelkner will have some free time...17:03
yvlno17:04
yvlactually I'd like to revisit mind map17:04
yvland status of code in general17:04
* yvl hopes we'll do some release planning soon17:04
yvlso it would be good to catch up with "state of things"17:05
th1aYes.17:05
th1aWe can also write some tests in the meantime.17:05
yvltrue17:05
aelkneryvl, may i interrupt?17:05
yvlyes, aelkner17:06
aelknernow that i got the merge to work, i have your changes to flourish.js17:06
yvlth1a, I'd still like to prepare on what may need work first17:06
yvltests may take a few weeks or so17:06
aelknerhowever, it seems i also have your changes to the Terms section of the School tab17:06
aelknerand that means, i can't get to the schoolyear view anymore :)17:06
aelknerwhatever happened to that year link?17:06
yvlbut it would be good to, you know, just look at what tasks depend on what, and what could/must be done firest17:07
th1ayvl: Sure.17:07
yvl*first17:07
th1aThat's pretty much what we'll be talking about in 1 week.17:07
yvlaelkner, did you notice the tertiary navigation?17:07
* yvl removed year link on th1a's request17:07
aelknerso how do i get to the year view?!17:08
yvlaelkner, did you notice the tertiary navigation?17:08
aelknerwhere?17:08
th1aThere is no link to the year view.17:08
aelknerwe have them all over the place17:08
aelknermore specifics, please17:08
th1aTo actually edit the year.17:08
th1aThere is not a link now.17:08
replaceafillthe school year index view had a report option too17:09
yvloh, wait17:09
yvlgood point!17:09
aelknerok, so if one want's to request the Absenses by day report, they need to go to the year view17:09
yvlyou can't get to the year to see the report :D17:09
aelknerth1a, hwo can we remove the year view?17:09
th1aaelkner: relax.17:10
th1aThat was a stupid way to get to the year.17:10
th1aPerhaps if you click on the active year tab you go to the year view?17:10
yvlno17:10
yvlyou look at different year "representations" of the manage overview17:11
th1aWe can just make a link to the year in the content area.17:11
aelknerright, that already is used for the School tab view17:11
yvllike sections terms and such17:11
yvlyes - and we should17:11
yvlor event a link to the school years container17:11
th1aOK, aelkner will do that today.17:11
aelkneryvl, anyway, i manually went to the year view, and the datepicker now works for the request view17:12
yvlcool17:12
aelknerso thanks for that fix, and i'll commit mine17:12
th1ayvl:  Just one quick comment on the next release -- this will be a SHORT cycle so we have plenty of time for testing, etc.17:13
th1aBasically, pre-sprint.17:13
th1aWe'll start working on fall features after the beginning of the year sprint.17:13
th1aSo this will be focused on small features.17:14
yvlcool17:14
th1aWe're looking at about two months of work on new stuff.17:14
yvlstability over features17:14
yvlthanks, th1a17:15
th1aWe'll start working on CanDo post-sprint.17:15
th1amenesis?17:15
menesisI though I will work on weekend, but didn't17:16
menesisonly merged what was done before17:16
menesisgot rid of demographics17:17
menesisthen was testing this morning...17:17
menesisto see the new fixes...17:17
th1aI did assign several of those to aelkner.17:17
menesisto be honest, got frustrated17:18
th1aYes...?17:19
menesisjust trying to do simple things like create a section, assign a teacher, reserve resources...17:19
menesisI reported only small bugs17:20
menesiscourse/section relationship is backwards17:21
menesisAfter adding a Course, you have to go back to School, look for Sections, and select that same course17:21
th1aGenerally you'd add all your courses in one step and sections in another.17:22
menesisprobably17:22
th1aIn real life.17:22
yvlalso there are inconveniences when adding sections to non-active (next) year17:22
yvltertiary tabs are very forgetful17:23
th1aHand the secretary the list of courses.17:23
menesisplaying with resource reservation is not the best thing to do in the morning I guess :)17:23
th1aYes, I've been a bit worried about that.17:23
th1ayvl: Cookies soonish!17:23
menesismost annoying is adding students to a section17:23
yvlyes!17:23
menesisyou get a list of all persons17:23
menesishave to search17:24
menesisthen click +17:24
menesisand you presented with full list again17:24
th1aOh... I see.  Yeah, that's a problem.17:24
* yvl wants to do "partial page updates" badly17:24
th1aCould use a cookie there...17:24
aelknermenesis, i just committed the removal of test_pdf_views.py, updated the bug to Fix committed again17:24
yvlinstead of reloading the page, reload parts of it17:25
th1aYes.17:25
menesisin other place where person list is long17:25
menesisGroups pages have no batch navigation17:25
menesisthats a problem17:25
menesisbut there is a bug about this17:25
yvlyes!17:25
th1aOK, these are all good bugs.17:26
menesisright17:28
th1aSo what's the schedule for actually packaging the release?17:28
aelkneryvl, thanks again for fixing flourish.js which allowed me to clear the request view bug17:28
menesisthe schedule is tomorrow...17:28
yvlmy pleasure, aelkner17:28
menesiswhatever is there, it is time.17:29
menesisI did not manage to fix several bugs I found myself17:29
th1aSo we have today our time to fix small bugs, correct?17:30
th1aYou're going to start packaging Tue. morning Lithuanian time?17:30
menesisthere are not much changes since Friday so packaging the new release is easy17:30
menesisI am more interested what else I have to do17:31
menesisthe book, the frontpage, are they ready?17:31
th1aI think replaceafill and I will have to push them when they're ready tomorrow.17:32
menesischange the branding on launchpad?17:32
th1aWould you like that job menesis?17:32
th1aOr I can do it.17:32
menesisth1a: you were working on it and have the rights..17:33
th1aOK.  I got it.17:33
th1aSo basically we just need to make sure replaceafill can update the site and book.17:33
menesisfor the book you just merge everything, make clean; make html; make upload17:33
th1aCan you give replaceafill permission for that?17:33
menesishm, replaceafill has no account on schooltool.org?17:34
th1aI don't know.17:35
replaceafillmenesis, no17:35
menesiswill do17:35
replaceafillmenesis, thanks17:36
* th1a is trying to back out of all sys admin related responsibilities.17:36
replaceafillmenesis, i'd be fine just to merge and have you upload the stuff17:36
th1aSo basically the packages should be ready early tomorrow and we'll update the site by the evening.  I17:36
replaceafillbut i think i should be able to update it when you're not around too17:36
th1awill send out some announcements and then save the press release for after the US holiday the beginning of next week.17:36
menesisearly tomorrow your time17:37
menesishopefully17:37
menesisalso note in the announcement where to get it17:37
th1aYes, early our time.17:37
menesisbecause it will be in /dev ppa only...17:37
th1aYes, I have to update the docs for that too.17:37
menesisand lucid won't be ready by tomorrow17:37
th1aWhich will?17:38
menesisnatty and oneiric17:38
menesisI can try to push all missing dependencies there17:38
menesisyeah, I guess just need to copy from maverick17:39
th1aWill we have maverick packages?17:39
menesisyes17:40
th1aOK so maverick, natty, oneiric tomorrow, lucid coming soon?17:41
menesisnatty & oneiric are the same17:42
th1akk17:42
menesislucid & maverick are the same but come later because they need a rebuild17:42
th1aAll right, anything else menesis?17:43
menesisth1a: will you change branding on launchpad? or me17:43
th1aI will.17:43
menesisbecause I'm lost in what Schwa are sending and what is to be used17:44
th1aDon't worry about it.17:44
menesisreplaceafill: favicon in schooltool is not updated17:44
replaceafillhhmm menesis i think it is17:44
replaceafilli see it here for example http://69.164.203.135:666017:44
menesisI though there was a bigger one17:45
replaceafillmenesis, that's the last version vinny sent us17:45
menesisok17:45
menesisif it is the same like elsewhere17:45
menesisI won't worry about it17:45
menesisalso after recent changes to calendar the highlighted tab looks slightly wrong17:46
th1aThe only problem is that it doesn't look great against dark tab backgrounds.17:46
th1aSo we might revise it at some point.17:47
th1amenesis:  The daily tab?17:47
menesisyes17:47
th1aYea, it does seem to be overlapping the line.17:47
th1aSee that replaceafill?17:47
replaceafillyes17:47
replaceafilland has not rounded border either17:47
th1aAdd that to your css bugs.17:48
replaceafilllike Today does17:48
replaceafillkk17:48
th1aThanks menesis.17:48
th1aOK replaceafill.17:48
replaceafillok17:48
th1aSo basically you should probably give as many active bugs to aelkner as you can,17:48
replaceafillth1a, ok17:49
th1aas you're going to be working on various web and css stuff today and tomorrow.17:49
replaceafillth1a, ok17:49
replaceafilli think i can handle my remaining bugs, just have some comments and questions on some17:49
yvl(that calendar bug is -4px margin from page.css)17:49
replaceafilli want to postpone 2 bugs:17:49
replaceafillhttps://bugs.launchpad.net/schooltool/+bug/87227017:49
replaceafillthat's Incomplete, although i understand what jelkner refers to17:50
th1aSure.17:50
th1apostpone17:50
replaceafilland this one:17:50
replaceafillhttps://bugs.launchpad.net/schooltool/+bug/87304517:50
replaceafillsince it's not critical for functionality imo17:50
th1aI think we just get rid of the 's?17:51
th1aWhat else might we do?17:51
replaceafilloh ok17:51
th1aIf it doesn't make sense in any other language.17:51
th1aI guess menesis's "Section's" and "Person's"17:52
th1ais translatable.17:52
th1aOr even This Section's17:52
th1aThis Person's17:52
replaceafillright17:52
th1aEveryone ok with that?17:52
replaceafillas long as doesnt involve content from the context (like titles, names, etcc)17:52
th1aGot that aelkner?  You're going to be doing this.17:52
yvlMath (1)'s don't make much sense to me17:52
replaceafillbut it would involve new strings17:52
yvlComputer Science II's also17:53
th1aGood point.17:53
menesisI would add the first one to a "make other schoolyears/terms less visible" class of issues17:53
th1aLet's just axe the 's for now.17:53
replaceafillok17:54
th1aTo avoid the string issue.17:54
aelknerwe don't need 's17:54
aelknerSection Math (1) Gradebbok should be ok17:54
replaceafillok, so i'm passing that to aelkner17:54
th1aI updated it.17:54
th1aWhat else?17:54
replaceafillah ok17:54
menesisdon't you think that Section title should be editable?17:54
aelknerok17:55
menesiswhen you first create it17:55
th1aLet's not get into that now menesis.17:55
menesisok (1)17:55
replaceafillok17:55
replaceafilli investigated the security issue in the journal17:55
replaceafillworking on this one: https://bugs.launchpad.net/schooltool.lyceum.journal/+bug/89236217:56
replaceafillthe calendar events have Journal links17:56
replaceafillwhich btw i updated to vinny's last suggestions17:56
replaceafillyou can see the updates to the calendar views at17:56
replaceafillhttp://69.164.203.135:6660/schoolyears/2011-2012/2011-fall/sections/art_a_2011-fall_teacher004_000/calendar17:56
replaceafilldaily, weekly and monthly have been updated17:56
replaceafillanyway, back to the Journal security17:57
replaceafillonly the crowd, section_instructors can access the journal17:57
replaceafillthat's in security.zcml17:57
replaceafillthat's why the manager can't17:57
replaceafilli checked the gradebook17:57
replaceafilland the gradebook has a crowd that allows the admins to edit the gradebook17:58
replaceafilli thinks that's dinamic from a security setting17:58
th1aYes.17:58
th1aWe could let the journal use the same setting.17:58
replaceafillthe bug as i wrote it says: just teachers should see the link17:58
replaceafillth1a, ah17:58
replaceafilltrue :)17:58
replaceafillbut i think admins should too, right?17:58
replaceafillat least "see it"17:59
th1aIt can just use the same setting as gradebook.17:59
th1aIt is a similar policy.17:59
replaceafillth1a, right17:59
replaceafillok, will do that then17:59
replaceafillyvl, i have a question here17:59
yvlsure17:59
replaceafillthe little Journal link in the calendar event comes from a viewlet17:59
yvlyes18:00
th1aWhat administrators can do in the teacher's accounting is rather political.18:00
replaceafill<viewlet18:00
replaceafill      name="journal-link"18:00
replaceafillyvl, i tried to set up a new flourish:viewlet with the same name using the same manager18:00
replaceafillbut it didnt work18:00
replaceafillis it maybe because the manager is not a flourish:viewletManager?18:01
replaceafillthe manager is in schooltool.app.browser.app btw18:01
replaceafillit's registered under schooltool.CalendarEvent18:01
yvlyes18:01
yvlit did not get refactored, IIRC18:01
replaceafillwhat i wanted to do is to overwrite the existing journal-link viewlet with one with permission="schooltool.edit"18:02
replaceafillif i register a new viewlet under a different name, both are shown18:02
replaceafilli got confused there18:02
replaceafillmaybe i'm missing something18:02
yvlyou should use the same name, different layer18:03
replaceafillyvl, regular viewlet directive?18:03
yvlyes18:03
replaceafillk, will try that18:03
menesiswhy not change the existing one?18:03
replaceafillmenesis, break the tests18:03
replaceafillthe old skin has the schooltool.view security issue18:04
replaceafilland tests for it :(18:04
replaceafillit allows a student to see the journal18:04
replaceafillyvl, could you go to: http://69.164.203.135:6660/18:05
replaceafilland log in as student255 please?18:05
replaceafillchange your password18:05
menesisit is bad if one can see things in old skin18:05
replaceafillmenesis, +118:06
replaceafillyvl, you should get a dialog after changing the password18:06
menesisall you need to do is prepend ++skin++SchoolTool to the url to see it18:06
yvlreplaceafill, I did18:06
replaceafillyvl, i need to test that with selenium :)18:06
replaceafillbut selenium seems to block on the dialog18:07
replaceafillcan't find the selector for the button18:07
yvlhmm18:07
replaceafillafaik, it's an issue with selenium18:07
replaceafillhandling popups18:07
replaceafilllike jquery ui's18:07
replaceafillhave you read about it?18:07
yvlI don't think so18:08
replaceafillah ok18:08
replaceafillyes, i couldn't find a way to test the dialog18:08
yvland technically it's not a pop-up window :)18:08
replaceafilland you can get the content!18:08
replaceafilllike the title, etc18:08
replaceafillbut not clik on the button18:08
yvlhmm18:08
replaceafill:/18:08
yvlcan you file a bug on that?18:08
yvlso I don't forget18:09
replaceafillyvl, sure, will do18:09
replaceafillok, moving on18:09
yvlit's pretty serious, so High or Critical18:09
replaceafillok18:09
replaceafilland if you touch selenium... :)18:09
replaceafillmake it work on fast machines please18:09
replaceafill(i'm blaming my i7 processor now)18:09
replaceafillor maybe it's ubuntu18:10
replaceafillbecause the stests on person used to run fine in my old laptop with debian18:10
replaceafilland they fail now on ubuntu18:10
yvlit need's... more attention18:10
yvland we'll get stuff like this18:10
yvlfor some time18:10
replaceafilli'd like a speed setting like the IDE has )18:10
replaceafill:)18:10
th1aOK...18:11
* yvl will try on my home machine18:11
th1aSo...18:11
yvlSo...18:11
replaceafillok, wrapping up18:11
replaceafillapplied menesis changes to buttons, made some css fixes18:11
replaceafillhave more to d18:11
replaceafillo18:11
* replaceafill doen18:11
replaceafilldone18:11
replaceafill:D18:11
yvl(you remind me of my common typo: "make urn")18:12
replaceafill:))18:12
replaceafillmy common typo is: brz ...18:12
yvlso18:13
yvlthis cycle has been a lot of fun18:13
yvlall we need is that small final push now18:13
menesisI type zbr18:14
replaceafill:D18:14
th1afinal push to wrap up the meeting.18:14
th1aMostly I need to make my final push...18:14
yvl:)18:14
th1aOne last thing to reassure menesis.18:14
menesis:)18:14
th1aIt will be made quite clear to people that this update should not be done on production instances.18:15
th1aRegardless of bugs, it is obviously too big a change in UI to just spring on people.18:15
th1aSo I will make that clear.18:15
menesistrue. good.18:15
replaceafillthat's also why it's in the /dev ppa, right?18:15
th1aYEs.18:15
th1aIf someone does try it, there should be a backup of their pre-update Data.fs and they can downgrade the repository right?18:16
th1aSwitch out of the ppa, move the back up database over, ready to go, right?18:16
menesisyes, but they will need to take backup18:16
replaceafillbtw, you can see the draft of the homepage here: http://69.164.203.135/homepage/18:17
replaceafillin case you haven't :)18:17
menesisbecause the database is evolved18:17
th1aYeah, don't panic.18:18
th1a(Looking at the homepage).18:18
th1aActually, don't read anything or look at the pictures.18:18
replaceafill:D18:18
th1aOtherwise, it looks pretty good!18:18
yvlmy thoughts precisely18:19
th1alol18:19
th1aI DO have some stuff ready to put in.18:19
yvland it's not a software suite18:19
yvlit's just software :)18:19
th1aWell, we're changing that anyhow.18:19
yvlyes18:19
th1aOK.  Done now.18:21
th1aOne more thing...18:21
yvl:D18:21
th1aCan we meet tomorrow regular time for a brief meeting?18:21
yvlsure18:21
replaceafill+!18:21
th1aOK.18:21
replaceafilloops18:21
th1aSee you tomorrow then.18:21
th1aLast push!18:21
* th1a drops the bag of gravel.18:21
yvl\o/18:21
replaceafillthanks everybody18:21
yvlthanks guys!18:21
aelknerth1a, so i have until tomorrow morning to fix the two bugs i have, right?18:23
th1aUh... before you go to bed morning?18:24
aelkneruntil the meeting we're having18:24
th1aThat's a little late.18:24
th1aYou need to be done by morning Lithuania time.18:25
th1aSo, what... 3:00 AM EST?18:25
th1aSomewhere around there.18:25
aelknerwell, of course, by then18:25
aelknerbut it's the two bugs i have and nothing else, right?18:25
aelkneroh, and for student_detail_student055.pdf, that's clear18:26
aelknerwhat about student_detail_basketball.pdf for the group version of that report for the basketball group?18:26
th1aYou may get more as the day goes on aelkner.18:27
th1a*will*18:27
aelknerso, that18:27
aelknerso that's a yes to my recent question?18:28
aelknerand report_card_basketball.pdf?18:28
aelkneri mean, i shouldn't be a problem as long as no group name matches a student username18:28
th1aThat's a no.  You have two bugs and will be getting more.18:29
th1aYes, really ALL the reports should have a unique identifier.18:29
aelkneri'm still waiting for an answer18:29
th1aIn fact, they probably should get some kind of timestamp.18:29
th1aThere is no reason reports should ever overwrite each other.18:30
aelknercould you give a sample?18:30
th1astudent_detail_basketball_211120111131.pdf18:31
th1astudent_detail_basketball_21-11-2011-1131.pdf18:31
aelknerok, so that's a yes to not worrying about group name/student username collision18:31
th1aYes that would imply that you don't need to worry about namespace collision18:32
aelkneri get that the timestamp keeps the collision at bay, but the other issue is user understanding the filename18:32
aelknerbut like i said, unlikely username and group name are the same18:33
aelkneralso, since it's just a timestamp for file collision purposes (not user readability), may i just use:18:34
th1aAccidentally overwriting reports is a MUCH bigger issue actually.18:34
th1aGlad menesis caught that.18:34
aelknerstudent_detail_student055_YYYYMMDDHHMMSS?18:34
th1aSure.18:34
aelknerthat type of timestamp  sorts in time order18:34
aelknerok, great18:34
menesissorts in username order18:35
menesisseconds are useless18:35
th1aYeah, it is a bit of a toss up.18:36
menesiswould make more sense to put the term or year the report is of rather than today18:36
th1aThere is no reason to ever overwrite these.18:37
replaceafillyvl, selenium bug filed: https://bugs.launchpad.net/schooltool/+bug/89318618:38
menesistimestamp is easier, just do that18:38
aelknerok18:38
th1aDoes a bug need to be filed for the year link we discussed?18:38
* th1a will do it if so.18:38
aelkneryes, so that i know what you want done18:39
th1areplaceafill:  Should we make that bigger than the People, etc. links on /school or the same?18:40
th1aThe year link, that is.18:40
replaceafilli think the same18:41
replaceafillth1a, talking about fonts too big:18:42
replaceafilllog in as manager: http://69.164.203.135:666018:42
replaceafilland then go to: http://69.164.203.135:6660/schoolyears/2011-2012/courses/art_a18:42
replaceafill"This course has no responsible parties"18:43
replaceafillit's h318:43
th1aYes.18:43
th1aDidn't I report that?18:43
replaceafillif i make it a <p>, it looks like: "These users can modify the course."18:43
replaceafillis that ok?18:43
replaceafilli think "These users can modify the course." it's like a hint, right?18:43
th1aThat's a hint.18:43
th1aYes.18:43
replaceafillmaybe we should mark *that* one, someway18:44
th1aSo it could be styled more hinty.18:44
replaceafill:D18:44
replaceafillhinty! :D18:44
th1aHints are gray, for one, right?18:44
replaceafillno18:44
replaceafillthey used to18:44
th1aJust make it hinty.18:44
replaceafillbut vinny suggested black text18:44
replaceafillfor forms18:44
replaceafillwe can make it gray here?18:45
replaceafilli mean, in these index views18:45
replaceafilllet me try and show you18:45
th1aI like gray hints.18:45
th1aI guess I never noticed the change, so I mustn't mind that much.18:48
th1aIn general we don't need to override things that are clearly specified in UWG based on Vinny's suggestions.18:51
th1aHe's more for things not covered, like calendar colors.18:51
replaceafillth1a, http://69.164.203.135:6660/schoolyears/2011-2012/courses/art_a18:56
replaceafillreload18:56
replaceafillmake smaller?18:56
replaceafillth1a, reload, made the hint 10px18:57
th1aMove it up too.  I could be black.18:58
replaceafillhhmm that would involve negative margins...18:59
replaceafillbut ok, i'll try18:59
replaceafillrefresh19:00
th1aGood.19:00
th1aIs the same problem in similar views?19:00
replaceafillyes19:00
th1akk19:01
replaceafillwe have to find out where we have these hints19:01
replaceafillmostly where we have leaders19:01
replaceafillright?19:01
th1aY.19:01
replaceafillgroups, resources19:01
aelknerth1a, failures_by_term_YearId_TermId_timestamp.pdf19:02
aelknerabsenses_by_day_YearId_timestamp.pdf?19:02
aelknersection_absences_YearId_TermId_SectionId_timestamp?19:03
th1aSure.19:03
aelkneroh, forgot the .pdf on that last one, but you get the idea19:03
th1ay19:04
replaceafillhttp://69.164.203.135:6660/resources/projector0019:07
replaceafillhttp://69.164.203.135:6660/schoolyears/2011-2012/groups/group0719:07
th1agood19:13
replaceafill"Form field error messages (the ones next to the red Xs)"19:14
replaceafillthose are good now, correct?19:14
replaceafillafter we fixed the color vinny sent wrong19:14
th1aYes.19:14
replaceafillkk19:14
aelkneryvl, ayt?19:22
aelknerah, never mind19:33
aelknerth1a, a couple questions19:35
th1ayes aelkner?19:36
aelknerabsences_by_day_2011-2012_20111121123628.pdf19:36
th1aThat seems a bit redundant.19:36
aelknerthat has year id, timestamp, no day or activity ids19:36
aelknerthose are the two things in the request dialog19:37
aelknerfailures_by_term_2011-2012_2011-fall_20111121123741.pdf19:37
aelknerthat one doesn't even fit in the download pdf modal that firefox gives you19:38
th1aWell, shorten it.19:38
aelknerit was short already until we decided to add stuff19:39
th1a...19:39
th1aPerhaps there is something inbetween.19:39
aelknerin other words, short it is an incomplete request19:39
aelkneri just don't know what the goal is for the filename19:39
aelknerif timestamp is all we need then fine19:40
th1aOK.19:40
aelknerno year, student id19:40
th1aYou would like to know what kind of report it is.19:40
th1aWhich doesn't require the FULL title of the report.19:40
th1afailure-term19:40
aelkneralthough the original bug request was to have the student id19:40
th1ainstead of "failures_by_term"19:40
th1aIf it is relevant to a specific group, year or term, it would be nice to see that.19:41
th1aBut you don't necessarily need, say, the year AND term.19:41
th1aIf we're worried about length, which we now are,19:41
aelknerterms don't have any sensible key outside the year19:41
aelknersame wth sections19:41
th1aaelkner.19:41
th1aTry to see the middle ground here.19:42
th1aYou want to be able to reasonably identify what you're looking at, and then we want it to have a unique id.19:42
replaceafillbtw, failure_by_term as a name file doesnt work for spanish people19:42
th1aAnd we don't want it to be too long.19:42
aelknergood point, replaceafill19:42
th1aIt doesn't have to be full text, full unique path, and full unique for 1000 years timestamp.19:42
aelknerth1a, again, 'reasonably identify what you're looking at' is a nebulous concept19:43
aelknerwhatever you decide is reasonable is by definition what i would do19:43
th1aHave you heard of abbreviation.19:43
aelknerCOMSERVPAC19:44
aelkneri think that's a military term19:44
aelknerpoint is some general made it up19:44
th1aHere's the formula:19:45
replaceafillmenesis, damn! you're right about the ++skin++SchoolTool problem with the journal19:45
th1aa) abbreviated report title.19:45
* replaceafill stops interrupting aelkner and th1a19:45
th1ab) short identification of the person/group/term/year as needed.19:45
th1aNOT THE WHOLE UNIQUE PATH19:45
th1ac) timestamp, minus first "20" and seconds.19:46
th1aOK?19:46
aelknergood ideas19:46
aelknerseconds is nly risky if they request and save the same report within a minute19:47
aelkneronly the last thing for year, term, section, so for section, just it's id19:47
aelknerthe same for term19:47
aelknerfailures_termid_smallertimestamp19:48
aelknerabsenses_yearid_timestamp19:48
th1afail_19:48
th1aabs_19:48
th1aAbbreviation!19:48
aelkneri thought one word would abreviate, but smaller ones is cool19:49
aelknerabs_day_19:49
aelknerabs_section_19:49
th1ay19:50
aelknerwe do have the two different absenses reports19:50
aelknerok, so that's good for you19:50
aelknerok19:50
replaceafillth1a, https://bugs.launchpad.net/schooltool.lyceum.journal/+bug/89322419:59
replaceafillcritical, right? :)19:59
th1aI guess so.20:00
replaceafilli think here's where crowds help20:00
* replaceafill goes try20:00
*** jelkner has joined #schooltool20:06
aelknerth1a, section id is long, title has spaces:20:06
aelknerart_a_2012-spring_teacher004_00020:06
aelkneru'Art A \u2013 1' is the title20:07
aelknerthat unicode is the -20:07
th1ajust take the first five characters of the id.20:08
aelknerhow about just the course id?20:08
aelknerthat's the art_a part20:08
aelknerand since we still have this silly multi-course possibility,20:09
aelknercourse0id_course1id_etc20:09
aelknerrare, so...20:09
aelknerabs_section_art_a_1112111201.pdf20:10
aelknerabs_section_art_a_english_b_1112111201.pdf20:10
th1aok20:10
aelknerif there are two20:10
aelknerdo we even allow multi-course in flourish?20:10
aelknerit's select a course in the view, right?20:10
aelknerin any event, as long as the data model has the list, we need to code for it20:11
th1aaelkner, if you're worried about it, just use the first five characters of the id.20:11
th1aDon't suggest a more complicated alternative and then fret over how to implement it.20:12
aelknerwell, i prefer something predictable so i can defend it later, it's not a problem to handle the courses20:16
th1aIt seems to me that nothing is more predictable than the first five letters of the id, but whatever.20:16
aelknerit's ok, it's already done20:17
jelknerth1a, i have a question for you when you have a minute20:21
th1aNow is a good time.20:21
jelknercool, I don't know if you remember a conversation we have back when I was setting up time tables20:22
th1aI believe so.20:22
jelknerabout the "Same time each day" not dialog not offering the chance to exclude Saturday and Sunday20:22
jelknerthe problem with that is that it makes the Journal a bit more difficult to use20:23
jelknersince Saturdays and Sundays always show up20:23
th1aIn what sense?20:23
jelknerit would be easier to show you then try to explain it20:23
jelknerbut looking at large matrices of are difficult for human beings20:23
jelkner(particularly those of limited abilities, like me ;-)20:24
th1aOK.  Show me.20:24
jelknerhttps://schooltool.gctaa.net/schoolyears/2011-2012/quarter-2/sections/2/journal20:24
th1aOK?20:26
jelknerthe 17th and 18th are Saturday and Sunday20:26
th1aI believe the problem is that Saturday and Sunday are defined as days school is in session during the term.20:26
jelknerwhen I'm trying to take attendance, I have on a few occasions marked students absent on those days20:27
*** menesis has quit IRC20:27
jelknerit would be easier if they weren't there20:27
jelknerahh20:27
jelknerreally?20:27
jelknerit seems only the time tables have that info20:27
jelkneri don't remember setting it anywhere else20:27
jelknerand in the custom time tables20:28
jelknerit didn't happen20:28
jelknersince i could select which days were in the time table20:28
jelknermaybe your right20:28
th1aIt is a term issue.20:28
jelknerahh20:28
th1aYou define which days school is in session in the term.20:28
jelknergot you20:28
jelknerso i f**ked up when setting up the terms20:29
th1aYou could try backing up your database and editing the term.20:29
jelkner(and since I bet that can't be changed after the fact20:29
th1aI'd be curious to see what happens.20:29
jelknerit means i just have to live with it til next year)20:29
jelknerto see what happens when?20:30
th1aThere's really no reason not to just copy the Data.fs and see what happens if you edit the days in the term.20:30
th1aI think it is possible.20:30
jelknerok, sounds like something to try when mattva01 is in next20:30
th1aAnd there is no data in the days you want to disappear.20:30
jelknerwe plan to get together over the 5 day weekend20:30
jelknerso i'll try it then20:30
jelknerand report back20:31
th1aProbably nothing really will happen.20:31
th1a(good or bad)20:31
jelknerahh20:31
jelknerso it won't actually change the journal20:31
jelknersince the time table was created already20:32
jelknerok, thanks!20:32
th1aIt might.20:32
th1aI don't know how it works!20:33
jelkneri'll let you know20:33
jelknerhave a great thanksgiving!20:33
th1aAlternatively , you could bother someone who knows, but we're all kind of busy right now...20:33
* jelkner logs off since students are arriving20:35
*** jelkner has quit IRC20:35
* th1a brb20:37
replaceafillth1a, zyt?21:18
*** replaceafill has left #schooltool21:18
*** replaceafill has joined #schooltool21:19
th1areplaceafill:  I am here.21:33
replaceafillth1a, can i add a new security setting to the journal instead of using the gradebook's?21:34
replaceafilli think it's easier/safter21:34
replaceafillfor testing, etc21:34
replaceafill*safer21:34
th1aSure.21:35
replaceafillkk, ty21:35
aelknerreplaceafill, a question21:40
replaceafillyes?21:40
aelknerhttp://bazaar.launchpad.net/~schooltool-owners/schooltool/flourish/files/head:/src/schooltool/21:40
aelknersee the demographics folder, why is that still there?21:41
aelkneri rebranched schooltool trunk so that i could merge my branch to it21:41
aelknerbut my branch doesn't have that directory anymore21:41
aelknerhave you changed core latlely?21:42
replaceafillaelkner, schooltool/demographics/browser was the one removed21:42
replaceafillnot schooltool/demographics21:42
aelknerah, ok21:42
aelkneri removed the whole directory instead of just the browser directory21:43
replaceafillah21:43
aelknerreplaceafill, something even weirder is happening now21:52
aelkneri can't even run make on a fresh branch of flourish core21:52
aelknerrm -rf python21:52
aelknervirtualenv --no-site-packages -p python python21:52
aelknermake: virtualenv: Command not found21:52
aelknermake: *** [python] Error 12721:52
aelkneri just say 'make' and get that21:53
replaceafillmake ubuntu-environment21:53
replaceafillthen make21:53
aelknerah, something changed in the bootstrap, a use of python-virtualenv21:54
aelkneris that what you understand?21:54
replaceafillyes21:54
aelknerwhy is it 'Installing distribute'?21:55
replaceafillit's the new sandbox setup menesis created21:55
aelknerah, ok, it looks like i have to change my changes to buildout.cfg to not have devtools21:56
*** menesis has joined #schooltool22:33
*** th1a_ has joined #schooltool22:36
th1a_replaceafill: can you point me at your online version of the homepage?22:37
replaceafillhttp://69.164.203.135/homepage/22:37
th1a_Just sent some Canonical pictograms we should probably use to fill in the Getting Started image one way or another.22:39
th1a_I guess I need some dots...22:39
replaceafilli supposed we'll make them teal?22:40
th1a_No...22:40
th1a_We're basically telling people to use Ubuntu.22:40
replaceafillah!22:41
replaceafillis it me or the second to last, it's a face smiling...?22:41
th1a_It is their education pictogram.22:41
th1a_Yes.22:41
replaceafill:O22:41
replaceafillnice!22:41
th1a_Probably we should cut off the last one and throw some dots behind.22:42
th1a_I need dots.22:42
replaceafilli thought design.canonical.com had dots somewhere22:42
* replaceafill goes look22:42
th1a_http://design.canonical.com/brand/22:42
replaceafillhttp://design.canonical.com/brand/7.%20Dot%20patterns%20and%20usage.pdf22:43
replaceafillthat's the one i remember22:44
th1a_We want tightly spaced dots.22:44
replaceafill0.3mm dot, 1mm spacing22:45
th1a_http://design.canonical.com/22:45
th1a_Can we steal them from the margin ^22:45
replaceafillhttp://design.canonical.com/wp-content/themes/canonical-design/styles/images/bg_dotted.png22:46
replaceafill:D22:46
th1a_I don't actually see anything there in my browser...22:46
replaceafillthere's a dot22:46
replaceafillwant me to set it up in flourish?22:47
replaceafillor is this for the homepage only?22:47
th1a_I was just thinking for the background behind these pictograms.22:47
replaceafillah ok22:47
th1a_Anyhow, that should give you some idea of what I'm thinking of.22:48
replaceafillyes22:48
replaceafilltomorrow will be homepage/book day, right?22:49
th1a_I was kind of thinking of a composition with them different sizes, not line up, etc., but I don't think it is necessary or better.22:49
th1a_Yes.22:49
th1a_My goal is to get through the docs update tonight.22:49
th1a_That's without adding anything new, just updating what is there.22:50
replaceafilljust updating is a big task22:50
th1a_;-)22:50
th1a_Which I've been avoiding.22:50
replaceafill:D22:50
th1a_Actually it isn't that hard.22:50
th1a_The hard parts are figuring out what needs somewhat more reorganization.22:51
th1aaelkner:  Can you give me a screenie?23:01
th1aOn the year link.23:01
aelknerhey, good timing23:02
aelknerone sec23:02
aelknerhttp://69.164.203.135:36660/manage23:03
aelknerstandard manager password23:03
aelkneryou can see the changes for the 's in person, group, section and resource views23:04
th1aOoh... yes... no 's.23:06
th1aLovely.23:06
th1aLooks fine.23:07
aelkneryou can request reports, too, to check the filenames23:07
aelkneryear, term, section, person, groujp23:07
th1aSeems fine.23:08
aelknerbtw, i created a bug just to mark it fixed to match the CHANGES.txt so menesis knows when it was fixed, that being the fact that the select box in the failures request was auto-submitting23:08
th1aok23:09
aelknerthat fix (once i've installed in niepa demo)23:09
aelknerwill make that problem go away where david report getting .html instead of pdf23:09
aelknerthat's what it was i finally found out as i worked on the date widget issue23:10
aelknerso i'll update the niepa demo instance now23:11
replaceafillth1a, http://69.164.203.135:6660/access_control.html23:11
replaceafillfixed the security issue23:11
replaceafilland now, admins can/can't grade the journal23:12
replaceafilland view it23:12
th1aIs it just edit or edit and view?23:12
replaceafillthe setting, just edit23:12
replaceafillview is on by default23:12
th1aOK.23:12
replaceafilli mean, always23:12
th1aYes.23:12
th1aaelkner:  Are you going to be around tonight?23:14
th1aWhen I get back to writing in earnest...23:15
* th1a goes to cook supper.23:16
menesisreplaceafill: awesome!23:16
replaceafillmenesis :)23:16
* replaceafill goes to take a shower...23:23
aelknerth1a, yes i'll be around23:24
*** menesis has quit IRC23:52

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