WIP on Django 1.8 compatibility.

This commit is contained in:
Tyson Clugg 2015-06-12 23:08:27 +10:00
parent 02f1d78898
commit 2ad5e28452
3 changed files with 27 additions and 15 deletions

View file

@ -11,8 +11,11 @@ import dbarray
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
from django.db.models import aggregates, Q, Expression
try:
from django.db.models.expressions import ExpressionNode
except ImportError:
ExpressionNode = None
from django.db.models.sql import aggregates as sql_aggregates
from django.utils.encoding import force_text
from django.db import DatabaseError
@ -353,11 +356,14 @@ class Collection(APIMixin):
def serialize(self, obj, meteor_ids):
"""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/update obj with values but only for the expression fields
obj = deepcopy(obj)

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',