diff --git a/dddp/api.py b/dddp/api.py index 2681bc8..fc0a745 100644 --- a/dddp/api.py +++ b/dddp/api.py @@ -25,6 +25,7 @@ from django.utils.module_loading import import_string from django.db import DatabaseError from django.db.models import signals import ejson +import six # django-ddp from dddp import ( @@ -69,12 +70,11 @@ class Array(aggregates.Aggregate): def add_to_query(self, query, alias, col, source, is_summary): """Override source field internal type so the raw array is returned.""" + @six.add_metaclass(dbarray.ArrayFieldMetaclass) class ArrayField(dbarray.ArrayFieldBase, source.__class__): """ArrayField for override.""" - __metaclass__ = dbarray.ArrayFieldMetaclass - @staticmethod def get_internal_type(): """Return ficticious type so Django doesn't cast as int.""" @@ -203,7 +203,9 @@ class APIMixin(object): """Clear out cache for api_path_map.""" self._api_path_cache = None for api_provider in self.api_providers: - if api_provider.clear_api_path_map_cache.im_self is not None: + if six.get_method_self( + api_provider.clear_api_path_map_cache, + ) is not None: api_provider.clear_api_path_map_cache() def api_endpoint(self, api_path): @@ -241,12 +243,11 @@ class CollectionMeta(APIMeta): return super(CollectionMeta, mcs).__new__(mcs, name, bases, attrs) +@six.add_metaclass(CollectionMeta) class Collection(APIMixin): """DDP Model Collection.""" - __metaclass__ = CollectionMeta - name = None model = None qs_filter = None @@ -522,12 +523,11 @@ class PublicationMeta(APIMeta): return super(PublicationMeta, mcs).__new__(mcs, name, bases, attrs) +@six.add_metaclass(PublicationMeta) class Publication(APIMixin): """DDP Publication (a set of queries).""" - __metaclass__ = PublicationMeta - name = None queries = None @@ -553,12 +553,11 @@ class Publication(APIMixin): ) +@six.add_metaclass(APIMeta) class DDP(APIMixin): """Django DDP API.""" - __metaclass__ = APIMeta - pgworker = None _in_migration = False