diff --git a/.bumpversion.cfg b/.bumpversion.cfg index c9151dbd..93523cc3 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,6 +1,6 @@ [bumpversion] commit = True -current_version = 5.5.5 +current_version = 5.5.6 files = mixer/__init__.py tag = True tag_name = {new_version} diff --git a/mixer/__init__.py b/mixer/__init__.py index 06f16f37..70ea8215 100644 --- a/mixer/__init__.py +++ b/mixer/__init__.py @@ -14,7 +14,7 @@ # Module information # ================== -__version__ = "5.5.5" +__version__ = "5.5.6" __project__ = "mixer" __author__ = "horneds " __license__ = "BSD" diff --git a/mixer/backend/peewee.py b/mixer/backend/peewee.py index adfcc41d..21855c98 100644 --- a/mixer/backend/peewee.py +++ b/mixer/backend/peewee.py @@ -80,6 +80,22 @@ def gen_field(self, field): return field.name, SKIP_VALUE return super(TypeMixer, self).gen_field(field) + def gen_select(self, field_name, select): + """ Select exists value from database. + + :param field_name: Name of field for generation. + + :return : None or (name, value) for later use + + """ + field = self.__fields[field_name] + if not isinstance(field.scheme, ForeignKeyField): + return field_name, SKIP_VALUE + + model = field.scheme.rel_model + value = model.select().order_by(fn.Random()).get() + return self.get_value(field_name, value) + def is_required(self, field): """ Return True is field's value should be defined. diff --git a/tests/test_peewee.py b/tests/test_peewee.py index 8568ad81..1668ad57 100644 --- a/tests/test_peewee.py +++ b/tests/test_peewee.py @@ -66,3 +66,9 @@ def test_reload(mixer): person = mixer.reload(person) assert person.name == 'true' + + +def test_select(mixer): + person = mixer.blend(Person) + pet = mixer.blend(Pet, owner=mixer.SELECT) + assert person == pet.owner