14 |
14 |
15 |
15 |
16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
|
19 from pyams_file.interfaces import DELETED_FILE |
19 from pyams_i18n.interfaces.schema import II18nField, II18nTextLineField, II18nTextField, II18nFileField, II18nImageField, \ |
20 from pyams_i18n.interfaces.schema import II18nField, II18nTextLineField, II18nTextField, II18nFileField, II18nImageField, \ |
20 II18nThumbnailImageField, II18nHTMLField |
21 II18nThumbnailImageField, II18nHTMLField |
21 from zope.schema.interfaces import RequiredMissing |
22 from zope.schema.interfaces import RequiredMissing |
22 |
23 |
23 # import packages |
24 # import packages |
126 super(I18nFileField, self).__init__(value_type=FileField(min_length=value_min_length, |
127 super(I18nFileField, self).__init__(value_type=FileField(min_length=value_min_length, |
127 max_length=value_max_length, |
128 max_length=value_max_length, |
128 required=False), |
129 required=False), |
129 **kwargs) |
130 **kwargs) |
130 |
131 |
|
132 def _validate(self, value): |
|
133 super(I18nField, self)._validate(value) |
|
134 if self.required: |
|
135 if self.default: |
|
136 return |
|
137 if not value: |
|
138 raise RequiredMissing |
|
139 for lang_value in value.values(): |
|
140 if lang_value and (lang_value is not DELETED_FILE): |
|
141 return |
|
142 raise RequiredMissing |
|
143 |
131 |
144 |
132 @implementer(II18nImageField) |
145 @implementer(II18nImageField) |
133 class I18nImageField(I18nField): |
146 class I18nImageField(I18nField): |
134 """I18n image field""" |
147 """I18n image field""" |
135 |
148 |
137 super(I18nImageField, self).__init__(value_type=ImageField(min_length=value_min_length, |
150 super(I18nImageField, self).__init__(value_type=ImageField(min_length=value_min_length, |
138 max_length=value_max_length, |
151 max_length=value_max_length, |
139 required=False), |
152 required=False), |
140 **kwargs) |
153 **kwargs) |
141 |
154 |
|
155 def _validate(self, value): |
|
156 super(I18nField, self)._validate(value) |
|
157 if self.required: |
|
158 if self.default: |
|
159 return |
|
160 if not value: |
|
161 raise RequiredMissing |
|
162 for lang_value in value.values(): |
|
163 if lang_value and (lang_value is not DELETED_FILE): |
|
164 return |
|
165 raise RequiredMissing |
|
166 |
142 |
167 |
143 @implementer(II18nThumbnailImageField) |
168 @implementer(II18nThumbnailImageField) |
144 class I18nThumbnailImageField(I18nField): |
169 class I18nThumbnailImageField(I18nField): |
145 """I18n thumbnail image field""" |
170 """I18n thumbnail image field""" |
146 |
171 |
147 def __init__(self, key_type=None, value_type=None, value_min_length=None, value_max_length=None, **kwargs): |
172 def __init__(self, key_type=None, value_type=None, value_min_length=None, value_max_length=None, **kwargs): |
148 super(I18nThumbnailImageField, self).__init__(value_type=ThumbnailImageField(min_length=value_min_length, |
173 super(I18nThumbnailImageField, self).__init__(value_type=ThumbnailImageField(min_length=value_min_length, |
149 max_length=value_max_length, |
174 max_length=value_max_length, |
150 required=False), |
175 required=False), |
151 **kwargs) |
176 **kwargs) |
|
177 |
|
178 def _validate(self, value): |
|
179 super(I18nField, self)._validate(value) |
|
180 if self.required: |
|
181 if self.default: |
|
182 return |
|
183 if not value: |
|
184 raise RequiredMissing |
|
185 for lang_value in value.values(): |
|
186 if lang_value and (lang_value is not DELETED_FILE): |
|
187 return |
|
188 raise RequiredMissing |