mirror of
https://github.com/jazzband/django-ddp.git
synced 2026-03-16 22:40:24 +00:00
WIP on Django 1.8 compatibility.
This commit is contained in:
parent
02f1d78898
commit
2ad5e28452
3 changed files with 27 additions and 15 deletions
20
dddp/api.py
20
dddp/api.py
|
|
@ -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)
|
||||
|
|
|
|||
18
dddp/msg.py
18
dddp/msg.py
|
|
@ -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)
|
||||
|
|
|
|||
4
setup.py
4
setup.py
|
|
@ -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',
|
||||
|
|
|
|||
Loading…
Reference in a new issue