class IDXTestDocumentSchema(model.Schema): # zope.schema fields test_ascii_field = schema.ASCII(required=False) test_asciiline_field = schema.ASCIILine(required=False) test_bool_field = schema.Bool(required=False) test_bytes_field = schema.Bytes(required=False) test_bytesline_field = schema.BytesLine(required=False) test_choice_field = schema.Choice(values=[u"foo", u"bar"], required=False) test_choice_field_with_vocabulary = schema.Choice( vocabulary=SimpleVocabulary([ SimpleTerm(u"value1", "token1", u"title1"), SimpleTerm(u"value2", "token2", u"title2"), ]), required=False, ) test_choice_with_non_iterable_source = schema.Choice( required=False, source=my_non_iterable_source) test_choice_with_source = schema.Choice(required=False, source=my_iterable_source) test_choice_with_context_source = schema.Choice( required=False, source=my_context_source_binder) test_choice_with_querysource = schema.Choice(required=False, source=my_querysource) test_choice_with_context_querysource = schema.Choice( required=False, source=my_context_querysource_binder) test_date_field = schema.Date(required=False) test_datetime_field = schema.Datetime(required=False) test_datetime_tz_field = schema.Datetime( required=False, defaultFactory=lambda: timezone("Europe/Zurich").localize( datetime(2017, 10, 31, 10, 0)), ) test_decimal_field = schema.Decimal(required=False) test_dict_field = schema.Dict(required=False) test_float_field = schema.Float(required=False) test_frozenset_field = schema.FrozenSet(required=False) test_int_field = schema.Int(required=False) test_list_field = schema.List(required=False) test_list_field_with_choice_with_vocabulary = schema.List( value_type=schema.Choice(vocabulary=SimpleVocabulary([ SimpleTerm(u"value1", "token1", u"title1"), SimpleTerm(u"value2", "token2", u"title2"), SimpleTerm(u"value3", "token3", u"title3"), ])), required=False, ) test_set_field = schema.Set(required=False) test_set_field_with_choice_with_vocabulary = schema.Set( value_type=schema.Choice(vocabulary=SimpleVocabulary([ SimpleTerm(u"value1", "token1", u"title1"), SimpleTerm(u"value2", "token2", u"title2"), SimpleTerm(u"value3", "token3", u"title3"), ])), required=False, ) test_text_field = schema.Text(required=False) test_textline_field = schema.TextLine(required=False) test_time_field = schema.Time(required=False) test_timedelta_field = schema.Timedelta(required=False) test_tuple_field = schema.Tuple(required=False) test_nested_list_field = schema.List(required=False, value_type=schema.Tuple()) test_nested_dict_field = schema.Dict(required=False, key_type=schema.ASCIILine(), value_type=schema.Tuple()) test_list_choice_with_context_vocabulary_field = schema.List( title=u"Field", value_type=schema.Choice( vocabulary="plone.restapi.testing.context_vocabulary"), required=False, ) # plone.app.textfield test_richtext_field = RichText( required=False, allowed_mime_types=["text/html", "text/plain"]) # plone.namedfile fields test_namedfile_field = namedfile.NamedFile(required=False) test_namedimage_field = namedfile.NamedImage(required=False) test_namedblobfile_field = namedfile.NamedBlobFile(required=False) test_namedblobimage_field = namedfile.NamedBlobImage(required=False) # z3c.relationfield test_relationchoice_field = RelationChoice( required=False, source=CatalogSource(id=["doc1", "doc2"])) test_relationlist_field = RelationList( required=False, value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"), ) # Test fields for validation test_required_field = schema.TextLine(required=True) test_readonly_field = schema.TextLine(required=False, readonly=True) test_maxlength_field = schema.TextLine(required=False, max_length=10) test_constraint_field = schema.TextLine(required=False, constraint=lambda x: u"00" in x) test_datetime_min_field = schema.Datetime(required=False, min=datetime(2000, 1, 1)) test_time_min_field = schema.Time(required=False, min=time(1)) test_timedelta_min_field = schema.Timedelta(required=False, min=timedelta(100)) test_list_value_type_field = schema.List(required=False, value_type=schema.Int()) test_dict_key_type_field = schema.Dict(required=False, key_type=schema.Int()) read_permission(test_read_permission_field="cmf.ManagePortal") test_read_permission_field = schema.TextLine(required=False) write_permission(test_write_permission_field="cmf.ManagePortal") test_write_permission_field = schema.TextLine(required=False) read_permission(test_read_permission_field="cmf.ManagePortal") test_read_permission_field = schema.TextLine(required=False) test_invariant_field1 = schema.TextLine(required=False) test_invariant_field2 = schema.TextLine(required=False) test_missing_value_field = schema.TextLine(required=False, missing_value=u"missing", default=u"default") test_missing_value_required_field = schema.TextLine( required=True, missing_value=u"missing", default=u"some value") @invariant def validate_same_value(data): if data.test_invariant_field1 != data.test_invariant_field2: raise Invalid(u"Must have same values") # Test fields with default values test_default_value_field = schema.TextLine(required=True, default=u"Default") @provider(IContextAwareDefaultFactory) def default_factory(context): return u"DefaultFactory" test_default_factory_field = schema.TextLine( required=True, defaultFactory=default_factory)
class IPrintable(Interface): """An object which contains content wich can be printed to a pdf document. Should it be part of tutorial???? """ title = schema.TextLine(title=_(u"Object title"), required=True)
class IClass(Interface): """An object which describes classes belonging to a specific school. """ title = schema.TextLine(title=_(u"Object title"), required=True)
class IBioSQLDatabase(IBioSQLProxy): """ IReadContainer """ id = schema.TextLine(title=_(u"biodatabase_id"), required=True) # authority = schema.TextLine(title=_(u"authority")) description = schema.Text(title=_(u"description"))
class ISponsor(Interface): """An object which contains contains information related to sponsors, displayed on the site. """ title = schema.TextLine(title=_(u"Object title"), required=True)
class IMammoth(interface.Interface): name = schema.TextLine(title=u"Name") size = schema.TextLine(title=u"Size")
class ICountrySelectTile(IPersistentCoverTile): title = schema.TextLine( title=_(u'Title'), required=False, )
class IContentMetadata(model.Schema): """ FISE specific content metadata """ # directives.fieldset('fise-metadata', label="Forests Metadata", fields=[ # 'nuts_level', # ]) resource_type = schema.Choice( title=u'Resource type', # description=u"Type of result; for NFI the values are taken from the" # u"'Result format' field", vocabulary="collective.taxonomy.resource_type", required=False, ) nuts_level = schema.Tuple( title=u"NUTS Levels", description=u"Nomenclature of territorial units for statistics level", value_type=schema.Choice(vocabulary="collective.taxonomy.nuts_levels"), required=False, missing_value=(), default=(), ) dataset = schema.Choice(title=u"Dataset", description=u"The provenance dataset", vocabulary="collective.taxonomy.datasets", required=False) data_source = schema.Choice( title=u"Data Source", description=u"The source for the data (not its publisher!)", vocabulary="collective.taxonomy.data_sources", required=False, ) # form.widget( # 'data_source', # OptgroupFieldWidget, # vocabulary='collective.taxonomy.data_sources' # ) collection_years = JSONField( title=u"Collection years", description=u"Start year - end year", # noqa schema=COLLECTION_YEARS_SCHEMA, default={}, required=False, ) publisher = schema.Tuple( title=u"Publisher", description=u"Owner/Responsible Organisation", value_type=schema.TextLine(), required=False, missing_value=(), default=(), ) form.widget( # text with autocomplete 'publisher', AjaxSelectFieldWidget, vocabulary='collective.taxonomy.publishers') publishing_year = schema.Int( title=u"Publishing year", required=False, ) external_url = schema.TextLine(title=u"Link to resource", required=False) info_level = schema.Choice( title=u"Info level", vocabulary='collective.taxonomy.info_levels', required=False, ) accessibility_level = schema.Choice( title=u'Accesibility levels', description=u"Level of access, from 'public' to restricted'", vocabulary='collective.taxonomy.accessibility_levels', required=False, ) geo_coverage = schema.Tuple( title=u"Geographical coverage", description=u"Geographic areas covered by this resource", value_type=schema.Choice( vocabulary="collective.taxonomy.geographical_coverage"), required=False, missing_value=(), default=(), )
class ITUpSmallProject(model.Schema): directives.mode(information="display") information = schema.Text( title=_(safe_unicode("Information")), description=_(safe_unicode( "The Dialog to create a new project consists of different " "register. Please go through this register and fill in the " "appropriate data for your project or choose one of the " "options that are provided. You could upload one or more files " "to your project on the register 'File Upload' and " "'Optional Further File Upload'.")) ) dexteritytextindexer.searchable('title') title = schema.TextLine( title=_(safe_unicode("Title")), description=_(safe_unicode( 'Project Title - minimum 5 and maximum 50 characters')), min_length=5, max_length=50 ) dexteritytextindexer.searchable('description') description = schema.Text( title=_(safe_unicode("Project Summary")), ) dexteritytextindexer.searchable('details') primary('details') details = RichText( title=_(safe_unicode("Full Project Description")), required=False ) model.fieldset('category_compatibility', label=safe_unicode("Categories / Compatibility"), fields=['category_choice', 'compatibility_choice'] ) model.fieldset('legal', label=safe_unicode("Legal"), fields=['licenses_choice', 'title_declaration_legal', 'declaration_legal', 'accept_legal_declaration'] ) directives.widget(licenses_choice=CheckBoxFieldWidget) licenses_choice = schema.List( title=_(safe_unicode('License of the uploaded file')), description=_(safe_unicode( "Please mark one or more licenses you publish your release.")), value_type=schema.Choice(source=vocabAvailLicenses), required=True, ) directives.mode(title_declaration_legal='display') title_declaration_legal = schema.TextLine( title=_(safe_unicode("")), required=False, defaultFactory=legal_declaration_title ) directives.mode(declaration_legal='display') declaration_legal = schema.Text( title=_(safe_unicode("")), required=False, defaultFactory=legal_declaration_text ) accept_legal_declaration = schema.Bool( title=_(safe_unicode("Accept the above legal disclaimer")), description=_(safe_unicode( "Please declare that you accept the above legal disclaimer.")), required=True ) dexteritytextindexer.searchable('category_choice') directives.widget(category_choice=CheckBoxFieldWidget) category_choice = schema.List( title=_(safe_unicode("Choose your categories")), description=_(safe_unicode( "Please select the appropriate categories (one or more) for " "your project.")), value_type=schema.Choice(source=vocabCategories), constraint=isNotEmptyCategory, required=True ) contactAddress = schema.TextLine( title=_(safe_unicode("Contact email-address")), description=_(safe_unicode("Contact email-address for the project.")), constraint=validateEmail ) directives.mode(tucimageextension='display') tucimageextension = schema.TextLine( title=_(safe_unicode( 'The following file extensions are allowed for screenshot ' 'files (upper case and lower case and mix of both):')), defaultFactory=allowedimagefileextensions, ) screenshot = NamedBlobImage( title=_(safe_unicode("Screenshot of the Tempate")), description=_(safe_unicode( "Add a screenshot by clicking the 'Browse' button. You could " "provide an image of the file format 'png', 'gif' or 'jpg'.")), required=True, constraint=validateimagefileextension ) releasenumber = schema.TextLine( title=_(safe_unicode("Versions Number")), description=_(safe_unicode( "Version Number of the Template File (up to twelf chars) " "which you upload in this project.")), default=_(safe_unicode("1.0")), max_length=12, ) directives.widget(compatibility_choice=CheckBoxFieldWidget) compatibility_choice = schema.List( title=_(safe_unicode("Compatible with versions of LibreOffice")), description=_(safe_unicode( "Please mark one or more program versions with which this " "release is compatible with.")), value_type=schema.Choice(source=vocabAvailVersions), required=True, default=[] ) directives.mode(tucfileextension='display') tucfileextension = schema.TextLine( title=_(safe_unicode( 'The following file extensions are allowed for template ' 'files (upper case and lower case and mix of both):')), defaultFactory=allowedtemplatefileextensions, ) file = NamedBlobFile( title=_(safe_unicode("The first file you want to upload.")), description=_(safe_unicode("Please upload your file.")), required=True, constraint=validatetemplatefileextension, ) directives.widget(platform_choice=CheckBoxFieldWidget) platform_choice = schema.List( title=_(safe_unicode( "First uploaded file is compatible with the Platform(s)")), description=_(safe_unicode( "Please mark one or more platforms with which the uploaded file " "is compatible.")), value_type=schema.Choice(source=vocabAvailPlatforms), required=True, ) model.fieldset('fileset1', label=safe_unicode("File Upload"), fields=['filetitlefield', 'platform_choice', 'tucfileextension', 'file', ] ) directives.mode(filetitlefield='display') filetitlefield = schema.TextLine( title=_(safe_unicode("The First File You Want To Upload")), description=_(safe_unicode( "You need only to upload one file to your project. There are " "options for further two file uploads if you want to provide " "files for different platforms.")), ) model.fieldset('fileset2', label=safe_unicode("Optional Further File Upload"), fields=['filetitlefield1', 'platform_choice1', 'tucfileextension1', 'file1', 'filetitlefield2', 'platform_choice2', 'tucfileextension2', 'file2'] ) directives.mode(filetitlefield1='display') filetitlefield1 = schema.TextLine( title=_(safe_unicode("Second Release File")), description=_(safe_unicode( "Here you could add an optional second file to your project, if " "the files support different platforms.")) ) directives.widget(platform_choice1=CheckBoxFieldWidget) platform_choice1 = schema.List( title=_(safe_unicode( "Second uploaded file is compatible with the Platform(s)")), description=_(safe_unicode( "Please mark one or more platforms with which the uploaded file " "is compatible.")), value_type=schema.Choice(source=vocabAvailPlatforms), required=False, ) directives.mode(tucfileextension1='display') tucfileextension1 = schema.TextLine( title=_(safe_unicode( 'The following file extensions are allowed for template ' 'files (upper case and lower case and mix of both):')), defaultFactory=allowedtemplatefileextensions, ) file1 = NamedBlobFile( title=_(safe_unicode( "The second file you want to upload (this is optional)")), description=_(safe_unicode("Please upload your file.")), required=False, constraint=validatetemplatefileextension, ) directives.mode(filetitlefield2='display') filetitlefield2 = schema.TextLine( title=_(safe_unicode("Third Release File")), description=_(safe_unicode( "Here you could add an optional third file to your project, if " "the files support different platforms.")), ) directives.widget(platform_choice2=CheckBoxFieldWidget) platform_choice2 = schema.List( title=_(safe_unicode( "Third uploaded file is compatible with the Platform(s))")), description=_(safe_unicode( "Please mark one or more platforms with which the uploaded file " "is compatible.")), value_type=schema.Choice(source=vocabAvailPlatforms), required=False, ) directives.mode(tucfileextension2='display') tucfileextension2 = schema.TextLine( title=_(safe_unicode( 'The following file extensions are allowed for template ' 'files (upper case and lower case and mix of both):')), defaultFactory=allowedtemplatefileextensions, ) file2 = NamedBlobFile( title=_(safe_unicode( "The third file you want to upload (this is optional)")), description=_(safe_unicode("Please upload your file.")), required=False, constraint=validatetemplatefileextension, ) @invariant def licensenotchoosen(value): if not value.licenses_choice: raise Invalid(_(safe_unicode( "Please choose a license for your release."))) @invariant def compatibilitynotchoosen(data): if not data.compatibility_choice: raise Invalid(_(safe_unicode( "Please choose one or more compatible product versions for " "your release."))) @invariant def legaldeclarationaccepted(data): if data.accept_legal_declaration is not True: raise AcceptLegalDeclaration( _(safe_unicode( "Please accept the Legal Declaration about your Release " "and your Uploaded File"))) @invariant def noOSChosen(data): if data.file is not None and data.platform_choice == []: raise Invalid(_(safe_unicode( "Please choose a compatible platform for the uploaded file.")))
class IOrder(Interface): """ 訂單 """ title = schema.TextLine( title=_(u"Order Title"), description=_(u"Mapping to allPay's MerchantTradeNo"), required=True, ) description = schema.Text( title=_(u"Description"), description=_(u"Mapping to allPay's ItemName"), required=False, ) receiver = schema.TextLine( title=_(u"Receiver"), description=_(u"Receiver name."), required=False, ) phone = schema.TextLine( title=_(u"Phone"), description=_(u"Phone Number."), required=False, ) cellPhone = schema.TextLine( title=_(u"Cell Phone"), description=_(u"Cell Phone number."), required=False, ) email = schema.TextLine( title=_(u"Email"), description=_(u"Email."), required=False, ) addr_city = schema.TextLine( title=_(u"City"), description=_(u"City name."), required=False, ) addr_district = schema.TextLine( title=_(u"District"), description=_(u"District"), required=False, ) addr_zip = schema.TextLine( title=_(u"ZIP Code"), description=_(u"ZIP code"), required=False, ) addr_address = schema.TextLine( title=_(u"Address"), description=_(u"Address"), required=False, ) taxId = schema.TextLine( title=_(u"Tax ID"), description=_(u"Tax ID"), required=False, ) companyTitle = schema.TextLine( title=_(u"Company Title"), description=_(u"Company Title"), required=False, ) form.write_permission(productUIDs='cmf.ManagePortal') productUIDs = schema.Dict( title=_(u"Product UID(s)"), description=_(u"Product UID(s) at shopping cart, include qty."), key_type=schema.TextLine(title=u"Key"), value_type=schema.Int(title=u"Value"), required=False, ) form.write_permission(amount='cmf.ManagePortal') amount = schema.Int( title=_(u"Amount"), description=_(u"Amount"), required=True, ) form.write_permission(orderState='cmf.ManagePortal') orderState = schema.Choice( title=_(u"Order State"), description=_(u"Order state."), vocabulary=ORDER_STATE, default=u'ordered', required=True, ) result = schema.Dict( title=_(u"Trading Results"), description=_(u"Trading Results, feedback from allPay."), key_type=schema.TextLine(title=u"Key"), value_type=schema.TextLine(title=u"Value"), required=False, ) logisticsMapResult = schema.Dict( title=_(u"Logistics Map Results"), description=_(u"Logistics map results, feedback from allPay."), key_type=schema.TextLine(title=u"Key"), value_type=schema.TextLine(title=u"Value"), required=False, ) logisticsExpressResult = schema.Dict( title=_(u"Logistics Express Create Results"), description=_(u"Logistics express create results, feedback from allPay."), key_type=schema.TextLine(title=u"Key"), value_type=schema.TextLine(title=u"Value"), required=False, )
class IProduct(Interface): """ 產品 """ dexteritytextindexer.searchable('title') title = schema.TextLine( title=_(u"Product Name"), required=True, ) productId = schema.TextLine( title=_(u"Product Id"), required=True, ) description = schema.Text( title=_(u"Description"), required=False, ) productUrl = schema.URI( title=_(u"Pruduct URL"), description=_(u"Product introduction web page include http:// or https://"), required=False, ) inStock = schema.Bool( title=_(u"In Stock?"), description=_(u"If In Stock, Please check it."), default=True, required=False, ) brand = schema.TextLine( title=_(u"Brand"), description=_(u"Brand name."), required=False, ) """ categoryTag = schema.TextLine( title=_(u"Category Tag"), description=_(u"Category tag for product, Provider define. Separated by commas."), required=False, ) """ listPrice = schema.Int( title=_(u"List Price"), description=_(u"The list price of the product."), required=True, ) salePrice = schema.Int( title=_(u"Sale price"), description=_(u"Sale price for the product if different from the list price, must be <= listPrice."), required=True, ) image_1 = NamedBlobImage( title=_(u"Product Image."), description=_(u"Product image for header."), required=True, ) image_2 = NamedBlobImage( title=_(u"Product Image."), description=_(u"Product image."), required=False, ) image_3 = NamedBlobImage( title=_(u"Product Image."), description=_(u"Product image."), required=False, ) image_4 = NamedBlobImage( title=_(u"Product Image."), description=_(u"Product image."), required=False, ) image_5 = NamedBlobImage( title=_(u"Product Image."), description=_(u"Product image."), required=False, ) """ special = schema.TextLine( title=_(u"Special"), description=_(u"Used to denote a special offer. Can be used by a publisher to identify unique products, Will be YES, NO or empty."), required=False, ) """ # 紅利點數發放比率,以小數點表示百分比 bonusPoint = schema.Float( title=_(u"Bonus Point"), description=_(u"Bonus point setting, please filling decimal point. maximum is 0.05 (5%)"), default=DEFAULT_BONUS_RATE, min=MIN_BONUS_RATE, max=MAX_BONUS_RATE, required=True, ) # 今日折扣,使用紅利點數可折抵折扣率,以小數點表示百分比 maxUsedBonus = schema.Float( title=_(u"Maximum Used Bonus Points"), description=_(u"You can use a maximum bonus points."), default=DEFAULT_USED_BONUS_RATE, min=MIN_USED_BONUS_RATE, max=MAX_USED_BONUS_RATE, required=True, ) dexteritytextindexer.searchable('promotionalText') promotionalText = RichText( title=_(u"Promotional Text"), description=_(u"Promotional Text, support html format richtext."), required=False, ) # 產品要放在首頁推廣,則本欄必填, 該用 ReviewPortalContent? or ManagePortal? 再考量 form.write_permission(heroText='cmf.ReviewPortalContent') heroText = schema.Text( title=_(u"Hero Text"), description=_(u"Promotional Text for Hero page"), required=False, ) # 運費,以單品計算, 若一張訂單有多樣商品,須依規則另計 standardShippingCost = schema.Int( title=_(u"Standard shipping cost"), description=_(u"Usually is the cost for the typical standard, lowest cost shipping method. This is provided for informational purposes and the actual shipping cost could vary depending on the visitor."), required=False, ) lastUpdated = schema.Datetime( title=_(u"Last Updated"), description=_(u"Date of the most recent update to the product."), default=datetime.now(), required=True, ) sharingText = schema.Text( title=_(u"Sharing Text"), required=False, )
class IProfile(Interface): """ 個人頁面,含專家檔案 """ title = schema.TextLine( title=_(u"Profile Name"), required=True, ) description = schema.Text( title=_(u"Description"), required=False, ) isExpert = schema.Bool( title=_(u"Is Expert"), default=False, required=True, ) image = NamedBlobImage( title=_(u"Expert Image."), description=_(u"Expert image."), required=False, ) phone = schema.TextLine( title=_(u"Phone"), description=_(u"Phone Number."), required=False, ) cellPhone = schema.TextLine( title=_(u"Cell Phone"), description=_(u"Cell Phone number."), required=False, ) email = schema.TextLine( title=_(u"Email"), description=_(u"Email."), required=False, ) addr_city = schema.TextLine( title=_(u"City"), description=_(u"City name."), required=False, ) addr_district = schema.TextLine( title=_(u"District"), description=_(u"District"), required=False, ) addr_zip = schema.TextLine( title=_(u"ZIP Code"), description=_(u"ZIP code"), required=False, ) addr_address = schema.TextLine( title=_(u"Address"), description=_(u"Address"), required=False, ) addr2_city = schema.TextLine( title=_(u"City"), description=_(u"City name."), required=False, ) addr2_district = schema.TextLine( title=_(u"District"), description=_(u"District"), required=False, ) addr2_zip = schema.TextLine( title=_(u"ZIP Code"), description=_(u"ZIP code"), required=False, ) addr2_address = schema.TextLine( title=_(u"Address"), description=_(u"Address"), required=False, ) bonus = schema.Int( title=_(u"Bonus"), description=_(u"Bonus"), default=0, min=0, required=False, )
class ITestAnnotationsBehavior(model.Schema): test_annotations_behavior_field = schema.TextLine(required=False)
class ITestBehavior(model.Schema): test_behavior_field = schema.TextLine(required=False)
class IPerson(IMember, IAtlasContact, ILeadImageBase, IAtlasSocialMediaBase): __doc__ = "Person Information" # Fieldsets model.fieldset( 'contact', label=_(u'Contact Information'), fields=contact_fields, ) model.fieldset( 'professional', label=_(u'Professional Information'), fields=professional_fields, ) model.fieldset( 'social-media', label=_(u'Social Media'), fields=social_media_fields, ) form.omitted( 'homepage', 'map_link', 'leadimage_full_width', 'leadimage_caption', 'hr_job_title', 'hr_admin_area', 'hr_department', 'all_emails', 'sso_principal_name', 'project_program_team_percent', 'home_budget', 'delete_project_program_team_percent', 'home_cost_center', 'project_percent', ) form.mode(leadimage_show='hidden') form.order_after(leadimage='suffix') # Only allow Directory Editors to write to these fields form.write_permission(leadimage=ATLAS_DIRECTORY) form.write_permission(username=ATLAS_DIRECTORY) form.write_permission(classifications=ATLAS_DIRECTORY) form.write_permission(primary_profile_url=ATLAS_DIRECTORY) form.write_permission(latitude=ATLAS_DIRECTORY) form.write_permission(longitude=ATLAS_DIRECTORY) # Project / Program Team / Percent form.widget(project_program_team_percent=DataGridFieldFactory) form.widget(project_percent=DataGridFieldFactory) form.write_permission( project_program_team_percent=ATLAS_SUPERUSER, home_budget=ATLAS_SUPERUSER, home_cost_center=ATLAS_SUPERUSER, project_percent=ATLAS_SUPERUSER, ) # Internal Fields model.fieldset( 'internal', label=_(u'Internal'), fields=['project_program_team_percent', 'home_budget'], ) # Fields username = schema.TextLine( title=_(u"Penn State Username"), description=_(u"Of format 'xyz123'"), required=True, ) first_name = schema.TextLine( title=_(u"First Name"), required=True, ) middle_name = schema.TextLine( title=_(u"Middle Name"), required=False, ) last_name = schema.TextLine( title=_(u"Last Name"), required=True, ) suffix = schema.TextLine( title=_(u"Suffix"), required=False, ) classifications = schema.List( title=_(u"Classifications"), required=True, value_type=schema.Choice(vocabulary="agsci.person.classifications"), ) job_titles = schema.List( title=_(u"Job Titles"), value_type=schema.TextLine(required=True), required=True, ) hr_job_title = schema.TextLine( title=_(u"HR Job Title"), required=False, ) hr_admin_area = schema.TextLine( title=_(u"HR Admin Area"), required=False, ) hr_department = schema.TextLine( title=_(u"HR Department"), required=False, ) all_emails = schema.Tuple( title=_(u"All Penn State Email Addresses"), value_type=schema.TextLine(required=True), required=False, ) sso_principal_name = schema.TextLine( title=_(u"SSO Principal Name"), required=False, ) education = schema.List( title=_(u"Education"), value_type=schema.TextLine(required=True), required=False, ) areas_expertise = schema.List( title=_(u"Areas of Expertise"), value_type=schema.TextLine(required=True), required=False, ) primary_profile_url = schema.TextLine( title=_(u"Primary Profile URL"), description=_(u"URL of primary profile (if not Extension site)"), required=False, ) pronouns = schema.TextLine(title=_(u"Pronouns"), description=_(u"He/Him, She/Her, They/Them"), required=False, max_length=20) summary_report_frequency = schema.Choice( title=_(u"Summary Report Frequency"), description=_(u"Frequency that reports will be emailed."), values=[u'No Emails', u'Weekly', u'Daily'], default=u'Daily', required=True, ) summary_report_blank = schema.Bool( title=_(u"Send empty Summary Report Email?"), description= _(u"If this box is checked, emails will be sent even though no products require action." ), required=False, default=False, ) county = schema.List( title=_(u"County/Location"), description=_(u""), value_type=schema.Choice(vocabulary="agsci.atlas.PersonCounty"), required=False) home_budget = schema.TextLine( title=_(u"Home Budget"), required=False, ) home_cost_center = schema.TextLine( title=_(u"Home Cost Center"), required=False, ) project_program_team_percent = schema.List( title=_(u"Project/Program Team and Percent"), description=_(u""), value_type=DictRow(title=u"Program Team/Percent", schema=IProjectProgramTeamRowSchema), required=False) project_percent = schema.List(title=_(u"Project Percent"), description=_(u""), value_type=DictRow( title=u"Project Percent", schema=IProjectPercentRowSchema), required=False) delete_project_program_team_percent = schema.Bool( title=_(u"Delete Project/Program Team info"), description=_(u""), required=False, default=False, )
class IContactsheetDisplaySettings(IBaseSettings): contactsheet_columns = schema.Int( title=_(u"label_contactsheet_columns", default=u"Number of images before a forced new row (use a high " u"number if you dont want this)"), default=3, min=1) contactsheet_imagewidth = schema.Int( title=_(u"label_contactsheet_imagewidth", default=u"Width of (each) image (when mouse hovers)"), default=400, min=50) contactsheet_imageheight = schema.Int( title=_(u"label_contactsheet_imageheight", default=u"Height of (each) image"), default=260, min=50) contactsheet_use_icons = schema.Bool( title=_(u"label_contactsheet_use_icons", default=u"Use Thumbnail size instead of Size"), default=False) contactsheet_zoom = schema.Int( title=_(u"label_contactsheet_zoom", default=u"How many pixels to zoom when mouse over"), default=-10) contactsheet_overlay_opacity = schema.Choice( title=_(u"label_contactsheet_overlay_opacity", default=u"Opacity on mouse over"), default=0.3, vocabulary=SimpleVocabulary([ SimpleTerm(0, 0, _(u"label_contactsheet_overlay_opacity0", default=u"0 Off")), SimpleTerm(0.1, 0.1, _(u"label_contactsheet_overlay_opacity1", default=u"0.1 Light")), SimpleTerm(0.2, 0.2, _(u"label_contactsheet_overlay_opacity2", default=u"0.2")), SimpleTerm(0.3, 0.3, _(u"label_contactsheet_overlay_opacity3", default=u"0.3")), SimpleTerm(0.4, 0.4, _(u"label_contactsheet_overlay_opacity4", default=u"0.4 Medium")), SimpleTerm(0.5, 0.5, _(u"label_contactsheet_overlay_opacity5", default=u"0.5")), SimpleTerm(0.6, 0.6, _(u"label_contactsheet_overlay_opacity6", default=u"0.6")), SimpleTerm(0.7, 0.7, _(u"label_contactsheet_overlay_opacity7", default=u"0.7 Dark")), SimpleTerm(0.8, 0.8, _(u"label_contactsheet_overlay_opacity8", default=u"0.8 Very Dark")), SimpleTerm(0.9, 0.9, _(u"label_contactsheet_overlay_opacity9", default=u"0.9 Almost Black")), SimpleTerm(1, 1, _(u"label_contactsheet_overlay_opacity10", default=u"1 Pitch Dark") ) ])) contactsheet_style = schema.Choice( title=_(u"label_contactsheet_style", default=u"What stylesheet (css file) to use"), default="style.css", vocabulary=SimpleVocabulary([ SimpleTerm("style.css", "style.css", _(u"label_contactsheet_style_default", default=u"Default")), SimpleTerm("icon_style.css", "icon_style.css", _(u"label_contactsheet_style_icon", default=u"Icon style (for small images)")), SimpleTerm("icon_style_ii.css", "icon_style_ii.css", _(u"label_contactsheet_style_icon_ii", default=u"Icon style no 2")), SimpleTerm("icon_style_iii.css", "icon_style_iii.css", _(u"label_contactsheet_style_icon_iii", default=u"Icon style no 3")), SimpleTerm("no_style.css", "no_style.css", _(u"label_contactsheet_style_no", default=u"No style / css file")), SimpleTerm("custom_style", "custom_style", _(u"label_contactsheet_style_custom", default=u"Custom css file") ) ])) contactsheet_custom_style = schema.TextLine( title=_(u"label_custom_style", default=u"Name of Custom css file if you chose that above"), default=u"mycustomstyle.css")
def test_collection(self): field = schema.List( title=u'My field', description=u'My great field', min_length=1, value_type=schema.TextLine(title=u'Text', description=u'Text field', default=u'Default text'), default=['foobar'], ) adapter = getMultiAdapter((field, self.portal, self.request), IJsonSchemaProvider) self.assertEqual( { 'type': 'array', 'title': u'My field', 'description': u'My great field', 'default': ['foobar'], 'minItems': 1, 'uniqueItems': False, 'additionalItems': True, 'items': { 'type': 'string', 'title': u'Text', 'description': u'Text field', 'default': u'Default text', } }, adapter.get_schema()) # Test Tuple field = schema.Tuple( title=u'My field', value_type=schema.Int(), default=(1, 2), ) adapter = getMultiAdapter((field, self.portal, self.request), IJsonSchemaProvider) self.assertEqual( { 'type': 'array', 'title': u'My field', 'description': u'', 'uniqueItems': True, 'additionalItems': True, 'items': { 'title': u'', 'description': u'', 'type': 'integer', }, 'default': (1, 2), }, adapter.get_schema()) # Test Set field = schema.Set( title=u'My field', value_type=schema.TextLine(), ) adapter = getMultiAdapter((field, self.portal, self.request), IJsonSchemaProvider) self.assertEqual( { 'type': 'array', 'title': u'My field', 'description': u'', 'uniqueItems': True, 'additionalItems': True, 'items': { 'title': u'', 'description': u'', 'type': 'string', } }, adapter.get_schema()) # List of choices field = schema.List( title=u'My field', value_type=schema.Choice(vocabulary=self.dummy_vocabulary, ), ) adapter = getMultiAdapter((field, self.portal, self.request), IJsonSchemaProvider) self.assertEqual( { 'type': 'array', 'title': u'My field', 'description': u'', 'uniqueItems': True, 'additionalItems': True, 'items': { 'title': u'', 'description': u'', 'type': 'string', 'enum': ['foo', 'bar'], 'enumNames': ['Foo', 'Bar'], 'choices': [('foo', 'Foo'), ('bar', 'Bar')], } }, adapter.get_schema())
class IDocumento(model.Schema, IDesignPloneContentType): """Marker interface for content type Documento""" identificativo = schema.TextLine( title=_( "identificativo_documento_label", default="Identificativo del documento.", ), description=_( "identificativo_documento_help", default="Un numero identificativo del documento.", ), required=False, ) tipologia_documento = schema.Choice( title=_("tipologia_documento_label", default="Tipologia del documento"), description=_( "tipologia_documento_help", default="Seleziona la tipologia del documento.", ), required=True, vocabulary="design.plone.vocabularies.tipologie_documento", ) ufficio_responsabile = RelationList( title=_( "ufficio_responsabile_documento_label", default="Ufficio responsabile del documento", ), description=_( "ufficio_responsabile_documento_help", default="Seleziona l'ufficio responsabile di questo documento.", ), required=False, default=[], value_type=RelationChoice( title=_("Ufficio responsabile"), vocabulary="plone.app.vocabularies.Catalog", ), ) area_responsabile = RelationList( title=_( "area_responsabile_label", default="Area responsabile del documento", ), description=_( "area_responsabile_help", default="Seleziona l'area amministrativa responsabile del " "documento.", ), required=False, default=[], value_type=RelationChoice(title=_("Area"), vocabulary="plone.app.vocabularies.Catalog"), ) autori = RelationList( title=_( "autori_label", default="Autore/i", ), description=_( "autori_help", default="Seleziona una lista di autori che hanno pubblicato " "il documento. Possono essere Persone o Unità Organizzative.", ), value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"), required=False, default=[], ) licenza_distribuzione = schema.TextLine( title=_("licenza_distribuzione_label", default="Licenza di distribuzione"), description=_( "licenza_distribuzione_help", default= "La licenza con il quale viene distribuito questo documento.", ), required=False, ) riferimenti_normativi = BlocksField( title=_( "riferimenti_normativi_documento_label", default="Riferimenti normativi", ), description=_( "riferimenti_normativi_documento_help", default="Inserisici del testo di dettaglio per eventuali " "riferimenti normativi utili a questo documento.", ), required=False, ) documenti_allegati = RelationList( title=_( "documenti_allegati_label", default="Documenti allegati", ), description=_( "documenti_allegati_help", default="Seleziona una serie di altri contenuti di tipo Documento " "che vanno allegati a questo.", ), default=[], required=False, value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"), ) # custom widgets form.widget( "ufficio_responsabile", RelatedItemsFieldWidget, vocabulary="plone.app.vocabularies.Catalog", pattern_options={ "maximumSelectionSize": 1, "selectableTypes": ["UnitaOrganizzativa"], }, ) form.widget( "autori", RelatedItemsFieldWidget, vocabulary="plone.app.vocabularies.Catalog", pattern_options={ "maximumSelectionSize": 10, "selectableTypes": ["Persona", "UnitaOrganizzativa"], }, ) form.widget( "area_responsabile", RelatedItemsFieldWidget, vocabulary="plone.app.vocabularies.Catalog", pattern_options={ "maximumSelectionSize": 1, "selectableTypes": ["UnitaOrganizzativa"], }, ) form.widget( "documenti_allegati", RelatedItemsFieldWidget, vocabulary="plone.app.vocabularies.Catalog", pattern_options={ "maximumSelectionSize": 10, "selectableTypes": ["Documento"] }, ) # custom fieldsets model.fieldset( "descrizione", label=_("descrizione_label", default="Descrizione"), fields=[ "ufficio_responsabile", "area_responsabile", "autori", "licenza_distribuzione", ], ) model.fieldset( "informazioni", label=_("informazioni_label", default="Ulteriori informazioni"), fields=["riferimenti_normativi", "documenti_allegati"], ) # custom order form.order_after( ufficio_responsabile="IDescrizioneEstesaDocumento.descrizione_estesa") form.order_after(area_responsabile="ufficio_responsabile") form.order_after(autori="area_responsabile") form.order_after(licenza_distribuzione="autori") form.order_after( riferimenti_normativi="IAdditionalHelpInfos.ulteriori_informazioni") form.order_after(documenti_allegati="riferimenti_normativi")
class IEestecPortalUserDataSchema(IUserDataSchema): """Use all the fields from the default user data schema, and add various extra fields.""" lc = schema.Choice( title=u"LC", vocabulary="lc_list", required=True, description=u"Select the Local Committee you belong to. If you \ don't know what this is just leave it at \ 'Observer Candidates'.") mobile = schema.TextLine( title=u'Mobile', description=u"Enter the mobile number on which you are \ available for the organizers.", required=True, ) study_field = schema.Choice( title=u'Study Field', constraint=Validate.study_fields, description=u"Select your study field.", values=STUDY_FIELDS, ) birthdate = schema.Date( title=u'Birthdate', description=u"Select your birthdate.", max=date.today(), min=date(1964, 1, 1), required=True, ) sex = schema.Choice( title=u'Sex', constraint=Validate.sex, description=u"Select your sex.", values=SEXES, ) nationality = schema.Choice(title=u'Nationality', constraint=Validate.country, description=u"Passport Details", values=COUNTRIES) address = schema.TextLine( title=u'Address', description=u"Passport Details", required=True, ) passport_id = schema.TextLine( title=u'Passport ID', description=u"Passport Details", required=True, ) passport_date_of_issue = schema.Date( title=u'Passport date of issue', description=u"Passport Details", min=date.today().replace(year=date.today().year - 10), max=date.today(), ) passport_valid_until = schema.Date( title=u'Passport valid until', description=u"Passport Details", max=date.today().replace(year=date.today().year + 10), min=date.today(), ) tshirt_size = schema.Choice( title=u'T-Shirt size', constraint=Validate.sizes, description=u"Select your T-Shirt size.", values=TSHIRT_SIZES, ) needs = schema.Text( title=u'Special needs', description=u"Any special needs? Food allergies? Medical \ issues? Anything the organizers need to be \ aware of?", )
class IResetPasswordForm(interface.Interface): password = schema.Password(title=_(u"Password")) confirm_password = schema.Password(title=_(u"Confirm Password")) key = schema.TextLine(required=False)
class IMeeting(Interface): """ Meeting """ text = RichText( title=_(u"Body text"), required=True, ) meeting_type = schema.Choice( title=_(u"Meeting type"), vocabulary=meeting_types, required=True, ) meeting_level = schema.Choice( title=_(u"Meeting level"), vocabulary=meeting_levels, required=True, ) allow_register = schema.Bool( title=_(u"Allow users to register to the meeting"), required=True, ) allow_register_start = schema.Datetime( title=_(u"From"), description=_(u"Allow registration starting with this datetime."), required=False, ) allow_register_end = schema.Datetime( title=_(u"To"), description=_(u"Allow registration until this datetime."), required=False, ) restrict_content_access = schema.Bool(title=_( u"Hide the content of Additional materials table for not " "registered users"), required=True) auto_approve = schema.Bool( title=_(u"Automatically approve registrations"), required=True, ) max_participants = schema.Int( title=_(u"Maximum number of participants"), required=True, ) hosting_organisation = schema.TextLine( title=_(u"Hosting organisation"), required=True, default=None, ) contact_name = schema.TextLine( title=_(u"Contact person"), required=True, ) contact_email = schema.TextLine(title=_(u"Contact email"), required=True, constraint=validate_email) location = schema.TextLine(title=_(u'label_event_location', default=u'Event location'), description=_( u'help_event_location', default=u'Location of the event.'), required=False, default=None) @invariant def validate_location_required(data): if data.meeting_type != 'webinar' and data.location is None: raise Invalid( _(u"Event location input is missing." + " This field is not required only in " + "'Meeting type: webinar' case."))
class ILoginForm(interface.Interface): login = schema.TextLine(title=_("label_login_form_username", default=u"Username")) password = schema.Password(title=_("label_login_form_password", default=u"Password")) camefrom = schema.TextLine(required=False)
class IBaseQuestionSelectionParameters(Interface): """An object which contains information conerning how questions are selected in a quiz. """ title = schema.TextLine(title=_(u"Object title"), required=True)
class IRestoreLoginForm(interface.Interface): email = schema.TextLine( title=_("label_restore_login_email", default=u"Email"))
class IStudentList(Interface): """An object which contains informatio concerning a student taking a test. """ title = schema.TextLine(title=_(u"Object title"), required=True)
class IVideoTileSchema(model.Schema): form.widget(video=VideoRelatedItemsFieldWidget) video = schema.List( title=u"Video file", description=u"Reference video file on the site.", required=False, default=[], value_type=schema.Choice( vocabulary='plone.app.vocabularies.Catalog' ) ) youtube_url = schema.TextLine( title=u'YouTube url', description=u'Or provide a YouTube or Vimeo url', required=False) @invariant def validate_video(data): if data.video and len(data.video) != 1: raise Invalid("Must select 1 video") if data.video and data.youtube_url: raise Invalid("You can not select both a video and a youtube url") if not data.video and not data.youtube_url: raise Invalid("Must select a video or a youtube url") if data.video: utils = getMultiAdapter((getSite(), getRequest()), name="castle-utils") obj = utils.get_object(data.video[0]) if obj.portal_type != 'Video': raise Invalid('Must provide video file') form.widget('display_fields', CheckBoxFieldWidget) display_fields = schema.Tuple( title=u'Display fields', description=u'Fields that should show from the content', default=(), value_type=schema.Choice( vocabulary=SimpleVocabulary([ SimpleTerm('title', 'title', u'Title'), SimpleTerm('description', 'description', u'Overview/Summary'), SimpleTerm('date', 'date', u'Date'), SimpleTerm('transcript', 'transcript', u'Transcript'), ]) ) ) display_type = schema.Choice( title=u'Display type', required=True, default=defaults.get('video_tile_displaytype', u'landscape'), vocabulary=SimpleVocabulary([ SimpleTerm('landscape', 'landscape', u'Landscape'), SimpleTerm('square', 'square', u'Square'), SimpleTerm('fullwidth', 'fullwidth', u'Full width'), ]) ) show_controls = schema.Bool( title=u'Show controls', default=True ) autoplay = schema.Bool( title=u'Autoplay', default=defaults.get('video_tile_autoplay', False, 'bool') ) loop = schema.Bool( title=u'Loop', default=defaults.get('video_tile_loop', False, 'bool') )
class IOrderedTutorWebContent(Interface): """TutorWeb ordered content and by default is published, or available for viewing to anonymous or logged on users """ title = schema.TextLine(title=_(u"Object title"), required=True)
class IAde25WidgetImagePoster(Interface): """ Content widget image poster """ image = named_file.NamedBlobImage(title=_(u"Poster Image"), required=True) image_caption = schema.TextLine( title=_(u"Poster Image Copyright Information"), required=False)
class ISlide(Interface): """An folder objects which contains object belong to a tutorial such as lectures and sponsors. """ title = schema.TextLine(title=_(u"Object title"), required=True)
class IPasswordReset(model.Schema): login = schema.TextLine(title=_("label_login", default="Login"), required=True) password = schema.Password(title=_("label_password", default="Password"), required=True)