diff --git a/forms.py b/forms.py index 4c4e9be..b8879bb 100644 --- a/forms.py +++ b/forms.py @@ -25,7 +25,7 @@ from django.forms import BooleanField, CharField, DateTimeField, FloatField, \ from django.contrib.admin.widgets import AdminSplitDateTime from django.utils.translation import ugettext_lazy as _ -from .utils import EavRegistry +from .registry import Registry @@ -50,7 +50,7 @@ class BaseDynamicEntityForm(ModelForm): def __init__(self, data=None, *args, **kwargs): super(BaseDynamicEntityForm, self).__init__(data, *args, **kwargs) - config_cls = EavRegistry.get_config_cls_for_model(self.instance.__class__) + config_cls = Registry.get_config_cls_for_model(self.instance.__class__) self.entity = getattr(self.instance, config_cls.eav_attr) self._build_dynamic_fields() diff --git a/managers.py b/managers.py index d40735c..7a59417 100644 --- a/managers.py +++ b/managers.py @@ -80,10 +80,10 @@ def expand_eav_filter(model_cls, key, value): key = 'eav_values__in' value = Values.objects.filter(value_int=5, attribute__slug='height') ''' - from .utils import EavRegistry + from .registry import Registry fields = key.split('__') - config_cls = EavRegistry.get_config_cls_for_model(model_cls) + config_cls = Registry.get_config_cls_for_model(model_cls) if len(fields) > 1 and config_cls and \ fields[0] == config_cls.eav_attr: slug = fields[1] @@ -124,8 +124,8 @@ class EntityManager(models.Manager): return super(EntityManager, self).get(*args, **kwargs) def create(self, **kwargs): - from .utils import EavRegistry - config_cls = EavRegistry.get_config_cls_for_model(self.model) + from .registry import Registry + config_cls = Registry.get_config_cls_for_model(self.model) attributes = config_cls.get_attributes() prefix = '%s__' % config_cls.eav_attr diff --git a/models.py b/models.py index b663a10..356119c 100644 --- a/models.py +++ b/models.py @@ -191,8 +191,8 @@ class Value(models.Model): >>> from django.db import models >>> from django.contrib.auth.models import User - >>> from .utils import EavRegistry - >>> EavRegistry.register(User) + >>> from .registry import Registry + >>> Registry.register(User) >>> u = User.objects.create(username='crazy_dev_user') >>> a = Attribute.objects.create(name='Favorite Drink', datatype='text', ... slug='fav_drink') @@ -292,8 +292,8 @@ class Entity(object): return object.__getattr__(self, name) def get_all_attributes(self): - from .utils import EavRegistry - config_cls = EavRegistry.get_config_cls_for_model(self.model.__class__) + from .registry import Registry + config_cls = Registry.get_config_cls_for_model(self.model.__class__) return config_cls.get_attributes() def save(self): @@ -339,15 +339,15 @@ class Entity(object): @staticmethod def post_save_handler(sender, *args, **kwargs): - from .utils import EavRegistry - config_cls = EavRegistry.get_config_cls_for_model(sender) + from .registry import Registry + config_cls = Registry.get_config_cls_for_model(sender) entity = getattr(kwargs['instance'], config_cls.eav_attr) entity.save() @staticmethod def pre_save_handler(sender, *args, **kwargs): - from .utils import EavRegistry - config_cls = EavRegistry.get_config_cls_for_model(sender) + from .registry import Registry + config_cls = Registry.get_config_cls_for_model(sender) entity = getattr(kwargs['instance'], config_cls.eav_attr) entity.validate_attributes() diff --git a/utils.py b/registry.py similarity index 89% rename from utils.py rename to registry.py index 0ddbdc3..e078edf 100644 --- a/utils.py +++ b/registry.py @@ -25,7 +25,6 @@ from .models import (Entity, Attribute, Value, get_unique_class_identifier) -#todo : rename this file in registry class EavConfig(Entity): eav_attr = 'eav' @@ -42,7 +41,7 @@ class EavConfig(Entity): return Attribute.objects.all() -class EavRegistry(object): +class Registry(object): """ Tools to add eav features to models """ @@ -57,8 +56,8 @@ class EavRegistry(object): """ cls_id = get_unique_class_identifier(model_cls) - if cls_id in EavRegistry.cache: - return EavRegistry.cache[cls_id]['config_cls'] + if cls_id in Registry.cache: + return Registry.cache[cls_id]['config_cls'] @staticmethod @@ -67,7 +66,7 @@ class EavRegistry(object): Attache EAV toolkit to an instance after init. """ instance = kwargs['instance'] - config_cls = EavRegistry.get_config_cls_for_model(sender) + config_cls = Registry.get_config_cls_for_model(sender) setattr(instance, config_cls.eav_attr, Entity(instance)) @@ -92,20 +91,20 @@ class EavRegistry(object): cls_id = get_unique_class_identifier(model_cls) - if cls_id in EavRegistry.cache: + if cls_id in Registry.cache: return - config_cls = EavRegistry.wrap_config_class(model_cls, config_cls) + config_cls = Registry.wrap_config_class(model_cls, config_cls) if not manager_only: # we want to call attach and save handler on instance creation and # saving - post_init.connect(EavRegistry.attach, sender=model_cls) + post_init.connect(Registry.attach, sender=model_cls) post_save.connect(Entity.post_save_handler, sender=model_cls) pre_save.connect(Entity.pre_save_handler, sender=model_cls) # todo: rename cache in data - EavRegistry.cache[cls_id] = { 'config_cls': config_cls, + Registry.cache[cls_id] = { 'config_cls': config_cls, 'model_cls': model_cls, 'manager_only': manager_only } @@ -113,7 +112,7 @@ class EavRegistry(object): # one if hasattr(model_cls, config_cls.manager_attr): mgr = getattr(model_cls, config_cls.manager_attr) - EavRegistry.cache[cls_id]['old_mgr'] = mgr + Registry.cache[cls_id]['old_mgr'] = mgr if not manager_only: # set add the config_cls as an attribute of the model @@ -150,14 +149,14 @@ class EavRegistry(object): """ cls_id = get_unique_class_identifier(model_cls) - if not cls_id in EavRegistry.cache: + if not cls_id in Registry.cache: return - cache = EavRegistry.cache[cls_id] + cache = Registry.cache[cls_id] config_cls = cache['config_cls'] manager_only = cache['manager_only'] if not manager_only: - post_init.disconnect(EavRegistry.attach, sender=model_cls) + post_init.disconnect(Registry.attach, sender=model_cls) post_save.disconnect(Entity.post_save_handler, sender=model_cls) pre_save.disconnect(Entity.pre_save_handler, sender=model_cls) @@ -186,7 +185,7 @@ class EavRegistry(object): except AttributeError: pass - EavRegistry.cache.pop(cls_id) + Registry.cache.pop(cls_id) # todo : test cache # todo : tst unique identitfier diff --git a/tests/basics.py b/tests/basics.py index 466f8a4..563c848 100644 --- a/tests/basics.py +++ b/tests/basics.py @@ -3,7 +3,7 @@ from datetime import datetime from django.test import TestCase from ..models import * -from ..utils import EavRegistry, EavConfig +from ..registry import Registry, EavConfig from .models import Patient @@ -16,8 +16,8 @@ class EavBasicTests(TestCase): def setUp(self): - EavRegistry.unregister(Patient) - EavRegistry.register(Patient) + Registry.unregister(Patient) + Registry.register(Patient) self.attribute = Attribute.objects.create(datatype=Attribute.TYPE_TEXT, name='City', help_text='The City', slug='city') @@ -29,7 +29,7 @@ class EavBasicTests(TestCase): value_text='Denver') def tearDown(self): - EavRegistry.unregister(Patient) + Registry.unregister(Patient) def test_attribute_unicode(self): @@ -106,32 +106,32 @@ class EavBasicTests(TestCase): self.assertEqual(val.value, value) - def test_eavregistry_ataches_and_detaches_eav_attribute(self): - EavRegistry.unregister(Patient) + def test_Registry_ataches_and_detaches_eav_attribute(self): + Registry.unregister(Patient) p = Patient() self.assertFalse(hasattr(p, 'eav')) - EavRegistry.register(Patient) + Registry.register(Patient) p2 = Patient() self.assertTrue(p2.eav) - def test_eavregistry_ataches_and_detaches_eav_attribute(self): + def test_Registry_ataches_and_detaches_eav_attribute(self): self.assertTrue(self.entity.eav) self.assertTrue(self.entity.eav_values) self.assertTrue(self.value.entity) # todo : should we have self.value.patient herer ? - EavRegistry.unregister(Patient) + Registry.unregister(Patient) p = Patient() self.assertFalse(hasattr(p, 'eav')) self.assertFalse(hasattr(p, 'eav')) self.assertFalse(hasattr(p, 'eav_values')) - def test_eavregistry_accept_a_settings_class_with_get_queryset(self): - EavRegistry.unregister(Patient) + def test_Registry_accept_a_settings_class_with_get_queryset(self): + Registry.unregister(Patient) class PatientEav(EavConfig): @@ -139,19 +139,19 @@ class EavBasicTests(TestCase): def get_eav_attributes(self): return Attribute.objects.all() - EavRegistry.register(Patient, PatientEav) + Registry.register(Patient, PatientEav) p = Patient() - EavRegistry.unregister(Patient) + Registry.unregister(Patient) - def test_eavregistry_accept_a_settings_class_with_field_names(self): + def test_Registry_accept_a_settings_class_with_field_names(self): p = Patient.objects.create(name='Renaud') registered_manager = Patient.objects registered_eav_value = p.eav_values - EavRegistry.unregister(Patient) + Registry.unregister(Patient) class PatientEav(EavConfig): @@ -160,7 +160,7 @@ class EavBasicTests(TestCase): generic_relation_attr = 'my_eav_values' generic_relation_related_name = "patient" - EavRegistry.register(Patient, PatientEav) + Registry.register(Patient, PatientEav) p2 = Patient.objects.create(name='Henry') self.assertEqual(type(p.eav), type(p2.my_eav)) @@ -176,6 +176,6 @@ class EavBasicTests(TestCase): bak_registered_manager = Patient.objects - EavRegistry.unregister(Patient) + Registry.unregister(Patient) self.assertEqual(type(Patient.objects), type(bak_registered_manager)) diff --git a/tests/cache.py b/tests/cache.py deleted file mode 100755 index 0d311fc..0000000 --- a/tests/cache.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -# -*- coding= UTF-8 -*- - -__author__ = 'Isatis39871' -__date__ = '' -__version__ = '' -__all__ = [] - -import os, sys -from optparse import OptionParser diff --git a/tests/filters.py b/tests/filters.py index b8f3982..e9205e1 100644 --- a/tests/filters.py +++ b/tests/filters.py @@ -5,7 +5,7 @@ from django.contrib.auth.models import User from django.db.models import Q from ..models import * -from ..utils import EavRegistry, EavConfig +from ..registry import Registry, EavConfig from .models import Patient @@ -18,8 +18,8 @@ class EavFilterTests(TestCase): def setUp(self): - EavRegistry.unregister(Patient) - EavRegistry.register(Patient) + Registry.unregister(Patient) + Registry.register(Patient) self.attribute = Attribute.objects\ .create(datatype=Attribute.TYPE_TEXT, @@ -32,8 +32,8 @@ class EavFilterTests(TestCase): value_text='Denver') def tearDown(self): - EavRegistry.unregister(Patient) - EavRegistry.unregister(User) + Registry.unregister(Patient) + Registry.unregister(User) def additional_attribute_setup(self): @@ -57,7 +57,7 @@ class EavFilterTests(TestCase): return Attribute.objects.all() self.UserEav = UserEav - EavRegistry.register(User, UserEav) + Registry.register(User, UserEav) self.user = User.objects.create(username='John') @@ -169,7 +169,7 @@ class EavFilterTests(TestCase): def test_you_can_filter_entity_by_q_objects_with_lookups(self): class UserEav(EavConfig): manager_attr = 'eav_objects' - EavRegistry.register(User, UserEav) + Registry.register(User, UserEav) Attribute.objects.create(datatype=Attribute.TYPE_INT, name='Height') @@ -214,7 +214,7 @@ class EavFilterTests(TestCase): This test demonstrates a few EAV queries that are known to be broken. it currently fails. ''' - EavRegistry.register(User) + Registry.register(User) Attribute.objects.create(datatype=Attribute.TYPE_INT, name='Height') diff --git a/tests/set_and_get.py b/tests/set_and_get.py index e27648d..0714c5a 100644 --- a/tests/set_and_get.py +++ b/tests/set_and_get.py @@ -4,7 +4,7 @@ from django.test import TestCase from django.contrib.auth.models import User from ..models import * -from ..utils import EavRegistry, EavConfig +from ..registry import Registry, EavConfig from .models import Patient @@ -16,8 +16,8 @@ class EavSetterAndGetterTests(TestCase): def setUp(self): - EavRegistry.unregister(Patient) - EavRegistry.register(Patient) + Registry.unregister(Patient) + Registry.register(Patient) self.attribute = Attribute.objects\ .create(datatype=Attribute.TYPE_TEXT, @@ -31,8 +31,8 @@ class EavSetterAndGetterTests(TestCase): def tearDown(self): - EavRegistry.unregister(Patient) - EavRegistry.unregister(User) + Registry.unregister(Patient) + Registry.unregister(User) def additional_attribute_setup(self): @@ -164,9 +164,9 @@ class EavSetterAndGetterTests(TestCase): self.additional_attribute_setup() - EavRegistry.unregister(Patient) - EavRegistry.register(Patient, self.PatientEav) - EavRegistry.register(User, self.UserEav) + Registry.unregister(Patient) + Registry.register(Patient, self.PatientEav) + Registry.register(User, self.UserEav) p = Patient.objects.create(name='Bob') @@ -187,8 +187,8 @@ class EavSetterAndGetterTests(TestCase): self.assertEqual(Patient.objects.get(pk=self.patient.pk).eav.city, 'Tunis') - EavRegistry.unregister(Patient) - EavRegistry.register(Patient, self.PatientEav) + Registry.unregister(Patient) + Registry.register(Patient, self.PatientEav) p = Patient.objects.create(name='Patrick') p.eav.city = 'Paris' @@ -204,9 +204,9 @@ class EavSetterAndGetterTests(TestCase): self.additional_attribute_setup() - EavRegistry.unregister(Patient) - EavRegistry.register(Patient, self.PatientEav) - EavRegistry.register(User, self.UserEav) + Registry.unregister(Patient) + Registry.register(Patient, self.PatientEav) + Registry.register(User, self.UserEav) p = Patient.objects.create(name='Patrick') u = User.objects.create(username='John') @@ -232,7 +232,7 @@ class EavSetterAndGetterTests(TestCase): self.additional_attribute_setup() - EavRegistry.unregister(Patient) + Registry.unregister(Patient) class SubPatientEav(self.PatientEav): @@ -240,7 +240,7 @@ class EavSetterAndGetterTests(TestCase): def get_attributes(cls): return Attribute.objects.filter(slug='country') - EavRegistry.register(Patient, SubPatientEav) + Registry.register(Patient, SubPatientEav) self.patient.eav.city = 'Paris' self.patient.eav.country = 'USA' diff --git a/tests/slug.py b/tests/slug.py deleted file mode 100644 index e69de29..0000000