Beispiel #1
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    savepoint_counter = 0

    # Groups are no longer allowed as members of a section.
    groups = findObjectsProviding(root, IGroup)
    for group in groups:
        targets = getRelatedObjects(group, URIGroup, rel_type=URIMembership)
        group_members = getRelatedObjects(group,
                                          URIMember,
                                          rel_type=URIMembership)

        for target in targets:
            target_members = getRelatedObjects(target,
                                               URIMember,
                                               rel_type=URIMembership)
            for member in group_members:
                if member not in target_members:
                    relate(URIMembership, (member, URIMember),
                           (target, URIGroup))
                savepoint_counter += 1
            unrelate(URIMembership, (group, URIMember), (target, URIGroup))
        if savepoint_counter % 2000 == 0:
            transaction.savepoint(optimistic=True)

    # Courses gained several new attributes, fill in their course_id
    courses = findObjectsProviding(root, ICourse)
    for course in courses:
        if getattr(course, 'course_id', None) is None:
            course.course_id = course.__name__
Beispiel #2
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    savepoint_counter = 0

    # Groups are no longer allowed as members of a section.
    groups = findObjectsProviding(root, IGroup)
    for group in groups:
        targets = getRelatedObjects(
            group, URIGroup, rel_type=URIMembership)
        group_members = getRelatedObjects(
            group, URIMember, rel_type=URIMembership)

        for target in targets:
            target_members = getRelatedObjects(
                target, URIMember, rel_type=URIMembership)
            for member in group_members:
                if member not in target_members:
                    relate(URIMembership,
                           (member, URIMember),
                           (target, URIGroup))
                savepoint_counter += 1
            unrelate(URIMembership,
                     (group, URIMember),
                     (target, URIGroup))
        if savepoint_counter % 2000 == 0:
            transaction.savepoint(optimistic=True)

    # Courses gained several new attributes, fill in their course_id
    courses = findObjectsProviding(root, ICourse)
    for course in courses:
        if getattr(course, 'course_id', None) is None:
            course.course_id = course.__name__
Beispiel #3
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    for app in findObjectsProviding(root, ISchoolToolApplication):
        persons = app['persons']
        for person in persons.values():
            del person.email
            del person.phone
            if hasattr(person, 'gradeclass'):
                del person.gradeclass
Beispiel #4
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    for app in findObjectsProviding(root, ISchoolToolApplication):
        persons = app['persons']
        for person in persons.values():
            del person.email
            del person.phone
            if hasattr(person, 'gradeclass'):
                del person.gradeclass
Beispiel #5
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        container = IEmailContainer(app, None)
        if container is None:
            continue
        if getattr(container, 'enabled', None) is None:
            container.enabled = bool(container.hostname)
Beispiel #6
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = getRootFolder(context)

    old_site = getSite()
    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        for person in app['persons'].values():
            evolvePerson(person)

    setSite(old_site)
Beispiel #7
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = getRootFolder(context)

    old_site = getSite()

    app = root
    setSite(app)
    evolveScheduleContainers(app)
    evolveTimetableContainers(app)

    setSite(old_site)
Beispiel #8
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    old_site = getSite()
    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        # vivify person contact information
        persons = findObjectsProviding(app, IPerson)
        for person in persons:
            contact = IContact(person, None)

    setSite(old_site)
Beispiel #9
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)
    old_site = getSite()

    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        levels = guessMostRecentLevels(app)
        if levels is not None:
            del app[LEVELS_APP_KEY]
            app[LEVELS_APP_KEY] = levels

    setSite(old_site)
Beispiel #10
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)
    old_site = getSite()

    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        levels = guessMostRecentLevels(app)
        if levels is not None:
            del app[LEVELS_APP_KEY]
            app[LEVELS_APP_KEY] = levels

    setSite(old_site)
Beispiel #11
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)
    old_site = getSite()

    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        timetables = findObjectsProviding(root, ITimetable)
        for tt in timetables:
            event = ObjectModifiedEvent(tt)
            update = UpdateSelectedPeriodsSchedules(event, tt)
            update()
    setSite(old_site)
Beispiel #12
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = getRootFolder(context)

    old_site = getSite()
    app = root
    setSite(app)
    persons = ISchoolToolApplication(None)['persons']
    manager = persons.super_user
    if manager is not None:
        syc = ISchoolYearContainer(app)
        for sy in syc.values():
            makeManager(app, sy, manager)

    setSite(old_site)
Beispiel #13
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        if DEMOGRAPHICS_FIELDS_KEY not in app:
            continue
        fields = app[DEMOGRAPHICS_FIELDS_KEY]
        for field in fields.values():
            if not IEnumFieldDescription.providedBy(field):
                continue
            for n, item in enumerate(field.items):
                if item == u'Native Hawaiian or Other Pasific Islander':
                    field.items[n] = u'Native Hawaiian or Other Pacific Islander'
Beispiel #14
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        if DEMOGRAPHICS_FIELDS_KEY not in app:
            continue
        fields = app[DEMOGRAPHICS_FIELDS_KEY]
        for field in fields.values():
            if not IEnumFieldDescription.providedBy(field):
                continue
            for n, item in enumerate(field.items):
                if item == u'Native Hawaiian or Other Pasific Islander':
                    field.items[
                        n] = u'Native Hawaiian or Other Pacific Islander'
Beispiel #15
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    # Mock the renaming of zope.app.catalog and zope.app.intid to
    # zope.catalog and zope.intid.
    # This is for Critical Links deployments only - this part of Zope's evolution
    # was missed somehow.
    modules = ModulesSnapshot()
    modules.mock_module('zope.app.catalog')
    modules.mock_module('zope.app.catalog.interfaces')
    modules.mock_module('zope.app.catalog.catalog')
    modules.mock_module('zope.app.intid')
    modules.mock_module('zope.app.intid.interfaces')

    modules.mock_attr('zope.app.catalog.catalog', 'Catalog',
                      zope.catalog.catalog.Catalog)
    modules.mock_attr('zope.app.catalog.interfaces', 'ICatalog',
                      zope.catalog.interfaces.ICatalog)

    modules.mock_attr('zope.app.intid', 'IntIds', zope.intid.IntIds)
    modules.mock_attr('zope.app.intid.interfaces', 'IIntIds',
                      zope.intid.interfaces.IIntIds)

    # Proceed with normal evolution now.

    old_site = getSite()
    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        sm = app.getSiteManager()
        default = traverse(app, '++etc++site/default')

        intids = getUtility(zope.intid.interfaces.IIntIds)
        intids._p_changed = True

        for key in CATALOG_KEYS:
            util = queryUtility(ICatalog, name=key, default=None)
            if util is None:
                continue
            name = util.__name__
            sm.unregisterUtility(util, ICatalog, key)
            del default[name]

    setSite(old_site)

    modules.restore()
Beispiel #16
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    # Invalidate connection cache
    # Earlier evolutions (like evolve34) may have cached broken
    # persistent objects and we'll want to reload them.
    cache = context.connection._cache
    cache.invalidate(cache.cache_data.keys())

    old_site = getSite()

    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        evolveTimetables(app)

    setSite(old_site)
Beispiel #17
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = context.connection.root().get(ZopePublication.root_name, None)

    # Mock the renaming of zope.app.catalog and zope.app.intid to
    # zope.catalog and zope.intid.
    # This is for Critical Links deployments only - this part of Zope's evolution
    # was missed somehow.
    modules = ModulesSnapshot()
    modules.mock_module('zope.app.catalog')
    modules.mock_module('zope.app.catalog.interfaces')
    modules.mock_module('zope.app.catalog.catalog')
    modules.mock_module('zope.app.intid')
    modules.mock_module('zope.app.intid.interfaces')

    modules.mock_attr('zope.app.catalog.catalog', 'Catalog', zope.catalog.catalog.Catalog)
    modules.mock_attr('zope.app.catalog.interfaces', 'ICatalog', zope.catalog.interfaces.ICatalog)

    modules.mock_attr('zope.app.intid', 'IntIds', zope.intid.IntIds)
    modules.mock_attr('zope.app.intid.interfaces', 'IIntIds', zope.intid.interfaces.IIntIds)

    # Proceed with normal evolution now.

    old_site = getSite()
    apps = findObjectsProviding(root, ISchoolToolApplication)
    for app in apps:
        setSite(app)
        sm = app.getSiteManager()
        default = traverse(app, '++etc++site/default')

        intids = getUtility(zope.intid.interfaces.IIntIds)
        intids._p_changed = True

        for key in CATALOG_KEYS:
            util = queryUtility(ICatalog, name=key, default=None)
            if util is None:
                continue
            name = util.__name__
            sm.unregisterUtility(util, ICatalog, key)
            del default[name]

    setSite(old_site)

    modules.restore()
Beispiel #18
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)
    root = getRootFolder(context)
    old_site = getSite()

    app = root
    setSite(app)
    syc = ISchoolYearContainer(app)
    if not syc.values():
        setSite(old_site)
        return

    sy = syc.getActiveSchoolYear()
    if sy is None:
        sy = syc.values()[-1]
    for person in app['persons'].values():
        evolvePerson(app, sy, person)

    setSite(old_site)
Beispiel #19
0
def evolve(context):
    linkcatalogs.ensureEvolved(context)