class IPublication(model.Schema): # dates fieldset model.fieldset( 'dates', label=_(u'label_schema_dates', default=u'Dates'), fields=['effective', 'expires'], ) effective = schema.Datetime( title=_(u'label_effective_date', u'Publishing Date'), description=_( u'help_effective_date', default=u"If this date is in the future, the content will " u"not show up in listings and searches until this date."), required=False) directives.widget('effective', DatetimeFieldWidget) expires = schema.Datetime( title=_(u'label_expiration_date', u'Expiration Date'), description=_(u'help_expiration_date', default=u"When this date is reached, the content will no" u"longer be visible in listings and searches."), required=False) directives.widget('expires', DatetimeFieldWidget) @invariant def validate_start_end(data): if data.effective and data.expires and data.effective > data.expires: raise EffectiveAfterExpires( _("error_expiration_must_be_after_effective_date", default=u"Expiration date must be after publishing date.")) directives.omitted('effective', 'expires') directives.no_omit(IEditForm, 'effective', 'expires') directives.no_omit(IAddForm, 'effective', 'expires')
class ICheckin(model.Schema): """ Marker interface and Dexterity Python Schema for Checkin """ start = schema.Datetime(title=_(u"Beginn der Checkin-Zeit"), required=False) end = schema.Datetime(title=_(u"Ende der Checkin-Zeit"), required=False)
class IVeranstaltung(model.Schema): """ Marker interface and Dexterity Python Schema for Veranstaltung """ start = schema.Datetime(title=_(u"Beginn der Veranstaltung"), required=True) end = schema.Datetime(title=_(u"Ende der Veranstaltung"), required=True) adressen = schema.List( title=_(u"Gültige E-Mail-Adressen für diese Veranstaltung"), description= _(u"Hier legen Sie fest, welche Adressen für diese Veranstaltung einchecken dürfen." ), value_type=schema.TextLine(), constraint=validate_adressen, required=True) invitation = schema.Bool( title=_(u"Checkin Einladungen versenden"), description= _(u"Bei Markierung dieses Feldes werden die Einladungen mit dem Link zum Checkin automatisch\ versendet.")) @invariant def start_before_end(data): if data.start > data.end: raise Invalid( _(u'Der Beginn der Veranstaltung muss vor dem Ende liegen.')) @invariant def same_day(data): if data.start.date() != data.end.date(): raise Invalid( _(u'Veranstaltungsbeginn und Veranstaltungsende müssen am gleichen Tag liegen.' ))
class IProxy(model.Schema): """ Proxy """ title = schema.TextLine( title=_(u"Title"), required=True, readonly=True, ) description = schema.Text( title=_(u"Description"), required=False, ) source_type = schema.TextLine( title=_(u"Source Type"), required=True, readonly=True, ) start = schema.Datetime( title=_(u"Source Start Date"), required=False, readonly=True, ) end = schema.Datetime( title=_(u"Source End Date"), required=False, readonly=True, )
class ImediaPerson(form.Schema, IImageScaleTraversable): """ Folderish Person built with Dexterity """ title = schema.TextLine( title=_(u"Name"), ) bornDate = schema.Datetime( title=_(u"Born date"), required=False, ) diedDate = schema.Datetime( title=_(u"Died date"), required=False, ) body = RichText( title=_(u"Biography"), required=False, ) @invariant def validateBornDateDiedDate(data): if data.bornDate is not None and data.diedDate is not None: if data.bornDate > data.diedDate: raise StartBeforeEnd(_( u"The born date must be before the died date."))
class ISettings(model.Schema): top_banner_body = schema.Text( title="Banner to display at the top of the site", description="You can use the placeholder <pre>${portal_url}</pre> to refer to assets", default=""" <div class="container-fluid constrain-width banner"> <div class="row py-3 banner-content"> <div class="col-xs-12 col-md-10 col-lg-8 offset-md-1 offset-lg-2"> <img alt="Important message follows" class="float-left mr-3" src="${portal_url}/++theme++psu-educational-equity/images/alert-icon-dark.png" /> <p> <strong>Coronavirus updates:</strong> To keep up with the latest from Penn State about the global coronavirus outbreak, visit <a href="https://sites.psu.edu/virusinfo/"> <b>the Coronavirus information website</b> </a>. </p> </div> </div> </div> """, ) top_banner_publication_date = schema.Datetime( title="Only publish after this date", description="This date is the first day the banner will be shown", required=False ) top_banner_retire_date = schema.Datetime( title="Do not publish after this date", description="This date is the first day the banner will be hidden", required=False )
class IDateAndTimeSchema(form.Schema): form.primary('datetime') zope_datetime = schema.Datetime(title=u'Zope Datetime') datetime = schema.Datetime(title=u'Datetime') date = schema.Date(title=u'Date') time = schema.Time(title=u'Time')
class IEntry(IContainer): """ This interface is based on the Atom entry definition, from the Atom RFC. http://tools.ietf.org/html/rfc4287 """ # id is generated when we generate entry text title = schema.TextLine(title=u"Title", required=True) updated = schema.Datetime(title=u"Updated", required=True) published = schema.Datetime(title=u"Published", required=False) ## authors = schema.List(title=u"Authors", value_type=schema.Object, ## default=[]) ## contributors = schema.List(title=u"Contributors", value_type=schema.Object, ## default=[]) categories = schema.List(title=u"Categories", value_type=schema.TextLine(title=u"Categories"), default=[]) #links = schema.List(title=u"Links", value_type=schema.TextLine, # default=[]) summary = schema.SourceText(title=u"Summary", required=False) content = schema.SourceText(title=u"Content")
class IQuestionPublicationFields(interface.Interface): question_start_datetime = schema.Datetime( title=_(u"Publication time of question"), description=_(u"Time at which the question should be " u"shown to the public.")) question_end_datetime = schema.Datetime( title=_(u"Expiration time of question"), description=_(u"Time at which the question should be " u"hidden from the public."), required=False) result_start_datetime = schema.Datetime( title=_(u"Publication time of results"), description=_(u"Time at which the poll results should be " u"shown to the public.")) result_end_datetime = schema.Datetime( title=_(u"Expiration time of results"), description=_(u"Time at which the poll results should be " u"hidden from the public."), required=False) @interface.invariant def check_question_end_datetime(data): if data.question_end_datetime: if data.question_end_datetime < data.question_start_datetime: raise interface.Invalid( _(u"Question expiration cannot be " u"before question publication.")) @interface.invariant def check_result_end_datetime(data): if data.result_end_datetime: if data.result_end_datetime < data.result_start_datetime: raise interface.Invalid( _(u"Result display expiration cannot be " u"before result display publication."))
class IPublication(model.Schema): # dates fieldset model.fieldset( 'dates', label=_PMF(u'label_schema_dates', default=u'Dates'), fields=['effective', 'expires'], ) effective = schema.Datetime( title=_PMF(u'label_effective_date', u'Publishing Date'), description=_PMF( u'help_effective_date', default=u"If this date is in the future, the content will " "not show up in listings and searches until this date."), required=False) expires = schema.Datetime( title=_PMF(u'label_expiration_date', u'Expiration Date'), description=_PMF( u'help_expiration_date', default=u"When this date is reached, the content will no" "longer be visible in listings and searches."), required=False) form.omitted('effective', 'expires') form.no_omit(IEditForm, 'effective', 'expires') form.no_omit(IAddForm, 'effective', 'expires')
class IQueueStatistics(interface.Interface): title = schema.TextLine(title=_(u"Title")) messages_sent = schema.Int( title=_(u"Total messages sent"), description=_(u"Total number of messages sent successsfully"), ) new_messages = schema.Int( title=_(u"New messages"), description=_(u"Messages waiting to be sent"), ) new_last_modified = schema.Datetime(title=_(u"Last Change")) sent_messages = schema.Int( title=_(u"Sent messages"), description=_(u"Messages successfully sent"), ) sent_last_modified = schema.Datetime(title=_(u"Last Change")) error_messages = schema.Int( title=_(u"Failed messages"), description=_(u"Messages with errors"), ) error_last_modified = schema.Datetime(title=_(u"Last Change")) retry_messages = schema.Int( title=_(u"Retry messages"), description=_(u"Messages with errors in the retry queue"), ) retry_last_modified = schema.Datetime(title=_(u"Last Change"))
class IWorkflowPanel(Interface): """Form for workflow panel""" workflow_action = schema.Choice( title=_(u'label_change_status', u"Change State"), description=_( u'help_change_status_action', default= u"Select the transition to be used for modifying the items state." ), source=WorkflowActionsSourceBinder(), required=False, ) comment = schema.Text( title=_(u"label_comments", u"Comments"), description=_( u'help_publishing_comments', default=u"Will be added to the publishing history. If multiple " "items are selected, this comment will be attached to all of them." ), required=False, ) effective_date = schema.Datetime( title=_(u'label_effective_date', u'Publishing Date'), description=_( u'help_effective_date', default=u"If this date is in the future, the content will " "not show up in listings and searches until this date."), required=False) expiration_date = schema.Datetime( title=_(u'label_expiration_date', u'Expiration Date'), description=_(u'help_expiration_date', default=u"When this date is reached, the content will no" "longer be visible in listings and searches."), required=False)
class IActivity(form.Schema, IImageScaleTraversable): """ Timesheet Activity """ bodyText = RichText(title=_(u'Activity Details'), description=_(u''), required=True) resources = schema.List(title=_(u'Resources / Staffs'), description=_(u''), value_type=schema.Choice( vocabulary='plone.app.vocabularies.Users', ), required=True) startDate = schema.Datetime( title=_(u"Start Date"), description=u'', required=True, ) endDate = schema.Datetime( title=_(u"End Date"), description=u'', required=True, )
class DhtmlxCalendarSittingsEditForm(interface.Interface): ids = schema.TextLine(title=u'ID', description=u'Sitting ID', required=False) start_date = schema.Datetime( title=_(u"Start date and time of sitting"), description=_(u"Choose sitting's start date and time"), required=True) end_date = schema.Datetime( title=_(u"End date and time of sitting"), description=_(u"Choose sitting's end date and time"), required=True) venue = schema.Choice(title=_(u"Venue"), source="bungeni.vocabulary.Venues", description=_(u"Venues"), required=True) language = schema.Choice(title=_(u"Language"), default=get_default_language(), vocabulary="language_vocabulary", description=_(u'Language'), required=True) rec_type = schema.TextLine(title=u'Recurrence Type', required=False, description=u"A string that contains the \ rules for reccurent sittings if any" ) event_length = schema.TextLine(title=u'Event Length', required=False, description=u'Length of event') nativeeditor_status = schema.TextLine(title=u'editor status', required=False, description=u'Editor Status')
class IPublicationOffer(model.Schema): form.widget('fieldset_opt', FieldsetFieldWidget) fieldset_opt = schema.Text( default=_(u'Dates'), required=False, ) effective = schema.Datetime( title=_PMF(u'label_effective_date', u'Publishing Date'), description=_( u'help_effective_date', default=u"The date the item will be published."), required=False ) expired = schema.Datetime( title=_PMF(u'label_expiration_date', u'Expiration Date'), description=_( u'help_expiration_date', default=u"The date that the item will expire."), required=False, defaultFactory=expiresDefaultValue, ) form.omitted('effective') form.no_omit(IEditForm, 'expired') form.no_omit(IAddForm, 'expired')
class IConferencebreak(model.Schema): title = schema.TextLine( title=_(safe_unicode('Title')), description=_(safe_unicode('Conference break title')), ) description = schema.Text( title=_(safe_unicode('Conference break summary')), required=False, ) primary('details') details = RichText( title=_(safe_unicode('Conference break details')), required=False, ) write_permission(startitem='collective.conferences.ModifyTalktime') startitem = schema.Datetime( title=_(safe_unicode('Startdate')), description=_(safe_unicode('Start date')), defaultFactory=startDefaultValue, required=False, ) write_permission(enditem='collective.conferences.ModifyTalktime') enditem = schema.Datetime( title=_(safe_unicode('Enddate')), description=_(safe_unicode('End date')), defaultFactory=endDefaultValue, required=False, ) write_permission(twclength='collective.conferences.ModifyTalktime') directives.widget(twclength=RadioFieldWidget) twclength = schema.List( title=_(safe_unicode('Length')), value_type=schema.Choice(source='BreakLength'), required=True, ) write_permission(conferencetrack='collective.conferences.ModifyTalktime') conferencetrack = RelationList( title=_(safe_unicode('Choose the track for this break')), default=[], value_type=RelationChoice(vocabulary='ConferenceTrack'), required=False, missing_value=[], ) directives.widget( 'conferencetrack', RadioFieldWidget, ) positionintrack = schema.Int( title=_(safe_unicode('Position In The Track')), description=_( safe_unicode('Choose a number for the order in the track')), required=False, )
class IEventBasic(model.Schema, IDXEvent): """ Basic event schema. """ start = schema.Datetime( title=_(u'label_event_start', default=u'Event Starts'), description=_(u'help_event_start', default=u'Date and Time, when the event begins.'), required=True, defaultFactory=default_start) directives.widget('start', DatetimeFieldWidget, default_timezone=default_timezone, klass=u'event_start') end = schema.Datetime(title=_(u'label_event_end', default=u'Event Ends'), description=_( u'help_event_end', default=u'Date and Time, when the event ends.'), required=True, defaultFactory=default_end) directives.widget('end', DatetimeFieldWidget, default_timezone=default_timezone, klass=u'event_end') whole_day = schema.Bool(title=_(u'label_event_whole_day', default=u'Whole Day'), description=_(u'help_event_whole_day', default=u'Event lasts whole day.'), required=False, default=False) directives.widget('whole_day', SingleCheckBoxFieldWidget, klass=u'event_whole_day') open_end = schema.Bool(title=_(u'label_event_open_end', default=u'Open End'), description=_(u'help_event_open_end', default=u"This event is open ended."), required=False, default=False) directives.widget('open_end', SingleCheckBoxFieldWidget, klass=u'event_open_end') # icalendar event uid sync_uid = schema.TextLine(required=False) directives.mode(sync_uid='hidden') @invariant def validate_start_end(data): if (data.start and data.end and data.start > data.end and not data.open_end): raise StartBeforeEnd( _("error_end_must_be_after_start_date", default=u"End date must be after start date."))
class ICoupon(model.Schema): code = schema.TextLine(title=u'Code', ) categories = schema.Set( title=u'Product Category', description=u'If specified, this coupon will only apply to ' u'products from the specified categories.', value_type=schema.Choice( vocabulary='jazkarta.shop.product_categories', ), ) scope = schema.Choice( title=u'Discount applies to', values=( u'One item', u'All items in cart', ), ) amount = Currency(title=u'Discount Amount', ) unit = schema.Choice( title=u'Discount Unit', values=(u'$', u'%'), ) per_user_limit = schema.Int( title=u'Use Limit Per User', description=u'The number of times this coupon may be used ' u'by an individual. Enter 0 for unlimited.', default=1, ) product = schema.Choice( title=u'Specific Product', description=u'Optionally specify one product to which this coupon ' u'may be applied.', source=CatalogSource( object_provides='jazkarta.shop.interfaces.IProduct'), required=False, ) # excluded_products = schema.Set( # title=u'Excluded Products', # description=u'Products for which this coupon may not be used.', # value_type=schema.Choice( # source=CatalogSource( # object_provides='jazkarta.shop.interfaces.IProduct'), # ), # required=False, # ) start = schema.Datetime(title=u'Start Date', ) end = schema.Datetime(title=u'End Date', )
class IEventBasic(model.Schema): """ Basic event schema. """ model.fieldset( 'dates', fields=['timezone'], label=_PMF(u'label_schema_dates', default=u'Dates'), ) start = schema.Datetime( title=_(u'label_event_start', default=u'Event Starts'), description=_(u'help_event_start', default=u'Date and Time, when the event begins.'), required=True) end = schema.Datetime(title=_(u'label_event_end', default=u'Event Ends'), description=_( u'help_event_end', default=u'Date and Time, when the event ends.'), required=True) whole_day = schema.Bool(title=_(u'label_event_whole_day', default=u'Whole Day'), description=_(u'help_event_whole_day', default=u'Event lasts whole day.'), required=False, default=False) open_end = schema.Bool(title=_(u'label_event_open_end', default=u'Open End'), description=_(u'help_event_open_end', default=u"This event is open ended."), required=False, default=False) # TODO: form.order_before(timezone="IPublication.effective") timezone = schema.Choice( title=_(u'label_event_timezone', default=u'Timezone'), description=_( u'help_event_timezone', default=u'Select the Timezone, where this event happens.'), required=True, vocabulary="plone.app.event.AvailableTimezones") # icalendar event uid sync_uid = schema.TextLine(required=False) form.mode(sync_uid='hidden') @invariant def validate_start_end(data): # data_postprocessing sets end=start if open_end if data.start > data.end and not data.open_end: raise StartBeforeEnd( _("error_end_must_be_after_start_date", default=u"End date must be after start date."))
class IDublinCore(Interface): """We basically just want the IFormFieldProvider interface applied There's probably a zcml way of doing this. """ created = schema.Datetime( title=u'Creation Date', description=u"The date and time that an object is created. " u"\nThis is normally set automatically.") modified = schema.Datetime( title=u'Modification Date', description=u"The date and time that the object was last modified in a\n" u"meaningful way.")
class IDatetime(IDatetime): min = schema.Datetime( title=interfaces.IDatetime['min'].title, required=interfaces.IDatetime['min'].required, default=interfaces.IDatetime['min'].default, ) max = schema.Datetime( title=interfaces.IDatetime['max'].title, required=interfaces.IDatetime['max'].required, default=interfaces.IDatetime['max'].default, )
class ISession(form.Schema, IImageScaleTraversable): """ Conference Session """ title = schema.TextLine(title=_(u'Session Name')) description = schema.Text( title=_(u'Session summary'), description=_(u'Short description of session topics'), ) start = schema.Datetime( title=_(u'Session starts'), defaultFactory=default_start, ) end = schema.Datetime(title=_(u'Session ends'), defaultFactory=default_end) accessible = schema.Choice( title=_(u'Accessible?'), values=(_(u'Yes'), _(u'No')), default='Yes', ) form.widget(accessible="z3c.form.browser.radio.RadioFieldWidget") tracks = schema.List( title=_(u'Tracks for this session'), value_type=schema.Choice(title=u'dummy', source=trackVocabulary), ) searchable('details') details = RichText(title=_(u'Details')) presenters = RelationList( title=u"Presenters", default=[], value_type=RelationChoice( title=_(u"Presenter"), source=ObjPathSourceBinder( object_provides= 'collective.dexterity_class.presenter.IPresenter')), required=False, ) @invariant def checkDates(data): if data.start is not None and data.end is not None: if data.start > data.end: raise StartBeforeEnd( _(u"The start date must be before the end date."))
class IBuyablePeriodBehavior(model.Schema): """Buyable period behavior. """ model.fieldset('shop', label=u"Shop", fields=['buyable_effective', 'buyable_expires']) buyable_effective = schema.Datetime(title=_( u'label_buyable_effective_date', default=u'Buyable effective date'), required=False) buyable_expires = schema.Datetime(title=_( u'label_buyable_expiration_date', default=u'Buyable expiration date'), required=False)
class IAddress(Interface): address_type = schema.Choice(title=u'Address Type', required=True, values=[u'Work', u'Home']) # A Relation field within a datagrid is a tricky one to get # working. Uncomment if you want to try this. # link = RelationChoice( # title=u"Link to content", # source=ObjPathSourceBinder(), # required=True) line1 = schema.TextLine(title=u'Line 1', required=True) line2 = schema.TextLine(title=u'Line 2', required=False) city = schema.TextLine(title=u'City / Town', required=True) country = schema.TextLine(title=u'Country', required=True) frozenField = schema.TextLine(title=u'Don\'t change', readonly=True, required=True) # A sample integer field personCount = schema.Int(title=u'Persons', required=False, min=0, max=15) # A sample datetime field if widget_datetime is not None: widget(dateAdded=DataGridFieldDatetimeFieldWidget) dateAdded = schema.Datetime(title=u"Date added") # A sample checkbox billed = schema.Bool(title=u"Billed")
class IMessage(model.Schema): subject = schema.TextLine( title=_(u"Subject"), required=True, ) message_from = schema.TextLine( title=_(u"From"), required=True, defaultFactory=getCurrentUser, ) message_to = schema.Choice( title=_(u"To"), source=possibleRecipients, required=True, ) body = RichText( title=_(u"Body"), required=False, ) unread = schema.Bool( title=_(u"Unread"), default=True ) creation_date = schema.Datetime( title=_(u"Created at"), default=datetime.datetime.now() )
class IAddress(Interface): address_type = schema.Choice(title=u'Address Type', required=True, values=[u'Work', u'Home']) # Uncomment, if you want to try the relationfield # link = RelationChoice( # title=u"Link to content", # source=CatalogSource(portal_type=['Document']), # required=True # ) line1 = schema.TextLine(title=u'Line 1', required=True) line2 = schema.TextLine(title=u'Line 2', required=False) city = schema.TextLine(title=u'City / Town', required=True) country = schema.TextLine(title=u'Country', required=True) frozenField = schema.TextLine(title=u'Don\'t change', readonly=True, required=True) # A sample integer field personCount = schema.Int( title=u'Persons', description=u'Enter number of persons (min 0 and max 15)', required=False, min=0, max=15) # A sample datetime field if widget_datetime is not None: widget(dateAdded=DataGridFieldDatetimeFieldWidget) dateAdded = schema.Datetime(title=u"Date added") # A sample checkbox billed = schema.Bool(title=u"Billed")
class ISendAndPreviewForm(interface.Interface): channel = schema.Choice( title=_(u"The mailing-list to send this through"), vocabulary='collective.singing.vocabularies.SendableChannelVocabulary', ) include_collector_items = schema.Bool( title=_(u"Include collector items"), description=_(u"Append automatically collected content in this " "send-out"), default=True, ) address = schema.TextLine( title=_(u"Address to send the preview to"), description=_( u"This is only required if you click 'Send preview' below"), required=False, ) datetime = schema.Datetime( title=_(u"Scheduled time"), description=_(u"This is only required if you click " "'Schedule distribution' below"), default=datetime.datetime.now(), required=False, )
class IOldFields(model.Schema): """ Add Old Fields """ # form.mode(oldPicturePath='hidden') oldPicturePath = schema.TextLine( title=_(u"Old Picture Path"), required=False, ) form.mode(oldKeywords='hidden') oldKeywords = schema.TextLine( title=_(u"Old Keywords"), required=False, ) form.mode(oldCreateTime='hidden') oldCreateTime = schema.Datetime( title=_(u"Old Create Time"), required=False, ) form.mode(oldEbookURL='hidden') oldEbookURL = schema.TextLine( title=_(u"Old Ebook URL"), required=False, )
class IPublicationRowSchema(Interface): ai_id = schema.TextLine(title=_(u"ai_id"), required=False) title = schema.TextLine(title=_(u"Title"), required=False) doi = schema.TextLine(title=_(u"URL"), required=False) journal_title = schema.TextLine(title=_(u"Journal Title"), required=False) published_on = schema.Datetime( title=_(u'Published On'), required=False, ) abstract = RichText( title=_(u"Abstract"), required=False, ) contributors = schema.List( title=_(u"Contributors"), value_type=schema.TextLine(required=True), required=False, )
class ISubscriber(IEmail): """ Marker interface and Dexterity Python Schema for Player """ pseudo = schema.TextLine( title=_(u'your pseudo'), description=_(u'pseudo_description'), required=True, ) first_name = schema.TextLine( title=_(u'First Name'), required=True, ) last_name = schema.TextLine( title=_(u'Last Name'), required=True, ) directives.omitted('register_date') directives.no_omit( IEditForm, 'register_date', ) register_date = schema.Datetime( title=_(u'registring date'), required=False, # defaultFactory=registerDate )