def getSampleVocabulary(self): """Get a sample vocabulary """ return atapi.DisplayList( (("sample", _(u"Sample value 1"),), ("sample2", _(u"Sample value 2"),),))
def getSkillLevels(self): return atapi.DisplayList(( ( "bad", _(u"Bad"), ), ( "good", _(u"Good"), ), ))
class InvalidDataGridDemoType(atapi.BaseContent): """ DataGridField declaration with errors Errors should be detected run-time, with helpful error messages. This class is missing column definition select_sample in DataGridWidget """ security = ClassSecurityInfo() schema = atapi.BaseSchema + atapi.Schema((DataGridField( 'DemoField', searchable=True, columns=("column1", "column2", "select_sample"), widget=DataGridWidget(columns={ 'column1': Column(_(u"Toholampi city rox")), 'column2': Column(_(u"My friendly name")), }, ), ), )) meta_type = portal_type = archetype_name = 'InvalidDataGridDemoType'
def __call__(self, value, *args, **kwargs): field = kwargs['field'] if not isinstance(field.widget, DataGridWidget): # can't apply return True required_cols = [] for cid, cdef in field.widget.columns.items(): if cdef.required: required_cols.append(cid) if not required_cols: return True missing_columns = [] for row in value: if not row.get('orderindex_', '').isdigit(): # skipping the "template_row_marker" when on edit continue for cname, cvalue in row.items(): if cname in required_cols and not cvalue and cname not in missing_columns: missing_columns.append(cname) if missing_columns: missing_column_labels = [] for cname in missing_columns: # Try to get a translated label. try: cdef = field.widget.columns.get(cname) label = cdef.getLabel(context=kwargs.get('REQUEST')) except: # fall back to the column id. label = cname missing_column_labels.append(label) return recursiveTranslate(_('missing_columns', default = u"The following columns are required but not all rows " u"have been filled: ${columns}", mapping = {'columns': ', '.join(missing_column_labels)}) , **kwargs) return True
def getSkillLevels(self): return atapi.DisplayList( (("bad", _(u"Bad"),), ("good", _(u"Good"),), ))
class DataGridDemoType2(atapi.BaseContent): """ Demo for different DataGridWidget columns This class is used in unit testing Check manual that: - Rows are inserted automatically when a value is filled in - Select column has sample 2 as a default value """ security = ClassSecurityInfo() schema = atapi.BaseSchema + atapi.Schema(( DataGridField('AutoInsertDemoField', searchable=True, # One unit tests checks whether text search works columns=("column1", "column2", "column3"), allow_empty_rows = False, # Must be false to make auto insert feature perform correctly widget = DataGridWidget( auto_insert = True, description="Automatically insert new rows when the last row is being filled. When you edit the last row, a new row is created automatically.", description_msgid='DataGridDemoType_help_AutoInsertRows', i18n_domain='datagridfield', columns={ }, ), ), DataGridField('DemoField2', searchable=True, # One unit tests checks whether text search works columns=("column1", "column2", "select_sample"), widget = DataGridWidget( description="Set default values for created rows. Choose SelectColumn value from the default dictionary", description_msgid='DataGridDemoType_help_DemoField2', i18n_domain='datagridfield', columns={ 'column1' : Column(_(u"Toholampi city rox"), required=True, col_description=_(u"Go Toholampi or go home.")), 'column2' : Column(_(u"My friendly name"), default=_(u"Some default text")), 'select_sample' : SelectColumn(_(u"Friendly name"), vocabulary="getSampleVocabulary", default="sample2") }, ), ), DataGridField('DemoField3', columns=("column1", "column2"), widget = DataGridWidget( description="Test radio and checkbox columns", description_msgid='DataGridDemoType_help_DemoField3', i18n_domain='datagridfield', columns={ 'column1' : RadioColumn("Radio column", vocabulary="getSampleVocabulary"), 'column2' : CheckboxColumn("Checkbox column") }, ), ), DataGridField('DemoField4', columns=("text_column", "help_column"), widget = DataGridWidget( description="Help column test", description_msgid='DataGridDemoType_help_DemoField4', i18n_domain='datagridfield', columns={ 'text_column' : Column("Text column"), # Help is help.pt 'help_column' : HelpColumn("Help", _(u"See help here"), "help", "info.png") }, ), ), DataGridField('DemoField5', columns=("link_column",), widget = DataGridWidget( description="Set of links", columns={ 'link_column' : LinkColumn("Link column"), }, ), ), DataGridField('DemoField6', columns=("date_column",), widget = DataGridWidget( description="date column", columns={ 'date_column' : DateColumn("Date column"), }, ), ), DataGridField('DemoField7', columns=("datetime_column",), widget = DataGridWidget( description="datetime column", columns={ 'datetime_column' : DatetimeColumn("Datetime column"), }, ), ), DataGridField('DemoField8', columns=("datetimelocal_column",), widget = DataGridWidget( description="datetime column, local time zone", columns={ 'datetimelocal_column' : DatetimeLocalColumn("DatetimeLocal column"), }, ), ), DataGridField('DemoField9', columns=("file_column",), widget = DataGridWidget( description="file column", columns={ 'file_column' : FileColumn("File column"), }, ), ), DataGridField('DemoField10', columns=("email_column",), widget = DataGridWidget( description="email column", columns={ 'email_column' : EmailColumn("Email column"), }, ), ), DataGridField('DemoField11', columns=("color_column",), widget = DataGridWidget( description="color column", columns={ 'color_column' : ColorColumn("Color column"), }, ), ), DataGridField('DemoField12', columns=("password_column",), widget = DataGridWidget( description="password column", columns={ 'password_column' : PasswordColumn("Password column"), }, ), ), DataGridField('DemoField13', columns=("range_column",), widget = DataGridWidget( description="range column", columns={ 'range_column' : RangeColumn("Range column"), }, ), ), DataGridField('DemoField14', columns=("month_column",), widget = DataGridWidget( description="month column", columns={ 'month_column' : MonthColumn("Month column"), }, ), ), DataGridField('DemoField15', columns=("search_column",), widget = DataGridWidget( description="search column", columns={ 'search_column' : SearchColumn("Search column"), }, ), ), DataGridField('DemoField16', columns=("time_column",), widget = DataGridWidget( description="time column", columns={ 'time_column' : TimeColumn("Time column"), }, ), ), DataGridField('DemoField17', columns=("url_column",), widget = DataGridWidget( description="url column", columns={ 'url_column' : UrlColumn("Url column"), }, ), ), DataGridField('DemoField18', columns=("week_column",), widget = DataGridWidget( description="week column", columns={ 'week_column' : WeekColumn("Week column"), }, ), ), )) meta_type = portal_type = archetype_name = 'DataGridDemoType2' def getSampleVocabulary(self): """Get a sample vocabulary """ return atapi.DisplayList( (("sample", _(u"Sample value 1"),), ("sample2", _(u"Sample value 2"),),))
class FixedRowsDemoType(atapi.BaseContent): """ Demostrate fixed rows usage This class is used in unit testing """ security = ClassSecurityInfo() schema = atapi.BaseSchema + atapi.Schema(( DataGridField('DemoField', widget = DataGridWidget(), columns=('column1','column2','The third'), fixed_rows = [ FixedRow(keyColumn="column1", initialData = { "column1" : "must-exist-1", "column2" : "bbb" }), FixedRow(keyColumn="column2", initialData = { "column1" : "ddd", "column2" : "must-exist-2" }), ] ), DataGridField('RestrictedField', widget = DataGridWidget(), columns=('column1','column2','The third'), allow_insert=False, allow_delete=False, allow_reorder=False, ), DataGridField('predefinedSkills', searchable=True, columns=('skill', 'level'), fixed_rows = "getPredefinedSkillsData", allow_delete = False, allow_insert = False, allow_reorder = False, widget = DataGridWidget( label="Skills", label_msgid='DataGridDemoType_label_Skills', description="Language/technology/tool/method for which employer has special interest", description_msgid='DataGridDemoType_help_Skills', i18n_domain='datagridfield', columns= { "skill" : FixedColumn(_(u"Skill")), "level" : RadioColumn(_(u"Level"), vocabulary="getSkillLevels") } ), ), )) meta_type = portal_type = archetype_name = 'FixedRowsDemoType' def getSkillLevels(self): return atapi.DisplayList( (("bad", _(u"Bad"),), ("good", _(u"Good"),), )) def getPredefinedSkillsData(self): """ Generate fixed row key information """ skills = [ "Python", "Perl", "XML", "Java", "Plone" ] rows = [] for skill in skills: rows.append(FixedRow(keyColumn="skill", initialData={"skill" : skill, "level" : "bad"})) return rows
class DataGridDemoType2(atapi.BaseContent): """ Demo for different DataGridWidget columns This class is used in unit testing Check manual that: - Rows are inserted automatically when a value is filled in - Select column has sample 2 as a default value """ security = ClassSecurityInfo() schema = atapi.BaseSchema + atapi.Schema(( DataGridField( 'AutoInsertDemoField', searchable=True, # One unit tests checks whether text search works columns=("column1", "column2", "column3"), allow_empty_rows= False, # Must be false to make auto insert feature perform correctly widget=DataGridWidget( auto_insert=True, description= "Automatically insert new rows when the last row is being filled. When you edit the last row, a new row is created automatically.", description_msgid='DataGridDemoType_help_AutoInsertRows', i18n_domain='datagridfield', columns={}, ), ), DataGridField( 'DemoField2', searchable=True, # One unit tests checks whether text search works columns=("column1", "column2", "select_sample"), widget=DataGridWidget( description= "Set default values for created rows. Choose SelectColumn value from the default dictionary", description_msgid='DataGridDemoType_help_DemoField2', i18n_domain='datagridfield', columns={ 'column1': Column(_(u"Toholampi city rox")), 'column2': Column(_(u"My friendly name"), default=_(u"Some default text")), 'select_sample': SelectColumn(_(u"Friendly name"), vocabulary="getSampleVocabulary", default="sample2") }, ), ), DataGridField( 'DemoField3', columns=("column1", "column2"), widget=DataGridWidget( description="Test radio and checkbox columns", description_msgid='DataGridDemoType_help_DemoField3', i18n_domain='datagridfield', columns={ 'column1': RadioColumn("Radio column", vocabulary="getSampleVocabulary"), 'column2': CheckboxColumn("Checkbox column") }, ), ), DataGridField( 'DemoField4', columns=("text_column", "help_column"), widget=DataGridWidget( description="Help column test", description_msgid='DataGridDemoType_help_DemoField4', i18n_domain='datagridfield', columns={ 'text_column': Column("Text column"), # Help is help.pt 'help_column': HelpColumn("Help", _(u"See help here"), "help", "info.gif") }, ), ), )) meta_type = portal_type = archetype_name = 'DataGridDemoType2' def getSampleVocabulary(self): """Get a sample vocabulary """ return atapi.DisplayList(( ( "sample", _(u"Sample value 1"), ), ( "sample2", _(u"Sample value 2"), ), ))