brilliance-admin 0.44.0__py3-none-any.whl → 0.44.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,8 @@ from brilliance_admin.exceptions import AdminAPIException, APIError
8
8
  from brilliance_admin.schema import AdminSchema
9
9
  from brilliance_admin.schema.table.admin_action import ActionData, ActionResult
10
10
  from brilliance_admin.schema.table.category_table import CategoryTable
11
- from brilliance_admin.schema.table.table_models import CreateResult, ListData, RetrieveResult, TableListResult, UpdateResult
11
+ from brilliance_admin.schema.table.table_models import (
12
+ CreateResult, ListData, RetrieveResult, TableListResult, UpdateResult)
12
13
  from brilliance_admin.translations import LanguageContext
13
14
  from brilliance_admin.utils import get_logger
14
15
 
@@ -3,16 +3,18 @@ delete_confirmation_text: "Are you sure you want to delete those records?\nThis
3
3
  deleted_successfully: 'The entries were successfully deleted.'
4
4
 
5
5
  errors:
6
+ pk_not_found: 'The "%(pk_name)s" field was not found in the submitted data.'
7
+ record_not_found: 'No record found for %(pk_name)s=%(pk)s.'
6
8
  db_error_create: 'Error creating a record in the database.'
7
9
  db_error_update: 'Error updating the record in the database.'
8
10
  db_error_retrieve: 'Error retrieving the record from the database.'
9
11
  db_error_list: 'Failed to retrieve table data from the database.'
10
- pk_not_found: 'The "%(pk_name)s" field was not found in the submitted data.'
11
- record_not_found: 'No record found for %(pk_name)s=%(pk)s.'
12
12
  connection_refused_error: 'Database connection error: %(error)s'
13
13
  filters_exception: 'An unknown technical error occurred while filtering data.'
14
14
  method_not_allowed: 'Error, method not allowed. This action is not permitted.'
15
15
  filter_error: 'An error occurred during filtering: {error}'
16
+ serialize_field_error: 'Serialize error: %(error)s'
17
+ bad_type_error: 'Invalid data type: %(type)s but %(expected)s expected'
16
18
 
17
19
  search_help: 'Available search fields: %(fields)s'
18
20
  sqlalchemy_search_help: |
@@ -14,6 +14,7 @@ errors:
14
14
  method_not_allowed: 'Ошибка, данный метод недоступен.'
15
15
  filter_error: 'Проишла ошибка при фильтрации: %(error)s'
16
16
  serialize_field_error: 'Ошибка чтения данных: %(error)s'
17
+ bad_type_error: 'Некорректный тип данных: %(type)s; ожидается %(expected)s'
17
18
 
18
19
  search_help: 'Доступные поля для поиска: %(fields)s'
19
20
  sqlalchemy_search_help: |
@@ -8,6 +8,7 @@ from pydantic.dataclasses import dataclass
8
8
  from brilliance_admin.exceptions import FieldError
9
9
  from brilliance_admin.schema.category import FieldSchemaData
10
10
  from brilliance_admin.translations import LanguageContext
11
+ from brilliance_admin.translations import TranslateText as _
11
12
  from brilliance_admin.utils import DeserializeAction, SupportsStr, humanize_field_name
12
13
 
13
14
 
@@ -80,7 +81,7 @@ class IntegerField(TableField):
80
81
  async def deserialize(self, value, action: DeserializeAction, extra: dict, *args, **kwargs) -> Any:
81
82
  value = await super().deserialize(value, action, extra, *args, **kwargs)
82
83
  if value and not isinstance(value, int):
83
- raise FieldError(f'bad int type: {type(value)}')
84
+ raise FieldError(_('errors.bad_type_error') % {'type': type(value), 'expected': 'init'})
84
85
 
85
86
  return value
86
87
 
@@ -116,7 +117,7 @@ class StringField(TableField):
116
117
  async def deserialize(self, value, action: DeserializeAction, extra: dict, *args, **kwargs) -> Any:
117
118
  value = await super().deserialize(value, action, extra, *args, **kwargs)
118
119
  if value and not isinstance(value, str):
119
- raise FieldError(f'bad string type: {type(value)}')
120
+ raise FieldError(_('errors.bad_type_error') % {'type': type(value), 'expected': 'string'})
120
121
 
121
122
  return value
122
123
 
@@ -151,7 +152,7 @@ class DateTimeField(TableField):
151
152
  return
152
153
 
153
154
  if value and not isinstance(value, (str, dict)):
154
- raise FieldError(f'bad datetime type: {type(value)}')
155
+ raise FieldError(_('errors.bad_type_error') % {'type': type(value), 'expected': 'datetime'})
155
156
 
156
157
  if isinstance(value, str):
157
158
  return datetime.datetime.strptime(value, self.format)
@@ -166,13 +167,24 @@ class DateTimeField(TableField):
166
167
  'to': datetime.datetime.strptime(value.get('to'), self.format),
167
168
  }
168
169
 
169
- raise NotImplementedError(f'Value "{value}" is not supporetd for datetime')
170
+ raise FieldError(_('errors.bad_type_error') % {'type': type(value), 'expected': 'datetime'})
170
171
 
171
172
 
172
173
  @dataclass
173
174
  class JSONField(TableField):
174
175
  _type = 'json'
175
176
 
177
+ async def deserialize(self, value, action: DeserializeAction, extra: dict, *args, **kwargs) -> Any:
178
+ value = await super().deserialize(value, action, extra, *args, **kwargs)
179
+
180
+ if value is None:
181
+ return
182
+
183
+ if not isinstance(value, (dict, list)):
184
+ raise FieldError(_('errors.bad_type_error') % {'type': type(value), 'expected': 'JSON'})
185
+
186
+ return value
187
+
176
188
 
177
189
  @dataclass
178
190
  class ArrayField(TableField):
@@ -190,8 +202,11 @@ class ArrayField(TableField):
190
202
  async def deserialize(self, value, action: DeserializeAction, extra: dict, *args, **kwargs) -> Any:
191
203
  value = await super().deserialize(value, action, extra, *args, **kwargs)
192
204
 
193
- if value and not isinstance(value, list):
194
- raise FieldError(f'bad array type: {type(value)}')
205
+ if value is None:
206
+ return
207
+
208
+ if not isinstance(value, list):
209
+ raise FieldError(_('errors.bad_type_error') % {'type': type(value), 'expected': 'Array'})
195
210
 
196
211
  return value
197
212