IRC log of #schooltool for Saturday, 2007-02-10

*** jelkner has joined #schooltool00:50
*** jelkner has joined #schooltool00:51
jelkneranyone here know how to reach albertas?00:51
jelknerhe was supposed to meet us here at ACC for dinner00:52
jelknerbut i don't have a phone number for him00:52
jelknerhe was due to arrive at 5:30 pm00:52
jelkner20 minutes ago00:52
*** ignas has quit IRC01:07
*** jelkner has quit IRC01:23
*** jfroche_ has quit IRC01:39
*** wrobel has quit IRC04:01
*** lisppaste5 has quit IRC05:45
*** lisppaste5 has joined #schooltool05:49
*** pcardune has joined #schooltool08:22
Fujitsupcardune: Thanks for doing the Zope 3 classes. I find them very good :)08:36
pcardunethanks08:36
*** pcardune has quit IRC09:46
*** Aiste has quit IRC10:17
*** jinty has joined #schooltool13:07
*** filip101 has joined #schooltool16:50
filip101a litle question here16:51
filip101when does the lesson start?16:51
filip101* the zope lesson16:52
*** wjohnsto has joined #schooltool16:59
*** filip101 has left #schooltool16:59
*** jelkner has joined #schooltool18:00
*** jfroche_ has joined #schooltool18:02
*** tdoggette has joined #schooltool18:10
*** alga has joined #SchoolTool18:21
*** alga has quit IRC18:24
*** Matty has joined #schooltool18:29
*** pcardune has joined #schooltool18:40
*** Matty is now known as Matty_T18:42
*** mlinnell has joined #schooltool18:43
Lumiere'morning all18:50
*** cpcarey11 has joined #schooltool18:51
Matty_Thi thomas18:53
*** Lumiere changes topic to "SchoolTool development | IRC logs at http://source.schooltool.org/irclogs/ | Dev meetings Mon, 14:30 UTC (16:30 EET) | Use http://paste.lisp.org/new/schooltool for pasting | pcardune's Zope class, Saturdays at noon US/Eastern (GMT-5)"18:56
* tdoggette salutes18:59
*** kjcole has joined #schooltool18:59
Lumiereas with 2 weeks ago...18:59
Lumierelast time I wasn't asleep at this time of the morning19:00
jelknerGood morning everyone19:00
LumiereI opened #cando-help...19:00
*** aelkner has joined #schooltool19:01
jelknercan everyone please type: /me is <your name>19:01
* cpcarey11 is Chris Carey19:01
* kjcole is Kevin Cole19:01
Lumiereplease continue to use it for getting help and etc.19:01
jelknerwe need to take attendance19:01
* jelkner is Jeff Elkner19:01
* Lumiere is insane... 19:01
* mlinnell is mary19:01
jelknerif you used a different nick the last 3 weeks i need to know19:02
*** AVN` has joined #schooltool19:02
jelkneri'm keeping records of attendance19:02
*** Preetam has joined #schooltool19:02
*** smamo has joined #schooltool19:02
*** jhancock has joined #schooltool19:02
*** Mounika has joined #schooltool19:02
* jhancock is James19:03
* pcardune Paul Carduner19:03
* jhancock is James Hancock19:03
* smamo is Shitaye Mamo19:03
* AVN` is Chris Beacha,19:03
* tdoggette is Thomas Doggette19:03
*** Matty_T is now known as myeatman19:03
pcardunewho is Mounika?19:03
Mounikamounika garlapati19:03
* aelkner is Alan ELkner19:04
jelknerok, teach, take it away19:04
pcardunehello everybody19:04
pcardunewelcome to the *fourth* week of the class19:04
pcarduneas before, we are going to briefly go over what we did last week19:05
pcarduneso, last week we created our first auto generated edit form19:05
pcardunewe also learned how to build the user interface into the ZMI using macros19:05
pcardunefinally, we added more attributes to our Contact object.19:05
pcarduneToday we will learn how to automatically test the code that we have already written using both unit tests and functional tests. So far, we have been testing our code, but only manually - by clicking on links in the ZMI and trying it out for ourselves.19:06
pcarduneAlthough this can work fine for a *really* small project, it is always best to write automated tests that can do more tests, more thuroughly, much faster.19:06
pcarduneAutomated testing is also a vital step in the process of Test Driven Development, which in turn is a vital part of the practice of eXtreme Programming.19:06
pcarduneSo far we have not done any test driven development and we have really been very bad XP'ers. But it was important to sidestep testing at first so as to not overcomplicate the first steps in creating a zope application.19:06
pcarduneIn future projects, what we do in this lesson should be done before any of the other lessons.19:07
pcarduneAn important aspect about testing in zope is that today people predominantly use what are called DocTests. As you can probably guess, DocTests combine both documentation and tests.19:07
pcarduneImagine that you were walking someone through how your program works. In essence, as you walked through it with the person, you would also be trying out every feature - and therefore testing it. Doctests just take this process and formalize it into something that can be automated.19:07
pcarduneIn zope3, looking at doctests is a fantastic way to learn about how something works and how to use it.19:08
Lumieredumb question: is there a copy of the current code I could grab?19:08
pcarduneLumiere, yeah, check the lesson web page, there are tarballs19:08
Lumierekk19:08
pcarduneBut enough blabbing for now, let's get on with it.19:08
pcarduneBefore we write the actual tests, we are going to have to do a bit of set up. The first thing to do is to create a file called tests.py. The file should look like this:19:09
pcarduneAnd remember, this is all in the zcontact directory19:09
pcardunewhat happened to the paste bot?19:09
pcarduneok, i'll just paste it in here, it's not very long19:10
pcarduneimport unittest19:10
pcarduneimport zope.testing.doctest19:10
pcardunedef test_suite():19:10
pcardune    return unittest.TestSuite((19:10
pcardune        zope.testing.doctest.DocFileSuite('README.txt',19:10
pcardune            optionflags=zope.testing.doctest.NORMALIZE_WHITESPACE |19:10
pcardune                        zope.testing.doctest.ELLIPSIS),19:10
pcardune        ))19:10
pcardunehere is a link to the paste: http://paste.lisp.org/display/3666519:11
Lumierehttp://paste.lisp.org/new/schooltool19:11
lisppaste5pcardune pasted "tests.py" at http://paste.lisp.org/display/3666619:12
pcarduneThe main purpose of this file is to specify where our doctests will be located; specifically it says to look in the README.txt file.19:13
pcarduneThe one function called test_suite returns a TestSuite object. The constructor for the TestSuite object takes as its first argument, a tuple of tests, or other test suites.19:13
pcarduneThat is, test suites can be nested inside each other.19:13
pcarduneIn this case, We only pass a tuple with one test suite, a DocFileSuite object, to the constructor.19:13
pcarduneAll the tests will be contained in a file called README.txt. It is standard practice to put most unit tests in files called README.txt, although sometimes you will find them in other files - but always with a .txt extension.19:14
pcarduneThe optionflags keyword argument specifies some options for how the test should be run, we will talk about what these options do after we have written the actual tests.19:14
pcarduneThe next thing to do is to create and edit the README.txt file. Here we will be testing the most basic aspects of our objects. At the moment we only have one object - the Contact object, so the test won't be very long. In the README.txt file, write the following:19:15
lisppaste5pcardune pasted "README.txt" at http://paste.lisp.org/display/3666719:15
pcarduneSo far our doctest looks more like documentation that tests. At the top of every doctest you should always put a header describing something about the program or module being tested. The underlined sections are headers, one for the entire file, and one for each segement of the test. Depending on what editor you are using, it is possible to have syntax highlight for the headers, which makes them easy to find when you are looking for a specific set19:17
pcarduneof tests.19:17
pcarduneIf anyone needs a second to catch up, let me know19:17
pcarduneContinue editing README.txt by adding the following:19:17
AVN`gib me a second19:18
lisppaste5pcardune annotated #36667 with "README.txt continued1" at http://paste.lisp.org/display/36667#119:18
pcarduneAs you should notice, what we have just written looks like a session from a python shell! Doctests work just like using the python shell, except that you get to write what the output should be, and you get to annotate what your commands are with documentation.19:19
pcarduneSo let's talk a bit about how these tests work. The doc testing module, which processes these kinds of files, parses the file looking for bits of python code (whatever follows >>> ).19:20
Lumiereso everything indented (your standard indentation amount) is code19:20
Lumiereor does indentation not matter?19:20
pcarduneI put the >>> part two spaces in19:20
pcarduneall the documentation is not indented19:21
pcardunebut the python code snippets are indented19:21
pcarduneback to the python snippets.  The doctest will run these snippets of python line by line. If there is output underneath a snippet, then it checks to see if the output written in the doctest is what python actually would output had you written the command in a python interpretor shell.19:21
pcarduneIf they don't match, then an error is thrown and your test failed.19:22
pcarduneIf any of you have written unit tests in other languages, this is just like an assert statement19:22
pcarduneexcept the assertion is implied by what you write in the "python prompt"19:22
pcarduneThe first thing you should always test for your object is that it actually implements the IContact interface. We make sure that an instance of the object provides the interface, and that the class definition of the object implements the interface.19:22
pcarduneYou may remember us talking about the difference between implements and provides... don't worry to much about it, it is mostly just a matter of nomenclature19:23
pcarduneNow let's move on and add just a few more tests:19:23
lisppaste5pcardune annotated #36667 with "README.txt continued2" at http://paste.lisp.org/display/36667#219:24
lisppaste5pcardune annotated #36667 with "README.txt - THE WHOLE FILE" at http://paste.lisp.org/display/36667#319:25
pcarduneHere we test that the attributes specified in the IContact itnerface actually exist in the implementation (Contact). They should be initialized to empty unicode strings. Remember that the constructor for the Contact class did not take any arguments to specify these values from the beginning.19:25
pcarduneNow let's try running these tests. To run the tests we will be using the zope test runner, which actually searches through a directory tree for tests and runs all of them automatically. To run the test, go to the top directory of your zope3 instance. For those following along with maddog accounts, it should be /home/yourname/zope3/.19:26
pcarduneThen type the following:19:27
pcardunebin/test -uvvp -s zcontact19:27
Lumiereuh so ~/zope/bin/test ?19:28
Lumiereor zope319:28
pcarduneThe u part stands for unit tests, vv part stands for "very verbose", and the p option gives a progress bar. The -s option allows us to search a particular package for tests. What the testrunner actually looks for are files called tests.py - not for README.txt. That is why we have to specify the README.txt file in the tests.py file.19:28
pcarduneLumiere, is it zope or zope3?  one or the other, whichever makes sense...19:29
pcarduneyou shouldn't have both19:29
LumiereI have a different setup from most19:29
pcarduneLumiere, oh19:29
LumiereI think I have zope, they have zope319:29
pcarduneok19:29
pcarduneWe often only want to test one python package (in the case that we have several in our instance), so the -s option is one to remember. The output of running the tests should look something like this:19:29
pcarduneRunning tests at level 119:30
pcarduneRunning unit tests:19:30
pcardune  Running:19:30
pcardune  Ran 1 tests with 0 failures and 0 errors in 0.032 seconds.19:30
pcarduneIf you don't get this than there is either something wrong with your code, or wrong with the test19:31
pcarduneNow try changing some line in the tests, or some line in your Contact class so that the tests fail. Then run the tests again and see what happens.19:31
Lumierein the README.txt, make sure there are blank lines between python test code and text that describes things or the tester will think your description is part of a test (or vice versa)19:32
pcardunethanks Lumiere19:32
*** jfroche_ has quit IRC19:33
pcardunesomeone should chat a *small* snippet of the output of a failed test so we all can see19:33
LumiereValueError: line 20 of the docstring for README.txt has inconsistent leading whitespace: 'In providing the ``IContact`` interface, a ``Contact`` instance has the'19:33
AVN`Module: zcontact.tests19:34
AVN`ValueError: line 19 of the docstring for README.txt has inconsistent leading whitespace: 'In providing the ``IContact`` interface, a ``Contact`` instance has the'19:34
Lumiereheh19:34
pcardunenormally, we would write failing tests first,19:35
lisppaste5Lumiere pasted "Another doctest error" at http://paste.lisp.org/display/3666919:35
Preetam----------------------------------------------------------------------19:35
PreetamFile "/home/pdsouza/zope3/lib/python/zcontact/README.txt", line 17, in README.txt19:35
PreetamFailed example:19:35
Preetam    interfaces.IContact.implementedBy(Contact)19:35
PreetamExpected:19:35
Preetam    False19:35
PreetamGot:19:35
Preetam    True19:35
pcarduneok, that's all very good19:35
pcarduneso, normally we would write failing tests first19:35
pcardunethen we would make changes to the code to make the test pass again19:35
pcardunethat way we know that the test is passing because of what we wrote in the code (and not because the test was incorrectly written for example)19:36
pcarduneNow that we have tested our Contact object, we will start testing our user interface.19:36
pcarduneTesting the user interface has historically been much more complicated because automating clicks on a screen is tricky business, and making sure the page looks a certain way is equally tricky. As of now, you can't have a super intelligent robot with eyes that does everything for you.19:37
pcarduneBut not to worry, doctests will come to our aid once again.19:37
pcarduneWhen the zope testrunner runs functional tests, it looks for files called ftests.py, so the first thing we will do is create and edit the ftests.py file. It should look like this:19:37
lisppaste5pcardune pasted "ftests.py" at http://paste.lisp.org/display/3667019:38
pcarduneWe always put functional tests in a separate file from the unit tests, because they often take much longer to run and we often want to run each separately. So, as the ftests.py file suggests, create and edit the browser.txt file.19:39
pcarduneThe browser.txt file is going to have the same format as the README.txt and will work just like typing stuff into a python interpreter shell.19:39
lisppaste5pcardune pasted "browser.txt part1" at http://paste.lisp.org/display/3667219:39
pcarduneTo start us off, type what i pasted above into the browser.txt file:19:40
pcarduneZope provides us with a great way to write functional tests using a fake browser. The Browser class that we just imported works just like a real browser that allows us to go back and forward, click on links, enter information into forms, and so on.19:41
pcarduneIf you want to know how this works, and at the same time see a really excellent example of what a (unit) doctest should look like, look at /usr/local/src/Zope3/src/zope/testbrowser/README.txt, which is the README.txt file for the testbrowser package in zope.19:41
pcarduneNow let's move on with the test. The next thing to write is:19:42
aelkneryou mean (functional) doctest, right?19:42
lisppaste5pcardune annotated #36672 with "browser.txt part2" at http://paste.lisp.org/display/36672#119:43
pcarduneno, the file i pointed to is a unit doctest19:43
aelknerok, i see.19:44
pcarduneWe first isntantiate a browser object. Then we log in by adding an Authorization header. When running functional tests, the default login is username: mgr and password: mgrpw. Next19:44
pcardunewe set handleErrors to false so that when there is a problem with displaying a page, the test will throw an error and stop - rather than the zope server just serving up a page that says System Error.19:45
pcarduneNote that we use the url http://localhost/manage to access the ZMI. When running the functional tests, the browser object does not connect to an actual zope server you are running, so the url is faked to always be localhost, on the default port 80.19:46
AVN`do we need to start the zope server to run funtional tests?19:46
pcarduneAVN`, nope, the functional test starts a fake zope server automatically19:46
pcarduneNow we will write our first real test (which is going to fail). Let's say that once we've logged into the ZMI, and click on the Z Contact link in the add menu, instead of just creating an empty contact object right there, we want to be taken to a form that allows us to intialize the information to store in the contact.19:47
pcarduneRather than implementing this right off the bat, we will write a functional test that describes the behavior we would like.19:48
pcarduneNow add the following to browser.txt:19:48
lisppaste5pcardune annotated #36672 with "browser.txt part3" at http://paste.lisp.org/display/36672#219:48
pcarduneSo, if we were in a real browser, what we would have done to test out this feature is to find the link that says 'Z Contact' (this is the getLink part), and click on it (the .click() part).19:49
pcarduneNext, we expect that the page this link takes us to has Controls (form input elements), with the labels 'Last Name' and 'First Name'.19:49
pcarduneWe can then type our name into these input fiels by setting the value attribute of the Control.19:49
pcarduneFinally we will type in the name of our object as it should appear in the ZMI, which is in the field add_input_name.19:50
pcarduneWhen a form element does not have a label associated with it, we have to specify the exact name of the element.19:50
pcarduneFinally we should be able to click on an 'Add' button to actually add the form.19:51
pcarduneGo ahead and run this test. To do so, type in the shell19:51
pcardunebin/test -fvvp -s zcontact19:51
pcarduneThis time we have an f instead of a u, which stands for functional tests.19:51
lisppaste5Lumiere pasted "ftest error" at http://paste.lisp.org/display/3667319:53
pcarduneLumiere, there is a problem with the way your zope is set up19:54
pcardunethis works on maddog though19:55
LumiereI am on maddog...19:55
Lumiere*asks aelkner*19:55
pcarduneLumiere, i thought you said you had a different set up than everyone else?19:55
Lumiereit's still a default instance19:56
pcarduneis anyone else getting the: no such file or directory, ftesting.zcml error?19:56
AVN`I got an error also19:56
mlinnellI got a different error19:57
pcarduneyou should be getting an error... just not one about ftesting.zcml19:57
AVN`its in browser.getControl('Add').click()19:57
pcarduneok, then you are fine19:57
pcarduneit is only a problem if you see19:58
pcarduneIOError: [Errno 2] No such file or directory: '/home/jstraw/zope/lib/python/zcontact/ftesting.zcml'19:58
pcarduneor something to that effect, all other errors are to be expected (it is a failing test after all)19:58
Lumieremake sure you run tests from the top directory of the zope instance... (reminder)19:58
pcarduneNote that running this short test takes quite a bit of time because the functional tests start up a fake zope server and intialize a fake empty database.19:59
pcarduneThis test should fail because we have not actually implemented the code to make it work. This is called Test Driven Development, because the failing tests drive what we implement.20:00
pcarduneSo now let's make this test pass! Implementing an add form is a lot like implementing an edit form, which we did in class last week. To do this, we will have to edit the configure.zcml file. So open it up for editing.20:00
pcarduneThen add the following tag:20:01
*** jinty has quit IRC20:01
pcardune  <browser:addform20:01
pcardune      label="Add Contact"20:01
pcardune      name="addContact.html"20:01
pcardune      permission="zope.ManageContent"20:01
pcardune      schema="zcontact.interfaces.IContact"20:01
pcardune      content_factory="zcontact.contact.Contact"20:01
pcardune      />20:01
pcarduneThe difference from the editform tag to pay attention to is that we do not have a for attribute, and we now have a content_factory attribute. The content_factory specifies the constructor for our object, which in this case is just the __init__ method of the Contact class.20:02
pcarduneFinally, we will have to change one more thing: the addMenuItem tag. You should add the following attribute to the addMenuItem tag:20:04
pcardune      view="addContact.html"20:04
pcarduneThis attribute tells the addMenuItem tag to point to the addform we just created.20:05
Lumierecan you paste your configure.zcml file20:05
Lumiereso we can see context20:05
pcardunesure20:05
lisppaste5pcardune pasted "configure.zcml" at http://paste.lisp.org/display/3667520:06
pcarduneNow rerun the test and all should work well. Feel free to start up your zope instance and check it out manually for yourself by adding a contact through the ZMI.20:07
pcarduneNow we are going to take a short 5 minute break because I believe jelkner has some announcements.20:07
jelknerbriefly, i wanted to find out if anyone has questions about the next steps in the internship process20:08
jelkner?20:08
tdoggetteI do!20:09
jelknertdoggette: yes?20:09
tdoggetteWe are continuing with the online meetings, yes?20:09
jelknermeetings?20:09
tdoggetteAfter that, when summer comes, who among us becomes a proper intern?20:09
tdoggetteClasses, that is.20:09
tdoggetteLike this one.20:09
jelkneryes, class will continue until summer20:10
jelknerbtw. there is no class on feb 2420:10
jelknerthe teacher will be at pycon20:10
myeatmanso will everyone who is still attending the classes be considered an intern? or is there a selection process?20:10
jelknerour goal is to include everyone who successfully completes class as an intern20:11
jelknerthe only stipulation is that you really need to understand what is taught, not just attend20:11
myeatmanof course20:11
jelkneryou all are doing a fantastic job!20:12
myeatmantyvm20:13
jelknerthat's all i have, any other questions?20:13
myeatmanwhen is the food arriving?20:13
jelknerat 2 pm20:13
myeatmanyay!20:13
jelknernot during class ;-)20:13
AVN`there is food?20:13
jelknerfor those who are here20:14
AVN`internet food?20:14
tdoggetteSay, is there going to be a test at the end of this?20:14
tdoggetteNot about food, about zope.20:14
jelkneryes20:14
tdoggetteOh MAN!20:14
tdoggetteThere goes my life plan.20:14
jelkneri'll work that out with the teacher20:15
jelknerit won't kill anyone20:15
jelknerbut it will keep everyone honest20:15
jelknerin other words, make sure you don't just show up at class, but spend some time during the week making sure you understand what was learned.20:15
tdoggettePssh. Comprehension.20:16
jelknerother questions?20:16
jelknerok, back to you, teach20:16
myeatmanyou gave everyone specific ports. what were those again?20:16
myeatmannvm im good20:17
pcarduneNow back to more functional test writing. After adding the zcontact object with the addform, we should be able to click on a link to it that takes us to a page displaying information stored in contact.20:18
pcarduneSo let's write that as a functional test. Add the following lines to browser.txt:20:18
lisppaste5pcardune annotated #36672 with "browser.txt part4" at http://paste.lisp.org/display/36672#320:18
pcarduneThe three dots are called ellipses'. They are basically wild cards in functional tests. The browser.contents attribute holds all the html returned to the browser. We don't care so much about what the *exact* html is, so we use an ellipses as a wild card for any html.20:20
pcarduneFinally we will add one more test for the edit form. This should look like this:20:22
lisppaste5pcardune pasted "browser.txt part5" at http://paste.lisp.org/display/3667620:23
pcardunego ahead and run the test again and make sure everything passes20:24
lisppaste5pcardune annotated #36676 with "browser.txt THE WHOLE THING" at http://paste.lisp.org/display/36676#120:24
pcarduneare there any questions so far?20:25
mlinnellI'm getting an error20:25
mlinnellZopeXMLConfigurationError: File "/home/mlinnell/zope3/etc/ftesting-base.zcml", line 15.2-15.5520:26
mlinnell    ZopeXMLConfigurationError: File "/home/mlinnell/zope3/etc/package-includes/zcontact-configure.zcml", line 1.0-1.3020:26
mlinnell    ZopeXMLConfigurationError: File "/home/mlinnell/zope3/lib/python/zcontact/configure.zcml", line 14.4-21.520:26
mlinnell    ConfigurationError: ('Invalid value for', 'class', "ImportError: Couldn't import zcontact.browser, No module named browser")20:26
pcardunemlinnell, it looks like you forgot to take out the class=zcontact.browser.ContactView attribute from your page registartion in configure.zcml20:27
pcardunewe did that during the last class20:27
mlinnellah thanks20:29
Mounikai keep getting an error20:30
MounikaTraceback (most recent call last):20:30
Mounika  File "/home/mgarlapa/zope3/lib/python/zcontact/ftests.py", line 1, in ?20:30
Mounika    import zope.app.testing.fuctional20:30
MounikaImportError: No module named fuctional20:30
mlinnellyou spelled functional wrong20:30
Mounikaahhh thanks20:30
pcarduneok, well the next thing we are going to do is create containers20:32
pcarduneunfortunately, the next stage of development is going to take more than 30 minutes20:32
pcarduneand I don't want to stop half way through it20:32
AVN`so are we going to do it?20:33
pcardunewell, no20:33
pcardunenot today20:33
myeatman=( oh well20:34
pcarduneinstead, i think it might be a good idea to have a little review session20:34
myeatmanooh. needed20:34
pcardunejust to make sure you guys are following along20:34
AVN`gooood ideaaa20:34
pcarduneso, how about this, I'm going to ask a question, and I want each of you to private message me the answer20:34
mlinnellhow do you private message?20:35
pcardunealthough, are all of you registered on freenode? (you can't send private messages without being registered)20:35
AVN`no20:35
mlinnellI'm not registered20:35
AVN`I'm not registered20:35
cpcarey11how do I register?20:35
myeatmani dunno, but i don't think so20:35
Mounikasame20:35
AVN`we could just make another channel20:35
myeatmantoo easy to cheat20:35
AVN`?20:36
AVN`2 people in it at a time20:36
*** pcarduneadsf has joined #schooltool20:36
myeatmanoh then yeah that would work20:36
pcardunecheck out http://freenode.net/faq.shtml#nicksetup20:36
pcarduneto register your nick name20:37
pcarduneit only takes a second20:37
pcarduneto send private messages you type \/msg <message here>20:38
pcardune(without the \ part)20:39
pcarduneor sorry, you type \msg pcardune <your message here>20:39
pcardunewe can spend a minute setting this up as it will come in handy later20:39
Lumierelets try that again ;)20:39
Lumiereit's /msg pcardune <message>20:39
AVN`./msg nickserv register (yout password20:39
AVN`without the dot20:40
Lumiereplease read nicksetup anyways20:40
Mounika /msg nickserv link <mgarlapa> <mouni>20:40
LumiereMounika: no <>20:40
Lumiereand uh20:40
Lumiereno inital space20:41
Mounikaoka thanks20:41
Lumiereand choose a different pass20:41
Mounikaok20:41
Lumierebecause we all just saw that one20:41
myeatmanlol20:41
Lumierehope you don't use it elsewhere20:41
Mounikanope..20:41
AVN`sure you don't20:41
pcardunesend me a private message when you have been registered so I know you are ready to go20:42
pcarduneso far five of you have messaged me20:43
*** pcarduneadsf has quit IRC20:43
pcardune6...20:43
pcarduneis anyone not with us?20:44
pcardunetdoggette? jhancock? myeatman? smamo?20:44
pcardune7...20:44
pcarduneok, close enough20:45
pcardunethe first question of the day (and this is open book), briefly, what is the purpose of writing an interface?20:45
pcarduneand don't worry, your life does not depend on your answer to this question, nor does your internship, nor is there a grade... no stress20:46
pcarduneok, most of you have given a pretty satisfactory answer20:48
pcarduneinterfaces describe the methods and attributes of a class, while documenting them20:48
pcarduneok, the next question is: what is a schema?  and how is it different from an interface20:49
pcardunea schema extents an interface by allowing us to specify exactly what kind of data an attribute should store.  It also allows us to write down a title and description for the attribute (further documentation)20:53
pcarduneextends*20:54
pcarduneok, the next question is:20:55
pcardunewhat is the configure.zcml file for?20:55
pcardunethe answer i was looking for is, "the configure.zcml file is used to hook a component up to other components in zope, such as browser views and auto generated forms.  It also allows us to tell zope about an object and what permissions to use on it"20:58
pcarduneconfigure.zcml files can do a lot more than that, but that is all we have talked about so far20:59
pcardunejust for the record20:59
pcarduneok, next question should be easy, what does ZCML stand for/20:59
pcardune?20:59
pcarduneok, well that was the last question now that it is 2pm21:00
pcarduneso, you are all free to go21:01
myeatmananswer?21:01
pcarduneZope Configuration Markup Language21:01
pcardunemost folks got it right21:01
myeatmanFOOOOOOOOD!!!!!!!!!!!!!!!!!!!!!!!21:01
Preetamlol21:01
Lumierefood is served in the cyber cafe21:01
jelknersee you all next week!21:01
Lumierethere is cold pizza21:01
Lumiere(cheese)21:01
Preetamyup, bye21:01
Lumiereand subway21:01
mlinnellthanks bye21:01
jelknerand sandwhiches21:02
Mounikathanks bi21:02
Lumiereyes... cold pizza... it's left overs from yesterday21:02
myeatmanthanks so much paul21:02
pcardunei'll be eating breakfast21:02
tdoggetteAll you folks not here in reality are missin' out.21:02
*** cpcarey11 has quit IRC21:02
*** Preetam has quit IRC21:02
*** myeatman has left #schooltool21:02
*** Mounika has quit IRC21:02
*** mlinnell has quit IRC21:02
*** AVN` has left #schooltool21:03
kjcolepcardune21:07
kjcolepcardune, I've been ignoring class again, helping others catch up.  Jeff said I should ask you to fix the bzr repository for your lessons.21:08
pcardunewhat is wrong with it?21:09
kjcolein particular, deciding which files should be ignored, I guess.21:09
kjcoleRight now "bzr status" reports several "unknowns".  So, the generated files need to be "bzr ignore"-ed, and the rest added.21:10
pcarduneright21:10
pcardunei'm talking to elkner right now, we should be done in not too long21:10
kjcoleYeah.  He told me to chat with you and then said he was going to call you... To which I said "Let me get this straight.  You want me to IRC him21:11
kjcolewhile you phone him?"  He said "Yeah".  Lucky you.21:12
pcarduneok kjcole, i'm off the phone with him21:26
Lumieresec21:29
kjcolepcardune, Back.21:29
pcardunekjcole, if you run python setup.py clean21:30
pcardunethen it will remove all the files that should be ignored21:30
kjcolepcardune, So... I had started trying to get Jeff to do the "bzr ignore/add/commit" stuff, but he said you'd know it best.21:30
kjcoleYeah, but later when they're regenerated, bzr will moan about them being "unknown".  So, if you can add a [bzr ignore "*.whatever"] it will pick up on future generating.21:31
kjcole(I wasn't sure which files should be ignored, or I would have done it myself.)21:32
pcardunebut the ignoring is more complicated than just *.whatever21:32
kjcole?21:32
pcardunethat is, sometimes we want to ignore *.css, and sometimes we don't21:33
pcarduneit depends on which directory we are in21:33
pcardunethe setup.py file isn't that complicated21:33
pcardunejust look at the clean method21:33
pcarduneand add ignores for everything there21:33
pcarduneit would be better to ignore lesson*/txtsrc and lesson*/*.css and so forth21:34
kjcoleOK, will do.  (I'm guessing something like [bzr ignore "./lesson*/*.css"] might be part of the answer there.21:34
pcardunei don't know if you can specify ignores like that21:34
pcardunemy only concern is that the setup.py file will change some how and the ignore won't work21:35
pcardunebesides, is it really that huge a problem to do python setup.py clean before you do bzr stat?21:35
kjcoleWell, one can always "bzr rm" and change the .bzrignore file if setup.py changes too much.21:35
pcarduneok21:36
kjcoleNo, I guess not.  The trick then will be to convince Jeff et al to not make the repository do double duty.21:36
pcardunewell i looked on ganges and did a bzr stat and there is all sorts of weird stuff... apparently index.lore was removed?21:37
pcardunethat shouldn't be removed21:37
pcarduneI would rebranch from my copy onto ganges, because that branch is kind of messed up it seems to me21:37
pcarduneor maybe just do bzr revert21:37
pcarduneand then bzr pull21:37
kjcoleOK.  I'll assume yours is the master copy.  (I haven't been involved at all in the lesson editing.  I was merely trying to keep bzr repositories on ganges from being left half-baked.)21:38
pcarduneyeah21:39
pcardunedo you know where to get my copy?21:39
kjcoleNope.21:39
pcarduneit used to be on port 81, but now it is on port 8021:39
pcardunehttp://www.carduner.net/privatebzr/zope3class/21:39
kjcoleI'll double-check w/ Jeff to make sure everyone's on the same page, then I'll just wipe and branch off yours.21:40
pcarduneok21:40
kjcoleBTW, you can ignore my email: Eldar showed me what to do w/ deleting the undeletable: I just deleted all the Data.fs* and restarted, as there wasn't much there yet.21:41
kjcole(He also suggested a longer way with pdb, but having never used it, I opted for the easier method.)21:42
*** tdoggette has quit IRC21:45
pcarduneok, well I'm going to go eat breakfast.  Call me if you guys need any help on something.21:49
pcardunebye21:49
*** pcardune has quit IRC21:49
*** kjcole has quit IRC21:50
*** nitromaster101 has joined #schooltool22:02
*** nitromaster101 has quit IRC22:03
*** nitromaster101 has joined #schooltool22:03
*** smamo has quit IRC22:17
*** jelkner has quit IRC22:19
*** didymo has quit IRC22:43
*** nitromaster101 has quit IRC22:43
*** filip101 has joined #schooltool23:03
*** filip101 has left #schooltool23:03
*** filip101 has joined #schooltool23:15
filip101hey23:15
filip101i missed the lessons so far23:15
filip101because i have real diving lessons to attend to23:15
filip101but i wanted to check what i missed23:15
filip101but nothing is at the lesson website23:16
filip101what's up?23:16
filip101never mind23:18
filip101it's back up23:18
*** filip101 has quit IRC23:38
FujitsuHm, what's this internship thing I see mentioned in the class?23:40

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