src/pyams_i18n/schema.py
changeset 35 357ee895fd64
parent 9 017ad36cc2ba
child 38 cd56db960a5d
equal deleted inserted replaced
34:bcd60d1cc40d 35:357ee895fd64
    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