Sfoglia il codice sorgente

Refactor some badly designed code

theenglishway (time) 6 anni fa
parent
commit
0876da447b
1 ha cambiato i file con 12 aggiunte e 22 eliminazioni
  1. 12 22
      pydantic_form/translator.py

+ 12 - 22
pydantic_form/translator.py

@@ -75,15 +75,8 @@ class SchemaToForm:
     def set_data(self):
     def set_data(self):
         for src_key, value in iter_schema(self.schema):
         for src_key, value in iter_schema(self.schema):
             dest_key = self.lut(src_key)
             dest_key = self.lut(src_key)
-            if is_int(dest_key[-1]):
-                *parent_key, idx = dest_key
-
-                dest_field = rgetattr(self.form, tuple(parent_key))
-                dest_field.entries[idx].data = value
-
-            else:
-                dest_field = self.get_field(self.form, dest_key)
-                setattr(dest_field, 'data', value)
+            dest_field = self.get_field(self.form, dest_key)
+            dest_field.data = value
 
 
     def set_baked(self):
     def set_baked(self):
         for k, field in iter_form(self.form, leafs_only=False):
         for k, field in iter_form(self.form, leafs_only=False):
@@ -92,21 +85,18 @@ class SchemaToForm:
                 field._baked_instance = self.get_schema(self.schema, k)
                 field._baked_instance = self.get_schema(self.schema, k)
 
 
     def set_errors(self):
     def set_errors(self):
-        for k, error_list in nested_dict_iter(self.errors):
-            field = self.get_field(self.form, k)
+        for path, error_list in nested_dict_iter(self.errors):
+            field = self.get_field(self.form, path)
             if isinstance(field, FormField):
             if isinstance(field, FormField):
                 setattr(field.form, '_errors', error_list)
                 setattr(field.form, '_errors', error_list)
             else:
             else:
                 setattr(field, 'errors', error_list)
                 setattr(field, 'errors', error_list)
 
 
-        for k, error_list in nested_dict_iter(self.errors):
-            try:
-                rgetattr(self.form, k)
-            except TypeError:
-                try:
-                    *field_list, n = k
-                    form = rgetattr(self.form, tuple(field_list))
-                except TypeError:
-                    *field_list, n, key = k
-                    form = rgetattr(self.form, tuple(field_list))
-                form.errors = [entry.errors for entry in form.entries]
+        for path, error_list in nested_dict_iter(self.errors):
+            paths_with_list = [
+                (path[:n], path[n], path[n+1:])
+                for n, val in enumerate(path) if is_int(val)
+            ]
+            for field_list, _, _ in paths_with_list:
+                form = rgetattr(self.form, tuple(field_list))
+                form.errors = [entry.errors for entry in form.entries]