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'))
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}))
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}))
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]))
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))
class SelectSearchSites(asm.cmsui.form.EditForm): form_fields = grok.AutoFields(asm.cms.interfaces.ISearchSites) grok.context(asm.cms.cms.CMS)
class Edit(asm.cmsui.form.EditForm): form_fields = grok.AutoFields(asm.cms.interfaces.IEdition).select( 'title', 'tags')
class Edit2(grok.EditForm): grok.context(Mammoth2) form_fields = grok.AutoFields(Mammoth).omit('name')
class Edit(grok.EditForm): grok.context(Mammoth) form_fields = grok.AutoFields(Mammoth).omit('size')
class Edit(asm.cmsui.form.EditForm): grok.layer(asm.cmsui.interfaces.ICMSSkin) form_fields = grok.AutoFields(asm.contact.interfaces.IContactForm)
class Edit(grok.EditForm): form_fields = grok.AutoFields(IMammoth)
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')
def form_fields(self): return grok.AutoFields(self.factory)
class Edit(grok.EditForm): grok.context(Person) form_fields = grok.AutoFields(Person)
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'))
class SelectProfile(asm.cmsui.form.EditForm): form_fields = grok.AutoFields(asm.cms.interfaces.IProfileSelection)
class Edit(asm.cmsui.form.EditionEditForm): grok.context(IMediaGallery) main_fields = grok.AutoFields(asm.cms.interfaces.IEdition).select('title')
class Edit(asm.cmsui.form.EditionEditForm): grok.context(asm.mediagallery.interfaces.IExternalAsset) main_fields = grok.AutoFields(ExternalAsset).select('title', 'locations')