[Python-modules-commits] [python-model-mommy] 01/03: New upstream version 1.4.0

Edward Betts edward at moszumanska.debian.org
Thu Oct 5 09:41:34 UTC 2017


This is an automated email from the git hooks/post-receive script.

edward pushed a commit to annotated tag debian/1.4.0-1
in repository python-model-mommy.

commit d76869163b995c6f3b2409b3b123dd7819880387
Author: Edward Betts <edward at 4angle.com>
Date:   Thu Oct 5 09:58:44 2017 +0100

    New upstream version 1.4.0
---
 PKG-INFO                          | 22 ++++++-----------
 README.rst                        | 14 ++++-------
 model_mommy.egg-info/PKG-INFO     | 22 ++++++-----------
 model_mommy.egg-info/requires.txt |  2 +-
 model_mommy/__init__.py           |  2 +-
 model_mommy/generators.py         |  3 ++-
 model_mommy/mommy.py              | 52 +++++++++++++++++++--------------------
 model_mommy/random_gen.py         | 10 ++++----
 model_mommy/recipe.py             |  2 +-
 model_mommy/timezone.py           |  3 +--
 model_mommy/utils.py              |  6 +----
 requirements.txt                  |  2 +-
 setup.py                          |  9 +++----
 tox.ini                           | 12 ++++-----
 14 files changed, 68 insertions(+), 93 deletions(-)

diff --git a/PKG-INFO b/PKG-INFO
index c0e6fa9..03ddec3 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: model_mommy
-Version: 1.3.2
+Version: 1.4.0
 Summary: Smart object creation facility for Django.
 Home-page: http://github.com/vandersonmota/model_mommy
 Author: vandersonmota
@@ -16,15 +16,11 @@ Description: ============================================
         .. image:: https://travis-ci.org/vandersonmota/model_mommy.png?branch=master
             :target: https://travis-ci.org/vandersonmota/model_mommy
             :alt: Test Status
-        
-        .. image:: https://pypip.in/v/model_mommy/badge.png
-            :target: https://crate.io/packages/model_mommy/
+            
+        .. image:: https://badge.fury.io/py/model_mommy.svg
+            :target: https://badge.fury.io/py/model_mommy
             :alt: Latest PyPI version
         
-        .. image:: https://pypip.in/d/model_mommy/badge.png
-            :target: https://crate.io/packages/model_mommy/
-            :alt: Number of PyPI downloads
-        
         .. image:: https://img.shields.io/gratipay/vandersonmota.svg?style=social&label=Donate
             :target: https://www.gratipay.com/vandersonmota
         
@@ -45,8 +41,8 @@ Description: ============================================
         Maintainers
         ===========
         
-        *     [Vanderson Mota (creator)](https://github.com/vandersonmota/)
-        *     [Bernardo Fontes](https://github.com/berinhard/)
+        *     Vanderson Mota (creator) - https://github.com/vandersonmota/
+        *     Bernardo Fontes - https://github.com/berinhard/
         
 Keywords: django testing factory python
 Platform: UNKNOWN
@@ -56,9 +52,7 @@ Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: Software Development
 Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
diff --git a/README.rst b/README.rst
index 1746807..a5cad12 100644
--- a/README.rst
+++ b/README.rst
@@ -8,15 +8,11 @@ With a simple and powerful API you can create many objects with a single line of
 .. image:: https://travis-ci.org/vandersonmota/model_mommy.png?branch=master
     :target: https://travis-ci.org/vandersonmota/model_mommy
     :alt: Test Status
-
-.. image:: https://pypip.in/v/model_mommy/badge.png
-    :target: https://crate.io/packages/model_mommy/
+    
+.. image:: https://badge.fury.io/py/model_mommy.svg
+    :target: https://badge.fury.io/py/model_mommy
     :alt: Latest PyPI version
 
-.. image:: https://pypip.in/d/model_mommy/badge.png
-    :target: https://crate.io/packages/model_mommy/
-    :alt: Number of PyPI downloads
-
 .. image:: https://img.shields.io/gratipay/vandersonmota.svg?style=social&label=Donate
     :target: https://www.gratipay.com/vandersonmota
 
@@ -37,5 +33,5 @@ Usage and Info
 Maintainers
 ===========
 
-*     [Vanderson Mota (creator)](https://github.com/vandersonmota/)
-*     [Bernardo Fontes](https://github.com/berinhard/)
+*     Vanderson Mota (creator) - https://github.com/vandersonmota/
+*     Bernardo Fontes - https://github.com/berinhard/
diff --git a/model_mommy.egg-info/PKG-INFO b/model_mommy.egg-info/PKG-INFO
index 3583b84..e380df7 100644
--- a/model_mommy.egg-info/PKG-INFO
+++ b/model_mommy.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: model-mommy
-Version: 1.3.2
+Version: 1.4.0
 Summary: Smart object creation facility for Django.
 Home-page: http://github.com/vandersonmota/model_mommy
 Author: vandersonmota
@@ -16,15 +16,11 @@ Description: ============================================
         .. image:: https://travis-ci.org/vandersonmota/model_mommy.png?branch=master
             :target: https://travis-ci.org/vandersonmota/model_mommy
             :alt: Test Status
-        
-        .. image:: https://pypip.in/v/model_mommy/badge.png
-            :target: https://crate.io/packages/model_mommy/
+            
+        .. image:: https://badge.fury.io/py/model_mommy.svg
+            :target: https://badge.fury.io/py/model_mommy
             :alt: Latest PyPI version
         
-        .. image:: https://pypip.in/d/model_mommy/badge.png
-            :target: https://crate.io/packages/model_mommy/
-            :alt: Number of PyPI downloads
-        
         .. image:: https://img.shields.io/gratipay/vandersonmota.svg?style=social&label=Donate
             :target: https://www.gratipay.com/vandersonmota
         
@@ -45,8 +41,8 @@ Description: ============================================
         Maintainers
         ===========
         
-        *     [Vanderson Mota (creator)](https://github.com/vandersonmota/)
-        *     [Bernardo Fontes](https://github.com/berinhard/)
+        *     Vanderson Mota (creator) - https://github.com/vandersonmota/
+        *     Bernardo Fontes - https://github.com/berinhard/
         
 Keywords: django testing factory python
 Platform: UNKNOWN
@@ -56,9 +52,7 @@ Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: Software Development
 Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
diff --git a/model_mommy.egg-info/requires.txt b/model_mommy.egg-info/requires.txt
index 1329207..9b536f6 100644
--- a/model_mommy.egg-info/requires.txt
+++ b/model_mommy.egg-info/requires.txt
@@ -1,2 +1,2 @@
-Django
+django>=1.8.0,<1.12
 six
diff --git a/model_mommy/__init__.py b/model_mommy/__init__.py
index 2d9550f..43affa1 100644
--- a/model_mommy/__init__.py
+++ b/model_mommy/__init__.py
@@ -1,5 +1,5 @@
 #coding:utf-8
-__version__ = '1.3.2'
+__version__ = '1.4.0'
 __title__ = 'model_mommy'
 __author__ = 'Vanderson Mota'
 __license__ = 'Apache 2.0'
diff --git a/model_mommy/generators.py b/model_mommy/generators.py
index 095246b..f1fb0b3 100644
--- a/model_mommy/generators.py
+++ b/model_mommy/generators.py
@@ -5,7 +5,7 @@ from django.db.models import (
     IntegerField, SmallIntegerField, PositiveIntegerField,
     PositiveSmallIntegerField, BooleanField, DecimalField,
     FloatField, FileField, ImageField, IPAddressField,
-    ForeignKey, ManyToManyField, OneToOneField)
+    ForeignKey, ManyToManyField, OneToOneField, NullBooleanField)
 
 from model_mommy.utils import import_if_str
 
@@ -56,6 +56,7 @@ default_mapping = {
     ManyToManyField: random_gen.gen_m2m,
 
     BooleanField: random_gen.gen_boolean,
+    NullBooleanField: random_gen.gen_null_boolean,
     IntegerField: random_gen.gen_integer,
     BigIntegerField: random_gen.gen_integer,
     SmallIntegerField: random_gen.gen_integer,
diff --git a/model_mommy/mommy.py b/model_mommy/mommy.py
index 0862590..d146036 100644
--- a/model_mommy/mommy.py
+++ b/model_mommy/mommy.py
@@ -5,16 +5,12 @@ import django
 
 from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
-if django.VERSION >= (1, 7):
-    from django.apps import apps
-    get_model = apps.get_model
-    from django.contrib.contenttypes.fields import GenericRelation
-else:
-    from django.db.models.loading import get_model, cache
-    from django.contrib.contenttypes.generic import GenericRelation
+from django.apps import apps
+get_model = apps.get_model
+from django.contrib.contenttypes.fields import GenericRelation
 
 from django.db.models.base import ModelBase
-from django.db.models import ForeignKey, ManyToManyField, OneToOneField, Field, AutoField, BooleanField
+from django.db.models import ForeignKey, ManyToManyField, OneToOneField, Field, AutoField, BooleanField, FileField
 if django.VERSION >= (1, 9):
     from django.db.models.fields.related import ReverseManyToOneDescriptor as ForeignRelatedObjectsDescriptor
 else:
@@ -41,14 +37,14 @@ def _valid_quantity(quantity):
     return quantity is not None and (not isinstance(quantity, int) or quantity < 1)
 
 
-def make(model, _quantity=None, make_m2m=False, _save_kwargs=None, **attrs):
+def make(model, _quantity=None, make_m2m=False, _save_kwargs=None, _create_files=False, **attrs):
     """
     Creates a persisted instance from a given model its associated models.
     It fill the fields with random values or you can specify
     which fields you want to define its values by yourself.
     """
     _save_kwargs = _save_kwargs or {}
-    mommy = Mommy.create(model, make_m2m=make_m2m)
+    mommy = Mommy.create(model, make_m2m=make_m2m, create_files=_create_files)
     if _valid_quantity(_quantity):
         raise InvalidQuantityException
 
@@ -106,8 +102,7 @@ class ModelFinder(object):
                 model = get_model(app_label, model_name)
             else:
                 model = self.get_model_by_name(name)
-        except LookupError:  # Django 1.7.0a1 throws an exception
-            # Lower djangos just fail silently
+        except LookupError:
             model = None
 
         if not model:
@@ -140,10 +135,7 @@ class ModelFinder(object):
         unique_models = {}
         ambiguous_models = []
 
-        if django.VERSION >= (1, 7):
-            all_models = apps.all_models
-        else:
-            all_models = cache.app_models
+        all_models = apps.all_models
 
         for app_model in all_models.values():
             for name, model in app_model.items():
@@ -199,15 +191,16 @@ class Mommy(object):
     finder = ModelFinder()
 
     @classmethod
-    def create(cls, model, make_m2m=False):
+    def create(cls, model, make_m2m=False, create_files=False):
         """
         Factory which creates the mommy class defined by the MOMMY_CUSTOM_CLASS setting
         """
         mommy_class = _custom_mommy_class() or cls
-        return mommy_class(model, make_m2m)
+        return mommy_class(model, make_m2m, create_files)
 
-    def __init__(self, model, make_m2m=False):
+    def __init__(self, model, make_m2m=False, create_files=False):
         self.make_m2m = make_m2m
+        self.create_files = create_files
         self.m2m_dict = {}
         self.iterator_attrs = {}
         self.model_attrs = {}
@@ -243,10 +236,7 @@ class Mommy(object):
         return self.model._meta.fields + self.model._meta.many_to_many
 
     def get_related(self):
-        if django.VERSION[:2] <= (1, 7):
-            return self.model._meta.get_all_related_objects()
-        else:
-            return [r for r in self.model._meta.related_objects if not r.many_to_many]
+        return [r for r in self.model._meta.related_objects if not r.many_to_many]
 
     def _make(self, commit=True, commit_related=True, _save_kwargs=None, **attrs):
         _save_kwargs = _save_kwargs or {}
@@ -326,8 +316,11 @@ class Mommy(object):
         else:
             field.fill_optional = field.name in self.fill_in_optional
 
+        if isinstance(field, FileField) and not self.create_files:
+            return True
+
         # Skip links to parent so parent is not created twice.
-        if isinstance(field, OneToOneField) and field.rel.parent_link:
+        if isinstance(field, OneToOneField) and self._remote_field(field).parent_link:
             return True
 
         if isinstance(field, (AutoField, GenericRelation, OrderWrt)):
@@ -371,6 +364,11 @@ class Mommy(object):
                     }
                     make(through_model, **base_kwargs)
 
+    def _remote_field(self, field):
+        if django.VERSION >= (1, 9):
+            return field.remote_field
+        return field.rel
+
     def generate_value(self, field, commit=True):
         '''
         Calls the generator associated with a field passing all required args.
@@ -389,12 +387,12 @@ class Mommy(object):
             generator = self.attr_mapping[field.name]
         elif getattr(field, 'choices'):
             generator = random_gen.gen_from_choices(field.choices)
-        elif isinstance(field, ForeignKey) and issubclass(field.rel.to, ContentType):
+        elif isinstance(field, ForeignKey) and issubclass(self._remote_field(field).to, ContentType):
             generator = self.type_mapping[ContentType]
-        elif field.__class__ in self.type_mapping:
-            generator = self.type_mapping[field.__class__]
         elif generators.get(field.__class__):
             generator = generators.get(field.__class__)
+        elif field.__class__ in self.type_mapping:
+            generator = self.type_mapping[field.__class__]
         else:
             raise TypeError('%s is not supported by mommy.' % field.__class__)
 
diff --git a/model_mommy/random_gen.py b/model_mommy/random_gen.py
index 6cb7c0a..8ba1a19 100644
--- a/model_mommy/random_gen.py
+++ b/model_mommy/random_gen.py
@@ -15,7 +15,6 @@ import warnings
 from decimal import Decimal
 from os.path import abspath, join, dirname
 from random import randint, choice, random
-from django import VERSION
 from django.core.files.base import ContentFile
 from django.core.exceptions import ValidationError
 import six
@@ -35,10 +34,7 @@ MAX_LENGTH = 300
 MAX_INT = 10000
 
 def get_content_file(content, name):
-    if VERSION < (1, 4):
-        return ContentFile(content)
-    else:
-        return ContentFile(content, name=name)
+    return ContentFile(content, name=name)
 
 def gen_file_field():
     name = 'mock_file.txt'
@@ -125,6 +121,10 @@ def gen_boolean():
     return choice((True, False))
 
 
+def gen_null_boolean():
+    return choice((True, False, None))
+
+
 def gen_url():
     return str('http://www.%s.com/' % gen_string(30))
 
diff --git a/model_mommy/recipe.py b/model_mommy/recipe.py
index 5bf5d74..eec9b56 100644
--- a/model_mommy/recipe.py
+++ b/model_mommy/recipe.py
@@ -45,7 +45,7 @@ class Recipe(object):
                     m = finder.get_model(self.model)
                 else:
                     m = self.model
-                if m.objects.count() == 0 or k not in self._iterator_backups:
+                if k not in self._iterator_backups or m.objects.count() == 0:
                     self._iterator_backups[k] = itertools.tee(self._iterator_backups.get(k, [v])[0])
                 mapping[k] = self._iterator_backups[k][1]
             elif isinstance(v, RecipeForeignKey):
diff --git a/model_mommy/timezone.py b/model_mommy/timezone.py
index 337c227..9451ce8 100644
--- a/model_mommy/timezone.py
+++ b/model_mommy/timezone.py
@@ -5,7 +5,6 @@ https://docs.djangoproject.com/en/1.4/topics/i18n/timezones/
 '''
 
 from datetime import datetime
-from django import VERSION
 from django.conf import settings
 
 try:
@@ -20,7 +19,7 @@ def smart_datetime(*args):
 
 def tz_aware(d):
     value = d
-    if VERSION >= (1, 4) and settings.USE_TZ:
+    if settings.USE_TZ:
         value = d.replace(tzinfo=utc)
 
     return value
diff --git a/model_mommy/utils.py b/model_mommy/utils.py
index 15587ac..33ff5da 100644
--- a/model_mommy/utils.py
+++ b/model_mommy/utils.py
@@ -1,9 +1,5 @@
 # -*- coding: utf-8 -*-
-import django
-if django.VERSION >= (1, 7):
-    import importlib
-else:
-    from django.utils import importlib
+import importlib
 
 from six import string_types
 
diff --git a/requirements.txt b/requirements.txt
index 1329207..9b536f6 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
-Django
+django>=1.8.0,<1.12
 six
diff --git a/setup.py b/setup.py
old mode 100644
new mode 100755
index cb00523..fb58989
--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,8 @@ setuptools.setup(
     include_package_data=True,  # declarations in MANIFEST.in
     install_requires=open(join(dirname(__file__), 'requirements.txt')).readlines(),
     tests_require=[
-        'django',
+
+        'django>=1.8,<1.12',
         'pil',
         'tox',
         'mock'
@@ -31,11 +32,9 @@ setuptools.setup(
         'Operating System :: OS Independent',
         'Topic :: Software Development',
         'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.6',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.2',
-        'Programming Language :: Python :: 3.3',
-        'Programming Language :: Python :: 3.4',
+        'Programming Language :: Python :: 3.5',
+        'Programming Language :: Python :: 3.6',
     ],
 )
diff --git a/tox.ini b/tox.ini
index 7405d71..e685b64 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,25 +1,23 @@
 [tox]
-envlist = {py27}-django{16,17,18,19,110}-{postgresql,sqlite}, {py26}-django{16}, py34-django{16,17}-{postgresql,sqlite}, {py35,py34}-django{18,19,110}-{postgresql,sqlite}
+envlist = {py27,py35,py36}-django{18,19,110,111}-{postgresql,sqlite}
 
 [testenv]
 setenv=
   PYTHONPATH = {toxinidir}
 basepython =
-    py26: python2.6
     py27: python2.7
     py35: python3.5
-    py34: python3.4
+    py36: python3.6
 deps =
     py26: Pillow>=2.3.1,<4.0.0
     py{27,34,35}: Pillow>=2.3.1
     mock==1.0.1
     six>=1.3.0
     django-test-without-migrations
-    django16: Django>=1.6,<1.7
-    django17: Django>=1.7,<1.8
     django18: Django>=1.8,<1.9
-    django19: Django>=1.9,>1.10
-    django110: Django==1.10
+    django19: Django>=1.9,<1.10
+    django110: Django>=1.10,<1.11
+    django111: Django>=1.11,<1.12
     postgresql: psycopg2
 
 commands=

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-model-mommy.git



More information about the Python-modules-commits mailing list