class IMultiFileSchema(model.Schema): """""" file_principale = field.NamedBlobFile( title=_("file_principale_label", default="File principale"), description=_( "file_principale_help", default="Inserisci il file principale di questo contenuto.", ), required=True, ) formato_alternativo_1 = field.NamedBlobFile( title=_("formato_alternativo_1_label", default="Formato alternativo 1"), description=_( "formato_alternativo_1_help", default="Inserisci un eventuale formato alternativo del " "file principale.", ), required=False, ) formato_alternativo_2 = field.NamedBlobFile( title=_("formato_alternativo_2_label", default="Formato alternativo 2"), description=_( "formato_alternativo_2_help", default="Inserisci un eventuale formato alternativo del " "file principale.", ), required=False, )
class IAnalysisResultsEdit(model.Schema): uuid = schema.TextLine( title=_(u"UUID"), required=True, readonly=False, ) sample_no = schema.TextLine( title=_(u"Sample number"), required=False, readonly=False, ) result = schema.Choice( title=_(u"Result"), required=False, vocabulary=u"gene.tumour.vocabulary.analysis_result", ) result_info = schema.TextLine( title=_(u"Result information"), required=False, ) quality_file = field.NamedBlobFile( title=_(u"Quality control document"), required=False, ) result_file = field.NamedBlobFile( title=_(u"Result detail"), required=False, )
class IVideo(model.Schema): form.omitted('image') image = namedfile.NamedBlobImage( title=_(u"Cover Image"), description=u"", required=False, ) # main file will always be converted to mp4 form.widget(video_file=StreamNamedFileFieldWidget) model.primary('video_file') video_file = namedfile.NamedBlobFile(title=_(u"Video File"), description=u"", required=False, constraint=valid_video) form.omitted(IAddForm, 'video_file_ogv') form.omitted(IEditForm, 'video_file_ogv') form.widget(video_file_ogv=StreamNamedFileFieldWidget) video_file_ogv = namedfile.NamedBlobFile(required=False, ) form.omitted(IAddForm, 'video_file_webm') form.omitted(IEditForm, 'video_file_webm') form.widget(video_file_webm=StreamNamedFileFieldWidget) video_file_webm = namedfile.NamedBlobFile(required=False, ) youtube_url = schema.TextLine( title=_(u"Youtube URL"), description=_(u"Alternatively, you can provide a youtube video url. " u"If this is specified, video file will be ignored."), required=False) @invariant def validate_videos(data): if not data.video_file and not data.youtube_url: raise Invalid("Must specify either a video file or youtube url") width = schema.Int(title=_(u"Width"), default=640) height = schema.Int(title=_(u"Height"), default=320) subtitle_file = namedfile.NamedBlobFile( title=_(u"Subtitle file"), description=_(u"Provide a file in srt format"), required=False) form.omitted('metadata') metadata = schema.Text(required=False) transcript = RichText(title=_(u"Transcript"), default_mime_type='text/html', output_mime_type='text/html', allowed_mime_types=('text/html', 'text/plain'), default=u"", required=False)
class INamedBlobFileField(interfaces.INamedBlobFileField): default = field.NamedBlobFile( title=interfaces.INamedBlobFileField['default'].title, description=interfaces.INamedBlobFileField['default'].description, required=False) missing_value = field.NamedBlobFile( title=interfaces.INamedBlobFileField['missing_value'].title, description=interfaces.INamedBlobFileField['missing_value']. description, required=False)
class IDataset(model.Schema): """Marker interface for Dataset""" # TODO: aggiungere tassonomia e vocabolario rilevante fornito nelle linee guida # noqa temi = schema.Choice( title=_("temi", default="Temi"), vocabulary="design.plone.contenttypes.temi_dataset", required=True, ) # TODO: identificativo dataset distribuzione = BlocksField( title=_("distribuzione", default="Distribuzione"), required=True ) licenza = schema.TextLine(title=_("licenza", default="Licenza"), required=True) dataset = field.NamedBlobFile(title=_("dataset", default="Dataset"), required=True) titolare = schema.TextLine(title=_("titolare", default="Titolare"), required=True) frequenza_aggiornamento = schema.TextLine( title=_("frequenza_aggiornamento", default="Frequenza di aggiornamento"), required=True, )
class IDocumentSchema(model.Schema): """Document Schema Interface.""" model.fieldset( u'common', label=_(u'fieldset_common', u'Common'), fields=[ u'title', u'file', ], ) dexteritytextindexer.searchable('title') form.order_before(title='IDocumentMetadata.description') title = schema.TextLine(title=_(u'label_title', default=u'Title'), required=False) model.primary('file') form.order_after(file='IDocumentMetadata.document_author') file = field.NamedBlobFile( title=_(u'label_file', default='File'), description=_(u'help_file', default=''), required=False, ) @invariant def title_or_file_required(data): if not data.title and not data.file: raise Invalid( _(u'error_title_or_file_required', default=u'Either the title or the file is ' 'required.'))
class IOGMail(form.Schema): """Opengever specific behavior, which add a title Field to the form. """ form.fieldset( u'common', label=base_mf(u'fieldset_common', u'Common'), fields=[u'title', 'original_message', 'message_source']) form.order_before(title='message') dexteritytextindexer.searchable('title') title = schema.TextLine( title=dossier_mf(u'label_title', default=u'Title'), required=False, ) form.mode(original_message=DISPLAY_MODE) form.read_permission(original_message='cmf.ManagePortal') form.write_permission(original_message='cmf.ManagePortal') original_message = field.NamedBlobFile( title=_(u'label_original_message', default=u'Raw *.msg message before conversion'), required=False, ) form.mode(message_source=DISPLAY_MODE) form.read_permission(message_source='cmf.ManagePortal') form.write_permission(message_source='cmf.ManagePortal') message_source = schema.Choice( title=_('label_message_source', default='Message source'), vocabulary=get_message_source_vocabulary(), required=False, )
class IAttachFile(model.Schema): attach = namedfile.NamedBlobFile( title=_(u'label_attachfile', default=u'attach file below content body'), description=_(u'help_attachfile', default=u''), required=False, )
class IPdfFile(model.Schema): """ Marker interfce and Dexterity Python Schema for Promotion """ # directives.omitted('title') title = schema.TextLine( title=_(u'Title'), # description=u"", required=False, defaultFactory=request_title, ) description = schema.Text( title=_(u'Description'), # description=u"", required=False) file = namedfile.NamedBlobFile( title=_(u'File'), required=True, constraint=isValidFileType, # primary=True, ) model.primary('file') directives.omitted('thumbfile') thumbfile = namedfile.NamedBlobImage( title=_(u'ImageThumb'), required=False, )
class IAudio(model.Schema): # main file will always be converted to mp4 form.widget(audio_file=StreamNamedFileFieldWidget) model.primary('audio_file') audio_file = namedfile.NamedBlobFile( title=_(u"Audio File"), description=u"", required=True, constraint=valid_audio ) form.omitted('metadata') metadata = schema.Text( required=False ) transcript = RichText( title=_(u"Transcript"), default_mime_type='text/html', output_mime_type='text/html', allowed_mime_types=('text/html', 'text/plain'), default=u"", required=False )
class IDynamicAnalysisSpec(model.Schema): """Dynamic Analysis Specification """ specs_file = namedfile.NamedBlobFile( title=_(u"Specification File"), description=_(u"Only Excel files supported"), required=True) @invariant def validate_sepecs_file(data): """Checks the Excel file contains the required header columns """ fd = StringIO(data.specs_file.data) try: xls = load_workbook(fd) except (InvalidFileException, TypeError): raise Invalid(_( "Invalid specifications file detected. " "Please upload an Excel spreadsheet with at least " "the following columns defined: '{}'" .format(", ".join(REQUIRED_COLUMNS)))) try: header = map(lambda c: c.value, xls.worksheets[0].rows[0]) except IndexError: raise Invalid( _("First sheet does not contain a valid column definition")) for col in REQUIRED_COLUMNS: if col not in header: raise Invalid(_("Column '{}' is missing".format(col)))
class IWorkbookForm(interface.Interface): """ A form for importing content from one or more spreadsheets. """ workbook = namedfile.NamedBlobFile( title=u'Workbook File to Import', description=u'Upload a spreadsheet file to import')
class ITrack(model.Schema): """Marker interfce and Dexterity Python Schema for Track""" audiofile = namedfile.NamedBlobFile( title=_("Audio"), description=_("mp3, oga, ogg, wav"), required=True, )
class IFileField(model.Schema): """We need to override the default file field so that we can interpret an empty string as NOT_CHANGED. """ file = namedfile.NamedBlobFile( title=u'File', description=u'', required=False, )
class IMappaSimulazione(model.Schema): """ Marker interface and Dexterity Python Schema for MappaSimulazione """ # If you want, you can load a xml model created TTW here # and customize it in Python: # model.load('mappa_simulazione.xml') # directives.widget(level=RadioFieldWidget) # level = schema.Choice( # title=_(u'Sponsoring Level'), # vocabulary=LevelVocabulary, # required=True # ) # text = RichText( # title=_(u'Text'), # required=False # ) # url = schema.URI( # title=_(u'Link'), # required=False # ) # fieldset('Images', fields=['logo', 'advertisement']) # logo = namedfile.NamedBlobImage( # title=_(u'Logo'), # required=False, # ) start = schema.Date( title=u'First day of the conference', required=False, default=date(2019, 10, 21), ) end = schema.Date( title=u'First day of the conference', required=False, default=date(2019, 10, 21), ) file_simulazione = namedfile.NamedBlobFile( title=_(u'File di simulazione (file SWMM5)'), required=True, ) directives.read_permission(notes='cmf.ManagePortal') directives.write_permission(notes='cmf.ManagePortal') notes = RichText( title=_(u'Secret Notes (only for site-admins)'), required=False )
class IFileAttachment(form.Schema): """ Marker/Form interface for File Attachment """ # -*- Your Zope schema definitions here ... -*- file = namedfile.NamedBlobFile( title=_(u"File Attachment"), description=u"", required=False, )
class IECH0147ImportFormSchema(Schema): message = namedfile.NamedBlobFile( title=_(u'label_message', default=u'File'), description=_(u'help_message', default=u'A ZIP file containing an eCH-147 message.'), required=True, ) directives.widget('responsible', KeywordFieldWidget, async=True) responsible = schema.Choice( title=_(u'label_reponsible', default=u'Responsible'), description=_(u'help_responsible', default=u'Responsible for dossiers created by eCH-0147 ' 'import.'), source=AllUsersSourceBinder(), required=True, )
class IVideo(Schema): """ The IVideo interface""" title = schema.TextLine( title=_(u"Title"), required=False, ) description = schema.Text( title=_(u"Description"), required=False, missing_value=u'', ) youtube_embed_url = schema.TextLine( title=_(u"Youtube embed URL"), description= _(u"Sie können entweder eine Youtube video URL oder eine Playlist hinzufügen" # noqa ), required=True, ) youtube_image = namedfile.NamedBlobImage( title=u'Youtube Preview Image', required=False, ) dexteritytextindexer.searchable('transcript_description') transcript_description = schema.Text( title=_(u"Transkript Beschreibung"), required=False, ) dexteritytextindexer.searchable('transcript_title') transcript_title = schema.TextLine( title=_(u"Transkript Titel"), required=False, ) transcript_file = namedfile.NamedBlobFile( title=_(u'Transkript Datei'), required=False, )
class IAudio(model.Schema): """ The IAudio interface""" title = schema.TextLine( title=_(u"Titel"), description=u'Der Titel wird oberhalb des Audio-Players angezeigt.', required=False, ) model.primary('file') file = namedfile.NamedBlobFile( title=_(u'label_file', default=u'Audio-Datei (.mp3)'), description=u'Die Audio-Datei muss das .mp3-Format haben.', required=True, ) image = namedfile.NamedBlobImage( title=_(u'label_image', default=u'Bild'), description=u'Dieses Bild wird oberhalb des Audio-Players angezeigt.', required=False, )
class IMaterial(model.Schema): title = schema.TextLine( title=_(u"Title"), required=True, ) version = schema.TextLine( title=_(u"Version"), required=False, ) price = schema.Int( title=_(u"Price"), required=True, ) discountPrice = schema.Int( title=_(u"Discount Price"), required=False, ) unit = schema.TextLine( title=_(u"Unit"), required=False, ) code = schema.TextLine( title=_(u"Code"), required=False, ) cover = namedfile.NamedBlobImage( title=_(u'Cover'), required=False, ) copyright = namedfile.NamedBlobFile( title=_(u'Copyright'), required=False, )
class IPrepare(model.Schema): title = schema.TextLine( title=_(u'Title'), required=True, ) description = schema.Text( title=_(u'Agenda'), required=False, ) # file = namedfile.NamedFile( file = namedfile.NamedBlobFile( title=_(u'Teaching material'), required=False, ) """ video = RichText( title=_(u'Course Video'), required=False, ) """ embeded = schema.Text( title=_(u'Embeded Code'), required=False, ) onCall = schema.Text( title=_(u'Roll Call, On Call'), required=False, ) notOnCall = schema.Text( title=_(u'Roll Call, Not On Call'), required=False, )
class IBlobFile(model.Schema): file = field.NamedBlobFile(title=u'File')
class IRisk(model.Schema, IRichDescription, IBasic): """A possible risk that can be present in an organisation.""" title = schema.TextLine( title=_("label_statement", default="Affirmative statement"), description=_( "help_statement", default="This is a short affirmative statement about a " "possible risk (e.g. The building is well maintained.)", ), required=True, ) directives.widget(title="euphorie.content.risk.TextLines4Rows") directives.order_before(title="*") problem_description = schema.TextLine( title=_("label_problem_description", default="Negative statement"), description=_( "help_problem_description", default="This is the inverse of the affirmative " "statement (e.g. The building is not well maintained.)", ), required=True, ) directives.widget( problem_description="euphorie.content.risk.TextLines4Rows") directives.order_after(problem_description="title") description = HtmlText( title=_("label_description", default="Description"), description=_( "help_risk_description", default="Describe the risk. Include any relevant information " "that may be helpful for the end-user.", ), required=True, ) directives.widget( description="plone.app.z3cform.wysiwyg.WysiwygFieldWidget") directives.order_after(description="problem_description") existing_measures = TextLinesWithBreaks( title=_( "deprecated_label_existing_measures", default="Measures that are already in place (Only shown here for " "reference! Use the “Add Measure” button on the Risk for adding " "measures that are shown to the user during Identification.)", ), description=_( "help_existing_measures", default="Use this field to define (common) measures that the " "user might have already implemented. " "Separate measures with a line break (Enter). The user will be " "able to deselect those measures that are not applicable to their" "situation.", ), required=False, ) directives.widget(existing_measures="euphorie.content.risk.TextLines8Rows") directives.order_after(existing_measures="description") legal_reference = HtmlText( title=_("label_legal_reference", default="Legal and policy references"), required=False, ) directives.widget( legal_reference="plone.app.z3cform.wysiwyg.WysiwygFieldWidget") directives.order_after(legal_reference="description") model.fieldset( "identification", label=_("header_identification", default="Identification"), fields=["show_notapplicable"], ) show_notapplicable = schema.Bool( title=_("label_show_notapplicable", default="Show `not applicable' option"), description=_( "help_show_notapplicable", default="Offer a `not applicable' option in addition " "to the standard yes/no options.", ), default=False, ) type = schema.Choice( title=_("label_risk_type", default="Risk type"), description=_( "help_risk_type", default='"Priority risk" is one of the high risks in the ' 'sector. "Risk" is related to the workplace or to the work ' 'carried out. "Policy" refers to agreements, procedures, ' "and management decisions.", ), vocabulary=SimpleVocabulary([ SimpleTerm("top5", title=_("risktype_top5", default="Priority risk")), SimpleTerm("risk", title=_("risktype_risk", default="Risk")), SimpleTerm("policy", title=_("risktype_policy", default="Policy")), ]), default="risk", required=True, ) depends("risk_always_present", "type", "==", "risk") risk_always_present = schema.Bool( title=_("label_risk_always_present", default="Risk is always present"), description=_( "description_risk_always_present", default='If selected, the user will not be able to answer "Yes" or ' '"No", since the risk is considered to be always present. The ' "Evaluation and Action Plan will behave in the same way as for " "regular risks.", ), required=False, default=False, ) depends("evaluation_method", "type", "==", "risk") evaluation_method = schema.Choice( title=_("label_evaluation_method", default="Evaluation method"), description=_( "help_evaluation_method", default="Select 'estimated' if calcuation is not necessary " "or not possible.", ), vocabulary=SimpleVocabulary([ SimpleTerm("direct", title=_("evalmethod_direct", default="Estimated")), SimpleTerm( "calculated", title=_("evalmethod_calculated", default="Calculated"), ), SimpleTerm("fixed", title=_("evalmethod_fixed", default="Skip evaluation")), ]), default="calculated", required=False, ) depends("fixed_priority", "type", "==", "risk") depends("fixed_priority", "evaluation_method", "==", "fixed") fixed_priority = schema.Choice( title=_("report_timeline_priority", default="Priority"), vocabulary=SimpleVocabulary([ SimpleTerm("low", title=_("priority_low", default="Low")), SimpleTerm("medium", title=_("priority_medium", default="Medium")), SimpleTerm("high", title=_("priority_high", default="High")), ]), required=False, default="low", ) depends("default_priority", "type", "==", "risk") depends("default_priority", "evaluation_method", "==", "direct") default_priority = schema.Choice( title=_("label_default_priority", default="Default priority"), description=_( "help_default_priority", default="You can help the end-user by selecting a default " "priority. He/she can still change the priority.", ), vocabulary=SimpleVocabulary([ SimpleTerm("none", title=_("no_default", default="No default")), SimpleTerm("low", title=_("priority_low", default="Low")), SimpleTerm("medium", title=_("priority_medium", default="Medium")), SimpleTerm("high", title=_("priority_high", default="High")), ]), required=False, default="low", ) model.fieldset( "main_image", label=_("header_main_image", default="Main image"), description=_( "intro_main_image", default="The main image will get a more prominent position " "in the client than the other images.", ), fields=["image", "caption"], ) image = filefield.NamedBlobImage( title=_("label_image", default="Image file"), description=_( "help_image_upload", default="Upload an image. Make sure your image is of format " "png, jpg or gif and does not contain any special " "characters. The minimum size is 1000 (width) x 430 (height) pixels.", ), required=False, ) caption = schema.TextLine(title=_("label_caption", default="Image caption"), required=False) model.fieldset( "secondary_images", label=_("header_secondary_images", default="Secondary images"), fields=[ "image2", "caption2", "image3", "caption3", "image4", "caption4" ], ) image2 = filefield.NamedBlobImage( title=_("label_image", default="Image file"), description=_( "help_image_upload", default="Upload an image. Make sure your image is of format " "png, jpg or gif and does not contain any special " "characters. The minimum size is 1000 (width) x 430 (height) pixels.", ), required=False, ) caption2 = schema.TextLine(title=_("label_caption", default="Image caption"), required=False) image3 = filefield.NamedBlobImage( title=_("label_image", default="Image file"), description=_( "help_image_upload", default="Upload an image. Make sure your image is of format " "png, jpg or gif and does not contain any special " "characters. The minimum size is 1000 (width) x 430 (height) pixels.", ), required=False, ) caption3 = schema.TextLine(title=_("label_caption", default="Image caption"), required=False) image4 = filefield.NamedBlobImage( title=_("label_image", default="Image file"), description=_( "help_image_upload", default="Upload an image. Make sure your image is of format " "png, jpg or gif and does not contain any special " "characters. The minimum size is 1000 (width) x 430 (height) pixels.", ), required=False, ) caption4 = schema.TextLine(title=_("label_caption", default="Image caption"), required=False) model.fieldset( "additional_content", label=_("header_additional_content", default="Additional content"), description=_( "intro_additional_content", default="Attach any additional content you consider helpful " "for the user", ), fields=[ "file1", "file1_caption", "file2", "file2_caption", "file3", "file3_caption", "file4", "file4_caption", ], ) file1 = filefield.NamedBlobFile( title=_("label_file", default="Content file"), description=_( "help_content_upload", default="Upload a file that contains additional information, " "like a PDF, Word document or spreadsheet. Optionally provide " "a descriptive caption for your file.", ), required=False, ) file1_caption = schema.TextLine(title=_("label_file_caption", default="Content caption"), required=False) file2 = filefield.NamedBlobFile( title=_("label_file", default="Content file"), description=_( "help_content_upload", default="Upload a file that contains additional information, " "like a PDF, Word document or spreadsheet. Optionally provide " "a descriptive caption for your file.", ), required=False, ) file2_caption = schema.TextLine(title=_("label_file_caption", default="Content caption"), required=False) file3 = filefield.NamedBlobFile( title=_("label_file", default="Content file"), description=_( "help_content_upload", default="Upload a file that contains additional information, " "like a PDF, Word document or spreadsheet. Optionally provide " "a descriptive caption for your file.", ), required=False, ) file3_caption = schema.TextLine(title=_("label_file_caption", default="Content caption"), required=False) file4 = filefield.NamedBlobFile( title=_("label_file", default="Content file"), description=_( "help_content_upload", default="Upload a file that contains additional information, " "like a PDF, Word document or spreadsheet. Optionally provide " "a descriptive caption for your file.", ), required=False, ) file4_caption = schema.TextLine(title=_("label_file_caption", default="Content caption"), required=False)
class ITumour(Interface): sample_no = schema.TextLine( title=_(u"Sample number"), required=True, ) barcode = schema.TextLine( title=_(u"Barcode"), required=False, ) name = schema.TextLine( title=_(u"Name"), required=True, ) sex = schema.TextLine( title=_(u"Sex"), required=True, ) age = schema.Int( title=_(u"Age"), min=0, max=200, required=True, ) inspection_item = schema.TextLine( title=_(u"Inspection item"), required=True, ) inspection_method = schema.TextLine( title=_(u"Inspection method"), required=True, ) submission_hospital = schema.TextLine( title=_(u"Submission hospital"), required=False, ) submission_department = schema.TextLine( title=_(u"Submission department"), required=False, ) submission_doctor = schema.TextLine( title=_(u"Submission doctor"), required=False, ) pathological_diagnosis = schema.TextLine( title=_(u"Pathological diagnosis"), required=False, ) pathological_no = schema.TextLine( title=_(u"Pathological number"), required=False, ) treatment_situation = schema.List( title=_(u"Treatment situation"), required=False, value_type=schema.Choice( title=_(u"Treatment"), vocabulary="gene.tumour.vocabulary.treatment_situation", required=True), ) received_operator = schema.TextLine( title=_(u"Received operator"), required=False, ) received_phone = schema.TextLine( title=_(u"Received phone"), required=False, ) received_address = schema.TextLine( title=_(u"Received address"), required=False, ) sample_type = schema.TextLine( title=_(u"Sample type"), required=True, ) sampling_time = schema.Datetime( title=_(u"Sampling time"), constraint=validate_time, required=False, ) received_time = schema.Datetime( title=_(u"Received time"), constraint=validate_time, required=False, ) sample_size = schema.TextLine( title=_(u"Sample size "), required=False, ) sample_note = schema.TextLine( title=_(u"Sample note"), required=False, ) sample_source = schema.TextLine( title=_(u"Sample source"), required=False, ) tcc_tcp = schema.Float( title=_(u"TCC/TCP"), description=_(u"Glass inspection" u"(Percentage of tumor cells/tumor cells)"), required=False, min=0.0, max=1.00, ) task_no = schema.TextLine( title=_(u"Task no"), required=False, ) separation_time = schema.Datetime( title=_(u"Separation time"), constraint=validate_time, required=False, ) separation_operator = schema.TextLine( title=_(u"Separation operator"), required=False, ) plasma_location = schema.TextLine( title=_(u"Plasma location"), required=False, ) separation_note = schema.TextLine( title=_(u"Plasma separation note"), required=False, ) extraction_time = schema.Datetime( title=_(u"Extraction time"), constraint=validate_time, required=True, ) na_extraction_type = schema.List( title=_(u"NA Extraction Type"), required=True, value_type=schema.Choice( title=_(u"NA type"), vocabulary="gene.tumour.vocabulary.na_types", required=True), ) na_plasma_volume = schema.Float( title=_(u"NA plasma volume(ml)"), min=0.0, required=False, ) na_concentration = schema.Float( title=_(u"NA concentration (NG/UL)"), min=0.0, required=False, ) absorbance = schema.Float( title=_(u"Absorbance 260/280"), min=0.0, required=False, ) na_kit_no = schema.TextLine( title=_(u"NA extraction kit lot number"), required=False, ) na_operator = schema.TextLine( title=_(u"NA extracting operator"), required=False, ) library_time = schema.Datetime( title=_(u"Library construction time"), constraint=validate_time, required=True, ) library_barcode = schema.TextLine( title=_(u"Library barcode"), required=False, ) library_concentration = schema.Float( title=_(u"Library concentration (NG/UL)"), min=0.0, required=False, ) library_operator = schema.TextLine( title=_(u"Library construction operator"), required=False, ) library_kit_no = schema.TextLine( title=_(u"Library kit lot number"), required=False, ) library_location = schema.TextLine( title=_(u"Library location"), required=False, ) capture_concentration = schema.Float( title=_(u"Post capture concentration (NG/UL)"), min=0.0, required=False, ) template_time = schema.Datetime( title=_(u"Template preparation time"), constraint=validate_time, required=True, ) template_operator = schema.TextLine( title=_(u"Template preparation operator"), required=False, ) template_kit_no = schema.TextLine( title=_(u"Template kit lot number"), required=False, ) ot_instrument_no = schema.TextLine( title=_(u"OT instrument number"), required=False, ) es_instrument_no = schema.TextLine( title=_(u"ES instrument number"), required=False, ) sequencing_time = schema.Datetime( title=_(u"Sequencing time"), constraint=validate_time, required=True, ) sequencing_operator = schema.TextLine( title=_(u"Sequencing operator"), required=False, ) sequencing_server = schema.TextLine( title=_(u"Sequencer number"), required=False, ) sequencing_ip = schema.TextLine( title=_(u"Sequencing IP"), required=False, ) sequencing_filename = schema.TextLine( title=_(u"Sequencing filename"), required=False, ) result = schema.Choice( title=_(u"Result"), required=False, vocabulary=u"gene.tumour.vocabulary.analysis_result", ) result_info = schema.TextLine( title=_(u"Result information"), required=False, ) quality_file = field.NamedBlobFile( title=_(u"Quality control document"), required=False, ) result_file = field.NamedBlobFile( title=_(u"Result detail"), required=False, ) steps = schema.Choice( title=_(u"Steps"), required=True, default=u'step1', vocabulary=u"gene.tumour.vocabulary.progress_steps", ) @invariant def steps_date_valid(obj): steps_date = [('sampling_time', 'received_time'), ('separation_time', 'extraction_time'), ('library_time',), ('template_time', 'sequencing_time')] steps_date.reverse() for index, names in enumerate(steps_date): prev_date = [] [prev_date.extend(item) for item in steps_date[index + 1:]] for after in names: after_value = getattr(obj, after, None) if after_value is not None: for prev in prev_date: prev_value = getattr(obj, prev, None) if (prev_value is not None and isinstance(prev_value, datetime.date) and isinstance(after_value, datetime.date) and prev_value > after_value): raise Invalid( _(u'After steps time must be greater than ' u'or equal to the previous steps time'))
class IVideo(model.Schema): form.omitted('image') image = namedfile.NamedBlobImage( title=_(u"Cover Image"), description=u"", required=False, ) # main file will always be converted to mp4 form.widget(video_file=StreamNamedFileFieldWidget) model.primary('video_file') video_file = namedfile.NamedBlobFile( title=_(u"Video File"), description=u"", required=False, constraint=valid_video ) if youtube: upload_video_to_youtube = schema.Bool( title=_(u'Upload to youtube'), description=_(u'Requires having youtube account connected. ' u'Videos that are private will remain unlisted on YouTube. ' u'Once published, video will be made public on YouTube. '), required=False, default=False) form.omitted(IAddForm, 'video_file_ogv') form.omitted(IEditForm, 'video_file_ogv') form.widget(video_file_ogv=StreamNamedFileFieldWidget) video_file_ogv = namedfile.NamedBlobFile( required=False, ) form.omitted(IAddForm, 'video_file_webm') form.omitted(IEditForm, 'video_file_webm') form.widget(video_file_webm=StreamNamedFileFieldWidget) video_file_webm = namedfile.NamedBlobFile( required=False, ) youtube_url = schema.TextLine( title=_(u"Youtube URL"), description=_(u"Alternatively, you can provide a youtube video url. " u"If this is specified, video file will be ignored. " u"If video was uploaded to youtube, this field will be filled " u"with video url."), required=False ) retrieve_thumb = schema.Bool( title=_(u'Retrieve original thumbnail from youtube'), description=_(u"If checked, try to download original thumbnail from " u"youtube into this video."), required=False, default=False) @invariant def validate_videos(data): if not data.video_file and not data.youtube_url: raise Invalid("Must specify either a video file or youtube url") width = schema.Int( title=_(u"Width"), defaultFactory=getDefaultWidth ) height = schema.Int( title=_(u"Height"), defaultFactory=getDefaultHeight ) subtitle_file = namedfile.NamedBlobFile( title=_(u"Subtitle file"), description=_(u"Provide a file in srt format"), required=False ) form.omitted('metadata') metadata = schema.Text( required=False ) transcript = RichText( title=_(u"Transcript"), default_mime_type='text/html', output_mime_type='text/html', allowed_mime_types=('text/html', 'text/plain'), default=u"", required=False )
class ISchemaWithNamedBlobFile(Interface): field = field.NamedBlobFile()
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_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_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 INoteSchemaPrimary(form.Schema): form.primary('blob') blob = field.NamedBlobFile( title=u'blobfile', required=False, )
class IOdtFile(model.Schema): odtFile = namedfile.NamedBlobFile( title=(u'Odt file'), description=(u'Conver ms office to odt ffile'), required=False, )
class IPatrimoine(model.Schema): """Marker interface for Patrimoine""" # model.load("patrimoine.xml") numero_inventaire = schema.TextLine(title=(u"Numéro d'inventaire"), required=False) informations = RichText(title=(u"Informations"), required=False) contenus_lies = RelationList( title=u"Contenus liés", default=[], value_type=RelationChoice( title=(u"Relation Choice"), source=CatalogSource(portal_type=("Folder", "patrimoine")), ), required=False, ) fichier_pdf = namedfile.NamedBlobFile(title=(u"Fichier PDF"), required=False, constraint=fileSize) fieldset( "Publication", fields=[ "auteur", "lieu", "editeur", "date", "nombre_de_pages", "format_1", "illustre", ], ) auteur = schema.TextLine(title=(u"Auteur"), required=False) lieu = schema.TextLine(title=(u"Lieu"), required=False) editeur = schema.TextLine(title=(u"Éditeur"), required=False) form.widget("date", TextDateFieldWidget) date = schema.TextLine(title=(u"Date"), required=False) nombre_de_pages = schema.TextLine(title=(u"Nombre de pages"), required=False) format_1 = schema.TextLine(title=(u"Format"), required=False) illustre = schema.Bool(title=(u"Illustré"), required=False) # form.widget(illustre=RadioFieldWidget) fieldset( "Carte postale", fields=["nom_de_rue", "couleur"], ) nom_de_rue = schema.TextLine(title=(u"Nom de rue"), required=False) couleur = schema.Choice( title=(u"Couleur"), required=False, vocabulary="library.core.vocabularies.colors_vocabulary", ) fieldset( "Registre", fields=[ "nom_prenom_1", "nom_du_conjoint_1", "evenement_date_1", "date_evenement_1", "nom_prenom_2", "nom_du_conjoint_2", "evenement_date_2", "date_evenement_2", "nom_prenom_3", "nom_du_conjoint_3", "evenement_date_3", "date_evenement_3", "nom_prenom_4", "nom_du_conjoint_4", "evenement_date_4", "date_evenement_4", ], ) nom_prenom_1 = schema.TextLine(title=(u"Nom prénom 1"), required=False) nom_du_conjoint_1 = schema.TextLine(title=(u"Nom du conjoint 1"), required=False) evenement_date_1 = schema.Choice( title=(u"Evénement lié à la date 1"), required=False, vocabulary="library.core.vocabularies.eventsdate_vocabulary", ) date_evenement_1 = schema.TextLine(title=(u"Date événement 1"), description="(jj/mm/aaaa)", required=False) nom_prenom_2 = schema.TextLine(title=(u"Nom prénom 2"), required=False) nom_du_conjoint_2 = schema.TextLine(title=(u"Nom du conjoint 2"), required=False) evenement_date_2 = schema.Choice( title=(u"Evénement lié à la date 2"), required=False, vocabulary="library.core.vocabularies.eventsdate_vocabulary", ) date_evenement_2 = schema.TextLine(title=(u"Date événement 2"), description="(jj/mm/aaaa)", required=False) nom_prenom_3 = schema.TextLine(title=(u"Nom prénom 3"), required=False) nom_du_conjoint_3 = schema.TextLine(title=(u"Nom du conjoint 3"), required=False) evenement_date_3 = schema.Choice( title=(u"Evénement lié à la date 3"), required=False, vocabulary="library.core.vocabularies.eventsdate_vocabulary", ) date_evenement_3 = schema.TextLine(title=(u"Date événement 3"), description="(jj/mm/aaaa)", required=False) nom_prenom_4 = schema.TextLine(title=(u"Nom prénom 4"), required=False) nom_du_conjoint_4 = schema.TextLine(title=(u"Nom du conjoint 4"), required=False) evenement_date_4 = schema.Choice( title=(u"Evénement lié à la date 4"), required=False, vocabulary="library.core.vocabularies.eventsdate_vocabulary", ) date_evenement_4 = schema.TextLine(title=(u"Date événement 4"), description="(jj/mm/aaaa)", required=False) fieldset("Média", fields=["auteur_du_media", "duree", "couleur_du_media"]) auteur_du_media = schema.TextLine(title=(u"Auteur du média"), required=False) duree = schema.TextLine(title=(u"Durée"), required=False) couleur_du_media = schema.Choice( title=(u"Couleur du média"), required=False, vocabulary="library.core.vocabularies.colors_vocabulary", ) fieldset( "Bien et PPPW", fields=[ "group_identification", "nature_du_bien", "lieu_dit", "appellation_courante", "primary_category", "secondary_category", "autre", "group_localisation", "provinces", "municipal_entity", "group_owner", "owner_datas", "owner_name", "owner_address", "owner_zip_code", "owner_entity", "owner_email", "owner_phone", "group_item_status", "item_status", "group_item_description", "descriptif", "dimensions", "materiaux", "inscription_datation", "urban_context", "public_visibility", "direct_reachability", "group_item_conservation", "item_state", "noted_degradation", "reallocation_project", "group_item_history", "fonction_passee_et_actuelle", "group_item_notes_and_comments", "remarques_commentaires", ], ) # 1. Identification de l'élément form.widget("group_identification", TextTitleFieldWidget) group_identification = schema.TextLine( title=(u"Identification de l’élément"), required=False) nature_du_bien = schema.TextLine(title=(u"Nature du bien"), required=False) lieu_dit = schema.TextLine(title=(u"Lieu dit"), required=False) appellation_courante = schema.TextLine(title=(u"Appellation courante"), required=False) form.widget("primary_category", TextTitleFieldWidget) primary_category = schema.TextLine( title=(u"Catégorie principale"), description= (u'La catégorie principale est renseignée sous l\'onglet "Catégorisation"' ), required=False, ) form.widget("secondary_category", TextTitleFieldWidget) secondary_category = schema.TextLine( title=(u"Catégorie secondaire"), description= (u'La catégorie secondaire est renseignée sous l\'onglet "Catégorisation"' ), required=False, ) autre = schema.Text(title=(u"Autre..."), required=False) # 2. Localisation de l'élément form.widget("group_localisation", TextTitleFieldWidget) group_localisation = schema.TextLine(title=(u"Localisation de l’élément"), required=False) provinces = schema.Choice( title=("Province"), required=False, vocabulary="library.core.vocabularies.provinces_vocabulary", default=None, ) municipal_entity = schema.Choice( title=(u"Entité"), required=False, vocabulary="library.core.vocabularies.municipalentities_vocabulary", default=None, ) # 3. Données relatives au propriétaire form.widget("group_owner", TextTitleFieldWidget) group_owner = schema.TextLine(title=(u"Données relatives au propriétaire"), required=False) form.read_permission(owner_datas="cmf.ModifyPortalContent") form.widget("owner_datas", RadioFieldWidget) owner_datas = schema.Choice( title=(u"Type de propriété"), required=False, values=["Privé", "Publique", "Statut inconnu"], default=None, ) form.read_permission(owner_name="cmf.ModifyPortalContent") owner_name = schema.TextLine(title=(u"Nom-Prénom / Nom de l’organisme"), required=False) form.read_permission(owner_address="cmf.ModifyPortalContent") owner_address = schema.TextLine(title=(u"Adresse"), required=False) form.read_permission(owner_zip_code="cmf.ModifyPortalContent") owner_zip_code = schema.TextLine(title=(u"Code postal"), required=False) form.read_permission(owner_entity="cmf.ModifyPortalContent") owner_entity = schema.TextLine(title=(u"Entité/Commune"), required=False) form.read_permission(owner_email="cmf.ModifyPortalContent") owner_email = schema.TextLine(title=(u"Adresse e-mail"), required=False) form.read_permission(owner_phone="cmf.ModifyPortalContent") owner_phone = schema.TextLine(title=(u"Téléphone / Gsm"), required=False) # 4. Statut de l’élément form.widget("group_item_status", TextTitleFieldWidget) group_item_status = schema.TextLine(title=(u"Statut de l’élément"), required=False) form.widget(item_status=MultiSelect2FieldWidget) item_status = schema.List( title=(u"Statuts"), value_type=schema.Choice( title=(u"District(s) concerned"), values=[ u"Monument", u"Site", u"Ensemble architectural", u"Zone de protection", safe_unicode(u"IPIC (repris à l'inventaire régional)"), ], ), required=False, ) # 5. Description de l’élément form.widget("group_item_description", TextTitleFieldWidget) group_item_description = schema.TextLine( title=(u"Description de l’élément"), required=False) descriptif = schema.Text(title=(u"Descriptif"), required=False) dimensions = schema.TextLine(title=(u"Dimensions"), required=False) materiaux = schema.TextLine(title=(u"Matériaux"), required=False) inscription_datation = schema.Text(title=(u"Inscription(s) - Datation"), required=False) urban_context = schema.Text(title=(u"Contexte urbanistique et abords"), required=False) form.widget("public_visibility", RadioFieldWidget) public_visibility = schema.Bool( title=(u"Visibilité depuis le domaine public"), required=False) form.widget("direct_reachability", RadioFieldWidget) direct_reachability = schema.Bool(title=(u"Accessibilité directe"), required=False) # 6. Etat de conservation de l’élément form.widget("group_item_conservation", TextTitleFieldWidget) group_item_conservation = schema.TextLine( title=(u"Etat de conservation de l’élément"), required=False) # quid id=etat. form.widget("owner_datas", RadioFieldWidget) item_state = schema.Choice( title=(u"Etat général de l’élément"), required=False, values=["Bon", "Moyen", "Mauvais"], default=None, ) noted_degradation = schema.Text(title=(u"Dégradation constatée"), required=False) form.widget("reallocation_project", RadioFieldWidget) reallocation_project = schema.Bool( title=(u"Projet de conservation/ Réaffectation en cours"), required=False) # 7. Historique/Anecdotes form.widget("group_item_history", TextTitleFieldWidget) group_item_history = schema.TextLine(title=(u"Historique/Anecdotes"), required=False) fonction_passee_et_actuelle = schema.Text( title=(u"Fonction(s) passée(s) et actuelle(s)"), required=False) # 8. Remarques form.widget("group_item_notes_and_comments", TextTitleFieldWidget) group_item_notes_and_comments = schema.TextLine(title=(u"Remarques"), required=False) remarques_commentaires = schema.Text(title=(u"Remarques et commentaires"), required=False)