class IResource(form.Schema, IImageScaleTraversable): """ Publications, Training Materials, Videos and more """ dexteritytextindexer.searchable('title') title = schema.TextLine(title=u'Name', description=u'Name of resource.') dexteritytextindexer.searchable('description') description = schema.Text(title=u'Description', description=u'Brief description ' 'of resource.') resource_type = schema.Choice(title=_(u'Type'), vocabulary="sinarngo.resource.types") dexteritytextindexer.searchable('details') form.widget(details="plone.app.z3cform.wysiwyg.WysiwygFieldWidget") details = schema.Text( title=_(u"Details"), required=False, ) attachment_1 = NamedFile(title=_(u'Attachment 1'), required=False) attachment_2 = NamedFile(title=_(u'Attachment 2'), required=False) attachment_3 = NamedFile(title=_(u'Attachment 2'), required=False) url = schema.TextLine(title=_(u'URL'), required=False)
class ILocucio(form.Schema): title = schema.Choice( title=_(u"Idioma"), vocabulary= u"plone.app.multilingual.vocabularies.AllContentLanguageVocabulary", required=True, ) nom_formula = schema.Text( title=_(u"Nom de la fórmula en l'idioma triat"), description=_( u"Escriu el nom de la fórmula en l'idioma indicat al desplegable"), required=False, ) locucio = schema.Text( title=_(u"Locució"), description=_(u"Escriu la locució de la fórmula"), required=True, ) audio = NamedFile( title=_(u"Audio"), description=_(u"Arxiu d\'audio que conta la locucio"), required=False, )
class IAddProtocolo(IBaseProtocolo): situacao_id = schema.Choice( title=_(u'Situação'), description=_(u'Selecione a situação inicial do protocolo.'), vocabulary='il.spdo.situacao-inicial-vocab') form.widget(origem=AutocompleteMultiFieldWidget) origem = schema.List( title=_(u'Origem'), description=_(u'Selecione uma ou mais pessoas de origem do protocolo.'), value_type=schema.Choice(vocabulary='il.spdo.pessoa-vocab')) form.widget(destino=AutocompleteMultiFieldWidget) destino = schema.List( title=_(u'Destino'), description=_(u'Selecione uma ou mais pessoas de destino do protocolo.'), value_type=schema.Choice(vocabulary='il.spdo.pessoa-vocab')) observacao = schema.Text( title=_(u'Observação'), description=_(u'Informe qualquer observação que seja necessária.'), required=False) if ENABLE_FLASH_MULTIFILE: form.widget(anexos=MultiFileFieldWidget) anexos = schema.List( title=_(u'Anexos'), description=_(u'Adicione anexos ao protocolo (opcional).'), required=False, value_type=NamedFile())
class ITaula(form.Schema): directives.languageindependent('temes') temes = RelationList( title=u"Temes", default=[], value_type=RelationChoice( title=_(u"Temes als que pertany la taula de símbols"), source=ObjPathSourceBinder(object_provides=ITema.__identifier__)), required=False, ) directives.languageindependent('taula') taula = schema.Text( title=_(u"Taula de símbols"), description=_(u"Escriu la taula de símbols en Tex"), required=True, ) directives.languageindependent('audio') audio = NamedFile( title=_(u"Audio"), description=_(u"Arxiu d\'audio que conta la locució"), required=False, )
class IDataTableBehavior(model.Schema): """ """ #fieldset('Settings', # fields=['pagelenght', # 'pagelenghts', # 'table'] #) csv_file = NamedFile( title=_(u"Please upload CSV file"), required=True, ) #pagelenght = schema.Int( # title=_(u'Page Length'), # default=25, # min=5, #) #pagelenghts = schema.Text( # title=_(u'Page Length'), # #) directives.widget(table=DataTableFieldWidget) #directives.mode(table='hidden') table = schema.TextLine( title=_(u"List items"), required=False, )
class IDocument(form.Schema, IImageScaleTraversable): """ Document """ dexteritytextindexer.searchable('title') title = schema.TextLine( title=_(u"Title"), required=False, ) dexteritytextindexer.searchable('multifile') write_permission(multifile='cmf.ReviewPortalContent') read_permission(multifile='cmf.ReviewPortalContent') # multifile = NamedBlobFile( # title=_(u"Document"), # description=_(u"Please attach a file"), # required=False, # ) form.widget(multifile=MultiFileFieldWidget) multifile = schema.List( title=_(u"Document"), required=False, value_type=NamedFile(), ) pass
class ITestSchema(form.Schema): foo = schema.TextLine(title=u'Foo', ) test_file = NamedFile(title=u'File', ) test_date = schema.Date(title=u'test_date', ) fancy_text = RichText(title=u"Fancy text", )
class IImportFormSchema(model.Schema): file = NamedFile(title=_(u'File')) encoding = schema.Choice( title=_(u'Encoding'), vocabulary=encodings, default='utf-8', )
class ITypeProfileImport(Interface): """ Fields for a zip import form """ profile_file = NamedFile( title=_(u'Type profiles archive file'), required=True, ) @invariant def isGoodImportFile(data): nfile = getattr(data, 'profile_file', None) if nfile is None: # let required validator handle this return None try: archive = ZipFile(StringIO(data.profile_file.data), 'r') except BadZipfile: raise Invalid( _(u"Error: The file submitted must be a zip archive."), ) name_list = archive.namelist() for fname in name_list: if fname == 'types.xml': continue if os.path.dirname(fname) != 'types' \ or os.path.splitext(fname)[1] != '.xml': raise Invalid( _(u"Error: The file submitted must be a zip archive " u"containing only type profile information.") ) # check XML for basic integrity with archive.open('types.xml', 'rU') as f: source = f.read() root = etree.fromstring(source) if root.tag != 'object': raise Invalid(_(u'types.xml in archive is invalid.')) # check against existing types; don't allow overwrites site = getSite() existing_types = getToolByName(site, 'portal_types').listContentTypes() for element in root.getchildren(): if element.tag == 'object': attribs = element.attrib if not attribs['meta_type'] == 'Dexterity FTI': raise Invalid(_( 'Types in archive must be only Dexterity types.' ),) if attribs['name'] in existing_types: msg = ( u'One or more types in the import archive is an ' u'existing type. Delete "%s" if you ' u'really wish to replace it.' ) raise Invalid(_(msg, attribs['name']), )
class IBoaPraticaForm(form.Schema): title = schema.TextLine( title=u"Título", required=True, ) directives.widget(esfera='z3c.form.browser.radio.RadioFieldWidget') esfera = schema.Choice(title=u"Essa prática é esfera", required=True, vocabulary="mpdg.govbr.observatorio.EsferaPratica") uf = schema.Choice( title=u"UF", description=u"Selecione o seu Estado.", required=False, vocabulary="brasil.estados", ) orgparticipantes = schema.TextLine( title=u"Órgãos participantes", description= u"Se a prática estiver relacionada a algum órgão de governo, favor informar no campo abaixo", required=False, ) # categoria = schema.Choice( # title=u"Assunto", # vocabulary="liberiun.govcontent.CategoriasBoaPratica") directives.widget( description='plone.app.z3cform.wysiwyg.WysiwygFieldWidget') description = schema.Text( title=u"Descrição", required=False, ) # Subject = Keywords( # title=u'Tags', # required=False,) directives.widget(sitesrelacionados= 'collective.z3cform.datagridfield.DataGridFieldFactory') sitesrelacionados = schema.List(title=u"Sites relacionados", value_type=DictRow(title=u"tablerow", schema=ITableRowSchema), required=False) anexo = NamedFile( title=u"Anexo", description=u'É obrigatório a inclusão de pelo menos um anexo.', required=True)
class IImportSchema(form.Schema): """Define fields used on the form.""" #TODO: need to get rid of "Keep existing file" etc. It's confusing # suspect this is the wrong field type import_file = NamedFile( title=_( "import_field_import_file_title", # nopep8 default=u"CSV metadata to import"), description=_( "import_field_import_file_description", # nopep8 default= u"CSV file containing rows for each content to create or update"), required=False) # form.widget('header_mapping', NamedFileFieldWidget) header_mapping = schema.List( title=_(u'Header Mapping'), description=_( u"For Import any matching headers in your CSV will be mapped to " u"these fields. If Header is not found then the data will be ignored." u" For export, the internal fields will be exported to the " u" header names listed."), value_type=DictRow(title=u"tablerow", schema=IMappingRow), missing_value={}, required=False) primary_key = schema.Choice( title=_( "import_field_primary_key_title", # nopep8 default=u"Test if content exists using"), description=_( "import_field_primary_key_description", default= u"Field with unique id to use to check if content already exists. " u"Ignored for export." "Normally 'Short Name' or 'Path'."), source=fields_list, #TODO: should be index not fieldname required=True, default=u"id") object_type = schema.Choice( title=_( "import_field_object_type_title", # nopep8 default=u"If not found"), description=_( "import_field_object_type_description", default= u"If content can't be found then Create, Skip or Stop at that row. " u"For rich media such as Videos, upload first. Ignored for " u"export."), source=if_not_found_list, required=True)
class IImportParams(Interface): """ Management form to import xliff """ html_compatibility = schema.Bool( title=u'HTML compatibility mode', description=_( u'Select this option if your files are messed up with HTML code ' u'in between due to incorrect XLIFF file handling by the ' u'translators.'), required=False, default=False, ) xliff_file = NamedFile(title=u'Xliff file (plain or zip)', required=True)
class IAddAnexo(IBaseFormSchema): form.mode(protocolo_id='hidden') protocolo_id = schema.Int( title=_(u'ID do Protocolo'), description=_(u'Identificador do Protocolo.'), defaultFactory=getProtocoloId, required=False) if ENABLE_FLASH_MULTIFILE: form.widget(anexos=MultiFileFieldWidget) anexos = schema.List( title=_(u'Anexos'), description=_(u'Adicione anexos ao protocolo.'), value_type=NamedFile())
class IIcalendarImportSettings(Interface): event_type = schema.Choice( title=_('ical_import_event_type_title', default=u'Event Type'), description=_( 'ical_import_event_type_desc', default=u"Content type of the event, which is created when " u"importing icalendar resources."), vocabulary='plone.app.event.EventTypes', required=True ) ical_url = schema.URI( title=_('ical_import_url_title', default=u'Icalendar URL'), description=_( 'ical_import_url_desc', default=u"URL to an external icalendar resource file."), required=False ) ical_file = NamedFile( title=_('ical_import_file_title', default=u"Icalendar File"), description=_( 'ical_import_file_desc', default=u"Icalendar resource file, if no URL is given."), required=False ) sync_strategy = schema.Choice( title=_( 'ical_import_sync_strategy_title', default=u"Synchronization Strategy" ), description=_( 'ical_import_sync_strategy_desc', default=u"""Defines how to synchronize: 1) "Keep newer": Import, if the imported event is modified after the existing one. 2) "Keep mine": On conflicts, just do nothing. 3) "Keep theirs": On conflicts, update the existing event with the external one. 4) "No Syncing": Don't synchronize but import events and create new ones, even if they already exist. For each one, create a new sync_uid."""), vocabulary='plone.app.event.SynchronizationStrategies', required=True, default=base.SYNC_KEEP_NEWER )
class ICOPItem(form.Schema, IImageScaleTraversable): """ COP Item """ form.widget(blog_body=WysiwygFieldWidget) blog_body = schema.Text(title=u"Body") write_permission(multifile='cmf.ReviewPortalContent') read_permission(multifile='cmf.ReviewPortalContent') form.widget(multifile=MultiFileFieldWidget) multifile = schema.List( title=_(u"File Attachment"), required=False, value_type=NamedFile(), ) pass
class IDXItemSchema(Schema): bool_field = schema.Bool(title=u'Bool Field', default=False) choice_field = schema.Choice(title=u'Choice Field', vocabulary=COLORS) date_field = schema.Date(title=u'Date Field') datetime_field = schema.Datetime(title=u'Datetime Field') decimal_field = schema.Decimal(title=u'Float Field') dottedname_field = schema.URI(title=u'DottedName Field') file_field = NamedFile(title=u'File Field') float_field = schema.Float(title=u'Float Field') image_field = NamedImage(title=u'Image Field') list_field = schema.List(title=u'List Field') richtext_field = RichText(title=u'Rich Text Field') text_field = schema.Text(title=u'Text Field') time_field = schema.Time(title=u'Time Field') timedelta_field = schema.Timedelta(title=u'Timedelta Field') uri_field = schema.URI(title=u'URI Field')
def setUp(self): from plone.app.z3cform.widget import FileUploadWidget self.request = TestRequest(environ= {'HTTP_ACCEPT_LANGUAGE': 'en', 'REQUEST_METHOD': 'POST', 'files[]': None}) alsoProvides(self.request, IFormLayer) self.widget = FileUploadWidget(self.request) self.field = List(__name__='files', value_type=NamedFile()) alsoProvides(self.field, IField) self.context = DummyContext() self.widget.context = self.context self.field.interface = Interface provideAdapter(datamanager.AttributeField) self.widget.field = self.field self.form = Mock() directlyProvides(self.form, IAddForm)
class IIcalendarImportSettings(Interface): event_type = schema.Choice( title=_(u'Event Type'), vocabulary='plone.app.event.EventTypes', required=True ) ical_url = schema.URI( title=_(u'Icalendar URL'), required=False ) ical_file = NamedFile( title=_(u"Icalendar File"), required=False )
class IZipImport(Interface): """ Fields for a zip import form """ zip_file = NamedFile( title=_(u'Ambidexterity archive file'), required=True, ) @invariant def isGoodImportFile(data): # NOQA nfile = getattr(data, 'zip_file', None) if nfile is None: # let required validator handle this return None if not zipfile.is_zipfile(StringIO(data.zip_file.data)): raise Invalid( _(u"Error: The file submitted must be a zip archive."), )
def test_filesize(self): # original value in patrimoine : 30000000 file = NamedFile() file.data = "0" * 30000000 self.patrimoine.fichier_pdf = NamedBlobFile(data=file.data, filename=u"bigfile.pdf") self.assertTrue(fileSize(self.patrimoine.fichier_pdf)) file = NamedFile() file.data = "0" * 30000001 self.patrimoine.fichier_pdf = NamedBlobFile(data=file.data, filename=u"bigfile.pdf") with self.assertRaises(InvalidFileSizeError): self.assertRaises(InvalidFileSizeError, fileSize(self.patrimoine.fichier_pdf))
class IAddTramite(IBaseFormSchema): form.mode(protocolo_id='hidden') protocolo_id = schema.Int( title=_(u'ID do Protocolo'), description=_(u'Identificador do Protocolo.'), defaultFactory=getProtocoloId, required=False) areas = schema.List( title=_(u'Área'), description=_(u'Área para qual o protocolo deve tramitar. Selecione mais de uma área para realizar tramitação por cópia.'), value_type=schema.Choice(vocabulary='il.spdo.areas-vocab')) despacho = schema.Text( title=_(u'Despacho'), description=_(u'Despacho que descreve as ações que devem ser tormadas para a tramitação prosseguir.'), required=False) if ENABLE_FLASH_MULTIFILE: form.widget(anexos=MultiFileFieldWidget) anexos = schema.List( title=_(u'Anexos'), description=_(u'Adicione anexos ao protocolo (opcional).'), required=False, value_type=NamedFile()) @interface.invariant def verifyFluxo(tramite): if not tramite.protocolo_id: raise interface.Invalid(_(u'O parâmetro protocolo_id não foi informado.')) if not tramite.areas: raise interface.Invalid(_(u'O parâmetro areas não foi informado.')) sc = getUtility(ISecurityChecker) if not sc.check('fluxo_rigoroso', protocolo_id=tramite.protocolo_id, areas=tramite.areas): raise interface.Invalid(_(u'Não é possível tramitar esse protocolo para as áreas escolhidas. O fluxo de tramitação definido para o tipo de protocolo e documento não é flexível.'))
class IImportSchema(form.Schema): xls_file = NamedFile(title=_(u"XLS file"))
class IEventsDirectoryItem(IDirectoryItem): """Extends the seantis.dir.IDirectoryItem.""" submitter = TextLine( title=_(u'Submitter Name'), required=False, ) submitter_email = Email( title=_(u'Submitter Email'), required=False, ) searchable('short_description') short_description = Text(title=_(u'Short Description'), description=_(u'Up to 140 characters'), required=True, max_length=140) searchable('long_description') long_description = Text(title=_(u'Long Description'), required=False) image = NamedImage(title=_(u'Image'), required=False) attachment_1 = NamedFile(title=_(u'Attachment 1'), required=False) attachment_2 = NamedFile(title=_(u'Attachment 2'), required=False) searchable('locality') locality = TextLine(title=_(u'Locality'), required=False) searchable('street') street = TextLine(title=_(u'Street'), required=False) searchable('housenumber') housenumber = TextLine(title=_(u'Housenumber'), required=False) searchable('zipcode') zipcode = TextLine(title=_(u'Zipcode'), required=False) searchable('town') town = TextLine(title=_(u'Town'), required=False) searchable('location_url') location_url = Website(title=_(u'Location Website'), required=False) searchable('event_url') event_url = Website(title=_(u'Event Website'), required=False) searchable('organizer') organizer = TextLine(title=_(u'Organizer'), required=False) searchable('contact_name') contact_name = TextLine(title=_(u'Contact Name'), required=False) searchable('contact_email') contact_email = Email(title=_(u'Contact Email'), required=False) searchable('contact_phone') contact_phone = TextLine(title=_(u'Contact Phone'), required=False) searchable('prices') prices = Text(title=_(u'Prices'), required=False) searchable('registration') registration = Website(title=_(u'Ticket / Registration Website'), required=False)
class IFileSchema(form.Schema): form.primary('file') file = NamedFile(title=u'File')
class IUploadFormSchema(form.Schema): import_file = NamedFile(title=_('Upload CSV'))
class IFileUploadForm(interface.Interface): file = NamedFile(title=u"File")
class IDCATDistribution(model.Schema, IDCAT): """Marker interface and Dexterity Python Schema for DCATDistribution.""" # Mandatory # ------------------------------------------------------------------------- dct_title = I18NTextLine( required=False, title=i18n.LABEL_DCT_TITLE, ) dct_description = I18NText( required=False, title=i18n.LABEL_DCT_DESCRIPTION, ) form.widget( 'dct_license', AjaxSelectAddFieldWidget, display_deprecated=True, content_type=constants.CT_DCT_LICENSEDOCUMENT, content_type_title=i18n.LABEL_DCT_LICENSE, initial_path='/licenses/', ) dct_license = schema.Choice( description=i18n.HELP_DCT_LICENSE, required=False, title=i18n.LABEL_DCT_LICENSE, vocabulary='pkan.dcatapde.vocabularies.DCTLicenseDocument', ) dcat_accessURL = schema.URI( required=False, title=i18n.LABEL_DCAT_ACCESSURL, ) dcat_downloadURL = schema.URI( required=False, title=i18n.LABEL_DCAT_DOWNLOADURL, ) local_file = NamedFile( required=False, title=i18n.LABEL_LOCAL_FILE, ) read_permission(dcatde_plannedAvailability='pkan.dcatapde.Admin') write_permission(dcatde_plannedAvailability='pkan.dcatapde.Admin') dcatde_plannedAvailability = I18NText( required=False, title=i18n.LABEL_DCATDE_PLANNED_AVAILABLITY, ) dcatde_licenseAttributionByText = I18NText( required=False, title=i18n.LABEL_DCATDE_LICENSEATTRIBUTIONBYTEXT, ) read_permission(dcat_byteSize='pkan.dcatapde.Admin') write_permission(dcat_byteSize='pkan.dcatapde.Admin') dcat_byteSize = I18NTextLine( required=False, title=i18n.LABEL_DCAT_BYTESIZE, ) read_permission(dct_conformsTo='pkan.dcatapde.Admin') write_permission(dct_conformsTo='pkan.dcatapde.Admin') form.widget( 'dct_conformsTo', AjaxSelectAddFieldWidget, display_deprecated=True, content_type=constants.CT_DCT_STANDARD, content_type_title=i18n.LABEL_DCT_CONFORMSTO, initial_path='/standards/', ) dct_conformsTo = schema.Choice( description=i18n.HELP_DCT_CONFORMSTO, required=False, title=i18n.LABEL_DCT_CONFORMSTO, vocabulary='pkan.dcatapde.vocabularies.DCTStandard', ) form.widget( 'dct_format', AjaxSelectAddFieldWidget, display_deprecated=True, content_type=constants.CT_DCT_MEDIATYPEOREXTENT, content_type_title=i18n.LABEL_DCT_FORMAT, initial_path='/formats/', ) dct_format = schema.Choice( description=i18n.HELP_DCT_FORMAT, required=False, title=i18n.LABEL_DCT_FORMAT, vocabulary='pkan.dcatapde.vocabularies.DCTMediaTypeOrExtent', ) read_permission(dcat_mediaType='pkan.dcatapde.Admin') write_permission(dcat_mediaType='pkan.dcatapde.Admin') form.widget( 'dcat_mediaType', AjaxSelectAddFieldWidget, display_deprecated=True, content_type=constants.CT_DCT_MEDIATYPEOREXTENT, content_type_title=i18n.LABEL_DCAT_MEDIATYPE, initial_path='/formats/', ) dcat_mediaType = schema.Choice( description=i18n.HELP_DACT_MEDIATYPE, required=False, title=i18n.LABEL_DCAT_MEDIATYPE, vocabulary='pkan.dcatapde.vocabularies.DCTMediaTypeOrExtent', ) dct_issued = schema.Date( required=False, title=i18n.LABEL_DCT_ISSUED, ) dct_modified = schema.Date( required=False, title=i18n.LABEL_DCT_MODIFIED, default=datetime.date.today(), )
class IImportCSVFormSchema(Interface): csv_file = NamedFile(title=_("CSV file"))
class IImportDirectorySchema(form.Schema): """ Define fields used on the form """ xls_file = NamedFile(title=_(u"XLS file"), description=u'{xlshelp}')
class Ilaureando(form.Schema, IImageScaleTraversable): """ studente laureando """ # If you want a schema-defined interface, delete the form.model # line below and delete the matching file in the models sub-directory. # If you want a model-based interface, edit # models/laureando.xml to define the content type # and add directives here as necessary. laureando_name = schema.TextLine( title=_(u'Nome'), description=_(u'Inserire nome dello studente.'), required=True) laureando_surname = schema.TextLine( title=_(u'Cognome'), description=_(u'Inserire cognome dello studente.'), required=True) laureando_matricola = schema.TextLine(title=_(u'Matricola'), constraint=validatore_matricola, required=True) #form.read_permission(laureando_avg='laureando.privilegi_segreteria') form.write_permission(laureando_avg='laureando.privilegi_segreteria') laureando_avg = schema.Float(title=_(u'Media'), required=True) #form.read_permission(laureando_nlodi='laureando.privilegi_segreteria') #form.write_permission(laureando_nlodi='laureando.privilegi_segreteria') laureando_nlodi = schema.Choice( title=_(u'N. lodi'), description=_(u'Inserisci il numero di lodi.'), source=lista_possibili_nlodi, required=False) #form.read_permission(laureando_anno_immatricolazione='laureando.privilegi_segreteria') #form.write_permission(laureando_anno_immatricolazione='laureando.privilegi_segreteria') laureando_anno_immatricolazione = schema.Choice( title=_(u'Anno immatricolazione'), description=_(u'Seleziona anno di immatricolazione.'), source=years_voc, required=False) laureando_relatore = schema.Choice( title=_(u'Relatore'), description=_(u'Seleziona il relatore.'), source=lista_relatori, required=True) laureando_project = schema.TextLine(title=_(u'Progetto'), description=_(u'Titolo della tesi.'), required=False) laureando_project_description = schema.Text( title=_(u'Descrizione progetto'), description=_(u'Dettagli aggiuntivi.'), required=False) laureando_project_file = NamedFile(title=_(u'Upload della tesi.'), required=False) #form.read_permission(laureando_valutazione='laureando.privilegi_commissione') form.write_permission( laureando_valutazione='laureando.privilegi_commissione') laureando_valutazione = schema.Choice( title=_(u'Valutazione progetto'), description=_(u'Valutazione del progetto (relatore).'), source=lista_possibili_valutazioni, required=False) #form.omitted('laureando_voto_di_laurea') #form.read_permission(laureando_voto_di_laurea='laureando.privilegi_presidente') form.write_permission( laureando_voto_di_laurea='laureando.privilegi_presidente') laureando_voto_di_laurea = schema.Int(title=_(u'Voto di laurea'), required=False) #form.read_permission(laureando_lode='laureando.privilegi_presidente') form.write_permission(laureando_lode='laureando.privilegi_presidente') laureando_lode = schema.Bool(title=_(u'Lode'), required=False)