class IRegistrationActions(model.Schema): """""" mailer = actions.Mailer( title=_(u"Email response"), description=_(u"Email based on form inputs"), body_pt=DEFAULT_MAIL_BODY, to_field=u"email", replyto_field=None, subject_field=None, includeEmpties=False, body_pre=RichTextValue( _(u"Informations about your subscription"), "text/plain", "text/html", ), ) sub_script = actions.CustomScript( title=_(u"Subscription adding"), ProxyRole="Manager", ScriptBody=SUBSCRIPTION_SCRIPT, ) save = actions.SaveData( title=_(u"Subscription saving"), UseColumnNames=True, ExtraData=["dt"], )
def create_registration_form(container): current_lang = api.portal.get_current_language() reg_text = translate(_(u"Registration to"), target_language=current_lang) # Create & configure form form = api.content.create( type="EasyForm", title=u"{0} : {1}".format(reg_text, container.Title()), container=container, ) form.exclude_from_nav = True set_fields(form, IRegistrationForm) form.submitLabel = translate(_(u"Register"), target_language=current_lang) form.thankstitle = translate(_(u"Thank you"), target_language=current_lang) form.thanksdescription = translate( _(u"Thank you for your subscription"), target_language=current_lang, ) form.includeEmpties = False # Configure actions IRegistrationActions.setTaggedValue(CONTEXT_KEY, form) set_actions(form, IRegistrationActions) actions = get_actions(form) mailer = actions.get("mailer") mailer.msg_subject = reg_text form.reindexObject()
class IPeriod(model.Schema): """ Marker interface and Dexterity Python Schema for Period """ start = schema.Date(title=_(u"Start date")) end = schema.Date(title=_(u"End date")) nb_places = schema.Int(title=_(u"Number of total available places"))
def __call__(self, context): if isinstance(context, dict): return SimpleVocabulary([]) registration = context.aq_parent values = [] if IRegistration.providedBy(registration): brains = api.content.find(context=registration, portal_type="period") for brain in brains: if not availability_registration(brain): continue nb_places_available = brain.available_places key = brain.getId title = brain.Title start_date = brain.start.strftime("%d/%m/%Y") end_date = brain.end.strftime("%d/%m/%Y") string = _(u"{0} (from {1} to {2} - {3} place(s) left)") value = translate(string, context=getRequest()).format( title.decode("utf-8"), start_date, end_date, str(nb_places_available), ) item = dict() item[key] = value values.append(item) return dict_list_2_vocabulary(values)
def event_add_cancelled_event(obj, event): url = obj.aq_parent.absolute_url() api.portal.show_message( _(u"The creation of registration has been cancelled"), request=obj.REQUEST, type=u"info", ) api.content.delete(obj=obj) obj.REQUEST.RESPONSE.redirect(url)
class IRegistrationForm(model.Schema): """""" email = schema.Email(title=_(u"Email address"), required=True) first_name = schema.TextLine(title=_(u"First name"), required=True) last_name = schema.TextLine(title=_(u"Last name"), required=True) number_of_people = schema.Int(title=_(u"Number of people"), required=True, default=1, min=1) period = schema.Choice( title=_(u"Period"), source="collective.registration.vocabularies.periods", required=True, )
class ISubscriber(model.Schema): """ Marker interface and Dexterity Python Schema for Subscriber """ first_name = schema.TextLine(title=_(u"First name"), required=True) last_name = schema.TextLine(title=_(u"Last name"), required=True) email = ploneschema.Email(title=_(u"Email"), required=True) number_of_people = schema.Int(title=_(u"Number of people"), required=True) subscription_date = schema.Datetime(title=_(u"Subscription time"), required=True, default=datetime.now()) all_informations = RichText(title=_(u"Summary of all other informations"), required=False)