def upgrade(context, logger=None):
    setup = getToolByName(context, 'portal_setup')
    setup.runAllImportStepsFromProfile(PROFILE_ID)
    try:
        auth_step_timeout = api.portal.get_registry_record(
            name='plone.auth_step_timeout', default=None)
    except api.exc.InvalidParameterError:
        auth_step_timeout = None

    if not auth_step_timeout:
        registry = getUtility(IRegistry)
        auth_timeout_field = field.Int(
            title=u"(Seconds) This amount of inactivity \
                                                will reset the login process",
            description=u"Between each step, the allowed \
                                                     time is reset to this amount",
            default=120)
        auth_timeout_record = Record(auth_timeout_field)
        registry._records['plone.auth_step_timeout'] = auth_timeout_record

    try:
        disclaimer = api.portal.get_registry_record(
            name='castle.show_disclaimer', default=None)
    except api.exc.InvalidParameterError:
        disclaimer = None

    if not disclaimer:
        registry = getUtility(IRegistry)
        show_disclaimer_field = field.Bool(
            title=u'Show disclaimer for first time a user visits a site. '
            u'To comply with ePrivacy Directive, use this feature to notify about cookie use.',
            default=False,
            required=False)
        site_disclaimer_field = field.Text(
            title=u"Disclaimer",
            default=u'<p><strong>Disclaimer</strong> '
            u'<em>You are seeing this because this is your first time visiting the site.</em></p>',
            required=False)
        show_disclaimer_record = Record(show_disclaimer_field)
        site_disclaimer_record = Record(site_disclaimer_field)
        registry._records['castle.show_disclaimer'] = show_disclaimer_record
        registry._records['castle.site_disclaimer'] = site_disclaimer_record
    transaction.commit()

    update_password_expiry(api.portal.get())

    for id in context.objectIds():
        context[id].reindexObject(idxs=['has_private_parents'])
Beispiel #2
0
def plumi4to41(context, logger=None):
    # add html5 field to transcode.star registry
    registry = getUtility(IRegistry)
    html5_field = Field.Choice(title = u'Choose video embed method',
                               description=u"Choose if you would like to use just the HTML5 video tag, or Flash (Flowplayer) or if you would like to use HTML5 with Flowplayer as failback for browsers that don't support the HTML5 video tag",
                               values = ['HTML5 video tag', 'HTML5 Flash fallback', 'Flash - Flowplayer'],
                               default = "HTML5 Flash fallback",
                              )
    html5_record = Record(html5_field)
    registry.records['collective.transcode.star.interfaces.ITranscodeSettings.html5'] = html5_record

    #update user favorite folders
    users = context.acl_users.getUsers()
    pm = context.portal_membership
    addable_types = ['Link']
    for user in users:
        mf =  pm.getHomeFolder(user.getId())
        try:
            favs = mf.Favorites
            if base_hasattr(favs, 'setConstrainTypesMode'):
                favs.setConstrainTypesMode(1)
                favs.setImmediatelyAddableTypes(addable_types)
                favs.setLocallyAllowedTypes(addable_types)
        except:
            pass
Beispiel #3
0
    def test_import_dict_nopurge(self):
        xml = """\
<registry>
    <record name="test.registry.field">
        <value purge="false">
            <element key="x">4</element>
            <element key="y">6</element>
        </value>
    </record>
</registry>
"""

        self.registry.records['test.registry.field'] = \
            Record(field.Dict(title=u"Simple record",
                              key_type=field.ASCIILine(title=u"Key"),
                              value_type=field.Int(title=u"Val")),
                   value={'a': 1})

        context = DummyImportContext(self.site, purge=False)
        context._files = {'registry.xml': xml}

        importRegistry(context)

        self.assertEquals(1, len(self.registry.records))
        self.failUnless(
            isinstance(self.registry.records['test.registry.field'].field,
                       field.Dict))
        self.assertEquals(
            u"Simple record",
            self.registry.records['test.registry.field'].field.title)
        self.assertEquals({
            'a': 1,
            'x': 4,
            'y': 6
        }, self.registry['test.registry.field'])
Beispiel #4
0
    def test_import_collection_nopurge(self):
        xml = """\
<registry>
    <record name="test.registry.field">
        <value purge="false">
            <element>4</element>
            <element>6</element>
        </value>
    </record>
</registry>
"""

        self.registry.records['test.registry.field'] = Record(field.Set(
            title=u"Simple record", value_type=field.Int(title=u"Val")),
                                                              value=set([1]))

        context = DummyImportContext(self.site, purge=False)
        context._files = {'registry.xml': xml}

        importRegistry(context)

        self.assertEquals(1, len(self.registry.records))
        self.failUnless(
            isinstance(self.registry.records['test.registry.field'].field,
                       field.Set))
        self.assertEquals(
            u"Simple record",
            self.registry.records['test.registry.field'].field.title)
        self.assertEquals(frozenset([1, 4, 6]),
                          self.registry['test.registry.field'])
Beispiel #5
0
    def run(self):
        logger.info("Migrating to collective.documentgenerator 11 ...")

        registry = getUtility(IRegistry)
        records = registry.records
        key = "collective.documentgenerator.browser.controlpanel.IDocumentGeneratorControlPanelSchema.use_stream"

        current_record = api.portal.get_registry_record(key)
        value = True
        if current_record is False:
            value = u"auto"

        record = Record(
            field.Choice(
                title=
                u"Force communication via in/out stream with LibreOffice.",
                description=
                (u"If enabled, this will force using stream to communicate witth LibreOffice server. "
                 u"This must be true if the LO server is not on localhost or is in a docker container."
                 ),
                vocabulary="collective.documentgenerator.ConfigStream",
            ),
            value=value,
        )
        records[key] = record
        api.portal.set_registry_record(key, value)

        self.finish()
Beispiel #6
0
    def action_addfield(self, action):
        data, errors = self.extractData()
        self.submitted = True
        if not errors:
            field_class = getattr(registry_field, data['field_type'], None)
            if field_class is None:
                notify(
                    ActionErrorOccurred(
                        action,
                        WidgetActionExecutionError('field_type',
                                                   Invalid('Invalid Field'))))
                return
            if data['name'] in self.context:
                notify(
                    ActionErrorOccurred(
                        action,
                        WidgetActionExecutionError(
                            'name', Invalid('Field name already in use'))))
                return

            new_field = field_class(title=data['title'],
                                    required=data['required'])
            new_record = Record(new_field)
            self.context.records[data['name']] = new_record
            messages = IStatusMessage(self.request)
            messages.add(u"Successfully added field %s" % data['name'],
                         type=u"info")
            return self.request.response.redirect('{url}/edit/{field}'.format(
                url=self.context.absolute_url(), field=data['name']))
Beispiel #7
0
 def __setitem__(self, name, value):
     records = self.records
     if name in records._values:
         records[name].value = value
         return
     record = Record(records[name].field, value)
     records[name] = record
Beispiel #8
0
    def test_multiple_operations_multiple_found(self):
        self.registry.records["%s.operations" % Chain.prefix] = Record(
            field.List(), ['op1', 'op2'])

        view = DummyView()
        request = DummyRequest(view, DummyResponse())

        class DummyOperation1(object):
            implements(ICachingOperation)
            adapts(Interface, Interface)

            def __init__(self, published, request):
                self.published = published
                self.request = request

            def interceptResponse(self, rulename, response):
                return u"foo"

            def modifyResponse(self, rulename, response):
                response['X-Mutated-1'] = rulename

        provideAdapter(DummyOperation1, name="op1")

        class DummyOperation2(object):
            implements(ICachingOperation)
            adapts(Interface, Interface)

            def __init__(self, published, request):
                self.published = published
                self.request = request

            def interceptResponse(self, rulename, response):
                return u"bar"

            def modifyResponse(self, rulename, response):
                response['X-Mutated-2'] = rulename

        provideAdapter(DummyOperation2, name="op2")

        chain = Chain(view, request)
        ret = chain.interceptResponse('testrule', request.response)

        self.assertEquals(u"foo", ret)
        self.assertEquals({'PUBLISHED': view}, dict(request))
        self.assertEquals({'X-Cache-Chain-Operations': 'op1'},
                          dict(request.response))

        request = DummyRequest(view, DummyResponse())
        chain = Chain(view, request)
        chain.modifyResponse('testrule', request.response)

        self.assertEquals({'PUBLISHED': view}, dict(request))
        self.assertEquals(
            {
                'X-Mutated-1': 'testrule',
                'X-Mutated-2': 'testrule',
                'X-Cache-Chain-Operations': 'op1; op2'
            }, dict(request.response))
def set_password(self, value):
    """Setter."""
    registry = getUtility(IRegistry)
    if PASSWORD_REGISTRY_KEY not in registry:
        password_field = field.TextLine(title=u"Password for passwordwall")
        password_record = Record(password_field, value=value)
        registry.records[PASSWORD_REGISTRY_KEY] = password_record
    else:
        registry[PASSWORD_REGISTRY_KEY] = value
 def set_buttons_babel_view_up_to_nr_translations(self, value):
     # Backwards-compatibility for installations of PAM before this
     # field was added.
     # If no entry is present in the registry, initialize it with a
     # dummy value
     name = "%s.buttons_babel_view_up_to_nr_translations" % \
         IMultiLanguageExtraOptionsSchema.__identifier__
     if name not in self.registry.records:
         int_field = registry_field.Int()
         self.registry.records[name] = Record(int_field)
     self.settings.buttons_babel_view_up_to_nr_translations = value
Beispiel #11
0
 def test_use_default_layout_in_registry(self):
     transform = theming.getTransform(self.portal, self.request)
     layout_name = transform.get_layout_name(self.portal)
     self.assertEqual(layout_name, 'index.html')
     registry = getUtility(IRegistry)
     field = registry_field.TextLine(title=u'Default layout',
                                     required=False)
     new_record = Record(field)
     registry.records['castle.cms.default_layout'] = new_record
     registry['castle.cms.default_layout'] = u'foobar.html'
     layout_name = transform.get_layout_name(self.portal)
     self.assertEqual(layout_name, 'foobar.html')
Beispiel #12
0
    def test_chained_operations_not_found(self):

        self.registry.records["%s.operations" % Chain.prefix] = Record(
            field.List(), ['op1'])

        view = DummyView()
        request = DummyRequest(view, DummyResponse())

        chain = Chain(view, request)
        chain.modifyResponse('testrule', request.response)

        self.assertEquals({'PUBLISHED': view}, dict(request))
        self.assertEquals({}, dict(request.response))
Beispiel #13
0
def initialize_default_layout_registry_values(portal):
    registry = getUtility(IRegistry)
    records = (
        ('plone.defaultSiteLayout', u'Default site layout',
         u'The default site layout for the site', None),
        ('plone.defaultAjaxLayout', u'Default ajax layout',
         u'The default ajax layout for the site', None),
    )
    for key, title, description, value in records:
        if key not in registry.records:
            registry.records[key] = Record(
                field.BytesLine(title=title,
                                description=description,
                                required=False), value)
 def setFunctionForOperation(self, operation, function):
     function_field = field.ASCIILine(title=u"Operator")
     function_record = Record(function_field)
     function_record.value = function
     self.registry.records[operation] = function_record