def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data data['title'] = safe_unicode(pfg.Title()) data['description'] = safe_unicode(pfg.Description()) data['intro'] = safe_unicode(pfg.getRawFormPrologue())
def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data data['save_lead'] = False sfa = getattr(pfg, SF_LEAD_ID, None) if sfa is not None: data['save_lead'] = True data['lead_source'] = 'Web' if sfa.getSFObjectType() in [u'Contact', u'Lead']: data['sfobj_type'] = sfa.getSFObjectType() preset_map = sfa.getPresetValueMap() for entry in preset_map: if entry['sf_field'] == 'LeadSource': data['lead_source'] = entry['value'] campaign_id_field = getattr(pfg, CAMPAIGN_ID_FIELD_ID, None) data['campaign_id'] = '' if campaign_id_field is not None: data['campaign_id'] = safe_unicode(campaign_id_field.getFgDefault()) data['campaign_status'] = '' a = getattr(pfg, SF_CAMPAIGNMEMBER_ID, None) if a is not None: preset_map = a.getPresetValueMap() for entry in preset_map: if entry['sf_field'] == 'Status': data['campaign_status'] = entry['value']
def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data data['template'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('template', '') mailer = getattr(pfg, RECIPIENT_MAILER_ID, None) if mailer is not None: data['subject'] = safe_unicode(mailer.getMsg_subject())
def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data data['recipients'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('recipients', {}) mailer = getattr(pfg, RECIPIENT_MAILER_ID, None) data['send_email'] = False if mailer is not None: data['send_email'] = (mailer.getRawExecCondition() != 'python:False')
def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data fields = data.setdefault('fields', {}) i = 0 for f in pfg.objectValues(): if IPloneFormGenField.providedBy(f): if f.getServerSide(): continue fieldinfo = { 'field_type': None, 'title': safe_unicode(f.Title()), 'description': safe_unicode(f.Description()), 'required': f.getRequired(), 'order': i, } if hasattr(f, 'getFgDefault'): fieldinfo['default'] = safe_unicode(f.getFgDefault()) if f.portal_type == 'FormStringField': fieldinfo['field_type'] = 'string' fieldinfo['validator'] = f.getFgStringValidator() if not fieldinfo['validator']: fieldinfo['validator'] = 'vocabulary_none_text' try: fieldinfo['size'] = int(f.getFgsize()) except TypeError: fieldinfo['size'] = 30 if f.portal_type == 'FormTextField': fieldinfo['field_type'] = 'text' if f.portal_type == 'FormBooleanField': fieldinfo['field_type'] = 'boolean' # make sure we match one of the vocab terms if fieldinfo['default'] is not True: fieldinfo['default'] = False if f.portal_type == 'FormSelectionField': fieldinfo['field_type'] = 'selection' fieldinfo['vocab'] = safe_unicode("\n".join(f.getFgVocabulary())) if f.portal_type == 'FormMultiSelectionField': fieldinfo['field_type'] = 'multiselection' fieldinfo['vocab'] = safe_unicode("\n".join(f.getFgVocabulary())) if f.portal_type == 'FormCaptchaField': fieldinfo['field_type'] = 'captcha' fields[f.getId()] = fieldinfo i += 1
def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data data['email'] = False mailer = getattr(pfg, THANK_YOU_EMAIL_ID, None) if mailer is not None: data['email'] = (mailer.getId() in pfg.getActionAdapter()) data['subject'] = safe_unicode(mailer.getMsg_subject()) from_addr = safe_unicode(mailer.getRawSenderOverride()) if from_addr.startswith(u'string:'): data['from_addr'] = from_addr[7:] data['template'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('thankyou_template', '') thankyou = getattr(pfg, 'thank-you', None) if thankyou is not None: data['thankyou_text'] = safe_unicode(thankyou.getRawThanksPrologue()) else: data['thankyou_text'] = u'' thanksOverride = pfg.getThanksPageOverride() if thanksOverride.startswith('redirect_to:string:'): data['thankyou_url'] = thanksOverride[19:] else: data['thankyou_url'] = ''
def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data data.update(IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('signers', {}))
def load(self, pfg): data = self.getContent() if IAdding.providedBy(pfg): return data data['megaphone_type'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('megaphone_type', 'letter')
def finish(self): data = self.session if IAdding.providedBy(self.context): # creating a new letter container = self.context.context id = container.generateUniqueId("form-folder") # this is based on the createObject.py script from plone_scripts container.invokeFactory(id=id, type_name='FormFolder') obj=getattr(container, id, None) obj.portal_type = 'Megaphone Action' obj.setTitle(data['general']['title']) # enable preview if the type is letter if data.get('intro', {}).get('megaphone_type', 'letter') == 'letter': submit_label = _(u'Preview') else: submit_label = _(u'Send') obj.setSubmitLabel(utranslate(DOMAIN, submit_label, context=self.request)) # delete the default form fields that come w/ PFG existing_ids = obj.objectIds() deleters = ("mailer", "replyto", "topic", "comments") deleters = [d for d in deleters if d in existing_ids] obj.manage_delObjects(deleters) obj.setActionAdapter(()) if obj._at_rename_after_creation: obj._renameAfterCreation() alsoProvides(obj, IMegaphone) if not obj.getRawAfterValidationOverride(): obj.setAfterValidationOverride('here/@@recipient_multiplexer') obj['thank-you'].setShowAll(0) self.request.response.redirect("%s/@@summary?new=1" % (obj.absolute_url())) self.applySteps(obj, initial_finish=True) else: # existing letter obj = self.context self.request.response.redirect("%s/@@summary" % (obj.absolute_url())) self.applySteps(obj, initial_finish=False) # make sure the saved data adapter is configured properly existing_ids = obj.objectIds() if SAVEDATA_ID not in existing_ids: obj.invokeFactory(id=SAVEDATA_ID, type_name="FormSaveDataAdapter") sda = getattr(obj, SAVEDATA_ID) alsoProvides(sda, IMultiplexedActionAdapter) sda.setTitle(utranslate(DOMAIN, _(u'Saved Signatures'), context=self.request)) sda = getattr(obj, SAVEDATA_ID) adapters = list(obj.actionAdapter) if SAVEDATA_ID in adapters: adapters.remove(SAVEDATA_ID) obj.setActionAdapter(adapters) execCondition = sda.getRawExecCondition() if not execCondition or execCondition in ('python:True', 'python:False'): sda.setExecCondition('python:True') if RENDERED_LETTER_ID not in existing_ids: obj.invokeFactory(id=RENDERED_LETTER_ID, type_name='FormStringField') f = getattr(obj, RENDERED_LETTER_ID) f.setServerSide(True) f.setTitle(utranslate(DOMAIN, _(u'Rendered Letter'), context=self.request)) f.setDescription(utranslate(DOMAIN, _(u'This hidden field is used to provide the rendered letter to the mailer and save data adapters.'), context=self.request)) obj.reindexObject() if IAdding.providedBy(self.context): notify(ObjectInitializedEvent(obj)) else: notify(ObjectEditedEvent(obj))