예제 #1
0
class Translate(grok.View):

    grok.context(asm.cms.IEdition)
    form_fields = grok.AutoFields(ITranslation)

    def update(self, language):
        page = self.context.page
        parameters = asm.cms.edition.get_initial_parameters()
        p = parameters.replace(lang2tag('*'), lang2tag(language))
        try:
            translation = page.getEdition(p)
        except KeyError:
            translation = page.addEdition(p)
            translation.copyFrom(self.context)
            self.flash(u'Translation created.')
        else:
            self.flash(u'Translation already exists.')
        self.translation = translation

    def render(self):
        self.redirect(self.url(self.translation, '@@edit'))
예제 #2
0
파일: views.py 프로젝트: bendavis78/zope
class Join(grok.AddForm, Master):
    """
    User registration form.
    """

    form_fields = grok.AutoFields(IInternalPrincipal)
    # use our customized widgets
    form_fields['title'].custom_widget = FullNameWidget
    form_fields['passwordManagerName'].custom_widget = PasswordManagerChoices

    label = _(u'User registration')
    template = grok.PageTemplateFile('form.pt')

    @grok.action('Save')
    def save(self, **data):
        '''
        Create an InternalPrincipal with the user data.
        
        This method also grants the ViewMemberListing permission to the user.
        '''
        login = data['login']
        pau = getUtility(IAuthentication)
        principals = pau['principals']
        # create an instance of InternalPrincipal
        principal = InternalPrincipal(**data)
        try:
            principals[login] = principal
        except DuplicateIDError:
            # create a validation exception and assign it to the login field
            msg = _(u'Login name taken. Please choose a different one.')
            self.widgets['login']._error = ValidationError(msg)
            self.form_reset = False  # preserve the values in the fields
        else:
            # grant the user permission to view the member listing
            permission_mngr = IPrincipalPermissionManager(grok.getSite())
            permission_mngr.grantPermissionToPrincipal(
                'plainlogindemo.ViewMemberListing', principals.prefix + login)
            self.redirect(
                self.url('login') + '?' + urlencode({'login': login}))
예제 #3
0
파일: app.py 프로젝트: bendavis78/zope
class Join(grok.AddForm, Master):
    """
    User registration form.
    """
    form_fields = grok.AutoFields(IInternalPrincipal)
    form_fields['passwordManagerName'].custom_widget = MySelectWidget
    form_fields['title'].custom_widget = NameTextWidget
    form_fields['description'].field = EmailField(__name__='description',
                                                  title=u'E-Mail address')
    label = _(u'User registration')
    template = grok.PageTemplateFile('form.pt')

    @grok.action('Save')
    def save(self, **data):
        '''
        Create an InternalPrincipal with the user data.
        
        This method also grants the ViewMemberListing permission to the user.
        '''
        login = data['login']
        pau = getUtility(IAuthentication)
        principals = pau['principals']
        # XXX: the login name must be unique; need better handling of this
        if login in principals:
            msg = _(u'Login name taken. Please choose a different one.')
            self.widgets['login']._error = ValidationError(msg)
            self.form_reset = False
        else:
            # create an instance of InternalPrincipal
            principal = InternalPrincipal(passwordManagerName='SHA1', **data)
            principals[login] = principal
            # grant the user permission to view the member listing
            permission_mngr = IPrincipalPermissionManager(grok.getSite())
            permission_mngr.grantPermissionToPrincipal(
                'plainlogindemo.ViewMemberListing', principals.prefix + login)

            self.redirect(
                self.url('login') + '?' + urlencode({'login': login}))
예제 #4
0
class AddOrganization(grok.AddForm):
    grok.context(Organizations)
    grok.name('addorg')
    grok.require(u'gum.Add')
    template = grok.PageTemplateFile('gum_edit_form.pt')

    form_fields = grok.AutoFields(Organization)
    form_fields = form_fields.select(
        'title',
        'id',
        'description',
        'employeeTypes',
        'orgunitTypes',
    )

    label = "Add Organization"

    @grok.action('Add Organization')
    def add(self, **data):
        orgid = data['id']
        org = Organization(**data)
        self.context[orgid] = org
        self.redirect(self.url(self.context[orgid]))
예제 #5
0
파일: entry.py 프로젝트: bendavis78/zope
class Add(GrokstarAddForm):
    grok.context(Blog)
    title = u'Add Entry'
    # add the url that the user wants
    form_fields = grok.Fields(
        id=schema.TextLine(title=u"Post slug"))
    # don't show them these timestamps
    form_fields += grok.AutoFields(RestructuredTextEntry).omit(
        'published', 'updated')

    @grok.action('Add entry')
    def add(self, id, **data):
        new_entry = RestructuredTextEntry(**data)
        self.context['entries'][id] = new_entry
        IWorkflowInfo(new_entry).fireTransition('create')
        self.redirect(self.url(self.context))

    @grok.action('Add published entry')
    def add_published(self, id, **data):
        new_entry = RestructuredTextEntry(**data)
        self.context['entries'][id] = new_entry
        IWorkflowInfo(new_entry).fireTransition('create')
        IWorkflowInfo(new_entry).fireTransitionToward(interfaces.PUBLISHED)        
        self.redirect(self.url(self.context))
예제 #6
0
class SelectSearchSites(asm.cmsui.form.EditForm):

    form_fields = grok.AutoFields(asm.cms.interfaces.ISearchSites)
    grok.context(asm.cms.cms.CMS)
예제 #7
0
class Edit(asm.cmsui.form.EditForm):

    form_fields = grok.AutoFields(asm.cms.interfaces.IEdition).select(
        'title', 'tags')
예제 #8
0
class Edit2(grok.EditForm):
    grok.context(Mammoth2)

    form_fields = grok.AutoFields(Mammoth).omit('name')
예제 #9
0
class Edit(grok.EditForm):
    grok.context(Mammoth)

    form_fields = grok.AutoFields(Mammoth).omit('size')
예제 #10
0
class Edit(asm.cmsui.form.EditForm):

    grok.layer(asm.cmsui.interfaces.ICMSSkin)

    form_fields = grok.AutoFields(asm.contact.interfaces.IContactForm)
예제 #11
0
class Edit(grok.EditForm):
    form_fields = grok.AutoFields(IMammoth)
예제 #12
0
class Edit(asm.cmsui.form.EditionEditForm):

    grok.layer(asm.cmsui.interfaces.ICMSSkin)
    grok.require('asm.cms.EditContent')

    main_fields = grok.AutoFields(LayoutPage).select('title', 'layout')
예제 #13
0
 def form_fields(self):
     return grok.AutoFields(self.factory)
예제 #14
0
class Edit(grok.EditForm):
    grok.context(Person)
    form_fields = grok.AutoFields(Person)
예제 #15
0
class Feedback(asm.cmsui.form.Form):
    grok.require('zope.Public')
    grok.layer(ISkin)
    grok.context(asm.cms.homepage.Homepage)

    title = u"Feedback"

    form_fields = grok.AutoFields(IFeedbackForm)

    form_fields['page'].custom_widget = get_specific_width_text_widget(70)
    form_fields['name'].custom_widget = get_specific_width_text_widget(40)
    form_fields['email'].custom_widget = get_specific_width_text_widget(40)

    # This field is not visible for normal browser users.
    form_fields += grok.Fields(honeypot=zope.schema.TextLine(
        title=u'Honeypot',
        description=u"You should not see this field. Do not fill it.",
        required=False))
    form_fields['honeypot'].custom_widget = HoneyPotWidget

    template = grok.PageTemplateFile(os.path.join("templates", "form.pt"))
    prefix = ''

    mail_template = u'''Assembly Archive feedback.

From: %(name)s <%(email)s>
Page: %(page)s <%(root)s/%(page)s>

---- feedback starts ----
%(message)s
---- feedback ends ----

'''

    smtp_host = "mail.assembly.org"
    target_address = "web-dev<>assembly.org".replace("<>", "@")

    @grok.action(u'Send feedback')
    def send(self, message, page=None, name=None, email=None, honeypot=None):
        # Detect if a spambot has just filled all form fields.
        if honeypot is not None:
            self.redirect(self.url('feedback-accepted-honeypot'))
            return

        page = page or u""
        name = name or u"UNKNOWN"
        email = email or u"EMPTY-EMAIL"
        message_body = self.mail_template % dict(
            message=message,
            page=page,
            name=name,
            email=email,
            root=self.application_url(),
        )

        message = email_message.Message()
        message.set_payload(message_body.encode('utf-8'))

        subject_header = email_header.Header(
            (u'Assembly Archive feedback about "%s"' % page).encode('utf-8'),
            'utf-8')
        message['Subject'] = subject_header

        message['To'] = self.target_address

        from_header = email_header.Header(
            (u'%s <%s>' % (name, email)).encode('utf-8'), 'utf-8')
        message['From'] = from_header

        email_encoders.encode_quopri(message)
        message.set_charset('utf-8')
        message_str = message.as_string()
        smtp = smtplib.SMTP(self.smtp_host)
        smtp.sendmail(self.target_address, [self.target_address], message_str)
        self.flash(u'Your feedback was accepted.')
        self.redirect(self.url('feedback-accepted'))
예제 #16
0
파일: cms.py 프로젝트: ctheune/asm.cmsui
class SelectProfile(asm.cmsui.form.EditForm):

    form_fields = grok.AutoFields(asm.cms.interfaces.IProfileSelection)
예제 #17
0
class Edit(asm.cmsui.form.EditionEditForm):

    grok.context(IMediaGallery)

    main_fields = grok.AutoFields(asm.cms.interfaces.IEdition).select('title')
예제 #18
0
class Edit(asm.cmsui.form.EditionEditForm):

    grok.context(asm.mediagallery.interfaces.IExternalAsset)

    main_fields = grok.AutoFields(ExternalAsset).select('title', 'locations')