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, })
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)
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)
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)
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)
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))
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"))
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]
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, })
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, })
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)
def setUp(test): placefulSetUp() setup.getIntegrationTestZCML() app = AppStub() app['persons'] = BTreeContainer() test.globs.update({ 'app': app, })
def setUp(test): setup.placefulSetUp() zcml = getIntegrationTestZCML() zcml.include('schooltool.schoolyear', file='schoolyear.zcml') app = AppStub() app['persons'] = BTreeContainer() test.globs.update({ 'app': app, })
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
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'])
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'
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)
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()
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)
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'])
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'])
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()
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()
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, })
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)
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]))
def testBTreeContainerInterface(self): bc = BTreeContainer() self.assert_(verifyObject(IBTreeContainer, bc)) self.checkIterable(bc.items()) self.checkIterable(bc.keys()) self.checkIterable(bc.values())
def __init__(self): self.groups = BTreeContainer() self.actions_by_group = BTreeContainer()
def __setitem__(self, key, schoolyear): self.validateForOverlap(schoolyear) BTreeContainer.__setitem__(self, key, schoolyear) if self.active_id is None: self._set_active_id(key)
def __delitem__(self, schema_id): BTreeContainer.__delitem__(self, schema_id) if schema_id == self.default_id: self._default_id = None
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"))
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"))
def __init__(self, timezone='UTC'): BTreeContainer.__init__(self) self.timezone = timezone self.exceptions = PersistentDict()
def makeTestObject(self): return BTreeContainer()
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"))