class IVelruseGeneralSettings(Interface):

    site_login_enabled = schema.Bool(
        title=_(u'Site login enabled'),
        description=_(
            'help_site_login_enabled',
            default="If checked, the default Plone login form will be preserved"
        ),
        required=False,
        default=True,
    )

    activated_plugins = schema.Tuple(
        title=_(u'Authentication services enabled'),
        description=_(
            'help_activated_plugins',
            default=
            "Provide a list of authentication services properly configured on the Velruse backend"
        ),
        required=False,
        value_type=PersistentObject(IVelruseBackendConfig,
                                    title=_(u"Velruse backend")),
        default=(),
        missing_value=(),
    )

    connection_timeout = schema.Int(
        title=_(u'Connection timeout'),
        description=_(
            'help_connection_timeout',
            default="Max number of seconds to wait for Velruse backend response"
        ),
        required=True,
        default=10,
    )
Example #2
0
 def handleSave(self, action):
     data, errors = self.extractData()
     if errors:
         self.status = self.formErrorsMessage
         return
     self.applyChanges(data)
     IStatusMessage(self.request).addStatusMessage(_(u"Changes saved"),
                                                   "info")
     self.context.REQUEST.RESPONSE.redirect("@@velruse-settings")
class IVelruseBackendConfig(Interface):

    service_name = schema.TextLine(
        title=_(u"Name"),
        description=_(
            "velruse_backend_name_help",
            default=u"The name of the social network/authentication service"),
        missing_value=u"",
        required=False)
    service_url = schema.ASCIILine(
        title=_(u"URL or path"),
        description=_(
            "velruse_backend_url_help",
            default=u"An URL (can also be a relative path) to Velruse.\n"
            u"This URL must be properly configured in Velruse to call the remote "
            u"service"),
        missing_value="",
        required=False)
    service_icon = schema.ASCIILine(
        title=_(u"Icon"),
        description=_(
            "velruse_backend_icon_help",
            default=
            u"An URL (can also be a relative path) to an icon to be displayed in "
            u"the login form. Best format is 64x64px."),
        missing_value="",
        required=False)
Example #4
0
class VelruseSettingsForm(controlpanel.RegistryEditForm):

    #fields = field.Fields(IVelruseGeneralSettings)

    schema = IVelruseGeneralSettings
    id = "VelruseSettingsEditForm"
    label = _(u"Velruse integration settings")
    description = _(u"help_velruse_settings_form",
                    default=u"Configure how Plone talk with Velruse backend")

    def updateWidgets(self):
        super(VelruseSettingsForm, self).updateWidgets()
        self.widgets['connection_timeout'].size = 4
        for widget in self.widgets['activated_plugins'].widgets:
            widget.style = u'width: 100%';
            widget.klass = u' velruseData';

    def updateFields(self):
        super(VelruseSettingsForm, self).updateFields()
        self.fields['site_login_enabled'].widgetFactory = SingleCheckBoxFieldWidget

    @button.buttonAndHandler(_('Save'), name='save')
    def handleSave(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        self.applyChanges(data)
        IStatusMessage(self.request).addStatusMessage(_(u"Changes saved"),
                                                      "info")
        self.context.REQUEST.RESPONSE.redirect("@@velruse-settings")

    @button.buttonAndHandler(_('Cancel'), name='cancel')
    def handleCancel(self, action):
        IStatusMessage(self.request).addStatusMessage(_(u"Edit cancelled"),
                                                      "info")
        self.request.response.redirect("%s/%s" % (self.context.absolute_url(),
                                                  self.control_panel_view))
Example #5
0
 def __call__(self):
     form = self.request.form
     if form.get('form.button.Save', ''):
         errors = self.saveSettings()
         if errors:
             return self.index(errors=errors)
         else:
             return self.doReturn(_("Settings saved"), 'info')
     elif form.get('apply'):
         self.apply_changes(form.get('user', []))
     elif form.get('remove'):
         self.clean_blacklist(form.get('remove_from_blacklist', []))
     elif form.get('form.submitted'):
         self._search()
     return self.index()
 def __call__(self):
     form = self.request.form
     if form.get('form.button.Save', ''):
         errors = self.saveSettings()
         if errors:
             return self.index(errors=errors)
         else:
             return self.doReturn(_("Settings saved"), 'info')
     elif form.get('apply'):
         self.apply_changes(form.get('user', []))
     elif form.get('remove'):
         self.clean_blacklist(form.get('remove_from_blacklist', []))
     elif form.get('form.submitted'):
         self._search()
     return self.index()
 def apply_changes(self, users):
     delete_count = 0
     storage = self.context._storage
     blstorage = self.context._blacklist
     for user in users:
         if user.get('delete'):
             try:
                 del storage[user.get('id')]
                 delete_count += 1
             except KeyError:
                 pass
         if user.get('blacklist'):
             blstorage[user.get('id')] = DateTime()
         else:
             try:
                 del blstorage[user.get('id')]
             except KeyError:
                 pass
     if delete_count>0:
         ptool = getToolByName(self.context, 'plone_utils')
         ptool.addPortalMessage(_('users_delete_message',
                                  default="$count users deleted",
                                  mapping={'count': delete_count}))
Example #8
0
 def apply_changes(self, users):
     delete_count = 0
     storage = self.context._storage
     blstorage = self.context._blacklist
     for user in users:
         if user.get('delete'):
             try:
                 del storage[user.get('id')]
                 delete_count += 1
             except KeyError:
                 pass
         if user.get('blacklist'):
             blstorage[user.get('id')] = DateTime()
         else:
             try:
                 del blstorage[user.get('id')]
             except KeyError:
                 pass
     if delete_count > 0:
         ptool = getToolByName(self.context, 'plone_utils')
         ptool.addPortalMessage(
             _('users_delete_message',
               default="$count users deleted",
               mapping={'count': delete_count}))
Example #9
0
 def handleCancel(self, action):
     IStatusMessage(self.request).addStatusMessage(_(u"Edit cancelled"),
                                                   "info")
     self.request.response.redirect("%s/%s" % (self.context.absolute_url(),
                                               self.control_panel_view))