diff --git a/hstore_flattenfields/db/base.py b/hstore_flattenfields/db/base.py index c8227a5..ea213e0 100644 --- a/hstore_flattenfields/db/base.py +++ b/hstore_flattenfields/db/base.py @@ -24,7 +24,7 @@ def __new__(cls, name, bases, attrs): new_class = super(HStoreModelMeta, cls).__new__( cls, name, bases, attrs ) - + # override getattr/setattr/delattr old_getattribute = new_class.__getattribute__ @@ -280,7 +280,7 @@ def by_group(dynamic_field): return True else: return False - + return filter(by_group, dynamic_fields) @property @@ -299,7 +299,7 @@ def by_group(content_pane): return True else: return False - + return filter(by_group, content_panes) @@ -376,6 +376,8 @@ def related_instances(self): from hstore_flattenfields.models import DynamicFieldGroup QueryModel = instances.query.model + + if QueryModel != DynamicFieldGroup and \ issubclass(QueryModel, DynamicFieldGroup): instances = map(lambda x: x.dynamicfieldgroup_ptr, instances) @@ -423,9 +425,9 @@ def by_groups(content_pane): # return content_pane.content_type.model == self.__class__.__name__.lower() # content_panes = cache.get('content_panes', []) - + # content_panes = filter(by_refer, content_panes) # content_panes = filter(by_group, content_panes) # content_panes = filter(by_dfields, content_panes) - + # return content_panes diff --git a/hstore_flattenfields/db/queryset.py b/hstore_flattenfields/db/queryset.py index 26f8f8f..2e8ca47 100644 --- a/hstore_flattenfields/db/queryset.py +++ b/hstore_flattenfields/db/queryset.py @@ -212,7 +212,7 @@ def values(self, *fields): if not fields: fields = self.all_field_names return parse_queryset( - self.model, + self.model, super(FlattenFieldsFilterQuerySet, self).values( *fields ) diff --git a/hstore_flattenfields/models.py b/hstore_flattenfields/models.py index 9fa762e..c5a3b08 100644 --- a/hstore_flattenfields/models.py +++ b/hstore_flattenfields/models.py @@ -21,7 +21,6 @@ from django_orm.postgresql import hstore from django_extensions.db.fields import AutoSlugField -# from caching.base import CachingManager, CachingMixin from db.base import ( HStoreModel, diff --git a/hstore_flattenfields/utils.py b/hstore_flattenfields/utils.py index 3ca4c1c..5c3615d 100644 --- a/hstore_flattenfields/utils.py +++ b/hstore_flattenfields/utils.py @@ -9,7 +9,7 @@ used in hstore_flattenfields application. :copyright: 2012, multmeio (http://www.multmeio.com.br) -:author: 2012, Luís Antônio Araújo Brito +:author: 2012, Luís Araújo :license: BSD, see LICENSE for more details. """ @@ -412,22 +412,21 @@ def build_flattenfields_object(obj): [] >>> DynamicField.objects.all().delete() """ - from hstore_flattenfields.models import ( - DynamicField, - ContentPane - ) - content_panes = metafields = [] - metafields = DynamicField.objects.filter( - refer=obj.__class__.__name__ - ).order_by('pk') - content_panes = ContentPane.objects.filter( - Q(content_type__model=obj.__class__.__name__.lower()) - ) - setattr(obj, '_dynamic_fields', metafields) - setattr(obj, '_content_panes', content_panes) - setattr(obj._meta, '_model_dynamic_fields', + try: + from hstore_flattenfields.models import ( + DynamicField, ContentPane + ) + assert dynamic_field_table_exists() + except (AssertionError, ImportError): + content_panes = metafields = [] + else: + metafields = DynamicField.objects.filter( + refer=obj.__class__.__name__ + ).order_by('pk') + content_panes = ContentPane.objects.filter( + Q(content_type__model=obj.__class__.__name__.lower()) + ) + setattr(obj, '_dynamic_fields', filter(lambda x: x, metafields)) + setattr(obj, '_content_panes', filter(lambda x: x, content_panes)) + setattr(obj._meta, '_model_dynamic_fields', map(create_field_from_instance, metafields)) - # try: - # assert dynamic_field_table_exists() - # except (AssertionError, ImportError): - # else: \ No newline at end of file