Fix PEP8 whitespace issues
autopep8 -r polymorphic/ example/ -i --select=E112,E113,E115,E116,E122,E123,E125,E127,E128,E201,E202,E203,E211,E225,E226,E227,E228,E231,E251,E261,E262,E271,E272,E273,E274,E301,E302,E303,E304,E309,E711,E713,W291,W293,W391 --exclude migrations,south_migrations (line conditiation fixes: E123,E125,E122,E127,E128)
This commit is contained in:
@@ -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,)
|
||||
@@ -45,6 +46,7 @@ admin.site.register(ModelA, ModelAAdmin)
|
||||
class Model2AChildAdmin(PolymorphicChildModelAdmin):
|
||||
base_model = Model2A
|
||||
|
||||
|
||||
class Model2AAdmin(PolymorphicParentModelAdmin):
|
||||
base_model = Model2A
|
||||
list_filter = (PolymorphicChildModelFilter,)
|
||||
@@ -60,6 +62,7 @@ admin.site.register(Model2A, Model2AAdmin)
|
||||
class UUIDModelAChildAdmin(PolymorphicChildModelAdmin):
|
||||
base_model = UUIDModelA
|
||||
|
||||
|
||||
class UUIDModelAAdmin(PolymorphicParentModelAdmin):
|
||||
base_model = UUIDModelA
|
||||
list_filter = (PolymorphicChildModelFilter,)
|
||||
@@ -75,6 +78,7 @@ admin.site.register(UUIDModelA, UUIDModelAAdmin)
|
||||
class ProxyChildAdmin(PolymorphicChildModelAdmin):
|
||||
base_model = ProxyBase
|
||||
|
||||
|
||||
class ProxyAdmin(PolymorphicParentModelAdmin):
|
||||
base_model = ProxyBase
|
||||
list_filter = (PolymorphicChildModelFilter,)
|
||||
|
||||
@@ -8,46 +8,50 @@ import uuid
|
||||
from django.core.management.base import NoArgsCommand
|
||||
from django.db.models import connection
|
||||
from pprint import pprint
|
||||
import time,sys
|
||||
import time, sys
|
||||
|
||||
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 = []
|
||||
|
||||
|
||||
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();
|
||||
show_queries()
|
||||
@@ -55,29 +59,30 @@ class Command(NoArgsCommand):
|
||||
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")
|
||||
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 +95,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) )
|
||||
""" % rnd.randint(0, 100) )
|
||||
#row=cursor.fetchone()
|
||||
return
|
||||
|
||||
|
||||
def poly_sql_query2():
|
||||
cursor = connection.cursor()
|
||||
cursor.execute("""
|
||||
@@ -101,6 +107,6 @@ def poly_sql_query2():
|
||||
FROM pexp_modela
|
||||
WHERE pexp_modela.field1=%i
|
||||
ORDER BY pexp_modela.id
|
||||
""" % rnd.randint(0,100) )
|
||||
""" % rnd.randint(0, 100) )
|
||||
#row=cursor.fetchone()
|
||||
return
|
||||
|
||||
@@ -9,27 +9,29 @@ 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
|
||||
|
||||
|
||||
@@ -9,43 +9,47 @@ from pprint import pprint
|
||||
import sys
|
||||
from pexp.models import *
|
||||
|
||||
num_objects=1000
|
||||
num_objects = 1000
|
||||
|
||||
|
||||
def reset_queries():
|
||||
connection.queries=[]
|
||||
connection.queries = []
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@@ -54,30 +58,35 @@ def run_vanilla_any_poly(func, iterations=1):
|
||||
|
||||
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))
|
||||
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()
|
||||
@@ -85,19 +94,20 @@ def bench_delete(model):
|
||||
###################################################################################
|
||||
### 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
|
||||
|
||||
@@ -9,22 +9,22 @@ 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
|
||||
|
||||
|
||||
|
||||
|
||||
+32
-2
@@ -6,48 +6,74 @@ from django.db import models
|
||||
from polymorphic.models import PolymorphicModel
|
||||
from polymorphic.showfields import ShowFieldContent, ShowFieldType, ShowFieldTypeAndContent
|
||||
|
||||
|
||||
class Project(ShowFieldContent, PolymorphicModel):
|
||||
topic = models.CharField(max_length=30)
|
||||
|
||||
|
||||
class ArtProject(Project):
|
||||
artist = models.CharField(max_length=30)
|
||||
|
||||
|
||||
class ResearchProject(Project):
|
||||
supervisor = models.CharField(max_length=30)
|
||||
|
||||
|
||||
class ModelA(ShowFieldTypeAndContent, PolymorphicModel):
|
||||
field1 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class ModelB(ModelA):
|
||||
field2 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class ModelC(ModelB):
|
||||
field3 = models.CharField(max_length=10)
|
||||
field4 = models.ManyToManyField(ModelB, related_name='related_c')
|
||||
|
||||
|
||||
class nModelA(models.Model):
|
||||
field1 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class nModelB(nModelA):
|
||||
field2 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class nModelC(nModelB):
|
||||
field3 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class Model2A(PolymorphicModel):
|
||||
field1 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class Model2B(Model2A):
|
||||
field2 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class Model2C(Model2B):
|
||||
field3 = models.CharField(max_length=10)
|
||||
|
||||
if django.VERSION < (1,8):
|
||||
if django.VERSION < (1, 8):
|
||||
from polymorphic.tools_for_tests import UUIDField
|
||||
else:
|
||||
from django.db.models import UUIDField
|
||||
|
||||
|
||||
class UUIDModelA(ShowFieldTypeAndContent, PolymorphicModel):
|
||||
uuid_primary_key = UUIDField(primary_key = True)
|
||||
uuid_primary_key = UUIDField(primary_key=True)
|
||||
field1 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class UUIDModelB(UUIDModelA):
|
||||
field2 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class UUIDModelC(UUIDModelB):
|
||||
field3 = models.CharField(max_length=10)
|
||||
|
||||
|
||||
class ProxyBase(PolymorphicModel):
|
||||
title = models.CharField(max_length=200)
|
||||
|
||||
@@ -57,14 +83,18 @@ class ProxyBase(PolymorphicModel):
|
||||
class Meta:
|
||||
ordering = ('title',)
|
||||
|
||||
|
||||
class ProxyA(ProxyBase):
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
def __unicode__(self):
|
||||
return u"<ProxyA: {0}>".format(self.title)
|
||||
|
||||
|
||||
class ProxyB(ProxyBase):
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user