예제 #1
0
def setUp(test):
    setup.placefulSetUp()
    zcml = getIntegrationTestZCML()
    zcml.include('schooltool.schoolyear', file='schoolyear.zcml')
    zcml.string('''
    <adapter
      for="schooltool.course.interfaces.ISectionContainer"
      factory="schooltool.course.browser.section.SectionNameChooser"
      provides="zope.container.interfaces.INameChooser" />
    ''')

    provideAdapter(section.getSectionContainer)
    provideAdapter(section.getTermForSection)
    provideAdapter(section.getTermForSectionContainer)
    provideAdapter(section.SectionLinkContinuinityValidationSubscriber)
    provideAdapter(getSchoolYearForTerm)
    app = AppStub()
    courses = app['schooltool.course.course'] = BTreeContainer()
    sections = app['schooltool.course.section'] = BTreeContainer()
    groups = app['schooltool.group'] = BTreeContainer()
    persons = app['persons'] = PersonContainer()
    resources = app['resources'] = BTreeContainer()
    test.globs.update({
        'app': app,
        'courses': courses,
        'sections': sections,
        'persons': persons,
        'groups': groups,
        'resources': resources,
    })
예제 #2
0
 def __setitem__(self, key, term):
     self.validateForOverlap(term)
     if term.first < self.first:
         raise ValueError("Term can't start before the school year starts!")
     if term.last > self.last:
         raise ValueError("Term can't end after the school year ends!")
     BTreeContainer.__setitem__(self, key, term)
예제 #3
0
 def __setitem__(self, key, term):
     self.validateForOverlap(term)
     if term.first < self.first:
         raise ValueError("Term can't start before the school year starts!")
     if term.last > self.last:
         raise ValueError("Term can't end after the school year ends!")
     BTreeContainer.__setitem__(self, key, term)
예제 #4
0
 def __init__(self, title, first, last):
     self.title = title
     self._first = first
     self._last = last
     if last < first:
         raise ValueError("Last date %r less than first date %r" %
                          (last, first))
     BTreeContainer.__init__(self)
예제 #5
0
 def __delitem__(self, schoolyear_id):
     if schoolyear_id == self.active_id:
         if len(self.values()) > 1:
             raise ValueError("Can not delete an active schoolyear, unless"
                              " it is the last school year available!")
         else:
             self._set_active_id(None)
     BTreeContainer.__delitem__(self, schoolyear_id)
예제 #6
0
 def __init__(self, title, first, last):
     self.title = title
     self._first = first
     self._last = last
     if last < first:
         raise ValueError("Last date %r less than first date %r" %
                          (last, first))
     BTreeContainer.__init__(self)
예제 #7
0
 def __delitem__(self, schoolyear_id):
     if schoolyear_id == self.active_id:
         if len(self.values()) > 1:
             raise ValueError("Can not delete an active schoolyear, unless"
                              " it is the last school year available!")
         else:
             self._set_active_id(None)
     BTreeContainer.__delitem__(self, schoolyear_id)
예제 #8
0
 def __delitem__(self, name):
     value = self[name]
     group_id = self._groupid(value)
     self._removePrincipalsFromGroup(value.principals, group_id)
     if value.principals:
         event.notify(
             PrincipalsRemovedFromGroup(
                 value.principals, self.__parent__.prefix + group_id))
     BTreeContainer.__delitem__(self, name)
예제 #9
0
 def __setitem__(self, name, value):
     BTreeContainer.__setitem__(self, name, value)
     group_id = self._groupid(value)
     self._addPrincipalsToGroup(value.principals, group_id)
     if value.principals:
         event.notify(
             PrincipalsAddedToGroup(
                 value.principals, self.__parent__.prefix + group_id))
     group = factories.Principal(self.prefix + name)
     event.notify(GroupAdded(group))
예제 #10
0
 def testEmptyValuesWithArg(self):
     bc = BTreeContainer()
     self.assertEqual(list(bc.values(None)), list(bc.values()))
     self.assertEqual(list(bc.values("")), [])
     self.assertEqual(list(bc.values("not-there")), [])
     self.checkIterable(bc.values(None))
     self.checkIterable(bc.values(""))
     self.checkIterable(bc.values("not-there"))
예제 #11
0
 def testEmptyValuesWithArg(self):
     bc = BTreeContainer()
     self.assertEqual(list(bc.values(None)), list(bc.values()))
     self.assertEqual(list(bc.values("")), [])
     self.assertEqual(list(bc.values("not-there")), [])
     self.checkIterable(bc.values(None))
     self.checkIterable(bc.values(""))
     self.checkIterable(bc.values("not-there"))
예제 #12
0
def handle_action(group_name, name, action):
    util = getDescriptionUtility()
    if group_name not in util.actions_by_group:
        util.actions_by_group[group_name] = BTreeContainer()
    util.actions_by_group[group_name][name] = action
    action.__name__ = name
    action.__parent__ = util.actions_by_group[group_name]
예제 #13
0
def setUp(test):
    setup.placefulSetUp()
    zcml = stsetup.getIntegrationTestZCML()
    zcml.include('schooltool.schoolyear', file='schoolyear.zcml')
    app = AppStub()
    app['persons'] = BTreeContainer()

    from schooltool.term.term import getTermContainer
    from schooltool.term.interfaces import ITermContainer
    from schooltool.schoolyear.schoolyear import getSchoolYearContainer
    provideAdapter(getTermContainer, [Interface], ITermContainer)
    provideAdapter(getSchoolYearContainer)

    from schooltool.group.group import GroupContainer, Group
    groups = app['groups'] = GroupContainer()
    provideAdapter(lambda context: groups,
                   adapts=[ISchoolToolApplication],
                   provides=IGroupContainer)
    groups['teachers'] = Group('Teachers')
    groups['students'] = Group('Students')

    from zope.annotation.interfaces import IAnnotatable
    from schooltool.relationship.interfaces import IRelationshipLinks
    from schooltool.relationship.annotatable import getRelationshipLinks
    provideAdapter(getRelationshipLinks, [IAnnotatable], IRelationshipLinks)

    from schooltool.app.cal import getCalendar
    from schooltool.app.interfaces import ISchoolToolCalendar
    from schooltool.person.interfaces import IPerson
    provideAdapter(getCalendar, [IPerson], ISchoolToolCalendar)
    test.globs.update({
        'app': app,
    })
예제 #14
0
def setUp(test):
    setup.placefulSetUp()
    zcml = getIntegrationTestZCML()
    app = AppStub()
    persons = app['persons'] = BTreeContainer()
    courses = app['schooltool.course.course'] = BTreeContainer()
    sections = app['schooltool.course.section'] = BTreeContainer()
    groups = app['schooltool.group'] = BTreeContainer()
    test.globs.update({
        'zcml': zcml,
        'app': app,
        'persons': persons,
        'sections': sections,
        'groups': groups,
        'courses': courses,
    })
예제 #15
0
 def test_RelationIndex(self):
     """ Test if a relation index is created on a new site event."""
     from quotationtool.site.site import QuotationtoolSite
     from zope.container.btree import BTreeContainer
     root = BTreeContainer()
     root['quotationtool'] = site = QuotationtoolSite()
     from zc.relation.interfaces import ICatalog
     cat = zope.component.getUtility(ICatalog, context=site)
예제 #16
0
def setUp(test):
    placefulSetUp()
    setup.getIntegrationTestZCML()
    app = AppStub()
    app['persons'] = BTreeContainer()
    test.globs.update({
        'app': app,
    })
예제 #17
0
def setUp(test):
    setup.placefulSetUp()
    zcml = getIntegrationTestZCML()
    zcml.include('schooltool.schoolyear', file='schoolyear.zcml')
    app = AppStub()
    app['persons'] = BTreeContainer()
    test.globs.update({
        'app': app,
    })
예제 #18
0
    def __init__(self, site, default_folder=True):
        BTreeContainer.__init__(self)
        zope.component.persistentregistry.PersistentComponents.__init__(self)

        # Locate the site manager
        self.__parent__ = site
        self.__name__ = '++etc++site'

        # Set base site manager
        next = _findNextSiteManager(site)
        if next is None:
            next = zope.component.getGlobalSiteManager()
        self.__bases__ = (next, )

        # Setup default site management folder if requested
        if default_folder:
            folder = SiteManagementFolder()
            zope.event.notify(ObjectCreatedEvent(folder))
            self['default'] = folder
예제 #19
0
 def testCorrectLengthWhenAddingExistingItem(self):
     """
     for bug #175388
     """
     bc = BTreeContainer()
     bc[u'x'] = object()
     self.assertEqual(len(bc), 1)
     bc[u'x'] = bc[u'x']
     self.assertEqual(len(bc), 1)
     self.assertEqual(list(bc), [u'x'])
예제 #20
0
파일: site.py 프로젝트: grodniewicz/oship
    def __init__(self, site, default_folder=True):
        BTreeContainer.__init__(self)
        zope.component.persistentregistry.PersistentComponents.__init__(self)

        # Locate the site manager
        self.__parent__ = site
        self.__name__ = '++etc++site'

        # Set base site manager
        next = _findNextSiteManager(site)
        if next is None:
            next = zope.component.getGlobalSiteManager()
        self.__bases__ = (next, )

        # Setup default site management folder if requested
        if default_folder:
            folder = SiteManagementFolder()
            zope.event.notify(ObjectCreatedEvent(folder))
            self['default'] = folder
예제 #21
0
def populate(app):
    app['persons'] = BTreeContainer()
    app['persons']['john'] = PersonStub("john", "Johny", "John")
    app['persons']['john'].email = "*****@*****.**"
    app['persons']['john'].phone = "667755"

    app['persons']['pete'] = PersonStub("pete", "Petey", "Pete")
    app['persons']['pete'].email = "*****@*****.**"
    app['persons']['pete'].phone = "667755"
    app['persons']['pete'].gradeclass = 'gradeclass'
예제 #22
0
 def testStoredLength(self):
     # This is lazy for backward compatibility.  If the len is not
     # stored already we set it to the length of the underlying
     # btree.
     bc = BTreeContainer()
     self.assertEqual(bc.__dict__['_BTreeContainer__len'](), 0)
     del bc.__dict__['_BTreeContainer__len']
     self.failIf(bc.__dict__.has_key('_BTreeContainer__len'))
     bc['1'] = 1
     self.assertEqual(len(bc), 1)
     self.assertEqual(bc.__dict__['_BTreeContainer__len'](), 1)
예제 #23
0
def test_root__FrontPage__3(address_book, browser):
    """`FrontPage` lists only address books.

    When another object is in the root folder it is not listed.
    """
    from zope.container.btree import BTreeContainer
    address_book.__parent__['btree'] = BTreeContainer()
    browser.login('mgr')
    browser.open(browser.ROOT_URL)
    assert 'test addressbook' == ''.join(
        browser.etree.xpath('//ul/li/a[1]/text()')).strip()
예제 #24
0
 def test_CatalogCreation(self):
     from zope.container.btree import BTreeContainer
     from quotationtool.site.site import QuotationtoolSite
     root = BTreeContainer()
     root['site'] = site = QuotationtoolSite()
     from zc.relation.interfaces import ICatalog
     cat = zope.component.queryUtility(
         ICatalog,
         context = site, 
         default = None)
     self.assertTrue(cat is not None)
예제 #25
0
 def test_ExampleContainer(self):
     """ Test if container is created on a new site event."""
     from quotationtool.site.site import QuotationtoolSite
     from zope.container.btree import BTreeContainer
     root = BTreeContainer()
     root['quotationtool'] = site = QuotationtoolSite()
     self.assertTrue('examples' in site.keys())
     from quotationtool.figuresng.examplecontainer import ExampleContainer
     self.assertTrue(isinstance(site['examples'], ExampleContainer))
     from quotationtool.figuresng.iexample import IExampleContainer
     ut = zope.component.getUtility(IExampleContainer, context=site)
     self.assertTrue(ut is site['examples'])
예제 #26
0
 def test_ExampleContainer(self):
     """ Test if container is created on a new site event."""
     from quotationtool.site.site import QuotationtoolSite
     from zope.container.btree import BTreeContainer
     root = BTreeContainer()
     root['quotationtool'] = site = QuotationtoolSite()
     self.assertTrue('comments' in site.keys())
     from quotationtool.commentary.commentcontainer import CommentContainer
     self.assertTrue(isinstance(site['comments'], CommentContainer))
     from quotationtool.commentary.interfaces import ICommentContainer
     ut = zope.component.getUtility(ICommentContainer, context=site)
     self.assertTrue(ut is site['comments'])
예제 #27
0
def setUp(test):
    setup.placefulSetUp()
    provideAdapter(evaluation.getEvaluations, (Interface, ), IEvaluations)
    testing.fixDecimal()

    provideAdapter(activity.getSectionActivities, (ISection, ),
                   interfaces.IActivities)
    provideAdapter(activity.getCourseActivities, (ICourse, ),
                   interfaces.ICourseActivities)
    provideAdapter(activity.getCourseDeployedWorksheets, (ICourse, ),
                   interfaces.ICourseDeployedWorksheets)

    provideAdapter(gradebook.Gradebook)

    provideAdapter(category.getCategories)

    provideAdapter(stubs.SomeProductStub, (ISection, ),
                   interfaces.IExternalActivities,
                   name=u"someproduct")

    provideAdapter(stubs.ThirdPartyStub, (ISection, ),
                   interfaces.IExternalActivities,
                   name=u"thirdparty")

    classImplements(Person, IHaveEvaluations)

    provideAdapter(gradebook.getActivityScore)
    provideAdapter(gradebook.getLinkedActivityScore)
    provideAdapter(gradebook.getWorksheetAverageScore)

    provideUtility(stubs.DateManagerStub(), IDateManager, '')
    zcml = getIntegrationTestZCML()
    zcml.include('schooltool.schoolyear', file='schoolyear.zcml')
    app = test.globs['app'] = AppStub()
    app['persons'] = BTreeContainer()
    app['courses'] = BTreeContainer()
    app['sections'] = BTreeContainer()
예제 #28
0
def docSetUp(test=None):
    zope_setup.placefulSetUp()
    zope_setup.setUpAnnotations()
    zope_setup.setUpTraversal()
    provideAdapter(getTermContainer, (Interface, ))
    provideAdapter(getSchoolYearForTerm)
    provideAdapter(getCourseContainer)
    provideAdapter(getCourseContainerForApp)
    provideAdapter(getSectionContainer)
    provideAdapter(getTermForSection)
    provideAdapter(getTermForSectionContainer)
    provideAdapter(getTimetableContainer)
    provideAdapter(getScheduleContainer)
    testing_registry.setupTimetablesComponents()

    provideAdapter(SectionNameChooser, (ISectionContainer, ))
    zcml = getIntegrationTestZCML()
    zcml.include('schooltool.schoolyear', file='schoolyear.zcml')
    app = test.globs['app'] = AppStub()
    app['persons'] = BTreeContainer()
예제 #29
0
def setUp(test):
    setup.placefulSetUp()
    # Workaround: _clear actually sets the Zope's vocabulary registry and
    #             is called on zope.app.schema.vocabularies import (during
    #             zcml parsing, for example).  When running multiple tests
    #             this ingenious idea fails, so we call it manually.
    from zope.app.schema import vocabulary
    vocabulary._clear()
    zcml = getIntegrationTestZCML()
    zcml.include('schooltool.level', file='level.zcml')
    provideAdapter(LocationCopyHook, (ILocation,))
    app = AppStub()
    app['schooltool.course.course'] = BTreeContainer()
    test.globs.update({
        'CourseStub': CourseStub,
        'getRelatedObjects': getRelatedObjects,
        'provideAdapter': provideStubAdapter,
        'unregisterAdapter': unregisterStubAdapter,
        'app': app,
        })
예제 #30
0
    def testStoredLength(self):
        # This is a lazy property for backward compatibility.  If the len is not
        # stored already we set it to the length of the underlying
        # btree.
        lazy = BTreeContainer._BTreeContainer__len
        self.assertIs(lazy, BTreeContainer.__dict__['_BTreeContainer__len'])
        self.assertTrue(hasattr(lazy, '__get__'))

        bc = BTreeContainer()
        self.assertEqual(bc.__dict__['_BTreeContainer__len'](), 0)
        del bc.__dict__['_BTreeContainer__len']
        self.assertFalse('_BTreeContainer__len' in bc.__dict__)
        bc['1'] = 1
        self.assertEqual(len(bc), 1)
        self.assertEqual(bc.__dict__['_BTreeContainer__len'](), 1)

        del bc.__dict__['_BTreeContainer__len']
        self.assertFalse('_BTreeContainer__len' in bc.__dict__)
        self.assertEqual(len(bc), 1)
        self.assertEqual(bc.__dict__['_BTreeContainer__len'](), 1)
예제 #31
0
    def testDeletion(self):
        from zope.event import subscribers
        tree = BTreeContainer()
        item = Contained()
        tree['42'] = item
        events = []
        def subscriber(event):
            events.append(event)
            # events should happen after the deletion, not before)
            self.assertEqual(len(tree), 0)
            self.assertEqual(list(tree), [])
        subscribers.append(subscriber)

        del tree['42']
        self.assertEqual(item.__name__, None)
        self.assertEqual(item.__parent__, None)

        self.assertEqual(len(events), 2)
        self.assertTrue(IObjectRemovedEvent.providedBy(events[0]))
        self.assertTrue(IContainerModifiedEvent.providedBy(events[1]))
예제 #32
0
 def testBTreeContainerInterface(self):
     bc = BTreeContainer()
     self.assert_(verifyObject(IBTreeContainer, bc))
     self.checkIterable(bc.items())
     self.checkIterable(bc.keys())
     self.checkIterable(bc.values())
예제 #33
0
 def __init__(self):
     self.groups = BTreeContainer()
     self.actions_by_group = BTreeContainer()
예제 #34
0
 def __setitem__(self, key, schoolyear):
     self.validateForOverlap(schoolyear)
     BTreeContainer.__setitem__(self, key, schoolyear)
     if self.active_id is None:
         self._set_active_id(key)
예제 #35
0
 def __delitem__(self, schema_id):
     BTreeContainer.__delitem__(self, schema_id)
     if schema_id == self.default_id:
         self._default_id = None
예제 #36
0
 def testNonemptyItemsWithArg(self):
     bc = BTreeContainer()
     bc["0"] = 1
     bc["1"] = 2
     bc["2"] = 3
     self.assertEqual(list(bc.items(None)), list(bc.items()))
     self.assertEqual(list(bc.items("")), [("0", 1), ("1", 2), ("2", 3)])
     self.assertEqual(list(bc.items("3")), [])
     self.assertEqual(list(bc.items("2.")), [])
     self.assertEqual(list(bc.items("2")), [("2", 3)])
     self.assertEqual(list(bc.items("1.")), [("2", 3)])
     self.assertEqual(list(bc.items("1")), [("1", 2), ("2", 3)])
     self.assertEqual(list(bc.items("0.")), [("1", 2), ("2", 3)])
     self.assertEqual(list(bc.items("0")), [("0", 1), ("1", 2), ("2", 3)])
     self.checkIterable(bc.items(None))
     self.checkIterable(bc.items(""))
     self.checkIterable(bc.items("0."))
     self.checkIterable(bc.items("3"))
예제 #37
0
 def __setitem__(self, key, schoolyear):
     self.validateForOverlap(schoolyear)
     BTreeContainer.__setitem__(self, key, schoolyear)
     if self.active_id is None:
         self._set_active_id(key)
예제 #38
0
 def testNonemptyItemsWithArg(self):
     bc = BTreeContainer()
     bc["0"] = 1
     bc["1"] = 2
     bc["2"] = 3
     self.assertEqual(list(bc.items(None)), list(bc.items()))
     self.assertEqual(list(bc.items("")), [("0", 1), ("1", 2), ("2", 3)])
     self.assertEqual(list(bc.items("3")), [])
     self.assertEqual(list(bc.items("2.")), [])
     self.assertEqual(list(bc.items("2")), [("2", 3)])
     self.assertEqual(list(bc.items("1.")), [("2", 3)])
     self.assertEqual(list(bc.items("1")), [("1", 2), ("2", 3)])
     self.assertEqual(list(bc.items("0.")), [("1", 2), ("2", 3)])
     self.assertEqual(list(bc.items("0")), [("0", 1), ("1", 2), ("2", 3)])
     self.checkIterable(bc.items(None))
     self.checkIterable(bc.items(""))
     self.checkIterable(bc.items("0."))
     self.checkIterable(bc.items("3"))
예제 #39
0
 def testNonemptyValueWithArg(self):
     bc = BTreeContainer()
     bc["0"] = 1
     bc["1"] = 2
     bc["2"] = 3
     self.assertEqual(list(bc.values(None)), list(bc.values()))
     self.assertEqual(list(bc.values("")), [1, 2, 3])
     self.assertEqual(list(bc.values("3")), [])
     self.assertEqual(list(bc.values("2.")), [])
     self.assertEqual(list(bc.values("2")), [3])
     self.assertEqual(list(bc.values("1.")), [3])
     self.assertEqual(list(bc.values("1")), [2, 3])
     self.assertEqual(list(bc.values("0.")), [2, 3])
     self.assertEqual(list(bc.values("0")), [1, 2, 3])
     self.checkIterable(bc.values(None))
     self.checkIterable(bc.values(""))
     self.checkIterable(bc.values("0."))
     self.checkIterable(bc.values("3"))
예제 #40
0
 def testNonemptyValueWithArg(self):
     bc = BTreeContainer()
     bc["0"] = 1
     bc["1"] = 2
     bc["2"] = 3
     self.assertEqual(list(bc.values(None)), list(bc.values()))
     self.assertEqual(list(bc.values("")), [1, 2, 3])
     self.assertEqual(list(bc.values("3")), [])
     self.assertEqual(list(bc.values("2.")), [])
     self.assertEqual(list(bc.values("2")), [3])
     self.assertEqual(list(bc.values("1.")), [3])
     self.assertEqual(list(bc.values("1")), [2, 3])
     self.assertEqual(list(bc.values("0.")), [2, 3])
     self.assertEqual(list(bc.values("0")), [1, 2, 3])
     self.checkIterable(bc.values(None))
     self.checkIterable(bc.values(""))
     self.checkIterable(bc.values("0."))
     self.checkIterable(bc.values("3"))
예제 #41
0
 def __init__(self, timezone='UTC'):
     BTreeContainer.__init__(self)
     self.timezone = timezone
     self.exceptions = PersistentDict()
예제 #42
0
 def makeTestObject(self):
     return BTreeContainer()
예제 #43
0
 def testNonemptyKeysWithArg(self):
     bc = BTreeContainer()
     bc["0"] = 1
     bc["1"] = 2
     bc["2"] = 3
     self.assertEqual(list(bc.keys(None)), list(bc.keys()))
     self.assertEqual(list(bc.keys("")), ["0", "1", "2"])
     self.assertEqual(list(bc.keys("3")), [])
     self.assertEqual(list(bc.keys("2.")), [])
     self.assertEqual(list(bc.keys("2")), ["2"])
     self.assertEqual(list(bc.keys("1.")), ["2"])
     self.assertEqual(list(bc.keys("1")), ["1", "2"])
     self.assertEqual(list(bc.keys("0.")), ["1", "2"])
     self.assertEqual(list(bc.keys("0")), ["0", "1", "2"])
     self.checkIterable(bc.keys(None))
     self.checkIterable(bc.keys(""))
     self.checkIterable(bc.keys("0."))
     self.checkIterable(bc.keys("3"))
예제 #44
0
 def testBTreeContainerInterface(self):
     bc = BTreeContainer()
     self.assert_(verifyObject(IBTreeContainer, bc))
     self.checkIterable(bc.items())
     self.checkIterable(bc.keys())
     self.checkIterable(bc.values())