[Python-modules-commits] [django-polymorphic] 01/04: Import django-polymorphic_0.8.1.orig.tar.gz

Michael Fladischer fladi at moszumanska.debian.org
Mon Jan 11 11:50:49 UTC 2016


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

fladi pushed a commit to branch master
in repository django-polymorphic.

commit e9fab2f7eb0101200bfacfe30e0499d46db48270
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date:   Tue Dec 29 15:56:34 2015 +0100

    Import django-polymorphic_0.8.1.orig.tar.gz
---
 .travis.yml                                        |  24 ++
 AUTHORS.rst                                        |   1 +
 docs/advanced.rst                                  |   4 +-
 docs/changelog.rst                                 |  36 +++
 docs/conf.py                                       |  29 +--
 docs/managers.rst                                  |  14 +-
 docs/quickstart.rst                                |   2 +-
 example/example/settings.py                        |   2 +-
 example/example/urls.py                            |   6 +-
 example/pexp/admin.py                              |  52 ++---
 example/pexp/management/commands/p2cmd.py          |  80 ++++---
 example/pexp/management/commands/pcmd.py           |  26 ++-
 example/pexp/management/commands/polybench.py      |  89 +++++---
 .../commands/polymorphic_create_test_data.py       |  24 +-
 example/pexp/migrations/0001_initial.py            | 222 ++++++++++++++++++
 example/pexp/migrations/0002_modelc_field4.py      |  20 ++
 example/pexp/migrations/__init__.py                |   0
 example/pexp/models.py                             |  74 ++++--
 polymorphic/__init__.py                            |  18 +-
 polymorphic/__version__.py                         |   5 -
 polymorphic/admin.py                               |  66 +++---
 polymorphic/base.py                                |  28 +--
 polymorphic/locale/es/LC_MESSAGES/django.po        |  31 +++
 polymorphic/manager.py                             |  57 +----
 polymorphic/{manager.py => managers.py}            |  26 +--
 polymorphic/models.py                              | 228 ++++++++++++++++++-
 polymorphic/polymorphic_model.py                   | 222 ------------------
 polymorphic/query.py                               |  52 +++--
 polymorphic/query_translate.py                     |  37 +--
 polymorphic/showfields.py                          |   5 +-
 polymorphic/templatetags/polymorphic_admin_tags.py |   2 +-
 polymorphic/tests.py                               | 250 ++++++++++++++++-----
 polymorphic/tools_for_tests.py                     |  16 +-
 runtests.py                                        |  26 ++-
 setup.py                                           |  24 +-
 tox.ini                                            |  11 +-
 36 files changed, 1162 insertions(+), 647 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 5553c32..006d5eb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,25 +5,49 @@ python:
   - "3.2"
   - "3.3"
   - "3.4"
+  - "3.5"
 env:
   - DJANGO=">=1.4,<1.5"
   - DJANGO=">=1.5,<1.6"
   - DJANGO=">=1.6,<1.7"
   - DJANGO=">=1.7,<1.8"
   - DJANGO=">=1.8,<1.9"
+  - DJANGO=">=1.9,<1.10"
 
 matrix:
   exclude:
+  - python: "3.5"
+    env: DJANGO=">=1.4,<1.5"
+  - python: "3.5"
+    env: DJANGO=">=1.5,<1.6"
+  - python: "3.5"
+    env: DJANGO=">=1.6,<1.7"
+  - python: "3.5"
+    env: DJANGO=">=1.7,<1.8"
+  - python: "3.5"
+    env: DJANGO=">=1.8,<1.9"
+
   - python: "3.4"
     env: DJANGO=">=1.4,<1.5"
+  - python: "3.4"
+    env: DJANGO=">=1.9,<1.10"
+
   - python: "3.3"
     env: DJANGO=">=1.4,<1.5"
+  - python: "3.3"
+    env: DJANGO=">=1.9,<1.10"
+
   - python: "3.2"
     env: DJANGO=">=1.4,<1.5"
+  - python: "3.2"
+    env: DJANGO=">=1.9,<1.10"
+
   - python: "2.6"
     env: DJANGO=">=1.7,<1.8"
   - python: "2.6"
     env: DJANGO=">=1.8,<1.9"
+  - python: "2.6"
+    env: DJANGO=">=1.9,<1.10"
 
 install:
   - pip install django$DJANGO coverage==3.6
diff --git a/AUTHORS.rst b/AUTHORS.rst
index 8611135..5e562ce 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -19,6 +19,7 @@ Contributors
 * Evan Borgstrom
 * Gavin Wahl
 * Germán M. Bravo
+* Hugo Osvaldo Barrera
 * Jacob Rief
 * Jedediah Smith (proxy models support)
 * John Furr
diff --git a/docs/advanced.rst b/docs/advanced.rst
index 3b7a2a3..dbc7f82 100644
--- a/docs/advanced.rst
+++ b/docs/advanced.rst
@@ -6,7 +6,7 @@ Advanced features
 In the examples below, these models are being used::
 
     from django.db import models
-    from polymorphic import PolymorphicModel
+    from polymorphic.models import PolymorphicModel
 
     class ModelA(PolymorphicModel):
         field1 = models.CharField(max_length=10)
@@ -202,7 +202,7 @@ Nicely Displaying Polymorphic Querysets
 In order to get the output as seen in all examples here, you need to use the
 :class:`~polymorphic.showfields.ShowFieldType` class mixin::
 
-    from polymorphic import PolymorphicModel, ShowFieldType
+    from polymorphic.showfields import PolymorphicModel, ShowFieldType
 
     class ModelA(ShowFieldType, PolymorphicModel):
         field1 = models.CharField(max_length=10)
diff --git a/docs/changelog.rst b/docs/changelog.rst
index cb657f3..5de4115 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -1,6 +1,42 @@
 Changelog
 ==========
 
+Version 0.8.1 (2015-12-29)
+--------------------------
+
+* Fixed support for reverse relations for ``relname___field`` when the field starts with an ``_`` character.
+  Otherwise, the query will be interpreted as subclass lookup (``ClassName___field``).
+
+
+Version 0.8 (2015-12-28)
+------------------------
+
+* Added Django 1.9 compatibility.
+* Renamed ``polymorphic.manager`` => ``polymorphic.managers`` for consistentcy.
+* **BACKWARDS INCOMPATIBILITY:** The import paths have changed to support Django 1.9.
+  Instead of ``from polymorphic import X``,
+you'll have to import from the proper package. For example:
+
+.. code-block:: python
+
+    polymorphic.models import PolymorphicModel
+    polymorphic.managers import PolymorphicManager, PolymorphicQuerySet
+    polymorphic.showfields import ShowFieldContent, ShowFieldType, ShowFieldTypeAndContent
+
+* **BACKWARDS INCOMPATIBILITY:** Removed ``__version__.py`` in favor of a standard ``__version__`` in ``polymorphic/__init__.py``.
+* **BACKWARDS INCOMPATIBILITY:** Removed automatic proxying of method calls to the queryset class.
+  Use the standard Django methods instead:
+
+.. code-block:: python
+
+    # In model code:
+    objects = PolymorphicQuerySet.as_manager()
+
+    # For manager code:
+    MyCustomManager = PolymorphicManager.from_queryset(MyCustomQuerySet)
+
+
+
 Version 0.7.2 (2015-10-01)
 --------------------------
 
diff --git a/docs/conf.py b/docs/conf.py
index da84e0f..c0e277a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -11,7 +11,8 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-import sys, os
+import sys
+import os
 
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
@@ -54,9 +55,9 @@ copyright = u'2013, Bert Constantin, Chris Glass, Diederik van der Boor'
 # built documents.
 #
 # The short X.Y version.
-version = '0.7.2'
+version = '0.8.1'
 # The full version, including alpha/beta/rc tags.
-release = '0.7.2'
+release = '0.8.1'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -176,21 +177,21 @@ htmlhelp_basename = 'django-polymorphicdoc'
 # -- Options for LaTeX output --------------------------------------------------
 
 latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
+    # The paper size ('letterpaper' or 'a4paper').
+    #'papersize': 'letterpaper',
 
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
+    # The font size ('10pt', '11pt' or '12pt').
+    #'pointsize': '10pt',
 
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
+    # Additional stuff for the LaTeX preamble.
+    #'preamble': '',
 }
 
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass [howto/manual]).
 latex_documents = [
-  ('index', 'django-polymorphic.tex', u'django-polymorphic Documentation',
-   u'Bert Constantin, Chris Glass, Diederik van der Boor', 'manual'),
+    ('index', 'django-polymorphic.tex', u'django-polymorphic Documentation',
+     u'Bert Constantin, Chris Glass, Diederik van der Boor', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -233,9 +234,9 @@ man_pages = [
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-  ('index', 'django-polymorphic', u'django-polymorphic Documentation',
-   u'Bert Constantin, Chris Glass, Diederik van der Boor', 'django-polymorphic', 'One line description of project.',
-   'Miscellaneous'),
+    ('index', 'django-polymorphic', u'django-polymorphic Documentation',
+     u'Bert Constantin, Chris Glass, Diederik van der Boor', 'django-polymorphic', 'One line description of project.',
+     'Miscellaneous'),
 ]
 
 # Documents to append as an appendix to all manuals.
diff --git a/docs/managers.rst b/docs/managers.rst
index 15db12d..9ed04f7 100644
--- a/docs/managers.rst
+++ b/docs/managers.rst
@@ -10,9 +10,10 @@ manager class, just derive your manager from ``PolymorphicManager`` instead of
 ``models.Manager``. As with vanilla Django, in your model class, you should
 explicitly add the default manager first, and then your custom manager::
 
-    from polymorphic import PolymorphicModel, PolymorphicManager
+    from polymorphic.models import PolymorphicModel
+    from polymorphic.manager import PolymorphicManager
 
-   class TimeOrderedManager(PolymorphicManager):
+    class TimeOrderedManager(PolymorphicManager):
         def get_queryset(self):
             qs = super(TimeOrderedManager,self).get_queryset()
             return qs.order_by('-start_date')        # order the queryset
@@ -41,9 +42,10 @@ base models, as long as these are polymorphic. This means that all
 managers defined in polymorphic base models continue to work as
 expected in models inheriting from this base model::
 
-   from polymorphic import PolymorphicModel, PolymorphicManager
+    from polymorphic.models import PolymorphicModel
+    from polymorphic.manager import PolymorphicManager
 
-   class TimeOrderedManager(PolymorphicManager):
+    class TimeOrderedManager(PolymorphicManager):
         def get_queryset(self):
             qs = super(TimeOrderedManager,self).get_queryset()
             return qs.order_by('-start_date')        # order the queryset
@@ -77,7 +79,9 @@ which is the queryset class the manager should use. Just as with vanilla Django,
 you may define your own custom queryset classes. Just use PolymorphicQuerySet
 instead of Django's QuerySet as the base class::
 
-        from polymorphic import PolymorphicModel, PolymorphicManager, PolymorphicQuerySet
+        from polymorphic.models import PolymorphicModel
+        from polymorphic.manager import PolymorphicManager
+        from polymorphic.query import PolymorphicQuerySet
 
         class MyQuerySet(PolymorphicQuerySet):
             def my_queryset_method(...):
diff --git a/docs/quickstart.rst b/docs/quickstart.rst
index 68a2f25..85e7f61 100644
--- a/docs/quickstart.rst
+++ b/docs/quickstart.rst
@@ -19,7 +19,7 @@ Making Your Models Polymorphic
 
 Use ``PolymorphicModel`` instead of Django's ``models.Model``, like so::
 
-    from polymorphic import PolymorphicModel
+    from polymorphic.models import PolymorphicModel
 
     class Project(PolymorphicModel):
         topic = models.CharField(max_length=30)
diff --git a/example/example/settings.py b/example/example/settings.py
index 9458f25..9e33a05 100644
--- a/example/example/settings.py
+++ b/example/example/settings.py
@@ -75,7 +75,7 @@ INSTALLED_APPS = (
     'pexp',             # this Django app is for testing and experimentation; not needed otherwise
 )
 
-if django.VERSION >= (1,7):
+if django.VERSION >= (1, 7):
     TEST_RUNNER = 'django.test.runner.DiscoverRunner'  # silence system checks
 
 # Logging configuration
diff --git a/example/example/urls.py b/example/example/urls.py
index d070426..5a7d838 100644
--- a/example/example/urls.py
+++ b/example/example/urls.py
@@ -1,11 +1,11 @@
-from django.conf.urls import patterns, include, url
+from django.conf.urls import include, url
 from django.contrib import admin
 from django.core.urlresolvers import reverse_lazy
 from django.views.generic import RedirectView
 
 admin.autodiscover()
 
-urlpatterns = patterns('',
+urlpatterns = [
     url(r'^admin/', include(admin.site.urls)),
     url(r'^$', RedirectView.as_view(url=reverse_lazy('admin:index'), permanent=False)),
-)
+]
diff --git a/example/pexp/admin.py b/example/pexp/admin.py
index de9f3c3..b7dd8f9 100644
--- a/example/pexp/admin.py
+++ b/example/pexp/admin.py
@@ -14,6 +14,7 @@ class ProjectChildAdmin(PolymorphicChildModelAdmin):
         }),
     )
 
+
 class ProjectAdmin(PolymorphicParentModelAdmin):
     base_model = Project
     list_filter = (PolymorphicChildModelFilter,)
@@ -26,10 +27,10 @@ class ProjectAdmin(PolymorphicParentModelAdmin):
 admin.site.register(Project, ProjectAdmin)
 
 
-
 class ModelAChildAdmin(PolymorphicChildModelAdmin):
     base_model = ModelA
 
+
 class ModelAAdmin(PolymorphicParentModelAdmin):
     base_model = ModelA
     list_filter = (PolymorphicChildModelFilter,)
@@ -42,41 +43,42 @@ class ModelAAdmin(PolymorphicParentModelAdmin):
 admin.site.register(ModelA, ModelAAdmin)
 
 
-if 'Model2A' in globals():
-    class Model2AChildAdmin(PolymorphicChildModelAdmin):
-        base_model = Model2A
+class Model2AChildAdmin(PolymorphicChildModelAdmin):
+    base_model = Model2A
+
+
+class Model2AAdmin(PolymorphicParentModelAdmin):
+    base_model = Model2A
+    list_filter = (PolymorphicChildModelFilter,)
+    child_models = (
+        (Model2A, Model2AChildAdmin),
+        (Model2B, Model2AChildAdmin),
+        (Model2C, Model2AChildAdmin),
+    )
 
-    class Model2AAdmin(PolymorphicParentModelAdmin):
-        base_model = Model2A
-        list_filter = (PolymorphicChildModelFilter,)
-        child_models = (
-            (Model2A, Model2AChildAdmin),
-            (Model2B, Model2AChildAdmin),
-            (Model2C, Model2AChildAdmin),
-        )
+admin.site.register(Model2A, Model2AAdmin)
 
-    admin.site.register(Model2A, Model2AAdmin)
 
+class UUIDModelAChildAdmin(PolymorphicChildModelAdmin):
+    base_model = UUIDModelA
 
-if 'UUIDModelA' in globals():
-    class UUIDModelAChildAdmin(PolymorphicChildModelAdmin):
-        base_model = UUIDModelA
 
-    class UUIDModelAAdmin(PolymorphicParentModelAdmin):
-        base_model = UUIDModelA
-        list_filter = (PolymorphicChildModelFilter,)
-        child_models = (
-            (UUIDModelA, UUIDModelAChildAdmin),
-            (UUIDModelB, UUIDModelAChildAdmin),
-            (UUIDModelC, UUIDModelAChildAdmin),
-        )
+class UUIDModelAAdmin(PolymorphicParentModelAdmin):
+    base_model = UUIDModelA
+    list_filter = (PolymorphicChildModelFilter,)
+    child_models = (
+        (UUIDModelA, UUIDModelAChildAdmin),
+        (UUIDModelB, UUIDModelAChildAdmin),
+        (UUIDModelC, UUIDModelAChildAdmin),
+    )
 
-    admin.site.register(UUIDModelA, UUIDModelAAdmin)
+admin.site.register(UUIDModelA, UUIDModelAAdmin)
 
 
 class ProxyChildAdmin(PolymorphicChildModelAdmin):
     base_model = ProxyBase
 
+
 class ProxyAdmin(PolymorphicParentModelAdmin):
     base_model = ProxyBase
     list_filter = (PolymorphicChildModelFilter,)
diff --git a/example/pexp/management/commands/p2cmd.py b/example/pexp/management/commands/p2cmd.py
index 1107370..f6c31bd 100644
--- a/example/pexp/management/commands/p2cmd.py
+++ b/example/pexp/management/commands/p2cmd.py
@@ -4,80 +4,97 @@ This module is a scratchpad for general development, testing & debugging
 Well, even more so than pcmd.py. You best ignore p2cmd.py.
 """
 import uuid
+import django
 
 from django.core.management.base import NoArgsCommand
-from django.db.models import connection
+from django.db import connection
 from pprint import pprint
-import time,sys
+import time
+import sys
 
 from pexp.models import *
 
+
 def reset_queries():
-    connection.queries=[]
+    if django.VERSION < (1, 9):
+        connection.queries = []
+    else:
+        connection.queries_log.clear()
+
 
 def show_queries():
-    print; print 'QUERIES:',len(connection.queries); pprint(connection.queries); print; connection.queries=[]
+    print
+    print 'QUERIES:', len(connection.queries)
+    pprint(connection.queries)
+    print
+    connection.queries = []
+
 
 def print_timing(func, message='', iterations=1):
     def wrapper(*arg):
-        results=[]
+        results = []
         reset_queries()
         for i in xrange(iterations):
             t1 = time.time()
             x = func(*arg)
             t2 = time.time()
-            results.append((t2-t1)*1000.0)
-        res_sum=0
-        for r in results: res_sum +=r
+            results.append((t2 - t1) * 1000.0)
+        res_sum = 0
+        for r in results:
+            res_sum += r
         median = res_sum / len(results)
         print '%s%-19s: %.4f ms, %i queries (%i times)' % (
-            message,func.func_name,
+            message, func.func_name,
             res_sum,
             len(connection.queries),
             iterations
-            )
+        )
         sys.stdout.flush()
     return wrapper
 
+
 class Command(NoArgsCommand):
     help = ""
 
     def handle_noargs(self, **options):
         if False:
             ModelA.objects.all().delete()
-            a=ModelA.objects.create(field1='A1')
-            b=ModelB.objects.create(field1='B1', field2='B2')
-            c=ModelC.objects.create(field1='C1', field2='C2', field3='C3')
+            a = ModelA.objects.create(field1='A1')
+            b = ModelB.objects.create(field1='B1', field2='B2')
+            c = ModelC.objects.create(field1='C1', field2='C2', field3='C3')
             reset_queries()
-            print ModelC.base_objects.all();
+            print ModelC.base_objects.all()
             show_queries()
 
         if False:
             ModelA.objects.all().delete()
             for i in xrange(1000):
-                a=ModelA.objects.create(field1=str(i%100))
-                b=ModelB.objects.create(field1=str(i%100), field2=str(i%200))
-                c=ModelC.objects.create(field1=str(i%100), field2=str(i%200), field3=str(i%300))
-                if i%100==0: print i
+                a = ModelA.objects.create(field1=str(i % 100))
+                b = ModelB.objects.create(field1=str(i % 100), field2=str(i % 200))
+                c = ModelC.objects.create(field1=str(i % 100), field2=str(i % 200), field3=str(i % 300))
+                if i % 100 == 0:
+                    print i
 
-        f=print_timing(poly_sql_query,iterations=1000)
+        f = print_timing(poly_sql_query, iterations=1000)
         f()
-        
-        f=print_timing(poly_sql_query2,iterations=1000)
+
+        f = print_timing(poly_sql_query2, iterations=1000)
         f()
 
         return
 
         nModelA.objects.all().delete()
-        a=nModelA.objects.create(field1='A1')
-        b=nModelB.objects.create(field1='B1', field2='B2')
-        c=nModelC.objects.create(field1='C1', field2='C2', field3='C3')
-        qs=ModelA.objects.raw("SELECT * from pexp_modela")
-        for o in list(qs): print o
+        a = nModelA.objects.create(field1='A1')
+        b = nModelB.objects.create(field1='B1', field2='B2')
+        c = nModelC.objects.create(field1='C1', field2='C2', field3='C3')
+        qs = ModelA.objects.raw("SELECT * from pexp_modela")
+        for o in list(qs):
+            print o
 
 from django.db import connection, transaction
 from random import Random
-rnd=Random()
+rnd = Random()
+
 
 def poly_sql_query():
     cursor = connection.cursor()
@@ -90,10 +107,11 @@ def poly_sql_query():
         ON pexp_modelb.modela_ptr_id = pexp_modelc.modelb_ptr_id
         WHERE pexp_modela.field1=%i
         ORDER BY pexp_modela.id
-        """ % rnd.randint(0,100) )
-    #row=cursor.fetchone()
+        """ % rnd.randint(0, 100) )
+    # row=cursor.fetchone()
     return
 
+
 def poly_sql_query2():
     cursor = connection.cursor()
     cursor.execute("""
@@ -101,6 +119,6 @@ def poly_sql_query2():
         FROM pexp_modela
         WHERE pexp_modela.field1=%i
         ORDER BY pexp_modela.id
-        """ % rnd.randint(0,100) )
-    #row=cursor.fetchone()
+        """ % rnd.randint(0, 100) )
+    # row=cursor.fetchone()
     return
diff --git a/example/pexp/management/commands/pcmd.py b/example/pexp/management/commands/pcmd.py
index 92de13b..e28608e 100644
--- a/example/pexp/management/commands/pcmd.py
+++ b/example/pexp/management/commands/pcmd.py
@@ -4,32 +4,38 @@ This module is a scratchpad for general development, testing & debugging.
 """
 
 from django.core.management.base import NoArgsCommand
-from django.db.models import connection
+from django.db import connection
 from pprint import pprint
 
 from pexp.models import *
 
+
 def reset_queries():
-    connection.queries=[]
+    connection.queries = []
+
 
 def show_queries():
-    print; print 'QUERIES:',len(connection.queries); pprint(connection.queries); print; connection.queries=[]
+    print
+    print 'QUERIES:', len(connection.queries)
+    pprint(connection.queries)
+    print
+    connection.queries = []
+
 
 class Command(NoArgsCommand):
     help = ""
 
     def handle_noargs(self, **options):
         Project.objects.all().delete()
-        a=Project.objects.create(topic="John's gathering")
-        b=ArtProject.objects.create(topic="Sculpting with Tim", artist="T. Turner")
-        c=ResearchProject.objects.create(topic="Swallow Aerodynamics", supervisor="Dr. Winter")
+        a = Project.objects.create(topic="John's gathering")
+        b = ArtProject.objects.create(topic="Sculpting with Tim", artist="T. Turner")
+        c = ResearchProject.objects.create(topic="Swallow Aerodynamics", supervisor="Dr. Winter")
         print Project.objects.all()
         print
 
         ModelA.objects.all().delete()
-        a=ModelA.objects.create(field1='A1')
-        b=ModelB.objects.create(field1='B1', field2='B2')
-        c=ModelC.objects.create(field1='C1', field2='C2', field3='C3')
+        a = ModelA.objects.create(field1='A1')
+        b = ModelB.objects.create(field1='B1', field2='B2')
+        c = ModelC.objects.create(field1='C1', field2='C2', field3='C3')
         print ModelA.objects.all()
         print
-
diff --git a/example/pexp/management/commands/polybench.py b/example/pexp/management/commands/polybench.py
index 44d19aa..7622178 100644
--- a/example/pexp/management/commands/polybench.py
+++ b/example/pexp/management/commands/polybench.py
@@ -3,101 +3,120 @@
 This module is a scratchpad for general development, testing & debugging
 """
 
+import django
 from django.core.management.base import NoArgsCommand
-from django.db.models import connection
+from django.db import connection
 from pprint import pprint
 import sys
 from pexp.models import *
 
-num_objects=1000
+num_objects = 1000
+
 
 def reset_queries():
-    connection.queries=[]
+    if django.VERSION < (1, 9):
+        connection.queries = []
+    else:
+        connection.queries_log.clear()
+
 
 def show_queries():
-    print; print 'QUERIES:',len(connection.queries); pprint(connection.queries); print; reset_queries()
+    print
+    print 'QUERIES:', len(connection.queries)
+    pprint(connection.queries)
+    print
+    reset_queries()
 
 import time
 
 ###################################################################################
-### benchmark wrappers
+# benchmark wrappers
+
 
 def print_timing(func, message='', iterations=1):
     def wrapper(*arg):
-        results=[]
+        results = []
         reset_queries()
         for i in xrange(iterations):
             t1 = time.time()
             x = func(*arg)
             t2 = time.time()
-            results.append((t2-t1)*1000.0)
-        res_sum=0
-        for r in results: res_sum +=r
+            results.append((t2 - t1) * 1000.0)
+        res_sum = 0
+        for r in results:
+            res_sum += r
         median = res_sum / len(results)
         print '%s%-19s: %.0f ms, %i queries' % (
-            message,func.func_name,
+            message, func.func_name,
             median,
-            len(connection.queries)/len(results)
-            )
+            len(connection.queries) / len(results)
+        )
         sys.stdout.flush()
     return wrapper
 
+
 def run_vanilla_any_poly(func, iterations=1):
-    f=print_timing(func,'     ', iterations)
+    f = print_timing(func, '     ', iterations)
     f(nModelC)
-    f=print_timing(func,'poly ', iterations)
+    f = print_timing(func, 'poly ', iterations)
     f(ModelC)
 
 
 ###################################################################################
-### benchmarks
+# benchmarks
 
 def bench_create(model):
     for i in xrange(num_objects):
-        model.objects.create(field1='abc'+str(i), field2='abcd'+str(i), field3='abcde'+str(i))
-    #print 'count:',model.objects.count()
+        model.objects.create(field1='abc' + str(i), field2='abcd' + str(i), field3='abcde' + str(i))
+    # print 'count:',model.objects.count()
+
 
 def bench_load1(model):
     for o in model.objects.all():
         pass
 
+
 def bench_load1_short(model):
-    for i in xrange(num_objects/100):
+    for i in xrange(num_objects / 100):
         for o in model.objects.all()[:100]:
             pass
 
+
 def bench_load2(model):
     for o in model.objects.all():
-        f1=o.field1
-        f2=o.field2
-        f3=o.field3
+        f1 = o.field1
+        f2 = o.field2
+        f3 = o.field3
+
 
 def bench_load2_short(model):
-    for i in xrange(num_objects/100):
+    for i in xrange(num_objects / 100):
         for o in model.objects.all()[:100]:
-            f1=o.field1
-            f2=o.field2
-            f3=o.field3
+            f1 = o.field1
+            f2 = o.field2
+            f3 = o.field3
+
 
 def bench_delete(model):
     model.objects.all().delete()
 
 ###################################################################################
-### Command
+# Command
+
 
 class Command(NoArgsCommand):
     help = ""
 
     def handle_noargs(self, **options):
         func_list = [
-            ( bench_delete, 1 ),
-            ( bench_create, 1 ),
-            ( bench_load1,  5 ),
-            ( bench_load1_short, 5 ),
-            ( bench_load2, 5 ),
-            ( bench_load2_short, 5 )
-            ]
-        for f,iterations in func_list:
-            run_vanilla_any_poly(f,iterations=iterations)
+            (bench_delete, 1),
+            (bench_create, 1),
+            (bench_load1,  5),
+            (bench_load1_short, 5),
+            (bench_load2, 5),
+            (bench_load2_short, 5)
+        ]
+        for f, iterations in func_list:
+            run_vanilla_any_poly(f, iterations=iterations)
 
         print
diff --git a/example/pexp/management/commands/polymorphic_create_test_data.py b/example/pexp/management/commands/polymorphic_create_test_data.py
index f7d81e5..89217db 100644
--- a/example/pexp/management/commands/polymorphic_create_test_data.py
+++ b/example/pexp/management/commands/polymorphic_create_test_data.py
@@ -4,27 +4,31 @@ This module is a scratchpad for general development, testing & debugging
 """
 
 from django.core.management.base import NoArgsCommand
-from django.db.models import connection
+from django.db import connection
 from pprint import pprint
 
 from pexp.models import *
 
+
 def reset_queries():
-    connection.queries=[]
+    connection.queries = []
+
 
 def show_queries():
-    print; print 'QUERIES:',len(connection.queries); pprint(connection.queries); print; connection.queries=[]
-    
+    print
+    print 'QUERIES:', len(connection.queries)
+    pprint(connection.queries)
+    print
+    connection.queries = []
+
+
 class Command(NoArgsCommand):
     help = ""
 
     def handle_noargs(self, **options):
         Project.objects.all().delete()
-        o=Project.objects.create(topic="John's gathering")
-        o=ArtProject.objects.create(topic="Sculpting with Tim", artist="T. Turner")
-        o=ResearchProject.objects.create(topic="Swallow Aerodynamics", supervisor="Dr. Winter")
+        o = Project.objects.create(topic="John's gathering")
+        o = ArtProject.objects.create(topic="Sculpting with Tim", artist="T. Turner")
+        o = ResearchProject.objects.create(topic="Swallow Aerodynamics", supervisor="Dr. Winter")
         print Project.objects.all()
         print
-        
-
-
diff --git a/example/pexp/migrations/0001_initial.py b/example/pexp/migrations/0001_initial.py
new file mode 100644
index 0000000..55730d1
--- /dev/null
+++ b/example/pexp/migrations/0001_initial.py
@@ -0,0 +1,222 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9b1 on 2015-10-23 22:20
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import polymorphic.showfields
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ('contenttypes', '0002_remove_content_type_name'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Model2A',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('field1', models.CharField(max_length=10)),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='ModelA',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('field1', models.CharField(max_length=10)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=(polymorphic.showfields.ShowFieldTypeAndContent, models.Model),
+        ),
+        migrations.CreateModel(
+            name='nModelA',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('field1', models.CharField(max_length=10)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Project',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('topic', models.CharField(max_length=30)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=(polymorphic.showfields.ShowFieldContent, models.Model),
+        ),
+        migrations.CreateModel(
+            name='ProxyBase',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('title', models.CharField(max_length=200)),
+                ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_pexp.proxybase_set+', to='contenttypes.ContentType')),
+            ],
+            options={
+                'ordering': ('title',),
+            },
+        ),
+        migrations.CreateModel(
+            name='UUIDModelA',
+            fields=[
+                ('uuid_primary_key', models.UUIDField(primary_key=True, serialize=False)),
+                ('field1', models.CharField(max_length=10)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=(polymorphic.showfields.ShowFieldTypeAndContent, models.Model),
+        ),
+        migrations.CreateModel(
+            name='ArtProject',
+            fields=[
+                ('project_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pexp.Project')),
+                ('artist', models.CharField(max_length=30)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=('pexp.project',),
+        ),
+        migrations.CreateModel(
+            name='Model2B',
+            fields=[
+                ('model2a_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pexp.Model2A')),
+                ('field2', models.CharField(max_length=10)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=('pexp.model2a',),
+        ),
+        migrations.CreateModel(
+            name='ModelB',
+            fields=[
+                ('modela_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pexp.ModelA')),
+                ('field2', models.CharField(max_length=10)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=('pexp.modela',),
+        ),
+        migrations.CreateModel(
+            name='nModelB',
+            fields=[
+                ('nmodela_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pexp.nModelA')),
+                ('field2', models.CharField(max_length=10)),
+            ],
+            bases=('pexp.nmodela',),
+        ),
+        migrations.CreateModel(
+            name='ResearchProject',
+            fields=[
+                ('project_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pexp.Project')),
+                ('supervisor', models.CharField(max_length=30)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=('pexp.project',),
+        ),
+        migrations.CreateModel(
+            name='UUIDModelB',
+            fields=[
+                ('uuidmodela_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pexp.UUIDModelA')),
+                ('field2', models.CharField(max_length=10)),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=('pexp.uuidmodela',),
+        ),
+        migrations.AddField(
+            model_name='uuidmodela',
+            name='polymorphic_ctype',
+            field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_pexp.uuidmodela_set+', to='contenttypes.ContentType'),
+        ),
+        migrations.AddField(
+            model_name='project',
+            name='polymorphic_ctype',
+            field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_pexp.project_set+', to='contenttypes.ContentType'),
+        ),
+        migrations.AddField(
+            model_name='modela',
+            name='polymorphic_ctype',
+            field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_pexp.modela_set+', to='contenttypes.ContentType'),
+        ),
+        migrations.AddField(
... 2446 lines suppressed ...

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



More information about the Python-modules-commits mailing list