Unverified Commit 0d248a8b authored by Serge S. Koval's avatar Serge S. Koval Committed by GitHub

Merge pull request #1556 from nad2000/issues/1555

Use LEFT OUTER JOIN instead of INNER JOIN when searching rows
parents a9f4a84a edba5d60
...@@ -33,6 +33,10 @@ matrix: ...@@ -33,6 +33,10 @@ matrix:
addons: addons:
postgresql: "9.4" postgresql: "9.4"
apt:
packages:
- postgresql-9.4-postgis-2.4
- postgresql-9.4-postgis-2.4-scripts
services: services:
- postgresql - postgresql
......
...@@ -7,7 +7,7 @@ from flask_admin.babel import gettext, ngettext, lazy_gettext ...@@ -7,7 +7,7 @@ from flask_admin.babel import gettext, ngettext, lazy_gettext
from flask_admin.model import BaseModelView from flask_admin.model import BaseModelView
from flask_admin.model.form import create_editable_list_form from flask_admin.model.form import create_editable_list_form
from peewee import PrimaryKeyField, ForeignKeyField, Field, CharField, TextField from peewee import JOIN, PrimaryKeyField, ForeignKeyField, Field, CharField, TextField
from flask_admin.actions import action from flask_admin.actions import action
from flask_admin.contrib.peewee import filters from flask_admin.contrib.peewee import filters
...@@ -309,7 +309,7 @@ class ModelView(BaseModelView): ...@@ -309,7 +309,7 @@ class ModelView(BaseModelView):
model_name = field.model_class.__name__ model_name = field.model_class.__name__
if model_name not in joins: if model_name not in joins:
query = query.join(field.model_class) query = query.join(field.model_class, JOIN.LEFT_OUTER)
joins.add(model_name) joins.add(model_name)
return query return query
......
...@@ -75,14 +75,14 @@ def tuple_operator_in(model_pk, ids): ...@@ -75,14 +75,14 @@ def tuple_operator_in(model_pk, ids):
The returning operator can be used within a filter(), as it is just an or_ operator The returning operator can be used within a filter(), as it is just an or_ operator
""" """
l = [] ands = []
for id in ids: for id in ids:
k = [] k = []
for i in range(len(model_pk)): for i in range(len(model_pk)):
k.append(eq(model_pk[i], id[i])) k.append(eq(model_pk[i], id[i]))
l.append(and_(*k)) ands.append(and_(*k))
if len(l) >= 1: if len(ands) >= 1:
return or_(*l) return or_(*ands)
else: else:
return None return None
......
...@@ -8,7 +8,7 @@ skip_missing_interpreters = true ...@@ -8,7 +8,7 @@ skip_missing_interpreters = true
[flake8] [flake8]
max_line_length = 120 max_line_length = 120
ignore = E402 ignore = E402,E722
[testenv] [testenv]
usedevelop = true usedevelop = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment