Example #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 ''
Example #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.")
Example #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)
 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)
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,
    )
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,
    )
    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
Example #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 ''
Example #9
0
    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__()
    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')
    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')