r937 - in /schooltool/trunk: ./ debian/ schooltool-skel/etc/ src/schoolbell/ src/schooltool.egg-info/ src/schooltool/app/browser/ src/schooltool/app/browser/ftests/ src/schooltool/app/browser/templates/ src/schooltool/basicperson/ src/schooltool/calendar/ src/schooltool/course/ src/schooltool/demographics/ src/schooltool/person/ src/schooltool/person/browser/ src/schooltool/sbapp/ src/schooltool/skin/ src/schooltool/skin/resources/ src/schooltool/skin/templates/ src/schooltool/stapp2005/ src/schooltool/stapp2007/ src/schooltool/term/ src/schooltool/term/browser/ src/schooltool/term/browser/ftests/ src/schooltool/timetable/ src/schooltool/timetable/browser/ src/schooltool/timetable/browser/ftests/ src/schooltool/timetable/browser/templates/ src/schooltool/timetable/browser/tests/ src/schooltool/widget/ utilities/

jinty-guest at users.alioth.debian.org jinty-guest at users.alioth.debian.org
Fri Jul 13 10:55:15 UTC 2007


Author: jinty-guest
Date: Fri Jul 13 10:55:15 2007
New Revision: 937

URL: http://svn.debian.org/wsvn/pkg-zope/?sc=1&rev=937
Log:
New tarball.

Added:
    schooltool/trunk/src/schooltool/basicperson/
      - copied from r936, schooltool/branches/upstream/current/src/schooltool/basicperson/
    schooltool/trunk/src/schooltool/person/sampledata.py
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/person/sampledata.py
    schooltool/trunk/src/schooltool/skin/resources/zonki-angry.png
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/skin/resources/zonki-angry.png
    schooltool/trunk/src/schooltool/skin/resources/zonki-pointing.png
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/skin/resources/zonki-pointing.png
    schooltool/trunk/src/schooltool/skin/resources/zonki-question.png
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/skin/resources/zonki-question.png
    schooltool/trunk/src/schooltool/skin/resources/zonki-reading.png
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/skin/resources/zonki-reading.png
    schooltool/trunk/src/schooltool/skin/resources/zonki-regular.png
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/skin/resources/zonki-regular.png
    schooltool/trunk/src/schooltool/stapp2005/
      - copied from r936, schooltool/branches/upstream/current/src/schooltool/stapp2005/
    schooltool/trunk/src/schooltool/stapp2007/
      - copied from r936, schooltool/branches/upstream/current/src/schooltool/stapp2007/
    schooltool/trunk/src/schooltool/term/browser/ftests/
      - copied from r936, schooltool/branches/upstream/current/src/schooltool/term/browser/ftests/
    schooltool/trunk/src/schooltool/term/browser/term_basic_add_edit.pt
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/term/browser/term_basic_add_edit.pt
    schooltool/trunk/src/schooltool/term/ftesting.py
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/term/ftesting.py
    schooltool/trunk/src/schooltool/term/ftesting.zcml
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/term/ftesting.zcml
    schooltool/trunk/src/schooltool/timetable/browser/templates/timetable-add.pt
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/timetable/browser/templates/timetable-add.pt
    schooltool/trunk/src/schooltool/timetable/browser/templates/timetable-edit.pt
      - copied unchanged from r936, schooltool/branches/upstream/current/src/schooltool/timetable/browser/templates/timetable-edit.pt
    schooltool/trunk/utilities/generate_vcal_dict.py
      - copied unchanged from r936, schooltool/branches/upstream/current/utilities/generate_vcal_dict.py
Removed:
    schooltool/trunk/schoolbell-server.py
    schooltool/trunk/schoolbell-site.zcml
    schooltool/trunk/schoolbell.conf.in
    schooltool/trunk/src/schoolbell/translations.zcml
    schooltool/trunk/src/schooltool/sbapp/
Modified:
    schooltool/trunk/Makefile
    schooltool/trunk/PKG-INFO
    schooltool/trunk/debian/changelog
    schooltool/trunk/schooltool-skel/etc/site.zcml
    schooltool/trunk/setup.py
    schooltool/trunk/src/schooltool.egg-info/PKG-INFO
    schooltool/trunk/src/schooltool.egg-info/SOURCES.txt
    schooltool/trunk/src/schooltool.egg-info/requires.txt
    schooltool/trunk/src/schooltool/app/browser/app.py
    schooltool/trunk/src/schooltool/app/browser/configure.zcml
    schooltool/trunk/src/schooltool/app/browser/ftests/cal.txt
    schooltool/trunk/src/schooltool/app/browser/templates/edit_relationships.pt
    schooltool/trunk/src/schooltool/app/browser/testing.py
    schooltool/trunk/src/schooltool/calendar/generate_vcal_dict.py
    schooltool/trunk/src/schooltool/course/configure.zcml
    schooltool/trunk/src/schooltool/demographics/configure.zcml
    schooltool/trunk/src/schooltool/demographics/overrides.zcml
    schooltool/trunk/src/schooltool/demographics/sampledata.py
    schooltool/trunk/src/schooltool/person/browser/person-csvimport.pt
    schooltool/trunk/src/schooltool/person/browser/person.py
    schooltool/trunk/src/schooltool/person/browser/person_add.pt
    schooltool/trunk/src/schooltool/person/browser/person_container_delete.pt
    schooltool/trunk/src/schooltool/person/browser/person_edit.pt
    schooltool/trunk/src/schooltool/person/browser/person_preferences.pt
    schooltool/trunk/src/schooltool/person/browser/tests.py
    schooltool/trunk/src/schooltool/person/configure.zcml
    schooltool/trunk/src/schooltool/skin/configure.zcml
    schooltool/trunk/src/schooltool/skin/containers.py
    schooltool/trunk/src/schooltool/skin/resources/favicon.ico
    schooltool/trunk/src/schooltool/skin/resources/layout.css
    schooltool/trunk/src/schooltool/skin/resources/schooltool.css
    schooltool/trunk/src/schooltool/skin/resources/schooltool.js
    schooltool/trunk/src/schooltool/skin/templates/actionsbar.pt
    schooltool/trunk/src/schooltool/skin/templates/container.pt
    schooltool/trunk/src/schooltool/skin/templates/container_delete.pt
    schooltool/trunk/src/schooltool/skin/templates/edit_form.pt
    schooltool/trunk/src/schooltool/skin/templates/error.pt
    schooltool/trunk/src/schooltool/skin/templates/navigation.pt
    schooltool/trunk/src/schooltool/skin/templates/notfound.pt
    schooltool/trunk/src/schooltool/skin/templates/simple_add.pt
    schooltool/trunk/src/schooltool/skin/templates/simple_edit.pt
    schooltool/trunk/src/schooltool/skin/templates/table_container.pt
    schooltool/trunk/src/schooltool/skin/templates/unauthorized.pt
    schooltool/trunk/src/schooltool/skin/templates/view_macros.pt
    schooltool/trunk/src/schooltool/term/browser/term.py
    schooltool/trunk/src/schooltool/term/browser/tests.py
    schooltool/trunk/src/schooltool/term/configure.zcml
    schooltool/trunk/src/schooltool/term/term.py
    schooltool/trunk/src/schooltool/timetable/browser/__init__.py
    schooltool/trunk/src/schooltool/timetable/browser/configure.zcml
    schooltool/trunk/src/schooltool/timetable/browser/ftests/timetable-events.txt
    schooltool/trunk/src/schooltool/timetable/browser/ftests/timetabling.txt
    schooltool/trunk/src/schooltool/timetable/browser/schema.py
    schooltool/trunk/src/schooltool/timetable/browser/tests/test_schema.py
    schooltool/trunk/src/schooltool/timetable/configure.zcml
    schooltool/trunk/src/schooltool/timetable/schema.py
    schooltool/trunk/src/schooltool/widget/password.py

Modified: schooltool/trunk/Makefile
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/Makefile?rev=937&op=diff
==============================================================================
--- schooltool/trunk/Makefile (original)
+++ schooltool/trunk/Makefile Fri Jul 13 10:55:15 2007
@@ -2,10 +2,10 @@
 #
 # Makefile for SchoolTool
 #
-# $Id: Makefile 7008 2007-07-09 14:58:27Z jinty $
+# $Id: Makefile 7039 2007-07-12 16:48:17Z jinty $
 
 PYTHON=python2.4
-TRANSLATION_DOMAINS=schoolbell schooltool schooltool.commendation
+TRANSLATION_DOMAINS=schooltool schooltool.commendation
 TESTFLAGS=-v
 PYTHONPATH:=$(PYTHONPATH):src:eggs
 SETUPFLAGS=
@@ -137,17 +137,17 @@
 #
 # Makefile rules for importing and exporting translations to rosetta:
 #
-# To create a translation templates (schooltool.pot, schoolbell.pot) for
+# To create a translation templates ($DOMAIN.pot) for
 # uploading to rosetta:
 #
 # 	1. run 'make extract-translations'
-# 	2. upload the src/schooltool/locales/{schoolbell,schooltool}.pot files
+# 	2. upload the src/schooltool/locales/DOMAIN.pot files
 # 	   to rosetta.
 #
 # To create tarballs suitable for uploading to rosetta:
 #
 # 	The following command will create tarballs in the current directory of
-# 	the form {schooltool,schoolbell}-translations.tar.gz. These should be
+# 	the form DOMAIN-translations.tar.gz. These should be
 # 	suitable for uploading to rosetta.
 #
 # 	$ make translation-tarballs
@@ -160,7 +160,7 @@
 #
 #	1. get a clean checkout of schooltool
 # 	2. download the tarballs of exportd PO files from rosetta and rename
-# 	   them to rosetta-schooltool.tar.gz and rosetta-schoolbell.tar.gz
+# 	   them to rosetta-DOMAIN.tar.gz
 # 	3. run 'make update-rosetta-translations'
 # 	4. use svn to add and commit any new/changed translations
 #
@@ -181,8 +181,10 @@
 
 .PHONY: translation-tarballs
 translation-tarballs: extract-translations update-translations
-	$(MAKE) DOMAIN=schooltool create-translation-tarball
-	$(MAKE) DOMAIN=schoolbell create-translation-tarball
+	set -e; \
+	for domain in $(TRANSLATION_DOMAINS); do \
+	    $(MAKE) DOMAIN=$$domain create-translation-tarball\
+	done
 
 .PHONY: extract-rosetta-tarball
 extract-rosetta-tarball:
@@ -201,8 +203,10 @@
 
 .PHONY: update-rosetta-translations
 update-rosetta-translations:
-	[ ! -e rosetta-schooltool.tar.gz ] || $(MAKE) DOMAIN=schooltool extract-rosetta-tarball
-	[ ! -e rosetta-schoolbell.tar.gz ] || $(MAKE) DOMAIN=schoolbell extract-rosetta-tarball
+	set -e; \
+	for domain in $(TRANSLATION_DOMAINS); do \
+	    [ ! -e rosetta-$${domain}.tar.gz ] || $(MAKE) DOMAIN=$${domain} extract-rosetta-tarball\
+	done
 	$(MAKE) PYTHON=$(PYTHON) extract-translations update-translations
 	# remove .po~ and .mo files so they are not accidentally committed
 	find $(LOCALES) \( -name '*.po~' -o -name '*.mo' \) -exec rm -f {} \;

Modified: schooltool/trunk/PKG-INFO
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/PKG-INFO?rev=937&op=diff
==============================================================================
--- schooltool/trunk/PKG-INFO (original)
+++ schooltool/trunk/PKG-INFO Fri Jul 13 10:55:15 2007
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: schooltool
-Version: 2006.999-2007-alpha1-svn-r7010
+Version: 2006.999-2007-alpha1-svn-r7056
 Summary: A common information systems platform for school administration.
 Home-page: http://www.schooltool.org
 Author: SchoolTool development team

Modified: schooltool/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/debian/changelog?rev=937&op=diff
==============================================================================
--- schooltool/trunk/debian/changelog (original)
+++ schooltool/trunk/debian/changelog Fri Jul 13 10:55:15 2007
@@ -1,3 +1,9 @@
+schooltool (2006.999-2007-alpha1-svn-r7056-1) UNRELEASED; urgency=low
+
+  * (NOT RELEASED YET) New upstream release
+
+ -- Brian Sutherland <brian at vanguardistas.net>  Fri, 13 Jul 2007 10:14:18 +0200
+
 schooltool (2006.999-2007-alpha1-svn-r7010-4) unstable; urgency=low
 
   * SchoolTool tarballs should contain compiled translations, so we don't need

Modified: schooltool/trunk/schooltool-skel/etc/site.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/schooltool-skel/etc/site.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/schooltool-skel/etc/site.zcml (original)
+++ schooltool/trunk/schooltool-skel/etc/site.zcml Fri Jul 13 10:55:15 2007
@@ -1,31 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<configure xmlns="http://namespaces.zope.org/zope"
-           xmlns:browser="http://namespaces.zope.org/browser"
-           i18n_domain="schooltool">
+<configure xmlns="http://namespaces.zope.org/zope">
 
-  <include package="schooltool.help" file="meta.zcml" />
+  <include package="schooltool.stapp2007" />
 
-  <include package="schooltool" />
-
-  <include package="schooltool.attendance" />
-  <include package="schooltool.commendation" />
-  <include package="schooltool.course" />
-  <include package="schooltool.dashboard" />
-  <include xmlns:zcml="http://namespaces.zope.org/zcml"
-           zcml:condition="have devmode"
-           package="schooltool.devmode" />
-  <include package="schooltool.gradebook" />
-  <include package="schooltool.help" />
-  <include package="schooltool.level" />
-  <include package="schooltool.note" />
-  <include package="schooltool.requirement" />
-  <include package="schooltool.term" />
-  <include package="schooltool.timetable" />
-
-  <include files="package-includes/*-configure.zcml" />
-
-  <!-- Provide local overrides of standard configurations-->
-  <includeOverrides package="schooltool.devmode" file="overrides.zcml" />
-  <includeOverrides package="schooltool.demographics" file="overrides.zcml" />
+  <include files="plugins/*.zcml" />
 
 </configure>

Modified: schooltool/trunk/setup.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/setup.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/setup.py (original)
+++ schooltool/trunk/setup.py Fri Jul 13 10:55:15 2007
@@ -21,7 +21,9 @@
 """
 SchoolTool setup script.
 """
-
+import os
+
+here = os.path.dirname(__file__)
 
 # Check python version
 import sys
@@ -31,47 +33,54 @@
     sys.exit(1)
 
 import site
-site.addsitedir('eggs')
+site.addsitedir(os.path.join(here, 'eggs'))
 
 import pkg_resources
 pkg_resources.require("setuptools>=0.6a11")
 
-import os
 from setuptools import setup, find_packages
 
 def get_version():
-    version_file = os.path.join('src', 'schooltool', 'version.txt')
+    version_file = os.path.join(here, 'src', 'schooltool', 'version.txt')
     f = open(version_file, 'r')
     result = f.read()
     f.close()
     return result
 
+# allowed extensions
+ALLOWED_EXTENSIONS = ['conf','css', 'gif', 'ico', 'ics', 'js', 'mo', 'po', 'pt',
+                      'png', 'txt', 'xml', 'xpdl', 'zcml']
+
 # Define packages we want to recursively include, we do this explicitly here
 # to avoid automatic accidents
 root_packages = ['schooltool.app',
+                 'schooltool.attendance',
+                 'schooltool.calendar',
+                 'schooltool.course',
                  'schooltool.dashboard',
+                 'schooltool.devmode',
                  'schooltool.demographics',
                  'schooltool.generations',
-                 'schooltool.securitypolicy',
-                 'schooltool.relationship',
-                 'schooltool.course',
-                 'schooltool.timetable',
-                 'schooltool.person',
+                 'schooltool.group',
                  'schooltool.help',
                  'schooltool.locales',
-                 'schooltool.locales.en',
+                 'schooltool.person',
                  'schooltool.resource',
-                 'schooltool.utility',
+                 'schooltool.relationship',
+                 'schooltool.securitypolicy',
+                 'schooltool.skin',
+                 'schooltool.table',
                  'schooltool.term',
-                 'schooltool.table',
-                 'schooltool.group',
-                 'schooltool.widget',
-                 'schooltool.attendance',
-                 'schooltool.calendar',
-                 'schooltool.skin',
                  'schooltool.tests',
                  'schooltool.testing',
+                 'schooltool.timetable',
                  'schooltool.traverser',
+                 'schooltool.utility',
+                 'schooltool.widget',
+
+                 # The schooltool configurations we maintain
+                 'schooltool.stapp2005',
+                 'schooltool.stapp2007',
 
                  # only needed for tests
                  'schooltool.sampledata',
@@ -81,34 +90,40 @@
                  ]
 
 # Packages we want to non-recursively include
-packages = ['schooltool']
-
 package_data = {'schooltool': ['*.zcml', 'version.txt']}
 
 # filter packages eliminating things that don't match
+# XXX - the next for loop is pretty insane and inefficient. Feel free to fix it
+# all it does is find the files in each package that need to be included.
 all_packages = set(find_packages('src'))
 for package in all_packages:
     for root_package in root_packages:
         if package.startswith(root_package):
-            packages.append(package)
-            package_data[package] = ['*.zcml',
-                                     '*.xml',
-                                     '*.xpdl',
-                                     '*.txt', # only for tests
-                                     '*.conf', # only for tests
-                                     '*/*.ics', # only for tests
-                                     '*.pt', '*/*.pt',
-                                     '*/*.png',
-                                     '*.css', '*/*.css',
-                                     '*/*/*.css',
-                                     '*/*.js',
-                                     '*/*/*.js',
-                                     '*/*.ico',
-                                     '*/*.gif',
-                                     '*/*/*.gif']
+            package_data[package] = []
+            includes = []
+            package_dir = os.path.join(here, 'src', *package.split('.'))
+            for root, dirs, files in os.walk(package_dir):
+                if dir in set(dirs):
+                    if dir.startswith('.'):
+                        dirs.remove(dir)
+                prefix = []
+                r = root
+                while r != package_dir:
+                    r, dir = os.path.split(r)
+                    prefix.insert(0, dir)
+                    assert r.startswith(package_dir)
+                if prefix:
+                    prefix = os.path.join(*prefix)
+                for file in files:
+                    for ext in ALLOWED_EXTENSIONS:
+                        if file.endswith('.%s' % ext) and not file.startswith('.'):
+                            break
+                    else:
+                        continue
+                    if prefix:
+                        file = os.path.join(prefix, file)
+                    package_data[package].append(file)
             break
-
-package_data['schooltool.locales'].append('*/*/*.po')
 
 # Setup SchoolTool
 setup(
@@ -149,7 +164,7 @@
     "Topic :: Education",
     "Topic :: Office/Business :: Scheduling"],
     package_dir={'': 'src'},
-    packages=packages,
+    packages=package_data.keys(),
     install_requires=['pytz',
                       'zc.resourcelibrary >= 0.7dev_r72506',
                       'zc.table >= 0.7dev_r72459', 'zc.catalog >= 1.2dev',
@@ -164,7 +179,9 @@
                       'zope.app.file',
                       'zope.app.onlinehelp',
                       'zope.app.apidoc',
+	              'z3c.breadcrumb',
 	              'z3c.layer',
+                      'z3c.menu',
                       'z3c.optionstorage',
 	              'z3c.pagelet',
 	              'z3c.template',
@@ -179,5 +196,6 @@
                       'zope.app.zcmlfiles'],
     dependency_links=['http://ftp.schooltool.org/schooltool/eggs/',
                       'http://download.zope.org/distribution/'],
-    package_data=package_data
+    package_data=package_data,
+    include_package_data=True
     )

Modified: schooltool/trunk/src/schooltool.egg-info/PKG-INFO
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool.egg-info/PKG-INFO?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool.egg-info/PKG-INFO (original)
+++ schooltool/trunk/src/schooltool.egg-info/PKG-INFO Fri Jul 13 10:55:15 2007
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: schooltool
-Version: 2006.999-2007-alpha1-svn-r7010
+Version: 2006.999-2007-alpha1-svn-r7056
 Summary: A common information systems platform for school administration.
 Home-page: http://www.schooltool.org
 Author: SchoolTool development team

Modified: schooltool/trunk/src/schooltool.egg-info/SOURCES.txt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool.egg-info/SOURCES.txt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool.egg-info/SOURCES.txt (original)
+++ schooltool/trunk/src/schooltool.egg-info/SOURCES.txt Fri Jul 13 10:55:15 2007
@@ -2,9 +2,6 @@
 Makefile
 README.txt
 i18nextract.py
-schoolbell-server.py
-schoolbell-site.zcml
-schoolbell.conf.in
 schooltool-server.py
 schooltool.conf.in
 setup.cfg
@@ -39,7 +36,6 @@
 scripts/schooltool-rest-client
 src/trace.py
 src/schoolbell/__init__.py
-src/schoolbell/translations.zcml
 src/schoolbell/app/__init__.py
 src/schoolbell/app/app.py
 src/schoolbell/app/cal.py
@@ -240,6 +236,32 @@
 src/schooltool/attendance/tests/test_attendance.py
 src/schooltool/attendance/tests/test_sampledata.py
 src/schooltool/attendance/tests/test_sparkline.py
+src/schooltool/basicperson/__init__.py
+src/schooltool/basicperson/advisor.py
+src/schooltool/basicperson/configure.zcml
+src/schooltool/basicperson/ftesting.py
+src/schooltool/basicperson/ftesting.zcml
+src/schooltool/basicperson/interfaces.py
+src/schooltool/basicperson/overrides.zcml
+src/schooltool/basicperson/person.py
+src/schooltool/basicperson/sampledata.py
+src/schooltool/basicperson/security.py
+src/schooltool/basicperson/vocabularies.py
+src/schooltool/basicperson/browser/__init__.py
+src/schooltool/basicperson/browser/configure.zcml
+src/schooltool/basicperson/browser/overrides.zcml
+src/schooltool/basicperson/browser/person.py
+src/schooltool/basicperson/browser/ftests/__init__.py
+src/schooltool/basicperson/browser/ftests/basicperson.txt
+src/schooltool/basicperson/browser/ftests/test_all.py
+src/schooltool/basicperson/browser/templates/person_add.pt
+src/schooltool/basicperson/browser/templates/person_edit.pt
+src/schooltool/basicperson/browser/templates/person_view.pt
+src/schooltool/basicperson/browser/tests/__init__.py
+src/schooltool/basicperson/browser/tests/test_person.py
+src/schooltool/basicperson/tests/__init__.py
+src/schooltool/basicperson/tests/test_person.py
+src/schooltool/basicperson/tests/test_vocabularies.py
 src/schooltool/calendar/README.txt
 src/schooltool/calendar/__init__.py
 src/schooltool/calendar/browser.py
@@ -617,6 +639,7 @@
 src/schooltool/person/interfaces.py
 src/schooltool/person/person.py
 src/schooltool/person/preference.py
+src/schooltool/person/sampledata.py
 src/schooltool/person/security.zcml
 src/schooltool/person/utility.py
 src/schooltool/person/browser/__init__.py
@@ -754,48 +777,6 @@
 src/schooltool/sampledata/tests/test_browser.py
 src/schooltool/sampledata/tests/test_generator.py
 src/schooltool/sampledata/tests/test_name.py
-src/schooltool/sbapp/README.txt
-src/schooltool/sbapp/__init__.py
-src/schooltool/sbapp/configure.zcml
-src/schooltool/sbapp/main.py
-src/schooltool/sbapp/browser/__init__.py
-src/schooltool/sbapp/browser/cal.py
-src/schooltool/sbapp/browser/configure.zcml
-src/schooltool/sbapp/browser/csvimport.py
-src/schooltool/sbapp/browser/skin.py
-src/schooltool/sbapp/browser/ftests/__init__.py
-src/schooltool/sbapp/browser/ftests/app.txt
-src/schooltool/sbapp/browser/ftests/test_all.py
-src/schooltool/sbapp/browser/resources/schoolbell.png
-src/schooltool/sbapp/browser/templates/calendar_overlay.pt
-src/schooltool/sbapp/browser/templates/generic_macros.pt
-src/schooltool/sbapp/browser/templates/index.pt
-src/schooltool/sbapp/browser/templates/navigation.pt
-src/schooltool/sbapp/browser/templates/person.pt
-src/schooltool/sbapp/browser/tests/__init__.py
-src/schooltool/sbapp/browser/tests/test_cal.py
-src/schooltool/sbapp/browser/tests/test_skin.py
-src/schooltool/sbapp/generations/__init__.py
-src/schooltool/sbapp/generations/evolve1.py
-src/schooltool/sbapp/generations/evolve2.py
-src/schooltool/sbapp/generations/evolve3.py
-src/schooltool/sbapp/generations/evolve4.py
-src/schooltool/sbapp/generations/evolve5.py
-src/schooltool/sbapp/generations/evolve6.py
-src/schooltool/sbapp/generations/evolve7.py
-src/schooltool/sbapp/generations/evolve8.py
-src/schooltool/sbapp/rest/__init__.py
-src/schooltool/sbapp/rest/configure.zcml
-src/schooltool/sbapp/rest/ftests/__init__.py
-src/schooltool/sbapp/rest/ftests/app.txt
-src/schooltool/sbapp/rest/ftests/test_all.py
-src/schooltool/sbapp/rest/tests/__init__.py
-src/schooltool/sbapp/rest/tests/test_app.py
-src/schooltool/sbapp/rest/tests/test_rest.py
-src/schooltool/sbapp/tests/__init__.py
-src/schooltool/sbapp/tests/empty.conf
-src/schooltool/sbapp/tests/sample.conf
-src/schooltool/sbapp/tests/test_main.py
 src/schooltool/securitypolicy/README.txt
 src/schooltool/securitypolicy/__init__.py
 src/schooltool/securitypolicy/configure.zcml
@@ -873,6 +854,11 @@
 src/schooltool/skin/resources/sidebar-background.png
 src/schooltool/skin/resources/toolbar-background-hover.png
 src/schooltool/skin/resources/toolbar-background.png
+src/schooltool/skin/resources/zonki-angry.png
+src/schooltool/skin/resources/zonki-pointing.png
+src/schooltool/skin/resources/zonki-question.png
+src/schooltool/skin/resources/zonki-reading.png
+src/schooltool/skin/resources/zonki-regular.png
 src/schooltool/skin/templates/actions.pt
 src/schooltool/skin/templates/actionsViewlet.pt
 src/schooltool/skin/templates/actionsbar.pt
@@ -902,6 +888,22 @@
 src/schooltool/skin/tests/test_dateformatter.py
 src/schooltool/skin/tests/test_error.py
 src/schooltool/skin/tests/test_skin.py
+src/schooltool/stapp2005/README.txt
+src/schooltool/stapp2005/__init__.py
+src/schooltool/stapp2005/configure.zcml
+src/schooltool/stapp2005/ftesting.py
+src/schooltool/stapp2005/ftesting.zcml
+src/schooltool/stapp2005/ftests/__init__.py
+src/schooltool/stapp2005/ftests/stapp2005.txt
+src/schooltool/stapp2005/ftests/test_all.py
+src/schooltool/stapp2007/README.txt
+src/schooltool/stapp2007/__init__.py
+src/schooltool/stapp2007/configure.zcml
+src/schooltool/stapp2007/ftesting.py
+src/schooltool/stapp2007/ftesting.zcml
+src/schooltool/stapp2007/ftests/__init__.py
+src/schooltool/stapp2007/ftests/stapp2007.txt
+src/schooltool/stapp2007/ftests/test_all.py
 src/schooltool/table/__init__.py
 src/schooltool/table/batch.py
 src/schooltool/table/interfaces.py
@@ -913,6 +915,8 @@
 src/schooltool/term/README.txt
 src/schooltool/term/__init__.py
 src/schooltool/term/configure.zcml
+src/schooltool/term/ftesting.py
+src/schooltool/term/ftesting.zcml
 src/schooltool/term/interfaces.py
 src/schooltool/term/sampledata.py
 src/schooltool/term/term-configure.zcml
@@ -927,8 +931,12 @@
 src/schooltool/term/browser/term.pt
 src/schooltool/term/browser/term.py
 src/schooltool/term/browser/term_add_edit.pt
+src/schooltool/term/browser/term_basic_add_edit.pt
 src/schooltool/term/browser/termrenderer.txt
 src/schooltool/term/browser/tests.py
+src/schooltool/term/browser/ftests/__init__.py
+src/schooltool/term/browser/ftests/term.txt
+src/schooltool/term/browser/ftests/test_all.py
 src/schooltool/term/rest/__init__.py
 src/schooltool/term/rest/configure.zcml
 src/schooltool/term/rest/term.py
@@ -976,6 +984,8 @@
 src/schooltool/timetable/browser/templates/simpletts.pt
 src/schooltool/timetable/browser/templates/specialday_change.pt
 src/schooltool/timetable/browser/templates/specialday_select.pt
+src/schooltool/timetable/browser/templates/timetable-add.pt
+src/schooltool/timetable/browser/templates/timetable-edit.pt
 src/schooltool/timetable/browser/templates/timetable-schema-container.pt
 src/schooltool/timetable/browser/templates/timetable.pt
 src/schooltool/timetable/browser/templates/timetable_event_edit.pt
@@ -1028,5 +1038,6 @@
 testsupport/__init__.py
 testsupport/checks.py
 utilities/README.txt
+utilities/generate_vcal_dict.py
 utilities/gpl.py
 utilities/xpathgrep.py

Modified: schooltool/trunk/src/schooltool.egg-info/requires.txt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool.egg-info/requires.txt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool.egg-info/requires.txt (original)
+++ schooltool/trunk/src/schooltool.egg-info/requires.txt Fri Jul 13 10:55:15 2007
@@ -14,7 +14,9 @@
 zope.app.file
 zope.app.onlinehelp
 zope.app.apidoc
+z3c.breadcrumb
 z3c.layer
+z3c.menu
 z3c.optionstorage
 z3c.pagelet
 z3c.template

Modified: schooltool/trunk/src/schooltool/app/browser/app.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/app/browser/app.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/app/browser/app.py (original)
+++ schooltool/trunk/src/schooltool/app/browser/app.py Fri Jul 13 10:55:15 2007
@@ -19,10 +19,9 @@
 """
 SchoolTool application views.
 
-$Id: app.py 6967 2007-06-04 15:01:11Z ignas $
+$Id: app.py 7045 2007-07-13 08:09:06Z ignas $
 """
 
-from zope.component import getUtility
 from zope.interface import implements
 from zope.security.interfaces import IParticipation
 from zope.security.management import getSecurityPolicy
@@ -37,6 +36,7 @@
 from zope.component import queryMultiAdapter
 from zope.app.security.interfaces import IAuthentication
 from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
+from zope.publisher.browser import BrowserPage
 
 from schooltool import SchoolToolMessage as _
 from schooltool.app.app import getSchoolToolApplication
@@ -45,10 +45,10 @@
 from schooltool.app.interfaces import ISchoolToolCalendar
 from schooltool.app.interfaces import IAsset
 from schooltool.person.interfaces import IPerson
-from schooltool.person.interfaces import IPersonFactory
 from schooltool.table.table import CheckboxColumn
 from schooltool.table.table import label_cell_formatter_factory
 from schooltool.table.interfaces import ITableFormatter
+from schooltool.skin.breadcrumbs import CustomNameBreadCrumbInfo
 
 
 class ApplicationView(BrowserView):
@@ -281,3 +281,11 @@
     def getAvailableItemsContainer(self):
         return ISchoolToolApplication(None)['persons']
 
+
+class ViewRobot(BrowserPage):
+
+    def __call__(self):
+        return "User-agent: *\nDisallow: /"
+
+
+SchoolBreadcrumbInfo = CustomNameBreadCrumbInfo(_('school'))

Modified: schooltool/trunk/src/schooltool/app/browser/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/app/browser/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/app/browser/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/app/browser/configure.zcml Fri Jul 13 10:55:15 2007
@@ -80,6 +80,13 @@
       for="*"
       permission="zope.View"
       template="templates/calendar_macros.pt"
+      />
+
+  <page
+      name="robots.txt"
+      for="schooltool.app.interfaces.ISchoolToolApplication"
+      permission="zope.View"
+      class=".app.ViewRobot"
       />
 
   <resource name="day.png" file="resources/day.png"
@@ -590,4 +597,12 @@
       factory=".cal.CalendarMenuViewletCrowd"
       name="schooltool.view" />
 
+  <zope:adapter
+      for="schooltool.app.interfaces.ISchoolToolApplication
+           zope.publisher.interfaces.http.IHTTPRequest"
+      factory=".app.SchoolBreadcrumbInfo"
+      trusted="true"
+      permission="zope.Public"
+      />
+
 </configure>

Modified: schooltool/trunk/src/schooltool/app/browser/ftests/cal.txt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/app/browser/ftests/cal.txt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/app/browser/ftests/cal.txt (original)
+++ schooltool/trunk/src/schooltool/app/browser/ftests/cal.txt Fri Jul 13 10:55:15 2007
@@ -432,7 +432,7 @@
     >>> print analyze.queryHTML('//div[@class="breadcrumbs"]',
     ...                         frog.contents)[0]
     <div class="breadcrumbs">
-      <a href="http://localhost">SchoolTool</a>
+      <a href="http://localhost">school</a>
       &raquo;
       <a href="http://localhost/persons">persons</a>
       &raquo;

Modified: schooltool/trunk/src/schooltool/app/browser/templates/edit_relationships.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/app/browser/templates/edit_relationships.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/app/browser/templates/edit_relationships.pt (original)
+++ schooltool/trunk/src/schooltool/app/browser/templates/edit_relationships.pt Fri Jul 13 10:55:15 2007
@@ -1,53 +1,53 @@
 <tal:defs define="update view/update" />
 <html metal:use-macro="view/@@standard_macros/page" i18n:domain="schooltool">
-<head>
-  <title metal:fill-slot="title" tal:content="context/title" />
-</head>
-<body>
-<metal:block metal:fill-slot="body"
-             tal:define="batch view/available_table/batch">
-
-<form method="post" tal:attributes="action request/URL" class="standalone">
-<h3 i18n:translate="" tal:content="view/title" />
-<fieldset tal:define="items view/getSelectedItems">
-  <tal:if condition="items">
-    <legend i18n:translate="" tal:content="view/current_title" />
-    <tal:block replace="structure view/selected_table/render" />
-    <div class="controls">
-      <input type="submit" class="button-ok" name="REMOVE_ITEMS"
-        value="Remove"
-        title="Shortcut: Alt-R" accesskey="R"
-        i18n:attributes="value; accesskey" />
-    </div>
-  </tal:if>
-  <p tal:condition="not:items" i18n:translate="">
-    There are none.
-  </p>
-</fieldset>
-<fieldset>
-  <legend i18n:translate="" tal:content="view/available_title" />
-  <div class="item_list">
-    <tal:block replace="structure view/available_table/batch/render" />
-    <tal:block replace="structure view/available_table/filter_widget/render" />
-    <tal:block replace="structure view/available_table/render" />
-    <div class="controls">
-      <input type="submit" class="button-ok" name="ADD_ITEMS"
-             value="Add" tal:condition="batch"
-             title="Shortcut: Alt-A" accesskey="A"
-             i18n:attributes="value; accesskey" />
-    </div>
-    <p tal:condition="not:batch" i18n:translate="">
-      There are none to add.
-    </p>
-  </div>
-</fieldset>
-
-<div class="controls">
-  <input type="submit" class="button-cancel" name="CANCEL" value="Cancel"
-         i18n:attributes="value cancel-button" />
-</div>
-</form>
-
-</metal:block>
-</body>
+  <head>
+    <title metal:fill-slot="title" tal:content="context/title" />
+  </head>
+  <body>
+    <metal:block metal:fill-slot="body"
+		 tal:define="batch view/available_table/batch">
+      
+      <form method="post" tal:attributes="action request/URL" class="standalone">
+	<h3 i18n:translate="" tal:content="view/title" />
+	<fieldset tal:define="items view/getSelectedItems">
+	  <tal:if condition="items">
+	    <legend i18n:translate="" tal:content="view/current_title" />
+	    <tal:block replace="structure view/selected_table/render" />
+	    <div class="controls">
+	      <input type="submit" class="button-ok" name="REMOVE_ITEMS"
+		     value="Remove"
+		     title="Shortcut: Alt-R" accesskey="R"
+		     i18n:attributes="value; accesskey" />
+	    </div>
+	  </tal:if>
+	  <p tal:condition="not:items" i18n:translate="">
+	    There are none.
+	  </p>
+	</fieldset>
+	<fieldset>
+	  <legend i18n:translate="" tal:content="view/available_title" />
+	  <div class="item_list">
+	    <tal:block replace="structure view/available_table/batch/render" />
+	    <tal:block replace="structure view/available_table/filter_widget/render" />
+	    <tal:block replace="structure view/available_table/render" />
+	    <div class="controls">
+	      <input type="submit" class="button-ok" name="ADD_ITEMS"
+		     value="Add" tal:condition="batch"
+		     title="Shortcut: Alt-A" accesskey="A"
+		     i18n:attributes="value; accesskey" />
+	    </div>
+	    <p tal:condition="not:batch" i18n:translate="">
+	      There are none to add.
+	    </p>
+	  </div>
+	</fieldset>
+	
+	<div class="controls">
+	  <input type="submit" class="button-cancel" name="CANCEL" value="Cancel"
+		 i18n:attributes="value cancel-button" />
+	</div>
+      </form>
+      
+    </metal:block>
+  </body>
 </html>

Modified: schooltool/trunk/src/schooltool/app/browser/testing.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/app/browser/testing.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/app/browser/testing.py (original)
+++ schooltool/trunk/src/schooltool/app/browser/testing.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Setup code for SchoolTool application browser unit tests
 
-$Id: testing.py 6992 2007-07-02 17:54:31Z pcardune $
+$Id: testing.py 7045 2007-07-13 08:09:06Z ignas $
 """
 import os.path
 import zope.component
@@ -163,9 +163,12 @@
             return "a dummy resource"
 
     for name in ['layout.css', 'schooltool.css', 'schooltool.js',
-                 'logo.png', 'next.png', 'prev.png', 'favicon.ico',
+                 'next.png', 'prev.png', 'favicon.ico',
                  'calwidget-calendar.js', 'calwidget-calendar.css',
-                 'calwidget-icon.gif', 'print.css', 'jquery.js']:
+                 'calwidget-icon.gif', 'print.css', 'jquery.js',
+                 'zonki-angry.png', 'zonki-pointing.png',
+                 'zonki-question.png', 'zonki-reading.png',
+                 'zonki-regular.png', ]:
         ztapi.browserResource(name, ResourceStub)
 
     # menus

Modified: schooltool/trunk/src/schooltool/calendar/generate_vcal_dict.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/calendar/generate_vcal_dict.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/calendar/generate_vcal_dict.py (original)
+++ schooltool/trunk/src/schooltool/calendar/generate_vcal_dict.py Fri Jul 13 10:55:15 2007
@@ -1,5 +1,4 @@
-#!/usr/bin/env python
-"""A script that generates vcal_dict.py.
+"""A module that generates vcal_dict.py.
 
 vcal_dict.py contains a dict of tuples (tzid, vcal_representation)
 indexed by their pytz id.

Modified: schooltool/trunk/src/schooltool/course/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/course/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/course/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/course/configure.zcml Fri Jul 13 10:55:15 2007
@@ -51,7 +51,7 @@
   <class class=".section.SectionContainer">
     <allow interface="zope.app.container.interfaces.ISimpleReadContainer" />
     <require permission="schooltool.view"
-             attributes="keys values items __iter__ __len__" />
+             attributes="keys values items __iter__ __len__ has_key" />
     <require permission="schooltool.edit"
              interface="zope.app.container.interfaces.IWriteContainer" />
   </class>

Modified: schooltool/trunk/src/schooltool/demographics/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/demographics/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/demographics/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/demographics/configure.zcml Fri Jul 13 10:55:15 2007
@@ -96,6 +96,18 @@
        />
   </class>
 
+  <!-- sample data -->
+  <configure
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have devmode">
+
+    <utility
+        factory=".sampledata.SamplePersonalEvents"
+        provides="schooltool.sampledata.interfaces.ISampleDataPlugin"
+        name="personal_events"
+        />
+  </configure>
+
   <include package=".browser" />
 
 </configure>

Modified: schooltool/trunk/src/schooltool/demographics/overrides.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/demographics/overrides.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/demographics/overrides.zcml (original)
+++ schooltool/trunk/src/schooltool/demographics/overrides.zcml Fri Jul 13 10:55:15 2007
@@ -47,12 +47,6 @@
         name="teachers"
         />
 
-    <utility
-        factory=".sampledata.SamplePersonalEvents"
-        provides="schooltool.sampledata.interfaces.ISampleDataPlugin"
-        name="personal_events"
-        />
-
   </configure>
 
   <!-- install catalog -->

Modified: schooltool/trunk/src/schooltool/demographics/sampledata.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/demographics/sampledata.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/demographics/sampledata.py (original)
+++ schooltool/trunk/src/schooltool/demographics/sampledata.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Person sample data generation
 
-$Id: sampledata.py 6507 2006-11-30 13:18:21Z ignas $
+$Id: sampledata.py 7035 2007-07-12 15:19:06Z ignas $
 """
 
 import datetime
@@ -57,6 +57,20 @@
     # Number of persons to generate
     power = 1000
 
+    def personFactory(self, namegen, prefixgen, gendergen, count):
+        first_name, last_name, full_name = namegen.generate()
+        person_id = 'student%03d' % count
+        person = Person(person_id, title=full_name)
+        person.nameinfo.prefix = prefixgen.generate()
+        person.nameinfo.first_name = first_name
+        person.nameinfo.last_name = last_name
+        person.setPassword(person_id)
+        person.demographics.gender = gendergen.generate()
+        person.schooldata.id = person.__name__
+        person.parent1.name = namegen.generate()[2]
+        person.parent2.name = namegen.generate()[2]
+        return person
+
     def generate(self, app, seed=None):
         namegen = NameGenerator(str(seed) + self.name)
         prefixgen = ChoiceGenerator(str(seed), ['Mr', 'Mrs', 'Miss', ''])
@@ -71,24 +85,13 @@
             stud_group = True
         except KeyError:
             stud_group = False
-        for i in range(self.power):
-            first_name, last_name, full_name = namegen.generate()
-            person_id = 'student%03d' % i
-            person = Person(person_id, title=full_name)
-            person.nameinfo.prefix = prefixgen.generate()
-            person.nameinfo.first_name = first_name
-            person.nameinfo.last_name = last_name
-            person.setPassword(person_id)
+        for count in range(self.power):
+            person = self.personFactory(namegen, prefixgen, gendergen, count)
             # Without removeSecurityProxy we can't add members a
             # group.
             if stud_group:
                 removeSecurityProxy(students.members).add(person)
-
-            person.demographics.gender = gendergen.generate()
-            person.schooldata.id = person_id
-            person.parent1.name = namegen.generate()[2]
-            person.parent2.name = namegen.generate()[2]
-            app['persons'][person_id] = person
+            app['persons'][person.__name__] = person
 
 
 class SampleTeachers(object):
@@ -100,20 +103,24 @@
     # Number of teachers to generate
     power = 48
 
+    def personFactory(self, namegen, count):
+        first_name, last_name, full_name = namegen.generate()
+        person_id = 'teacher%03d' % count
+        person = Person(person_id, title=full_name)
+        person.nameinfo.first_name = first_name
+        person.nameinfo.last_name = last_name
+        person.setPassword(person_id)
+        return person
+
     def generate(self, app, seed=None):
         namegen = NameGenerator(str(seed) + self.name)
         teachers = app['groups']['teachers']
-        for i in range(self.power):
-            first_name, last_name, full_name = namegen.generate()
-            person_id = 'teacher%03d' % i
-            person = Person(person_id, title=full_name)
-            person.nameinfo.first_name = first_name
-            person.nameinfo.last_name = last_name
-            person.setPassword(person_id)
+        for count in range(self.power):
+            person = self.personFactory(namegen, count)
             # Without removeSecurityProxy we can't add members a
             # group.
             removeSecurityProxy(teachers.members).add(person)
-            app['persons'][person_id] = person
+            app['persons'][person.__name__] = person
 
 
 class SamplePersonalEvents(object):

Modified: schooltool/trunk/src/schooltool/person/browser/person-csvimport.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/browser/person-csvimport.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/browser/person-csvimport.pt (original)
+++ schooltool/trunk/src/schooltool/person/browser/person-csvimport.pt Fri Jul 13 10:55:15 2007
@@ -6,6 +6,11 @@
     </title>
   </head>
   <body>
+
+  <span metal:fill-slot="zonki" i18n:translate="">
+    <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+      tal:attributes="src context/++resource++zonki-question.png" /> 
+  </span>
 
     <metal:block metal:fill-slot="body">
 

Modified: schooltool/trunk/src/schooltool/person/browser/person.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/browser/person.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/browser/person.py (original)
+++ schooltool/trunk/src/schooltool/person/browser/person.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Person browser views.
 
-$Id: person.py 6967 2007-06-04 15:01:11Z ignas $
+$Id: person.py 7017 2007-07-11 19:32:00Z ignas $
 """
 from zope.interface import Interface
 from zope.publisher.interfaces import NotFound
@@ -46,6 +46,7 @@
 from zope.component import queryAdapter
 from zope.component import adapts
 from zope.app.catalog.interfaces import ICatalog
+from zope.app.intid.interfaces import IIntIds
 
 from schooltool import SchoolToolMessage as _
 from schooltool.skin.form import BasicForm
@@ -228,9 +229,11 @@
         if 'SEARCH_GROUP' in self.request:
             group = ISchoolToolApplication(None)['groups'].get(self.request['SEARCH_GROUP'])
             if group:
-                keys = set([person.__name__ for person in group.members])
+                int_ids = getUtility(IIntIds)
+                keys = set([int_ids.queryId(person)
+                            for person in group.members])
                 items = [item for item in items
-                         if item['key'] in keys]
+                         if item['id'] in keys]
 
         catalog = ICatalog(self.context)
         index = catalog['title']

Modified: schooltool/trunk/src/schooltool/person/browser/person_add.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/browser/person_add.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/browser/person_add.pt (original)
+++ schooltool/trunk/src/schooltool/person/browser/person_add.pt Fri Jul 13 10:55:15 2007
@@ -4,6 +4,12 @@
   <title metal:fill-slot="title" i18n:translate="">Add person</title>
 </head>
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
+
 <metal:nothing metal:fill-slot="content-header" />
 
 <metal:block metal:fill-slot="body">

Modified: schooltool/trunk/src/schooltool/person/browser/person_container_delete.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/browser/person_container_delete.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/browser/person_container_delete.pt (original)
+++ schooltool/trunk/src/schooltool/person/browser/person_container_delete.pt Fri Jul 13 10:55:15 2007
@@ -6,6 +6,11 @@
   </title>
 </head>
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
 
 <h1 metal:fill-slot="content-header" i18n:translate="">
   Are you sure you want to delete selected items?

Modified: schooltool/trunk/src/schooltool/person/browser/person_edit.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/browser/person_edit.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/browser/person_edit.pt (original)
+++ schooltool/trunk/src/schooltool/person/browser/person_edit.pt Fri Jul 13 10:55:15 2007
@@ -4,6 +4,12 @@
   <title metal:fill-slot="title" i18n:translate="">Edit person</title>
 </head>
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
+
 <metal:nothing metal:fill-slot="content-header" />
 <metal:block metal:fill-slot="body">
 

Modified: schooltool/trunk/src/schooltool/person/browser/person_preferences.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/browser/person_preferences.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/browser/person_preferences.pt (original)
+++ schooltool/trunk/src/schooltool/person/browser/person_preferences.pt Fri Jul 13 10:55:15 2007
@@ -4,6 +4,12 @@
   <title metal:fill-slot="title" i18n:translate="">Edit person preferences</title>
 </head>
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
+
 <metal:nothing metal:fill-slot="content-header" />
 <metal:block metal:fill-slot="body">
 

Modified: schooltool/trunk/src/schooltool/person/browser/tests.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/browser/tests.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/browser/tests.py (original)
+++ schooltool/trunk/src/schooltool/person/browser/tests.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Tests for Person views.
 
-$Id: tests.py 6851 2007-04-13 12:02:20Z ignas $
+$Id: tests.py 7017 2007-07-11 19:32:00Z ignas $
 """
 import unittest
 
@@ -486,7 +486,8 @@
    Some persons:
 
         >>> class PersonStub(object):
-        ...     def __init__(self, title, groups):
+        ...     def __init__(self, title, groups, person_id):
+        ...         self.id = person_id
         ...         self.title = title
         ...         self.__name__ = title
         ...         for group in groups:
@@ -514,7 +515,7 @@
         ...                    ('beta', [b, c]),
         ...                    ('lambda', [b])]
         ...         for id, (title, groups) in enumerate(persons):
-        ...             self[title] = PersonStub(title, groups)
+        ...             self[title] = PersonStub(title, groups, id)
         ...             index.documents_to_values[id] = title
         ...     def __conform__(self, iface):
         ...         if iface == ICatalog:
@@ -567,28 +568,35 @@
         >>> from zope.component import provideAdapter
         >>> provideAdapter(StubApplication)
 
-        >>> items = [{'id': 0, 'key': 'alpha'},
-        ...          {'id': 1, 'key': 'beta'},
-        ...          {'id': 2, 'key': 'lambda'}]
+        >>> items = [{'id': 0},
+        ...          {'id': 1},
+        ...          {'id': 2}]
 
         >>> request.form = {'SEARCH_TITLE': 'lamb'}
         >>> widget.filter(items)
-        [{'id': 2, 'key': 'lambda'}]
+        [{'id': 2}]
+
+        >>> from zope.component import provideUtility
+        >>> from zope.app.intid.interfaces import IIntIds
+        >>> class IntIdsStub(object):
+        ...     def queryId(self, obj):
+        ...         return obj.id
+        >>> provideUtility(IntIdsStub(), IIntIds)
 
         >>> request.form = {'SEARCH_GROUP': 'b'}
         >>> widget.filter(items)
-        [{'id': 1, 'key': 'beta'}, {'id': 2, 'key': 'lambda'}]
+        [{'id': 1}, {'id': 2}]
 
         >>> request.form = {'SEARCH_GROUP': 'b',
         ...                 'SEARCH_TITLE': 'bet'}
         >>> widget.filter(items)
-        [{'id': 1, 'key': 'beta'}]
+        [{'id': 1}]
 
    The search is case insensitive:
 
         >>> request.form = {'SEARCH_TITLE': 'AlphA'}
         >>> widget.filter(items)
-        [{'id': 0, 'key': 'alpha'}]
+        [{'id': 0}]
 
     If clear search button is clicked, the form attribute is cleared,
     and all items are displayed:
@@ -596,7 +604,7 @@
         >>> request.form['CLEAR_SEARCH'] = 'Yes'
 
         >>> widget.filter(items)
-        [{'id': 0, 'key': 'alpha'}, {'id': 1, 'key': 'beta'}, {'id': 2, 'key': 'lambda'}]
+        [{'id': 0}, {'id': 1}, {'id': 2}]
         >>> request.form['SEARCH_TITLE']
         ''
 

Modified: schooltool/trunk/src/schooltool/person/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/person/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/person/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/person/configure.zcml Fri Jul 13 10:55:15 2007
@@ -101,6 +101,24 @@
       factory=".person.getPersonContainerCatalog"
       provides="zope.app.catalog.interfaces.ICatalog" />
 
+  <configure
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have devmode">
+
+    <utility
+        factory=".sampledata.SampleStudents"
+        provides="schooltool.sampledata.interfaces.ISampleDataPlugin"
+        name="students"
+        />
+
+    <utility
+        factory=".sampledata.SampleTeachers"
+        provides="schooltool.sampledata.interfaces.ISampleDataPlugin"
+        name="teachers"
+        />
+
+  </configure>
+
   <include package=".browser" />
   <include package=".rest" />
 

Modified: schooltool/trunk/src/schooltool/skin/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/skin/configure.zcml Fri Jul 13 10:55:15 2007
@@ -57,6 +57,7 @@
       template="templates/actionsbar.pt"
       />
 
+
   <!-- Skin and resources -->
 
   <zope:interface
@@ -142,37 +143,51 @@
       file="resources/editor_config.js"
       layer="schooltool.skin.ISchoolToolLayer" />
 
+
+  <resource name="zonki-regular.png" file="resources/zonki-regular.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
+  <resource name="zonki-reading.png" file="resources/zonki-reading.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
+  <resource name="zonki-question.png" file="resources/zonki-question.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
+  <resource name="zonki-pointing.png" file="resources/zonki-pointing.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
+  <resource name="zonki-angry.png" file="resources/zonki-angry.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
+	    
+
+  
   <resource name="layout.css" file="resources/layout.css"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="print.css" file="resources/print.css"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="schooltool.js" file="resources/schooltool.js"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="jquery.js" file="resources/jquery.js"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="favicon.ico" file="resources/favicon.ico"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="toolbar-background.png"
-            file="resources/toolbar-background.png"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    file="resources/toolbar-background.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="toolbar-background-hover.png"
-            file="resources/toolbar-background-hover.png"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    file="resources/toolbar-background-hover.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="sidebar-background.png"
-            file="resources/sidebar-background.png"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    file="resources/sidebar-background.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="sidebar-background-top.png"
-            file="resources/sidebar-background-top.png"
-            layer="schooltool.skin.ISchoolToolLayer" />
-
+	    file="resources/sidebar-background-top.png"
+	    layer="schooltool.skin.ISchoolToolLayer" />
+  
   <resource name="previous.png" file="resources/previous.png"
-            layer="schooltool.skin.ISchoolToolLayer" />
+	    layer="schooltool.skin.ISchoolToolLayer" />
   <resource name="next.png" file="resources/next.png"
-            layer="schooltool.skin.ISchoolToolLayer" />
-
+	    layer="schooltool.skin.ISchoolToolLayer" />
+  
   <resource name="printer.png" file="resources/printer.png"
-            layer="schooltool.skin.ISchoolToolLayer" />
-
+	    layer="schooltool.skin.ISchoolToolLayer" />
+  
   <resource name="delete.png" file="resources/delete.png"
             layer="schooltool.skin.ISchoolToolLayer" />
 

Modified: schooltool/trunk/src/schooltool/skin/containers.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/containers.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/containers.py (original)
+++ schooltool/trunk/src/schooltool/skin/containers.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 SchoolTool skin containers
 
-$Id: containers.py 6863 2007-04-16 14:50:03Z ignas $
+$Id: containers.py 7048 2007-07-13 08:47:12Z ignas $
 """
 import urllib
 
@@ -50,7 +50,8 @@
             searchstr = self.request['SEARCH'].lower()
             results = [item for item in self.context.values()
                        if searchstr in item.title.lower()]
-            extra_url = "&SEARCH=%s" % urllib.quote(self.request['SEARCH'])
+            search_string = self.request['SEARCH'].encode('utf-8')
+            extra_url = "&SEARCH=%s" % urllib.quote_plus(search_string)
         else:
             self.request.form['SEARCH'] = ''
             results = self.context.values()

Modified: schooltool/trunk/src/schooltool/skin/resources/favicon.ico
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/resources/favicon.ico?rev=937&op=diff
==============================================================================
Binary files - no diff available.

Modified: schooltool/trunk/src/schooltool/skin/resources/layout.css
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/resources/layout.css?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/resources/layout.css (original)
+++ schooltool/trunk/src/schooltool/skin/resources/layout.css Fri Jul 13 10:55:15 2007
@@ -138,6 +138,25 @@
 
 #header .logo H1 {
 	margin: 0;
+}
+
+#header .logo .main_logo {
+        text-decoration: none;
+        color: #000;
+        font-size: 3em;
+}
+
+#schooltool-name {
+  margin: 3px 0 0 70px;
+  padding: 0;
+  font-size: .75em;
+}
+
+#school-title {
+  margin-top: -2px;
+  margin-left: 70px;
+  color: #444;
+  font-size: .5em;
 }
 
 #header .tools {

Modified: schooltool/trunk/src/schooltool/skin/resources/schooltool.css
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/resources/schooltool.css?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/resources/schooltool.css (original)
+++ schooltool/trunk/src/schooltool/skin/resources/schooltool.css Fri Jul 13 10:55:15 2007
@@ -326,6 +326,7 @@
   }
 
 div .dropdown .title{
+  cursor: default;
   font-size: 1em;
   padding-right: .5ex;
   padding-left: 15px;
@@ -333,7 +334,6 @@
 }
 
 div .dropdown:hover .title{
-  border-bottom:1px solid #aaa;
   background: #ddd url('++resource++downarrow.png') no-repeat center left;
 }
 

Modified: schooltool/trunk/src/schooltool/skin/resources/schooltool.js
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/resources/schooltool.js?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/resources/schooltool.js (original)
+++ schooltool/trunk/src/schooltool/skin/resources/schooltool.js Fri Jul 13 10:55:15 2007
@@ -18,7 +18,7 @@
 //
 // Javascript for Schoolbell calendar
 //
-// $Id: schooltool.js 6887 2007-04-24 11:14:07Z ignas $
+// $Id: schooltool.js 7016 2007-07-11 19:22:57Z pcardune $
 
 //
 // Generic PopUp window function for calendar forms
@@ -79,3 +79,32 @@
     tip.style.visibility = 'hidden';
     tip = null;
 }
+
+
+
+
+// Set up event handling for action bar drop downs.
+function initializeEventBindings(){
+
+  $(document).click(function(){
+    if (justClicked == false){
+    $("div.dropdown")
+      .removeClass("expanded")
+      .addClass("contracted");
+    } 
+    else {
+      justClicked = false;
+    }
+  });
+
+  $("div.dropdown").each(function(i){
+    $(this).click(function() { 
+      $(this)
+	.toggleClass("contracted")
+	.toggleClass("expanded");
+      justClicked = true;
+    });
+  });
+}
+
+$(document).ready(initializeEventBindings);

Modified: schooltool/trunk/src/schooltool/skin/templates/actionsbar.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/actionsbar.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/actionsbar.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/actionsbar.pt Fri Jul 13 10:55:15 2007
@@ -3,9 +3,7 @@
            tal:define="url view/context/@@absolute_url;
                        actions view/context/@@view_get_menu/schooltool_actions">
 
-  <div class="dropdown contracted"
-       onmouseover="this.className='dropdown expanded'"
-       onmouseout="this.className='dropdown contracted'">
+  <div class="dropdown contracted">
     <h3 class="title">Actions</h3>
     <!-- old-style menu actions (obsolete) -->
     <a tal:repeat="view actions"

Modified: schooltool/trunk/src/schooltool/skin/templates/container.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/container.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/container.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/container.pt Fri Jul 13 10:55:15 2007
@@ -6,6 +6,11 @@
   </title>
 </head>
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-reading.png" /> 
+</span>
 
 <h1 metal:fill-slot="content-header"
     tal:content="view/index_title" i18n:translate="">Contents</h1>

Modified: schooltool/trunk/src/schooltool/skin/templates/container_delete.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/container_delete.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/container_delete.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/container_delete.pt Fri Jul 13 10:55:15 2007
@@ -6,6 +6,11 @@
   </title>
 </head>
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
 
 <h1 metal:fill-slot="content-header" i18n:translate="">
   Are you sure you want to delete selected items?

Modified: schooltool/trunk/src/schooltool/skin/templates/edit_form.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/edit_form.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/edit_form.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/edit_form.pt Fri Jul 13 10:55:15 2007
@@ -1,5 +1,9 @@
 <html metal:use-macro="view/@@standard_macros/page" i18n:domain="schooltool">
 <body>
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+       tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
 <metal:nothing metal:fill-slot="content-header" />
 <metal:block metal:fill-slot="body">
 

Modified: schooltool/trunk/src/schooltool/skin/templates/error.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/error.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/error.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/error.pt Fri Jul 13 10:55:15 2007
@@ -3,11 +3,17 @@
   <title metal:fill-slot="title" i18n:translate="">Server Error</title>
 </head>
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-angry.png" /> 
+</span>
+
 <h1 metal:fill-slot="content-header" i18n:translate="">Server Error</h1>
 <metal:block metal:fill-slot="body">
 
 <p i18n:translate="">An internal server error has occurred.  This most likely
-means that you have found a bug in SchoolBell.  Please report it on <a
+means that you have found a bug in SchoolTool.  Please report it on <a
 href="http://issues.schooltool.org">the issue tracker</a>.</p>
 
 <h2 i18n:translate="">Exception</h2>

Modified: schooltool/trunk/src/schooltool/skin/templates/navigation.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/navigation.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/navigation.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/navigation.pt Fri Jul 13 10:55:15 2007
@@ -1,6 +1,4 @@
-<div class="dropdown contracted"
-     onmouseover="this.className='dropdown expanded'"
-     onmouseout="this.className='dropdown contracted'">
+<div class="dropdown contracted">
   <h3 class="title">Navigation</h3>
   <tal:block repeat="viewlet options/viewlets"
 	     content="structure viewlet/render" />

Modified: schooltool/trunk/src/schooltool/skin/templates/notfound.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/notfound.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/notfound.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/notfound.pt Fri Jul 13 10:55:15 2007
@@ -3,6 +3,11 @@
   <title metal:fill-slot="title" i18n:translate="">Not Found</title>
 </head>
 <body>
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-pointing.png" /> 
+</span>
+
 <h1 metal:fill-slot="content-header" i18n:translate="">Not Found</h1>
 <metal:block metal:fill-slot="body">
 

Modified: schooltool/trunk/src/schooltool/skin/templates/simple_add.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/simple_add.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/simple_add.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/simple_add.pt Fri Jul 13 10:55:15 2007
@@ -1,5 +1,11 @@
 <html metal:use-macro="context/@@standard_macros/page" i18n:domain="schooltool">
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
+
 <div metal:fill-slot="body">
 
 <div metal:define-macro="addform">

Modified: schooltool/trunk/src/schooltool/skin/templates/simple_edit.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/simple_edit.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/simple_edit.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/simple_edit.pt Fri Jul 13 10:55:15 2007
@@ -2,6 +2,12 @@
 <html metal:use-macro="context/@@standard_macros/view"
       i18n:domain="schooltool">
 <body>
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-question.png" /> 
+</span>
+
 <div metal:fill-slot="body">
 
 <div metal:define-macro="body">

Modified: schooltool/trunk/src/schooltool/skin/templates/table_container.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/table_container.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/table_container.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/table_container.pt Fri Jul 13 10:55:15 2007
@@ -7,9 +7,13 @@
 </head>
 <body>
 
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-reading.png" /> 
+</span>
+
 <h1 metal:fill-slot="content-header"
     tal:content="view/index_title" i18n:translate="">Contents</h1>
-
 <metal:block metal:fill-slot="body"
              tal:define="canModify view/canModify">
   <tal:block replace="structure view/table/batch/render" />

Modified: schooltool/trunk/src/schooltool/skin/templates/unauthorized.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/unauthorized.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/unauthorized.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/unauthorized.pt Fri Jul 13 10:55:15 2007
@@ -3,6 +3,11 @@
   /><html metal:use-macro="context/@@standard_macros/page"
     i18n:domain="zope">
 <body i18n:domain="zope">
+
+<span metal:fill-slot="zonki" i18n:translate="">
+  <img src="zonki.png" alt="SchoolTool" i18n:attributes="alt"
+    tal:attributes="src context/++resource++zonki-angry.png" /> 
+</span>
 
 <div metal:fill-slot="body">
 

Modified: schooltool/trunk/src/schooltool/skin/templates/view_macros.pt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/skin/templates/view_macros.pt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/skin/templates/view_macros.pt (original)
+++ schooltool/trunk/src/schooltool/skin/templates/view_macros.pt Fri Jul 13 10:55:15 2007
@@ -32,11 +32,15 @@
   <body>
     <div id="header">
       <div class="logo">
-        <a href=""
+        <a class="main_logo" href=""
           tal:define="url context/schooltool:app/@@absolute_url"
           tal:attributes="href url">
-          <img src="logo.png" alt="SchoolTool" i18n:attributes="alt"
-            tal:attributes="src context/++resource++logo.png"/>
+          <metal:block metal:define-slot="zonki">          
+            <img src="logo.png" alt="SchoolTool" i18n:attributes="alt"
+            tal:attributes="src context/++resource++zonki-regular.png"/>
+          </metal:block>
+          <div id="schooltool-name"><span id="logo-left">School</span><span id="logo-right">Tool</span></div>
+          <div tal:content="context/schooltool:app/title" id="school-title">My Own School</div>
         </a>
         <tal:block replace="structure provider:schooltool.Header" />
       </div>

Modified: schooltool/trunk/src/schooltool/term/browser/term.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/term/browser/term.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/term/browser/term.py (original)
+++ schooltool/trunk/src/schooltool/term/browser/term.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Timetabling Term views.
 
-$Id: term.py 6602 2007-01-26 13:17:25Z ignas $
+$Id: term.py 7047 2007-07-13 08:40:46Z jfroche $
 """
 import datetime
 import itertools
@@ -45,13 +45,11 @@
 from schooltool.timetable import findRelatedTimetables
 from schooltool.term.interfaces import ITermContainer, ITerm
 from schooltool.term.term import Term
-
 from schooltool import SchoolToolMessage as _
 
 
 class TermContainerView(TableContainerView):
     """Term container view."""
-    # XXX ftest deletion!
 
     __used_for__ = ITermContainer
 
@@ -65,11 +63,7 @@
     def update(self):
         if 'CONFIRM' in self.request:
             for key in self.listIdsForDeletion():
-                for tt in findRelatedTimetables(self.context[key]):
-                    ttdict = getParent(tt)
-                    del ttdict[getName(tt)]
                 del self.context[key]
-
 
 class ITermForm(Interface):
     """Form schema for ITerm add/edit views."""
@@ -135,6 +129,9 @@
 
     update_status = None
 
+    edit_template = ViewPageTemplateFile('term_add_edit.pt')
+    basic_edit_template = ViewPageTemplateFile('term_basic_add_edit.pt')
+
     def __init__(self, context, request):
         BrowserView.__init__(self, context, request)
         setUpEditWidgets(self, ITermForm)
@@ -143,6 +140,13 @@
         title = _("Change Term: $title",
                   mapping={'title': self.context.title})
         return title
+
+    def __call__(self):
+        relatedTT = findRelatedTimetables(self.context)
+        if relatedTT:
+            return self.basic_edit_template()
+        else:
+            return self.edit_template()
 
     def update(self):
         if self.update_status is not None:
@@ -151,13 +155,18 @@
         self.term = self._buildTerm()
         if self.term is None:
             self.term = self.context
-        elif Update in self.request:
+        if Update in self.request:
             self.context.reset(self.term.first, self.term.last)
             for day in self.term:
                 if self.term.isSchoolday(day):
                     self.context.add(day)
             modified(self.context)
             self.update_status = _("Saved changes.")
+        elif 'BASIC_UPDATE_SUBMIT' in self.request:
+            title = self.request.get('field.title')
+            if title:
+                self.context.title = title
+                self.update_status = _("Saved changes.")
         return self.update_status
 
     def calendar(self):
@@ -186,9 +195,22 @@
     _set_before_add = ()
     _set_after_add = ()
 
+    def setDefaultHoliday(self):
+        """
+        Set Saturday and Sunday as default holiday
+        """
+        date = self.term.first
+        while date <= self.term.last:
+            if date.isoweekday() in [6, 7]:
+                if self.term.isSchoolday(date):
+                    self.term.remove(date)
+            date += datetime.date.resolution
+
     def update(self):
         """Process the form."""
         self.term = self._buildTerm()
+        if self.term: # we process the term after clicking the next button
+            self.setDefaultHoliday()
         return AddView.update(self)
 
     def create(self):

Modified: schooltool/trunk/src/schooltool/term/browser/tests.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/term/browser/tests.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/term/browser/tests.py (original)
+++ schooltool/trunk/src/schooltool/term/browser/tests.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Tests for schooltool term views.
 
-$Id: tests.py 5999 2006-04-28 09:28:36Z faassen $
+$Id: tests.py 7047 2007-07-13 08:40:46Z jfroche $
 """
 import datetime
 import unittest
@@ -458,6 +458,23 @@
         Week 34:  16  17  18  19  20  21  22
         Week 35:  23  24  25  26  27  28  29
         Week 36:  30  31
+
+    By Default, Saturday and Sunday are not school days:
+        >>> view.setDefaultHoliday()
+        >>> date = view.term.first
+        >>> while date <= view.term.last:
+        ...     if not view.term.isSchoolday(date):
+        ...         print date
+        ...     date += datetime.date.resolution
+        2004-08-01
+        2004-08-07
+        2004-08-08
+        2004-08-14
+        2004-08-15
+        2004-08-21
+        2004-08-22
+        2004-08-28
+        2004-08-29
 
     '''
 

Modified: schooltool/trunk/src/schooltool/term/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/term/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/term/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/term/configure.zcml Fri Jul 13 10:55:15 2007
@@ -42,6 +42,11 @@
              set_schema=".interfaces.ITerm" />
   </class>
 
+  <subscriber
+      for=".interfaces.ITerm
+           zope.app.container.interfaces.IObjectRemovedEvent"
+      handler="schooltool.timetable.schema.clearTimetablesOnDeletion" />
+
   <!-- sample data -->
   <configure
       xmlns:zcml="http://namespaces.zope.org/zcml"

Modified: schooltool/trunk/src/schooltool/term/term.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/term/term.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/term/term.py (original)
+++ schooltool/trunk/src/schooltool/term/term.py Fri Jul 13 10:55:15 2007
@@ -19,9 +19,8 @@
 """
 Term implementation
 
-$Id: term.py 6507 2006-11-30 13:18:21Z ignas $
+$Id: term.py 7043 2007-07-12 17:14:18Z jfroche $
 """
-import datetime
 import persistent
 
 import zope.interface
@@ -32,6 +31,7 @@
 from schooltool.common import DateRange
 
 from schooltool.term import interfaces
+from schooltool.timetable import findRelatedTimetables
 
 
 class Term(DateRange, contained.Contained, persistent.Persistent):
@@ -134,3 +134,5 @@
     if before:
         return max(before)[1]
     return None
+
+

Modified: schooltool/trunk/src/schooltool/timetable/browser/__init__.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/browser/__init__.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/browser/__init__.py (original)
+++ schooltool/trunk/src/schooltool/timetable/browser/__init__.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 SchoolTool timetabling views.
 
-$Id: __init__.py 6887 2007-04-24 11:14:07Z ignas $
+$Id: __init__.py 7042 2007-07-12 16:59:55Z pcardune $
 """
 import datetime
 import sets
@@ -555,6 +555,67 @@
         return group_sections
 
 
+class TimetableAddForm(TimetableSetupViewBase):
+
+    template = ViewPageTemplateFile('templates/timetable-add.pt')
+
+    def getTerms(self):
+        """Return the chosen term."""
+        if 'terms' in self.request:
+            terms = getSchoolToolApplication()['terms']
+            requested_terms = []
+
+            # request['terms'] may be a list of strings or a single string, we
+            # need to handle both cases
+            try:
+                requested_terms = requested_terms + self.request['terms']
+            except TypeError:
+                requested_terms.append(self.request['terms'])
+            return [terms[term] for term in requested_terms]
+        else:
+            return [getNextTermForDate(datetime.date.today()),]
+
+    def __call__(self):
+        context = removeSecurityProxy(self.context)
+        self.app = getSchoolToolApplication()        
+        self.has_timetables = bool(self.app["terms"] and self.app["ttschemas"])
+        if not self.has_timetables:
+            return self.template()
+        self.terms = self.getTerms()
+        self.ttschema = self.getSchema()
+        self.ttkeys = ['.'.join((term.__name__, self.ttschema.__name__))
+                       for term in self.terms]
+        if 'SUBMIT' in self.request:
+            section = removeSecurityProxy(self.context)
+            for key in self.ttkeys:
+                if context.get(key, None):
+                    timetable = context[key]
+                else:
+                    timetable = self.ttschema.createTimetable()
+                    context[key] = timetable
+##                 for day_id, day in timetable.items():
+##                     for period_id, period in list(day.items()):
+##                         if '.'.join((day_id, period_id)) in self.request:
+##                             if not period:
+##                                 # XXX Resource list is being copied
+##                                 # from section as this view can't do
+##                                 # proper resource booking
+##                                 act = TimetableActivity(title=course_title,
+##                                                         owner=section,
+##                                                         resources=section.resources)
+##                                 day.add(period_id, act)
+##                         else:
+##                             if period:
+##                                 for act in list(period):
+##                                     day.remove(period_id, act)
+
+            # TODO: find a better place to redirect to
+            self.request.response.redirect(
+                zapi.absoluteURL(self.context, self.request))
+        return self.template()
+
+
+# XXX: remove this class soon!
 class SectionTimetableSetupView(TimetableSetupViewBase):
 
     __used_for__ = ISection
@@ -662,6 +723,105 @@
                 zapi.absoluteURL(
                     ITimetables(self.context).timetables[self.ttkeys[0]],
                     self.request))
+
+        return self.template()
+
+
+class TimetableEditView(TimetableSetupViewBase):
+
+    __used_for__ = ISection
+
+    template = ViewPageTemplateFile('templates/timetable-edit.pt')
+
+    def getTerms(self):
+        """Return the chosen term."""
+        if 'terms' in self.request:
+            terms = getSchoolToolApplication()['terms']
+            requested_terms = []
+
+            # request['terms'] may be a list of strings or a single string, we
+            # need to handle both cases
+            try:
+                requested_terms = requested_terms + self.request['terms']
+            except TypeError:
+                requested_terms.append(self.request['terms'])
+            return [terms[term] for term in requested_terms]
+        else:
+            return [getNextTermForDate(datetime.date.today()),]
+
+    def getDays(self, ttschema):
+        """Return the current selection.
+
+        Returns a list of dicts with the following keys
+
+            title   -- title of the timetable day
+            periods -- list of timetable periods in that day
+
+        Each period is represented by a dict with the following keys
+
+            title    -- title of the period
+            selected -- a boolean whether that period is in self.context's tt
+                            for this shcema
+
+        """
+        def days(schema):
+            for day_id, day in schema.items():
+                yield {'title': day_id,
+                       'periods': list(periods(day_id, day))}
+
+        def periods(day_id, day):
+            for period_id in day.periods:
+                selected = self.context[day_id][period_id]
+                yield {'title': period_id,
+                       'selected': selected}
+
+        return list(days(ttschema))
+
+    def __call__(self):
+        self.app = getSchoolToolApplication()
+        self.has_timetables = bool(self.app["terms"] and self.app["ttschemas"])
+        if not self.has_timetables:
+            return self.template()
+        self.terms = self.getTerms()
+        self.ttschema = self.getSchema()
+        self.ttkeys = ['.'.join((term.__name__, self.ttschema.__name__))
+                       for term in self.terms]
+        self.days = self.getDays(self.ttschema)
+        #XXX dumb, this doesn't space course names
+        section = removeSecurityProxy(self.context.__parent__.__parent__)
+        course_title = ''.join([course.title
+                                for course in section.courses])
+
+        if 'CANCEL' in self.request:
+            self.request.response.redirect(
+                zapi.absoluteURL(self.context, self.request))
+        if 'SAVE' in self.request:
+            for key in self.ttkeys:
+                if ITimetables(section).timetables.get(key, None):
+                    timetable = ITimetables(section).timetables[key]
+                else:
+                    timetable = self.ttschema.createTimetable()
+                    ITimetables(section).timetables[key] = timetable
+                for day_id, day in timetable.items():
+                    for period_id, period in list(day.items()):
+                        if '.'.join((day_id, period_id)) in self.request:
+                            if not period:
+                                # XXX Resource list is being copied
+                                # from section as this view can't do
+                                # proper resource booking
+                                act = TimetableActivity(title=course_title,
+                                                        owner=section,
+                                                        resources=section.resources)
+                                day.add(period_id, act)
+                        else:
+                            if period:
+                                for act in list(period):
+                                    day.remove(period_id, act)
+
+            # TODO: find a better place to redirect to
+            self.request.response.redirect(
+                zapi.absoluteURL(self.context,
+                                 self.request))
 
         return self.template()
 

Modified: schooltool/trunk/src/schooltool/timetable/browser/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/browser/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/browser/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/timetable/browser/configure.zcml Fri Jul 13 10:55:15 2007
@@ -48,6 +48,26 @@
 
   <configure package="schooltool.skin">
     <navigationViewlet
+      name="edit-section-timetable"
+      for="schooltool.timetable.interfaces.ITimetable"
+      manager="schooltool.skin.IActionMenuManager"
+      template="templates/actionsViewlet.pt"
+      permission="schooltool.edit"
+      link="edit.html"
+      title="Edit"
+      order="10"
+      />
+    <navigationViewlet
+      name="add-timetable"
+      for="schooltool.timetable.interfaces.ITimetableDict"
+      manager="schooltool.skin.IActionMenuManager"
+      template="templates/actionsViewlet.pt"
+      permission="schooltool.edit"
+      link="addTimetable.html"
+      title="Add Timetable"
+      order="10"
+      />
+    <navigationViewlet
       name="schedule-section"
       for="schooltool.course.interfaces.ISection"
       manager="schooltool.skin.IActionMenuManager"
@@ -163,11 +183,25 @@
       />
 
   <page
+      name="edit.html"
+      for="schooltool.timetable.interfaces.ITimetable"
+      class=".TimetableEditView"
+      permission="schooltool.edit"
+      />
+
+  <page
       name="index.html"
       for="schooltool.timetable.interfaces.ITimetableDict"
       template="templates/timetable_list.pt"
       permission="schooltool.view"
       menu="zmi_views" title="View"
+      />
+
+  <page
+      name="addTimetable.html"
+      for="schooltool.timetable.interfaces.ITimetableDict"
+      class=".TimetableAddForm"
+      permission="schooltool.edit"
       />
 
   <!-- ttwizard -->

Modified: schooltool/trunk/src/schooltool/timetable/browser/ftests/timetable-events.txt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/browser/ftests/timetable-events.txt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/browser/ftests/timetable-events.txt (original)
+++ schooltool/trunk/src/schooltool/timetable/browser/ftests/timetable-events.txt Fri Jul 13 10:55:15 2007
@@ -71,3 +71,43 @@
     >>> print_table_cell_for_day('2005-09-12')
     <a href="http://localhost/persons/frog/calendar/2005-09-12" class="cal_yearly_day_busy">12</a>
 
+
+Tests for Time Table editing
+----------------------------
+
+First log in as manager.
+
+    >>> manager = setup.logInManager()
+
+Now check the calendar for the history6a section.  We should have a
+class from 9:30 to 10:25.
+
+    >>> manager.open('http://localhost/sections/history6a/calendar/2006-01-02')
+    >>> events = analyze.queryHTML('//span[@class="start-end"]', manager.contents)
+    >>> for event in events: print event
+    <BLANKLINE>
+    ...09:30...
+    ...10:25...
+    >>> for event in events: '10:30' not in event
+    True
+
+Now we will go and modify the schedule for history6a and see if the
+calendar events are updated
+
+    >>> manager.open('http://localhost/sections/history6a/@@schedule.html')
+    >>> manager.getControl(name="Monday.09:30-10:25").value = False
+    >>> manager.getControl(name="Monday.10:30-11:25").value = True
+    >>> manager.getControl("Save").click()
+    >>> print manager.contents
+    <BLANKLINE>
+    ...<th class="period" width="2%">10:30-11:25</th>
+    <td class="activity" width="18%">History 6</td>...
+
+    >>> manager.open('http://localhost/sections/history6a/calendar/2006-01-02')
+    >>> events = analyze.queryHTML('//span[@class="start-end"]', manager.contents)
+    >>> for event in events: print event
+    <BLANKLINE>
+    ...10:30...
+    ...11:25...
+    >>> for event in events: '09:30' not in event
+    True

Modified: schooltool/trunk/src/schooltool/timetable/browser/ftests/timetabling.txt
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/browser/ftests/timetabling.txt?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/browser/ftests/timetabling.txt (original)
+++ schooltool/trunk/src/schooltool/timetable/browser/ftests/timetabling.txt Fri Jul 13 10:55:15 2007
@@ -297,11 +297,87 @@
           <td class="activity" width="18%"></td>
         </tr>
 
+We can also edit the timetable from the time table view.
+
+    >>> manager.getLink("Edit").click()
+    >>> manager.getControl(name="Wednesday.A").value = True
+    >>> manager.getControl(name="Monday.A").value = False
+    >>> manager.getControl(name="Thursday.B").value = True
+    >>> manager.getControl(name="Tuesday.B").value = False
+    >>> manager.getControl("Save").click()
+
+And now the timetable is updated.
+
+    >>> print analyze.queryHTML('//table/tr[2]', manager.contents)[0]
+    <tr><th class="period" width="2%">A</th>
+          <td class="activity" width="18%"></td>
+    <BLANKLINE>
+          <th class="period" width="2%">A</th>
+          <td class="activity" width="18%"></td>
+    <BLANKLINE>
+          <th class="period" width="2%">A</th>
+          <td class="activity" width="18%">Swimming</td>
+    <BLANKLINE>
+          <th class="period" width="2%">A</th>
+          <td class="activity" width="18%"></td>
+    <BLANKLINE>
+          <th class="period" width="2%">A</th>
+          <td class="activity" width="18%"></td>
+        </tr>
+
+    >>> print analyze.queryHTML('//table/tr[3]', manager.contents)[0]
+    <tr><th class="period" width="2%">B</th>
+          <td class="activity" width="18%"></td>
+    <BLANKLINE>
+          <th class="period" width="2%">B</th>
+          <td class="activity" width="18%"></td>
+    <BLANKLINE>
+          <th class="period" width="2%">B</th>
+          <td class="activity" width="18%"></td>
+    <BLANKLINE>
+          <th class="period" width="2%">B</th>
+          <td class="activity" width="18%">Swimming</td>
+    <BLANKLINE>
+          <th class="period" width="2%">B</th>
+          <td class="activity" width="18%"></td>
+        </tr>
+
+We can add another timetable schema and then add another timetable for
+this section based on the new schema.
+
+    >>> manager.open('http://localhost/ttschemas')
+    >>> manager.getLink('New Timetable').click()
+
+    >>> manager.getControl('Title').value = 'single-period'
+    >>> manager.getControl('Next').click()
+    >>> manager.getControl('Days of the week').click()
+    >>> manager.getControl('Same time each day').click()
+    >>> manager.getControl(name='field.times').value = """
+    ... 9:30-21:30
+    ... 21:35-21:45
+    ... """
+    >>> manager.getControl('Next').click()
+    >>> manager.getControl('Have names').click()
+    >>> manager.getControl(name='field.periods').value = """
+    ... A
+    ... B
+    ... """
+    >>> manager.getControl('Next').click()
+    >>> manager.getControl('Same').click()
+    >>> manager.getControl('Next').click()
+    >>> manager.getControl('No').click()
+
+    >>> manager.open('http://localhost:8000/sections/swimming--frog/timetables/addTimetable.html')
+    >>> manager.getControl(name='ttschema').value = ['singleperiod']
+    >>> manager.getControl('Add').click()
+    >>> manager.getLink('2005-fall.singleperiod').click()
+    >>> manager.getLink('Edit').click()
+
 The activities should show up in the calendar of the users that are in
 this section too:
 
     >>> manager.open('http://localhost/'
-    ...              'persons/frog/calendar/2005-09-05')
+    ...              'persons/frog/calendar/2005-09-07')
 
     >>> print analyze.queryHTML('//h6[fn:contains(text(), "Swimming")]',
     ...                         manager.contents)[0]

Modified: schooltool/trunk/src/schooltool/timetable/browser/schema.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/browser/schema.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/browser/schema.py (original)
+++ schooltool/trunk/src/schooltool/timetable/browser/schema.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Timetabling Schema views.
 
-$Id: schema.py 6602 2007-01-26 13:17:25Z ignas $
+$Id: schema.py 7043 2007-07-12 17:14:18Z jfroche $
 """
 from zope.i18n import translate
 from zope.component import adapts
@@ -238,9 +238,6 @@
     def update(self):
         if 'CONFIRM' in self.request:
             for key in self.listIdsForDeletion():
-                for tt in findRelatedTimetables(self.context[key]):
-                    ttdict = getParent(tt)
-                    del ttdict[getName(tt)]
                 del self.context[key]
             self.request.response.redirect(self.nextURL())
         elif 'CANCEL' in self.request:

Modified: schooltool/trunk/src/schooltool/timetable/browser/tests/test_schema.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/browser/tests/test_schema.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/browser/tests/test_schema.py (original)
+++ schooltool/trunk/src/schooltool/timetable/browser/tests/test_schema.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Tests for schooltool timetable schema views.
 
-$Id: test_schema.py 6602 2007-01-26 13:17:25Z ignas $
+$Id: test_schema.py 7043 2007-07-12 17:14:18Z jfroche $
 """
 
 import unittest
@@ -880,6 +880,11 @@
         >>> ztapi.provideAdapter(IAttributeAnnotatable, ITimetables,
         ...                      TimetablesAdapter)
         >>> setup.setUpAnnotations()
+        >>> from schooltool.timetable.schema import clearTimetablesOnDeletion
+        >>> from schooltool.timetable.interfaces import ITimetableSchema
+        >>> from zope.app.container.interfaces import IObjectRemovedEvent
+        >>> ztapi.subscribe([ITimetableSchema, IObjectRemovedEvent], None,
+        ...                 clearTimetablesOnDeletion)
 
     Now, let's create a couple of timetables to operate on:
 

Modified: schooltool/trunk/src/schooltool/timetable/configure.zcml
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/configure.zcml?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/configure.zcml (original)
+++ schooltool/trunk/src/schooltool/timetable/configure.zcml Fri Jul 13 10:55:15 2007
@@ -192,6 +192,12 @@
       handler=".model.addEventsToCalendar" />
 
   <subscriber
+      for=".interfaces.ITimetableSchema
+           zope.app.container.interfaces.IObjectRemovedEvent"
+      handler=".schema.clearTimetablesOnDeletion" />
+
+
+  <subscriber
       for="schooltool.timetable.interfaces.ITimetableActivityRemovedEvent"
       handler=".model.removeEventsFromCalendar" />
 

Modified: schooltool/trunk/src/schooltool/timetable/schema.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/timetable/schema.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/timetable/schema.py (original)
+++ schooltool/trunk/src/schooltool/timetable/schema.py Fri Jul 13 10:55:15 2007
@@ -19,7 +19,7 @@
 """
 Timetable Schemas
 
-$Id: schema.py 6233 2006-06-12 17:52:59Z ignas $
+$Id: schema.py 7043 2007-07-12 17:14:18Z jfroche $
 """
 from persistent import Persistent
 from persistent.dict import PersistentDict
@@ -27,10 +27,12 @@
 
 from zope.interface import implements
 from zope.annotation.interfaces import IAttributeAnnotatable
+from zope.app import zapi
 from zope.app.container.btree import BTreeContainer
 from zope.app.container.contained import Contained
 
-from schooltool.timetable import Timetable, TimetableDay
+from schooltool.timetable import Timetable, TimetableDay, findRelatedTimetables
+
 from schooltool.timetable.interfaces import ITimetableSchema
 from schooltool.timetable.interfaces import ITimetableSchemaContained
 from schooltool.timetable.interfaces import ITimetableSchemaContainer
@@ -160,3 +162,13 @@
 
     def getDefault(self):
         return self[self.default_id]
+
+def clearTimetablesOnDeletion(obj, event):
+    """
+    This event subscriber for term and schema will remove all timetable
+    related to the term
+    """
+    object = event.object
+    for tt in findRelatedTimetables(obj):
+        ttdict = zapi.getParent(tt)
+        del ttdict[zapi.getName(tt)]

Modified: schooltool/trunk/src/schooltool/widget/password.py
URL: http://svn.debian.org/wsvn/pkg-zope/schooltool/trunk/src/schooltool/widget/password.py?rev=937&op=diff
==============================================================================
--- schooltool/trunk/src/schooltool/widget/password.py (original)
+++ schooltool/trunk/src/schooltool/widget/password.py Fri Jul 13 10:55:15 2007
@@ -35,14 +35,17 @@
                 style=self.style,
                 size=self.displayWidth,
                 extra=self.extra)
-        # XXX we don't want label in the translatable string
-        return translate(
-            _(u'${password} <label for="${label}" title="">Confirm</label> ${confirm}',
-            mapping={
-            'label': confirm_name,
-            'password': password_tag,
-            'confirm': confirm_tag}),
-            context=self.request)
+
+        confirm_label = translate(_("confirm password", default="Confirm"),
+                                  context=self.request)
+        return u"""<div><div>%s</div>
+                     <br />
+                     <div class="label">
+                       <label for="%s" title="">%s</label>
+                     </div>
+                     <div>%s</div>
+                   </div>""" % (
+            password_tag, confirm_name, confirm_label, confirm_tag)
 
     def _toFieldValue(self, input):
         """Check whether the confirmation field value is identical to




More information about the pkg-zope-commits mailing list