mirror of
https://github.com/jazzband/django-eav2.git
synced 2026-03-16 22:40:26 +00:00
Renamed utils to registry
This commit is contained in:
parent
c7e595fdf9
commit
093a0ef457
9 changed files with 67 additions and 78 deletions
4
forms.py
4
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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
16
models.py
16
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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding= UTF-8 -*-
|
||||
|
||||
__author__ = 'Isatis39871'
|
||||
__date__ = ''
|
||||
__version__ = ''
|
||||
__all__ = []
|
||||
|
||||
import os, sys
|
||||
from optparse import OptionParser
|
||||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
Loading…
Reference in a new issue