Reformat all files with isort and black

This commit is contained in:
Diederik van der Boor
2019-07-15 09:50:03 +02:00
parent d314dce4a2
commit 59c020ee50
50 changed files with 4069 additions and 2419 deletions
+7 -6
View File
@@ -1,6 +1,11 @@
from django.contrib import admin
from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin, PolymorphicChildModelFilter
from pexp.models import *
from polymorphic.admin import (
PolymorphicChildModelAdmin,
PolymorphicChildModelFilter,
PolymorphicParentModelAdmin,
)
class ProjectAdmin(PolymorphicParentModelAdmin):
@@ -14,11 +19,7 @@ class ProjectChildAdmin(PolymorphicChildModelAdmin):
# On purpose, only have the shared fields here.
# The fields of the derived model should still be displayed.
base_fieldsets = (
("Base fields", {
'fields': ('topic',)
}),
)
base_fieldsets = (("Base fields", {"fields": ("topic",)}),)
admin.site.register(Project, ProjectAdmin)
+26 -19
View File
@@ -7,12 +7,12 @@ import sys
import time
from pprint import pprint
from random import Random
from django.core.management import BaseCommand
from django.db import connection
from pexp.models import *
rnd = Random()
@@ -24,7 +24,7 @@ def show_queries():
connection.queries = []
def print_timing(func, message='', iterations=1):
def print_timing(func, message="", iterations=1):
def wrapper(*arg):
results = []
connection.queries_log.clear()
@@ -36,13 +36,12 @@ def print_timing(func, message='', iterations=1):
res_sum = 0
for r in results:
res_sum += r
print("%s%-19s: %.4f ms, %i queries (%i times)" % (
message, func.func_name,
res_sum,
len(connection.queries),
iterations
))
print(
"%s%-19s: %.4f ms, %i queries (%i times)"
% (message, func.func_name, res_sum, len(connection.queries), iterations)
)
sys.stdout.flush()
return wrapper
@@ -52,9 +51,9 @@ class Command(BaseCommand):
def handle_noargs(self, **options):
if False:
TestModelA.objects.all().delete()
a = TestModelA.objects.create(field1='A1')
b = TestModelB.objects.create(field1='B1', field2='B2')
c = TestModelC.objects.create(field1='C1', field2='C2', field3='C3')
a = TestModelA.objects.create(field1="A1")
b = TestModelB.objects.create(field1="B1", field2="B2")
c = TestModelC.objects.create(field1="C1", field2="C2", field3="C3")
connection.queries_log.clear()
print(TestModelC.base_objects.all())
show_queries()
@@ -64,7 +63,9 @@ class Command(BaseCommand):
for i in range(1000):
a = TestModelA.objects.create(field1=str(i % 100))
b = TestModelB.objects.create(field1=str(i % 100), field2=str(i % 200))
c = TestModelC.objects.create(field1=str(i % 100), field2=str(i % 200), field3=str(i % 300))
c = TestModelC.objects.create(
field1=str(i % 100), field2=str(i % 200), field3=str(i % 300)
)
if i % 100 == 0:
print(i)
@@ -77,9 +78,9 @@ class Command(BaseCommand):
return
NormalModelA.objects.all().delete()
a = NormalModelA.objects.create(field1='A1')
b = NormalModelB.objects.create(field1='B1', field2='B2')
c = NormalModelC.objects.create(field1='C1', field2='C2', field3='C3')
a = NormalModelA.objects.create(field1="A1")
b = NormalModelB.objects.create(field1="B1", field2="B2")
c = NormalModelC.objects.create(field1="C1", field2="C2", field3="C3")
qs = TestModelA.objects.raw("SELECT * from pexp_testmodela")
for o in list(qs):
print(o)
@@ -87,7 +88,8 @@ class Command(BaseCommand):
def poly_sql_query():
cursor = connection.cursor()
cursor.execute("""
cursor.execute(
"""
SELECT id, pexp_testmodela.field1, pexp_testmodelb.field2, pexp_testmodelc.field3
FROM pexp_testmodela
LEFT OUTER JOIN pexp_testmodelb
@@ -96,18 +98,23 @@ def poly_sql_query():
ON pexp_testmodelb.testmodela_ptr_id = pexp_testmodelc.testmodelb_ptr_id
WHERE pexp_testmodela.field1=%i
ORDER BY pexp_testmodela.id
""" % rnd.randint(0, 100))
"""
% rnd.randint(0, 100)
)
# row=cursor.fetchone()
return
def poly_sql_query2():
cursor = connection.cursor()
cursor.execute("""
cursor.execute(
"""
SELECT id, pexp_testmodela.field1
FROM pexp_testmodela
WHERE pexp_testmodela.field1=%i
ORDER BY pexp_testmodela.id
""" % rnd.randint(0, 100))
"""
% rnd.randint(0, 100)
)
# row=cursor.fetchone()
return
+10 -9
View File
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
"""
This module is a scratchpad for general development, testing & debugging.
"""
@@ -20,13 +19,15 @@ class Command(NoArgsCommand):
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")
print Project.objects.all()
print
c = ResearchProject.objects.create(
topic="Swallow Aerodynamics", supervisor="Dr. Winter"
)
print(Project.objects.all())
print("")
TestModelA.objects.all().delete()
a = TestModelA.objects.create(field1='A1')
b = TestModelB.objects.create(field1='B1', field2='B2')
c = TestModelC.objects.create(field1='C1', field2='C2', field3='C3')
print TestModelA.objects.all()
print
a = TestModelA.objects.create(field1="A1")
b = TestModelB.objects.create(field1="B1", field2="B2")
c = TestModelC.objects.create(field1="C1", field2="C2", field3="C3")
print(TestModelA.objects.all())
print("")
+18 -14
View File
@@ -3,14 +3,14 @@
This module is a scratchpad for general development, testing & debugging
"""
import time
import sys
import time
from pprint import pprint
from django.core.management import BaseCommand
from django.db import connection
from pprint import pprint
from pexp.models import *
from pexp.models import *
num_objects = 1000
@@ -27,7 +27,7 @@ def show_queries():
# benchmark wrappers
def print_timing(func, message='', iterations=1):
def print_timing(func, message="", iterations=1):
def wrapper(*arg):
results = []
connection.queries_log.clear()
@@ -40,28 +40,31 @@ def print_timing(func, message='', iterations=1):
for r in results:
res_sum += r
median = res_sum / len(results)
print("%s%-19s: %.0f ms, %i queries" % (
message, func.func_name,
median,
len(connection.queries) / len(results)
))
print(
"%s%-19s: %.0f ms, %i queries"
% (message, func.func_name, median, 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(NormalModelC)
f = print_timing(func, 'poly ', iterations)
f = print_timing(func, "poly ", iterations)
f(TestModelC)
###################################################################################
# benchmarks
def bench_create(model):
for i in range(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()
@@ -94,6 +97,7 @@ def bench_load2_short(model):
def bench_delete(model):
model.objects.all().delete()
###################################################################################
# Command
@@ -105,10 +109,10 @@ class Command(BaseCommand):
func_list = [
(bench_delete, 1),
(bench_create, 1),
(bench_load1, 5),
(bench_load1, 5),
(bench_load1_short, 5),
(bench_load2, 5),
(bench_load2_short, 5)
(bench_load2_short, 5),
]
for f, iterations in func_list:
run_vanilla_any_poly(f, iterations=iterations)
@@ -15,5 +15,7 @@ class Command(BaseCommand):
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 = ResearchProject.objects.create(
topic="Swallow Aerodynamics", supervisor="Dr. Winter"
)
print(Project.objects.all())
+219 -105
View File
@@ -2,181 +2,295 @@
from __future__ import unicode_literals
from django.db import migrations, models
import polymorphic.showfields
class Migration(migrations.Migration):
dependencies = [
('contenttypes', '0002_remove_content_type_name'),
]
dependencies = [("contenttypes", "0002_remove_content_type_name")]
operations = [
migrations.CreateModel(
name='NormalModelA',
name="NormalModelA",
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('field1', models.CharField(max_length=10)),
(
"id",
models.AutoField(
verbose_name="ID",
serialize=False,
auto_created=True,
primary_key=True,
),
),
("field1", models.CharField(max_length=10)),
],
),
migrations.CreateModel(
name='Project',
name="Project",
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('topic', models.CharField(max_length=30)),
(
"id",
models.AutoField(
verbose_name="ID",
serialize=False,
auto_created=True,
primary_key=True,
),
),
("topic", models.CharField(max_length=30)),
],
options={
'abstract': False,
},
options={"abstract": False},
bases=(polymorphic.showfields.ShowFieldContent, models.Model),
),
migrations.CreateModel(
name='ProxyBase',
name="ProxyBase",
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('title', models.CharField(max_length=200)),
('polymorphic_ctype', models.ForeignKey(related_name='polymorphic_pexp.proxybase_set+', editable=False, on_delete=models.CASCADE, to='contenttypes.ContentType', null=True)),
(
"id",
models.AutoField(
verbose_name="ID",
serialize=False,
auto_created=True,
primary_key=True,
),
),
("title", models.CharField(max_length=200)),
(
"polymorphic_ctype",
models.ForeignKey(
related_name="polymorphic_pexp.proxybase_set+",
editable=False,
on_delete=models.CASCADE,
to="contenttypes.ContentType",
null=True,
),
),
],
options={
'ordering': ('title',),
},
options={"ordering": ("title",)},
),
migrations.CreateModel(
name='TestModelA',
name="TestModelA",
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('field1', models.CharField(max_length=10)),
(
"id",
models.AutoField(
verbose_name="ID",
serialize=False,
auto_created=True,
primary_key=True,
),
),
("field1", models.CharField(max_length=10)),
],
options={
'abstract': False,
},
options={"abstract": False},
bases=(polymorphic.showfields.ShowFieldTypeAndContent, models.Model),
),
migrations.CreateModel(
name='UUIDModelA',
name="UUIDModelA",
fields=[
('uuid_primary_key', models.UUIDField(serialize=False, primary_key=True)),
('field1', models.CharField(max_length=10)),
(
"uuid_primary_key",
models.UUIDField(serialize=False, primary_key=True),
),
("field1", models.CharField(max_length=10)),
],
options={
'abstract': False,
},
options={"abstract": False},
bases=(polymorphic.showfields.ShowFieldTypeAndContent, models.Model),
),
migrations.CreateModel(
name='ArtProject',
name="ArtProject",
fields=[
('project_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.Project')),
('artist', models.CharField(max_length=30)),
(
"project_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.Project",
),
),
("artist", models.CharField(max_length=30)),
],
options={
'abstract': False,
},
bases=('pexp.project',),
options={"abstract": False},
bases=("pexp.project",),
),
migrations.CreateModel(
name='NormalModelB',
name="NormalModelB",
fields=[
('normalmodela_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.NormalModelA')),
('field2', models.CharField(max_length=10)),
(
"normalmodela_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.NormalModelA",
),
),
("field2", models.CharField(max_length=10)),
],
bases=('pexp.normalmodela',),
bases=("pexp.normalmodela",),
),
migrations.CreateModel(
name='ResearchProject',
name="ResearchProject",
fields=[
('project_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.Project')),
('supervisor', models.CharField(max_length=30)),
(
"project_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.Project",
),
),
("supervisor", models.CharField(max_length=30)),
],
options={
'abstract': False,
},
bases=('pexp.project',),
options={"abstract": False},
bases=("pexp.project",),
),
migrations.CreateModel(
name='TestModelB',
name="TestModelB",
fields=[
('testmodela_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.TestModelA')),
('field2', models.CharField(max_length=10)),
(
"testmodela_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.TestModelA",
),
),
("field2", models.CharField(max_length=10)),
],
options={
'abstract': False,
},
bases=('pexp.testmodela',),
options={"abstract": False},
bases=("pexp.testmodela",),
),
migrations.CreateModel(
name='UUIDModelB',
name="UUIDModelB",
fields=[
('uuidmodela_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.UUIDModelA')),
('field2', models.CharField(max_length=10)),
(
"uuidmodela_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.UUIDModelA",
),
),
("field2", models.CharField(max_length=10)),
],
options={
'abstract': False,
},
bases=('pexp.uuidmodela',),
options={"abstract": False},
bases=("pexp.uuidmodela",),
),
migrations.AddField(
model_name='uuidmodela',
name='polymorphic_ctype',
field=models.ForeignKey(related_name='polymorphic_pexp.uuidmodela_set+', editable=False, on_delete=models.CASCADE, to='contenttypes.ContentType', null=True),
model_name="uuidmodela",
name="polymorphic_ctype",
field=models.ForeignKey(
related_name="polymorphic_pexp.uuidmodela_set+",
editable=False,
on_delete=models.CASCADE,
to="contenttypes.ContentType",
null=True,
),
),
migrations.AddField(
model_name='testmodela',
name='polymorphic_ctype',
field=models.ForeignKey(related_name='polymorphic_pexp.testmodela_set+', editable=False, on_delete=models.CASCADE, to='contenttypes.ContentType', null=True),
model_name="testmodela",
name="polymorphic_ctype",
field=models.ForeignKey(
related_name="polymorphic_pexp.testmodela_set+",
editable=False,
on_delete=models.CASCADE,
to="contenttypes.ContentType",
null=True,
),
),
migrations.AddField(
model_name='project',
name='polymorphic_ctype',
field=models.ForeignKey(related_name='polymorphic_pexp.project_set+', editable=False, on_delete=models.CASCADE, to='contenttypes.ContentType', null=True),
model_name="project",
name="polymorphic_ctype",
field=models.ForeignKey(
related_name="polymorphic_pexp.project_set+",
editable=False,
on_delete=models.CASCADE,
to="contenttypes.ContentType",
null=True,
),
),
migrations.CreateModel(
name='ProxyA',
fields=[
],
options={
'proxy': True,
},
bases=('pexp.proxybase',),
name="ProxyA", fields=[], options={"proxy": True}, bases=("pexp.proxybase",)
),
migrations.CreateModel(
name='ProxyB',
fields=[
],
options={
'proxy': True,
},
bases=('pexp.proxybase',),
name="ProxyB", fields=[], options={"proxy": True}, bases=("pexp.proxybase",)
),
migrations.CreateModel(
name='NormalModelC',
name="NormalModelC",
fields=[
('normalmodelb_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.NormalModelB')),
('field3', models.CharField(max_length=10)),
(
"normalmodelb_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.NormalModelB",
),
),
("field3", models.CharField(max_length=10)),
],
bases=('pexp.normalmodelb',),
bases=("pexp.normalmodelb",),
),
migrations.CreateModel(
name='TestModelC',
name="TestModelC",
fields=[
('testmodelb_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.TestModelB')),
('field3', models.CharField(max_length=10)),
('field4', models.ManyToManyField(related_name='related_c', to='pexp.TestModelB')),
(
"testmodelb_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.TestModelB",
),
),
("field3", models.CharField(max_length=10)),
(
"field4",
models.ManyToManyField(
related_name="related_c", to="pexp.TestModelB"
),
),
],
options={
'abstract': False,
},
bases=('pexp.testmodelb',),
options={"abstract": False},
bases=("pexp.testmodelb",),
),
migrations.CreateModel(
name='UUIDModelC',
name="UUIDModelC",
fields=[
('uuidmodelb_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, on_delete=models.CASCADE, to='pexp.UUIDModelB')),
('field3', models.CharField(max_length=10)),
(
"uuidmodelb_ptr",
models.OneToOneField(
parent_link=True,
auto_created=True,
primary_key=True,
serialize=False,
on_delete=models.CASCADE,
to="pexp.UUIDModelB",
),
),
("field3", models.CharField(max_length=10)),
],
options={
'abstract': False,
},
bases=('pexp.uuidmodelb',),
options={"abstract": False},
bases=("pexp.uuidmodelb",),
),
]
+7 -4
View File
@@ -8,6 +8,7 @@ from polymorphic.showfields import ShowFieldContent, ShowFieldTypeAndContent
class Project(ShowFieldContent, PolymorphicModel):
"""Polymorphic model"""
topic = models.CharField(max_length=30)
@@ -21,6 +22,7 @@ class ResearchProject(Project):
class UUIDModelA(ShowFieldTypeAndContent, PolymorphicModel):
"""UUID as primary key example"""
uuid_primary_key = models.UUIDField(primary_key=True)
field1 = models.CharField(max_length=10)
@@ -35,17 +37,17 @@ class UUIDModelC(UUIDModelB):
class ProxyBase(PolymorphicModel):
"""Proxy model example - a single table with multiple types."""
title = models.CharField(max_length=200)
def __unicode__(self):
return u"<ProxyBase[type={0}]: {1}>".format(self.polymorphic_ctype, self.title)
class Meta:
ordering = ('title',)
ordering = ("title",)
class ProxyA(ProxyBase):
class Meta:
proxy = True
@@ -54,7 +56,6 @@ class ProxyA(ProxyBase):
class ProxyB(ProxyBase):
class Meta:
proxy = True
@@ -64,6 +65,7 @@ class ProxyB(ProxyBase):
# Internals for management command tests
class TestModelA(ShowFieldTypeAndContent, PolymorphicModel):
field1 = models.CharField(max_length=10)
@@ -74,11 +76,12 @@ class TestModelB(TestModelA):
class TestModelC(TestModelB):
field3 = models.CharField(max_length=10)
field4 = models.ManyToManyField(TestModelB, related_name='related_c')
field4 = models.ManyToManyField(TestModelB, related_name="related_c")
class NormalModelA(models.Model):
"""Normal Django inheritance, no polymorphic behavior"""
field1 = models.CharField(max_length=10)