model-bakery 1.16.0__py3-none-any.whl → 1.17.0__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.

Potentially problematic release.


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

model_bakery/__about__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.16.0"
1
+ __version__ = "1.17.0"
model_bakery/baker.py CHANGED
@@ -498,17 +498,30 @@ class Baker(Generic[M]):
498
498
  self, attrs: Dict[str, Any], _commit, _save_kwargs, _from_manager
499
499
  ) -> M:
500
500
  one_to_many_keys = {}
501
+ auto_now_keys = {}
502
+
501
503
  for k in tuple(attrs.keys()):
502
504
  field = getattr(self.model, k, None)
505
+
506
+ if not field:
507
+ continue
508
+
503
509
  if isinstance(field, ForeignRelatedObjectsDescriptor):
504
510
  one_to_many_keys[k] = attrs.pop(k)
505
511
 
512
+ if hasattr(field, "field") and (
513
+ getattr(field.field, "auto_now_add", False)
514
+ or getattr(field.field, "auto_now", False)
515
+ ):
516
+ auto_now_keys[k] = attrs[k]
517
+
506
518
  instance = self.model(**attrs)
507
519
  # m2m only works for persisted instances
508
520
  if _commit:
509
521
  instance.save(**_save_kwargs)
510
522
  self._handle_one_to_many(instance, one_to_many_keys)
511
523
  self._handle_m2m(instance)
524
+ self._handle_auto_now(instance, auto_now_keys)
512
525
 
513
526
  if _from_manager:
514
527
  # Fetch the instance using the given Manager, e.g.
@@ -609,6 +622,12 @@ class Baker(Generic[M]):
609
622
 
610
623
  return False
611
624
 
625
+ def _handle_auto_now(self, instance: Model, attrs: Dict[str, Any]):
626
+ if not attrs:
627
+ return
628
+
629
+ instance.__class__.objects.filter(pk=instance.pk).update(**attrs)
630
+
612
631
  def _handle_one_to_many(self, instance: Model, attrs: Dict[str, Any]):
613
632
  for key, values in attrs.items():
614
633
  manager = getattr(instance, key)
@@ -112,9 +112,7 @@ def gen_time() -> time:
112
112
 
113
113
 
114
114
  def gen_string(max_length: int) -> str:
115
- return str(
116
- "".join(baker_random.choice(string.ascii_letters) for _ in range(max_length))
117
- )
115
+ return "".join(baker_random.choice(string.ascii_letters) for _ in range(max_length))
118
116
 
119
117
 
120
118
  def _gen_string_get_max_length(field: Field) -> Tuple[str, int]:
@@ -129,7 +127,7 @@ gen_string.required = [_gen_string_get_max_length] # type: ignore[attr-defined]
129
127
 
130
128
  def gen_slug(max_length: int) -> str:
131
129
  valid_chars = string.ascii_letters + string.digits + "_-"
132
- return str("".join(baker_random.choice(valid_chars) for _ in range(max_length)))
130
+ return "".join(baker_random.choice(valid_chars) for _ in range(max_length))
133
131
 
134
132
 
135
133
  gen_slug.required = ["max_length"] # type: ignore[attr-defined]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: model-bakery
3
- Version: 1.16.0
3
+ Version: 1.17.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>
@@ -55,7 +55,7 @@ Model Bakery is a rename of the legacy [Model Mommy project](https://pypi.org/pr
55
55
  ## Install
56
56
 
57
57
  ```bash
58
- pip install model_bakery
58
+ pip install model-bakery
59
59
  ```
60
60
 
61
61
  ## Usage and Info
@@ -1,18 +1,18 @@
1
- model_bakery/__about__.py,sha256=zXjo5icgcGx5X40awUvUOk5_ohh0Pz1N3VFKYCfYEcM,23
1
+ model_bakery/__about__.py,sha256=BVr0oLjmHWJS0DsUE-HOjf8hMNndB1Nh8X6y77zSq8s,23
2
2
  model_bakery/__init__.py,sha256=yY0xZUrr_mskBm07iF-MFBEiXzOuKrlMwpKWkXZs8v0,31
3
3
  model_bakery/_types.py,sha256=P0iKC5-Cnh3lyzyZs1mlCfOW31zbEZpxqWCuYonucKo,130
4
- model_bakery/baker.py,sha256=ah9X--BaBxflvkbXxek2RyCR72zLa5dpdzwefDVKhRE,27482
4
+ model_bakery/baker.py,sha256=mZBIalLwIVIkgUOBftFENz7_SCujhCaN3y_jbaPHSq8,28035
5
5
  model_bakery/exceptions.py,sha256=q1oBZvfxL7HAD-F9aWgiYs4P4rz-hJ5TjeX7gcb3Q0I,333
6
6
  model_bakery/generators.py,sha256=IkYFBTwSVwa_wwPnZRiVR1vHqUfjWqmyPGCl10RElB0,6467
7
7
  model_bakery/gis.py,sha256=eTNOfT98_ncLAb4KmOYJhE-3ALU2_pQbUpWPTolFZJI,1028
8
8
  model_bakery/mock_file.txt,sha256=CO5zPS6Uydk48ZRnGcRKVEYKd2YjaUMa9QOgF5gGMCo,10
9
9
  model_bakery/mock_img.jpeg,sha256=iF2ybgAVtDvl48-8VKdv_QFHKfnqeOaeGwR6ZLexJkY,1916
10
10
  model_bakery/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- model_bakery/random_gen.py,sha256=ZDtUwEEd735ot2V0HeVb8oX3_0QOwdmKAdBpl0bt7oI,9797
11
+ model_bakery/random_gen.py,sha256=SexyzpuAe5FKXIofXloCmJ3tL4S5WJ9cVowB8sMHXP8,9773
12
12
  model_bakery/recipe.py,sha256=miruAnulPVL4N7Q3tXRfRV95MUvbpZZ3A5M7afv-2O8,8411
13
13
  model_bakery/timezone.py,sha256=rd-KGVHqJoHdHKBgENPMBTRqqxgKE91CM9C0f9nS90M,325
14
14
  model_bakery/utils.py,sha256=fw4ewtwkJ6wZ9PbDzBGvODX7CV81ozy2_6JAQmITmX4,4581
15
- model_bakery-1.16.0.dist-info/METADATA,sha256=g5uiWnzpgE3sv0GkrH9SUveRiSm4pNub7puA_CGBVMI,4311
16
- model_bakery-1.16.0.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
17
- model_bakery-1.16.0.dist-info/licenses/LICENSE,sha256=kCwHls7z8Y7NyZCmdnV1qLSdLrQ8bHrXLji5HOasgUc,611
18
- model_bakery-1.16.0.dist-info/RECORD,,
15
+ model_bakery-1.17.0.dist-info/METADATA,sha256=q3pWgLVXrodr1osb_HUIJSoBTuDsQHSDQ4CzTQrwmpE,4311
16
+ model_bakery-1.17.0.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
17
+ model_bakery-1.17.0.dist-info/licenses/LICENSE,sha256=kCwHls7z8Y7NyZCmdnV1qLSdLrQ8bHrXLji5HOasgUc,611
18
+ model_bakery-1.17.0.dist-info/RECORD,,