model-bakery 1.19.4__tar.gz → 1.20.0__tar.gz

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.

Potentially problematic release.


This version of model-bakery might be problematic. Click here for more details.

Files changed (21) hide show
  1. {model_bakery-1.19.4 → model_bakery-1.20.0}/PKG-INFO +2 -1
  2. model_bakery-1.20.0/model_bakery/__about__.py +1 -0
  3. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/baker.py +21 -11
  4. {model_bakery-1.19.4 → model_bakery-1.20.0}/pyproject.toml +1 -0
  5. model_bakery-1.19.4/model_bakery/__about__.py +0 -1
  6. {model_bakery-1.19.4 → model_bakery-1.20.0}/.gitignore +0 -0
  7. {model_bakery-1.19.4 → model_bakery-1.20.0}/LICENSE +0 -0
  8. {model_bakery-1.19.4 → model_bakery-1.20.0}/README.md +0 -0
  9. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/__init__.py +0 -0
  10. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/_types.py +0 -0
  11. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/content_types.py +0 -0
  12. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/exceptions.py +0 -0
  13. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/generators.py +0 -0
  14. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/gis.py +0 -0
  15. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/mock_file.txt +0 -0
  16. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/mock_img.jpeg +0 -0
  17. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/py.typed +0 -0
  18. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/random_gen.py +0 -0
  19. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/recipe.py +0 -0
  20. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/timezone.py +0 -0
  21. {model_bakery-1.19.4 → model_bakery-1.20.0}/model_bakery/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: model-bakery
3
- Version: 1.19.4
3
+ Version: 1.20.0
4
4
  Summary: Smart object creation facility for Django.
5
5
  Project-URL: Homepage, https://github.com/model-bakers/model_bakery
6
6
  Author-email: berin <bernardoxhc@gmail.com>, amureki <amureki@hey.com>
@@ -22,6 +22,7 @@ Classifier: Programming Language :: Python :: 3.9
22
22
  Classifier: Programming Language :: Python :: 3.10
23
23
  Classifier: Programming Language :: Python :: 3.11
24
24
  Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
25
26
  Classifier: Topic :: Software Development
26
27
  Requires-Python: >=3.8
27
28
  Requires-Dist: django>=4.2
@@ -0,0 +1 @@
1
+ __version__ = "1.20.0"
@@ -27,6 +27,7 @@ from django.db.models import (
27
27
  Model,
28
28
  OneToOneField,
29
29
  )
30
+ from django.db.models.fields import NOT_PROVIDED
30
31
  from django.db.models.fields.proxy import OrderWrt
31
32
  from django.db.models.fields.related import (
32
33
  ReverseManyToOneDescriptor as ForeignRelatedObjectsDescriptor,
@@ -695,21 +696,27 @@ class Baker(Generic[M]):
695
696
  def _handle_generic_foreign_keys(self, instance: Model, attrs: Dict[str, Any]):
696
697
  """Set content type and object id for GenericForeignKey fields."""
697
698
  for field_name, data in attrs.items():
698
- content_type_field = data["content_type_field"]
699
- object_id_field = data["object_id_field"]
699
+ ct_field_name = data["content_type_field"]
700
+ oid_field_name = data["object_id_field"]
700
701
  value = data["value"]
701
702
  if is_iterator(value):
702
703
  value = next(value)
703
704
  if value is None:
704
- continue
705
-
706
- setattr(instance, field_name, value)
707
- setattr(
708
- instance,
709
- content_type_field,
710
- contenttypes_models.ContentType.objects.get_for_model(value),
711
- )
712
- setattr(instance, object_id_field, value.pk)
705
+ # when GFK is None, we should try to set the content type and object id to None
706
+ content_type_field = instance._meta.get_field(ct_field_name)
707
+ object_id_field = instance._meta.get_field(oid_field_name)
708
+ if content_type_field.null:
709
+ setattr(instance, ct_field_name, None)
710
+ if object_id_field.null:
711
+ setattr(instance, oid_field_name, None)
712
+ else:
713
+ setattr(instance, field_name, value)
714
+ setattr(
715
+ instance,
716
+ ct_field_name,
717
+ contenttypes_models.ContentType.objects.get_for_model(value),
718
+ )
719
+ setattr(instance, oid_field_name, value.pk)
713
720
 
714
721
  def _remote_field(
715
722
  self, field: Union[ForeignKey, OneToOneField]
@@ -721,6 +728,7 @@ class Baker(Generic[M]):
721
728
 
722
729
  Generator Resolution Precedence Order:
723
730
  -- `field.default` - model field default value, unless explicitly overwritten during baking
731
+ -- `field.db_default` - model field db default value, unless explicitly overwritten
724
732
  -- `attr_mapping` - mapping per attribute name
725
733
  -- `choices` -- mapping from available field choices
726
734
  -- `type_mapping` - mapping from user defined type associated generators
@@ -744,6 +752,8 @@ class Baker(Generic[M]):
744
752
  if callable(field.default):
745
753
  return field.default()
746
754
  return field.default
755
+ elif getattr(field, "db_default", NOT_PROVIDED) != NOT_PROVIDED:
756
+ return field.db_default
747
757
  elif field.name in self.attr_mapping:
748
758
  generator = self.attr_mapping[field.name]
749
759
  elif field.choices:
@@ -35,6 +35,7 @@ classifiers = [
35
35
  "Programming Language :: Python :: 3.10",
36
36
  "Programming Language :: Python :: 3.11",
37
37
  "Programming Language :: Python :: 3.12",
38
+ "Programming Language :: Python :: 3.13",
38
39
  "Topic :: Software Development",
39
40
  ]
40
41
  dependencies = [
@@ -1 +0,0 @@
1
- __version__ = "1.19.4"
File without changes
File without changes
File without changes