コード例 #1
0
class TinyMCEControlPanelForm(ControlPanelForm):
    """TinyMCE Control Panel Form"""
    implements(ITinyMCEControlPanelForm)

    tinymcelayout = FormFieldsets(ITinyMCELayout)
    tinymcelayout.id = 'tinymcelayout'
    tinymcelayout.label = _(u'Layout')

    tinymcetoolbar = FormFieldsets(ITinyMCEToolbar)
    tinymcetoolbar.id = 'tinymcetoolbar'
    tinymcetoolbar.label = _(u'Toolbar')

    tinymcelibraries = FormFieldsets(ITinyMCELibraries)
    tinymcelibraries.id = 'tinymcelibraries'
    tinymcelibraries.label = _(u'Libraries')

    tinymceresourcetypes = FormFieldsets(ITinyMCEResourceTypes)
    tinymceresourcetypes.id = 'tinymceresourcetypes'
    tinymceresourcetypes.label = _(u'Resource Types')

    tinymcecontentbrowser = FormFieldsets(ITinyMCEContentBrowser)
    tinymcecontentbrowser.id = 'tinymcecontentbrowser'
    tinymcecontentbrowser.label = _(u'Content Browser')

    form_fields = FormFieldsets(
                        tinymcelayout,
                        tinymcetoolbar,
                        tinymceresourcetypes,
                        tinymcelibraries,
                        tinymcecontentbrowser,
                        )

    label = _(u"TinyMCE Settings")
    description = _(u"Settings for the TinyMCE Wysiwyg editor.")
    form_name = _("TinyMCE Settings")

    @form.action(__(u'label_save', default=u'Save'), name=u'save')
    def handle_edit_action(self, action, data):
        CheckAuthenticator(self.request)
        if form.applyChanges(self.context, self.form_fields, data,
                             self.adapters):
            self.status = __("Changes saved.")
            notify(ConfigurationChangedEvent(self, data))
            self._on_save(data)
        else:
            self.status = __("No changes made.")

    @form.action(__(u'label_cancel', default=u'Cancel'),
                validator=null_validator,
                name=u'cancel')
    def handle_cancel_action(self, action, data):
        IStatusMessage(self.request).addStatusMessage(__("Changes canceled."),
                                                        type="info")
        portal = getToolByName(self.context, name='portal_url')\
            .getPortalObject()
        url = getMultiAdapter((portal, self.request),
                                name='absolute_url')()
        self.request.response.redirect(url + '/plone_control_panel')
        return ''
コード例 #2
0
 def handle_edit_action(self, action, data):
     CheckAuthenticator(self.request)
     if form.applyChanges(self.context, self.form_fields, data,
                          self.adapters):
         self.status = __("Changes saved.")
         notify(ConfigurationChangedEvent(self, data))
         self._on_save(data)
     else:
         self.status = __("No changes made.")
コード例 #3
0
 def booking_review_states(self):
     """ Heavily inspired by workflowtool listWFStatesByTitle
     """
     pw = self.plone_tools.workflow()
     states = []
     dup_list = {}
     for booking_type in self.booking_types:
         wfids = pw._chains_by_type.get(booking_type)
         for wfid in wfids:
             wf = pw.getWorkflowById(wfid)
             state_folder = getattr(wf, "states", None)
             if state_folder is not None:
                 for state in state_folder.values():
                     key = "%s:%s" % (state.id, state.title)
                     if key not in dup_list:
                         states.append(state)
                     dup_list[key] = 1
     terms = []
     for state in states:
         key = state.getId()
         title = translate(__(safe_unicode(state.title)),
                           context=self.request)
         terms.append(SimpleTerm(key, title=title))
     terms.sort(key=lambda x: x.title)
     return SimpleVocabulary(terms)
コード例 #4
0
 def booking_review_states(self):
     """ Heavily inspired by workflowtool listWFStatesByTitle
     """
     pw = self.plone_tools.workflow()
     states = []
     dup_list = {}
     for booking_type in self.booking_types:
         wfids = pw._chains_by_type.get(booking_type)
         for wfid in wfids:
             wf = pw.getWorkflowById(wfid)
             state_folder = getattr(wf, 'states', None)
             if state_folder is not None:
                 for state in state_folder.values():
                     key = '%s:%s' % (state.id, state.title)
                     if not key in dup_list:
                         states.append(state)
                     dup_list[key] = 1
     terms = []
     for state in states:
         key = state.getId()
         title = translate(__(safe_unicode(state.title)),
                           context=self.request)
         terms.append(SimpleTerm(key, title=title))
     terms.sort(key=lambda x: x.title)
     return SimpleVocabulary(terms)
コード例 #5
0
class ISearchForm(Interface):
    """
    Interface for creating a prenotazione
    """

    text = TextLine(title=_("label_text", u"Text to search"),
                    default=u"",
                    required=False)
    review_state = Choice(
        title=__("State"),
        default="",
        required=False,
        source="redturtle.prenotazioni.booking_review_states",
    )
    gate = Choice(
        title=_("label_gate", u"Gate"),
        default="",
        required=False,
        source="redturtle.prenotazioni.gates",
    )
    start = Date(
        title=_("label_start", u"Start date "),
        description=_(" format (YYYY-MM-DD)"),
        default=None,
        required=False,
    )
    end = Date(
        title=_("label_end", u"End date"),
        description=_(" format (YYYY-MM-DD)"),
        default=None,
        required=False,
    )
コード例 #6
0
class ISearchForm(Interface):
    """
    Interface for creating a prenotazione
    """
    text = TextLine(
        title=_('label_text', u'Text to search'),
        default=u'',
        required=False,
    )
    review_state = Choice(
        title=__("State"),
        default='',
        required=False,
        source='rg.prenotazioni.booking_review_states'
    )
    gate = Choice(
        title=_("label_gate", u"Gate"),
        default='',
        required=False,
        source='rg.prenotazioni.gates'
    )
    start = Datetime(
        title=_('label_start', u'Start date '),
        description=_(" format (YYYY-MM-DD)"),
        default=None,
        constraint=check_date,
        required=False,
    )
    end = Datetime(
        title=_('label_end', u'End date'),
        description=_(" format (YYYY-MM-DD)"),
        default=None,
        constraint=check_date,
        required=False,
    )
コード例 #7
0
    def set_search_string(self, data):
        result = []
        MARKUP = "<strong>{}:</strong> {}"
        if "text" in data and data.get("text", None):
            result.append(
                MARKUP.format(
                    self.context.translate(_("label_text", u"Text to search")),
                    data["text"],
                ))
        if "review_state" in data and data.get("review_state", None):
            result.append(
                MARKUP.format(
                    self.context.translate(__("State"), ),
                    self.context.translate(__(data["review_state"])),
                ))

        if "gate" in data and data.get("gate", None):
            result.append(
                MARKUP.format(
                    self.context.translate(_("label_gate", u"Gate"), ),
                    data["gate"],
                ))

        if "start" in data and data.get("start", None):
            if isinstance(data.get("start"), str):
                data["start"] = datetime.strptime(data.get("start"),
                                                  "%Y-%m-%d")
            result.append(
                MARKUP.format(
                    self.context.translate(_("label_start", u"Start date ")),
                    data["start"].strftime("%d/%m/%Y"),
                ))

        if "end" in data and data.get("end", None):
            if isinstance(data.get("end"), str):
                data["end"] = datetime.strptime(data.get("end"), "%Y-%m-%d")
            result.append(
                MARKUP.format(
                    self.context.translate(_("label_end", u"End date")),
                    data["end"].strftime("%d/%m/%Y"),
                ))
        search_string = ""
        if result:
            search_string = "; ".join(result)
            search_string = "<p>{}</p>".format(search_string)
        return search_string
コード例 #8
0
 def handle_cancel_action(self, action, data):
     IStatusMessage(self.request).addStatusMessage(__("Changes canceled."),
                                                     type="info")
     portal = getToolByName(self.context, name='portal_url')\
         .getPortalObject()
     url = getMultiAdapter((portal, self.request),
                             name='absolute_url')()
     self.request.response.redirect(url + '/plone_control_panel')
     return ''
コード例 #9
0
ファイル: controlpanel.py プロジェクト: chrigl/docker-library
    def __call__(self):

        if 'form.button.TestAccessToken' in self.request.form:
            self._handleTestAccessToken()
        elif 'form.button.AcquireToken' in self.request.form:
            ret = self._handleAuthenticate()
            if ret:
                return
        elif 'form.button.ClearAccessToken' in self.request.form:
            self._handleClearAccessToken()
        elif 'form.button.Cancel' in self.request.form:
            IStatusMessage(self.request).add(__(u'Edit cancelled.'), type='info')

        return super(ControlPanel, self).__call__()
コード例 #10
0
    def handleSubmit(self, action):
        """
        Here we should check couple of things:

        - If the token provided is valid.
        - If the signature contains the user data needed (username and hash made of his data are valid).

        If all is well and valid, we sudo login the user given.
        """
        if not action.title == _(u'Verify'):
            return

        logger.debug('verify')

        data, errors = self.extractData()
        if errors:
            return False

        token = data.get('token', '')

        if not token:
            IStatusMessage(self.request).addStatusMessage(
                _("No token provided!"), 'error'
                )
            return

        user = None
        username = self.request.get('auth_user', '')

        if username:
            user = api.user.get(username=username)

            # Validating the signed request data. If invalid (likely throttled with or expired), generate an
            # appropriate error message.
            user_data_validation_result = validate_user_data(request=self.request, user=user)
            if not user_data_validation_result.result:
                if 'Signature timestamp expired!' in user_data_validation_result.reason:
                    # Remove used authentication code
                    user.setMemberProperties(
                        mapping = {
                            'mobile_number_authentication_code': '',
                            }
                        )
                IStatusMessage(self.request).addStatusMessage(
                    _("Invalid data. Details: {0}").format(' '.join(user_data_validation_result.reason)), 'error'
                    )
                return

        valid_token = validate_mobile_number_authentication_code(token, user=user)

        if valid_token:
            # We should login the user here
            self.context.acl_users.session._setupSession(str(username), self.context.REQUEST.RESPONSE)

            mapping = {'mobile_number_authentication_code': '',}
            mapping.update(get_updated_ips_for_member_properties_update(user))

            # Remove used authentication code and update the IPs list
            user.setMemberProperties(mapping=mapping)

            # TODO: Is there a nicer way of resolving the "@@sms_authenticator_token_form" URL?
            IStatusMessage(self.request).addStatusMessage(__("Welcome! You are now logged in."), 'info')
            request_data = extract_request_data(self.request)
            redirect_url = request_data.get('next_url', self.context.absolute_url())
            self.request.response.redirect(redirect_url)
        else:
            IStatusMessage(self.request).addStatusMessage(_("Invalid token or token expired."), 'error')
コード例 #11
0
    def handleSubmit(self, action):
        """
        Here we should check couple of things:

        - If the token provided is valid.
        - If the signature contains the user data needed (username and hash made of his data are valid).

        If all is well and valid, we sudo login the user given.
        """
        if not action.title == _(u'Verify'):
            return

        logger.debug('verify')

        data, errors = self.extractData()
        if errors:
            return False

        token = data.get('token', '')

        if not token:
            IStatusMessage(self.request).addStatusMessage(
                _("No token provided!"), 'error')
            return

        user = None
        username = self.request.get('auth_user', '')

        if username:
            user = api.user.get(username=username)

            # Validating the signed request data. If invalid (likely throttled with or expired), generate an
            # appropriate error message.
            user_data_validation_result = validate_user_data(
                request=self.request, user=user)
            if not user_data_validation_result.result:
                if 'Signature timestamp expired!' in user_data_validation_result.reason:
                    # Remove used authentication code
                    user.setMemberProperties(
                        mapping={
                            'mobile_number_authentication_code': '',
                        })
                IStatusMessage(self.request).addStatusMessage(
                    _("Invalid data. Details: {0}").format(' '.join(
                        user_data_validation_result.reason)), 'error')
                return

        valid_token = validate_mobile_number_authentication_code(token,
                                                                 user=user)

        if valid_token:
            # We should login the user here
            self.context.acl_users.session._setupSession(
                str(username), self.context.REQUEST.RESPONSE)

            mapping = {
                'mobile_number_authentication_code': '',
            }
            mapping.update(get_updated_ips_for_member_properties_update(user))

            # Remove used authentication code and update the IPs list
            user.setMemberProperties(mapping=mapping)

            # TODO: Is there a nicer way of resolving the "@@sms_authenticator_token_form" URL?
            IStatusMessage(self.request).addStatusMessage(
                __("Welcome! You are now logged in."), 'info')
            request_data = extract_request_data(self.request)
            redirect_url = request_data.get('next_url',
                                            self.context.absolute_url())
            self.request.response.redirect(redirect_url)
        else:
            IStatusMessage(self.request).addStatusMessage(
                _("Invalid token or token expired."), 'error')