12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- """ Support for Pony ODM.
- ::
- from mixer.backend.pony import mixer
- """
- from __future__ import absolute_import
- from pony.orm import commit
- from .. import mix_types as t
- from ..main import TypeMixer as BaseTypeMixer, Mixer as BaseMixer, SKIP_VALUE
- class TypeMixer(BaseTypeMixer):
- """ TypeMixer for Pony ORM. """
- def __load_fields(self):
- for attr in self.__scheme._attrs_:
- yield attr.column, t.Field(attr, attr.column)
- def populate_target(self, values):
- """ Populate target. """
- return self.__scheme(**dict(values))
- def is_required(self, field):
- """ Return True is field's value should be defined.
- :return bool:
- """
- return field.scheme.is_required and not field.scheme.is_pk
- def is_unique(self, field):
- """ Return True is field's value should be a unique.
- :return bool:
- """
- return field.scheme.is_unique
- @staticmethod
- def get_default(field):
- """ Get default value from field.
- :return value:
- """
- return field.scheme.default is None and SKIP_VALUE or field.scheme.default # noqa
- def make_fabric(self, field, field_name=None, fake=False, kwargs=None): # noqa
- """ Make values fabric for column.
- :param column: SqlAlchemy column
- :param field_name: Field name
- :param fake: Force fake data
- :return function:
- """
- py_type = field.py_type
- return super(TypeMixer, self).make_fabric(
- py_type, field_name=field_name, fake=fake, kwargs=kwargs)
- class Mixer(BaseMixer):
- """ Integration with Pony ORM. """
- type_mixer_cls = TypeMixer
- def postprocess(self, target):
- """ Save objects in db.
- :return value: A generated value
- """
- if self.params.get('commit'):
- commit()
- return target
- # Default Pony mixer
- mixer = Mixer()
- # pylama:ignore=E1120
|