Jelajahi Sumber

Remove uncovered code

theenglishway (time) 6 tahun lalu
induk
melakukan
9259f3e21a
4 mengubah file dengan 12 tambahan dan 65 penghapusan
  1. 2 19
      pydantic_form/form.py
  2. 7 23
      pydantic_form/translator.py
  3. 0 15
      tests/test_iterators.py
  4. 3 8
      tests/test_process.py

+ 2 - 19
pydantic_form/form.py

@@ -1,23 +1,9 @@
-from collections import defaultdict
-from wtforms import Form, FieldList, FormField, Field
-from pydantic import ValidationError, BaseModel
+from wtforms import Form
 
 from .utils import formdata_demangle
 from .translator import SchemaToForm
 
 
-class PydanticFieldList(FieldList):
-    _baked_instance = None
-
-    def populate_obj(self, obj, name):
-        attr = getattr(obj, name)
-        for n, v in enumerate(self._baked_instance):
-            self.entries[n].form._baked_instance = v
-            model = self.entries[n].form.get_model()
-            new = model(**v.dict())
-            attr.append(new)
-
-
 class PydanticForm(Form):
     _errors = {}
     _schema = None
@@ -44,7 +30,4 @@ class PydanticForm(Form):
             return False
 
         self.translator.set_baked()
-        return True
-
-    def process_obj(self, obj):
-        ...
+        return True

+ 7 - 23
pydantic_form/translator.py

@@ -78,15 +78,8 @@ class SchemaToForm:
             if is_int(dest_key[-1]):
                 *parent_key, idx = dest_key
 
-                try:
-                    dest_field = rgetattr(self.form, tuple(parent_key))
-                    dest_field.entries[idx].data = value
-                except AttributeError:
-                    dest_field = getattr(
-                        rgetattr(self.form, tuple(parent_key[:-1])).entries[idx],
-                        parent_key[-1]
-                    )
-                    dest_field.data = value
+                dest_field = rgetattr(self.form, tuple(parent_key))
+                dest_field.entries[idx].data = value
 
             else:
                 dest_field = self.get_field(self.form, dest_key)
@@ -100,20 +93,11 @@ class SchemaToForm:
 
     def set_errors(self):
         for k, error_list in nested_dict_iter(self.errors):
-            try:
-                field = self.get_field(self.form, k)
-                if isinstance(field, FormField):
-                    setattr(field.form, '_errors', error_list)
-                else:
-                    setattr(field, 'errors', error_list)
-            except TypeError:
-                try:
-                    *field_list, n = k
-                    rgetattr(self.form, tuple(field_list)).entries[n].errors = error_list
-                except TypeError:
-                    *field_list, n, key = k
-                    getattr(rgetattr(self.form, tuple(field_list))[n], key).errors = error_list
-
+            field = self.get_field(self.form, k)
+            if isinstance(field, FormField):
+                setattr(field.form, '_errors', error_list)
+            else:
+                setattr(field, 'errors', error_list)
 
         for k, error_list in nested_dict_iter(self.errors):
             try:

+ 0 - 15
tests/test_iterators.py

@@ -2,21 +2,6 @@ import pytest
 from pydantic_form.iterators import iter_form, iter_schema, iter_form_class, iter_schema_class
 
 
-@pytest.fixture
-def instance_factory(request):
-    def _factory(scenario, data):
-        instances = dict(
-            schema_class=scenario.schema,
-            schema=scenario.schema(**data),
-            form_class=scenario.wtf_form,
-            form=scenario.wtf_form()
-        )
-
-        return instances[request.param]
-
-    return _factory
-
-
 @pytest.mark.parametrize(
     'scenario',
     [

+ 3 - 8
tests/test_process.py

@@ -117,14 +117,9 @@ def test_errors_invalid(scenario, data, errors_factory):
     assert form.errors
     for k, expected in nested_dict_iter(errors_factory(scenario), iter_list=True):
         field_errors = SchemaToForm.get_item(form.errors, k)
-        if isinstance(expected, list):
-            errors = [e['type'] for e_list in field_errors for e in e_list]
-            assert errors == expected
-
-        else:
-            errors = [e['type'] for e in field_errors]
-            assert len(errors) == 1
-            assert errors[0] == expected
+        errors = [e['type'] for e in field_errors]
+        assert len(errors) == 1
+        assert errors[0] == expected
 
 
 @pytest.mark.parametrize(