Merge branch 'feature/django18' into develop

This commit is contained in:
Tyson Clugg 2015-06-14 03:33:33 +10:00
commit 6f8d68a10c
3 changed files with 30 additions and 12 deletions

View file

@ -12,7 +12,10 @@ from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import connection, connections
from django.db.models import aggregates, Q
from django.db.models.expressions import ExpressionNode
try:
from django.db.models.expressions import ExpressionNode
except ImportError:
from django.db.models import Expression as ExpressionNode
from django.db.models.sql import aggregates as sql_aggregates
from django.utils.encoding import force_text
from django.db import DatabaseError
@ -48,6 +51,7 @@ class Array(aggregates.Aggregate):
"""Array aggregate function."""
func = 'ARRAY'
function = 'array_agg'
name = 'Array'
def add_to_query(self, query, alias, col, source, is_summary):
@ -64,9 +68,17 @@ class Array(aggregates.Aggregate):
return 'ArrayType'
new_source = ArrayField()
super(Array, self).add_to_query(
query, alias, col, new_source, is_summary,
)
try:
super(Array, self).add_to_query(
query, alias, col, new_source, is_summary,
)
except AttributeError:
query.aggregates[alias] = new_source
def convert_value(self, value, expression, connection, context):
if not value:
return []
return value
def api_endpoint(path_or_func):

View file

@ -1,16 +1,22 @@
"""Django DDP utils for DDP messaging."""
from copy import deepcopy
from dddp import THREAD_LOCAL as this, REMOVED
from django.db.models.expressions import ExpressionNode
try:
from django.db.models.expressions import ExpressionNode
except AttributeError:
ExpressionNode = None
def obj_change_as_msg(obj, msg):
"""Generate a DDP msg for obj with specified msg type."""
# check for F expressions
exps = [
name for name, val in vars(obj).items()
if isinstance(val, ExpressionNode)
]
if ExpressionNode is None:
exps = False
else:
# check for F expressions
exps = [
name for name, val in vars(obj).items()
if isinstance(val, ExpressionNode)
]
if exps:
# clone and update obj with values but only for the expression fields
obj = deepcopy(obj)

View file

@ -14,10 +14,10 @@ setup(
packages=find_packages(),
include_package_data=True,
install_requires=[
'Django>=1.7,<1.8',
'Django>=1.7',
'psycopg2>=2.5.4',
'gevent>=1.0',
'gevent-websocket>=0.9',
'gevent-websocket>=0.9,!=0.9.4',
'meteor-ejson>=1.0',
'psycogreen>=1.0',
'django-dbarray>=0.2',