mirror of
https://github.com/jazzband/django-eav2.git
synced 2026-03-16 22:40:26 +00:00
Make tests runnable with Python 3
This commit is contained in:
parent
2f4d121b4d
commit
17c8d84295
6 changed files with 25 additions and 17 deletions
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
# vim: ai ts=4 sts=4 et sw=4 coding=utf-8
|
||||
#
|
||||
# This software is derived from EAV-Django originally written and
|
||||
# This software is derived from EAV-Django originally written and
|
||||
# copyrighted by Andrey Mikhaylenko <http://pypi.python.org/pypi/eav-django>
|
||||
#
|
||||
# This is free software: you can redistribute it and/or modify
|
||||
|
|
@ -26,10 +26,11 @@ def get_version():
|
|||
|
||||
__version__ = get_version()
|
||||
|
||||
|
||||
def register(model_cls, config_cls=None):
|
||||
from registry import Registry
|
||||
from .registry import Registry
|
||||
Registry.register(model_cls, config_cls)
|
||||
|
||||
def unregister(model_cls):
|
||||
from registry import Registry
|
||||
from .registry import Registry
|
||||
Registry.unregister(model_cls)
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ def eav_filter(func):
|
|||
'''
|
||||
|
||||
@wraps(func)
|
||||
def wrapper(self, *args, **kwargs):
|
||||
def wrapper(self, *args, **kwargs):
|
||||
nargs = []
|
||||
for arg in args:
|
||||
if isinstance(arg, models.Q):
|
||||
|
|
@ -52,7 +52,7 @@ def eav_filter(func):
|
|||
for key, value in kwargs.items():
|
||||
# Modify kwargs (warning: recursion ahead).
|
||||
nkey, nval = expand_eav_filter(self.model, key, value)
|
||||
|
||||
|
||||
if nkey in nkwargs:
|
||||
# Apply AND to both querysets.
|
||||
nkwargs[nkey] = (nkwargs[nkey] & nval).distinct()
|
||||
|
|
@ -60,10 +60,10 @@ def eav_filter(func):
|
|||
nkwargs.update({nkey: nval})
|
||||
|
||||
return func(self, *nargs, **nkwargs)
|
||||
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
|
||||
def expand_q_filters(q, root_cls):
|
||||
'''
|
||||
Takes a Q object and a model class.
|
||||
|
|
@ -71,7 +71,7 @@ def expand_q_filters(q, root_cls):
|
|||
through expand_eav_filter
|
||||
'''
|
||||
new_children = []
|
||||
|
||||
|
||||
for qi in q.children:
|
||||
if type(qi) is tuple:
|
||||
# this child is a leaf node: in Q this is a 2-tuple of:
|
||||
|
|
@ -81,7 +81,7 @@ def expand_q_filters(q, root_cls):
|
|||
else:
|
||||
# this child is another Q node: recursify!
|
||||
new_children.append(expand_q_filters(qi, root_cls))
|
||||
|
||||
|
||||
q.children = new_children
|
||||
return q
|
||||
|
||||
|
|
@ -174,7 +174,7 @@ class EntityManager(models.Manager):
|
|||
|
||||
new_kwargs = {}
|
||||
eav_kwargs = {}
|
||||
for key, value in kwargs.iteritems():
|
||||
for key, value in kwargs.items():
|
||||
if key.startswith(prefix):
|
||||
eav_kwargs.update({key[len(prefix):]: value})
|
||||
else:
|
||||
|
|
@ -182,7 +182,7 @@ class EntityManager(models.Manager):
|
|||
|
||||
obj = self.model(**new_kwargs)
|
||||
obj_eav = getattr(obj, config_cls.eav_attr)
|
||||
for key, value in eav_kwargs.iteritems():
|
||||
for key, value in eav_kwargs.items():
|
||||
setattr(obj_eav, key, value)
|
||||
obj.save()
|
||||
return obj
|
||||
|
|
|
|||
|
|
@ -177,10 +177,13 @@ class Attribute(models.Model):
|
|||
help_text=_(u"User-friendly attribute name"))
|
||||
|
||||
content_type = models.ForeignKey(ContentType,
|
||||
on_delete=models.PROTECT,
|
||||
blank=True, null=True,
|
||||
verbose_name=_(u"content type"))
|
||||
|
||||
site = models.ForeignKey(Site, verbose_name=_(u"site"),
|
||||
on_delete=models.PROTECT,
|
||||
blank=True, null=True,
|
||||
default=settings.SITE_ID)
|
||||
|
||||
slug = EavSlugField(_(u"slug"), max_length=50, db_index=True,
|
||||
|
|
@ -191,6 +194,7 @@ class Attribute(models.Model):
|
|||
help_text=_(u"Short description"))
|
||||
|
||||
enum_group = models.ForeignKey(EnumGroup, verbose_name=_(u"choice group"),
|
||||
on_delete=models.PROTECT,
|
||||
blank=True, null=True)
|
||||
|
||||
type = models.CharField(_(u"type"), max_length=20, blank=True, null=True)
|
||||
|
|
@ -233,7 +237,7 @@ class Attribute(models.Model):
|
|||
'object': validate_object,
|
||||
'enum': validate_enum,
|
||||
}
|
||||
|
||||
|
||||
validation_function = DATATYPE_VALIDATORS[self.datatype]
|
||||
return [validation_function]
|
||||
|
||||
|
|
@ -341,7 +345,7 @@ class Value(models.Model):
|
|||
<Value: crazy_dev_user - Favorite Drink: "red bull">
|
||||
'''
|
||||
|
||||
entity_ct = models.ForeignKey(ContentType, related_name='value_entities')
|
||||
entity_ct = models.ForeignKey(ContentType, on_delete=models.PROTECT, related_name='value_entities')
|
||||
entity_id = models.IntegerField()
|
||||
entity = generic.GenericForeignKey(ct_field='entity_ct',
|
||||
fk_field='entity_id')
|
||||
|
|
@ -352,10 +356,12 @@ class Value(models.Model):
|
|||
value_date = models.DateTimeField(blank=True, null=True)
|
||||
value_bool = models.NullBooleanField(blank=True, null=True)
|
||||
value_enum = models.ForeignKey(EnumValue, blank=True, null=True,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='eav_values')
|
||||
|
||||
generic_value_id = models.IntegerField(blank=True, null=True)
|
||||
generic_value_ct = models.ForeignKey(ContentType, blank=True, null=True,
|
||||
on_delete=models.PROTECT,
|
||||
related_name='value_values')
|
||||
value_object = generic.GenericForeignKey(ct_field='generic_value_ct',
|
||||
fk_field='generic_value_id')
|
||||
|
|
@ -364,6 +370,7 @@ class Value(models.Model):
|
|||
modified = models.DateTimeField(_(u"modified"), auto_now=True)
|
||||
|
||||
attribute = models.ForeignKey(Attribute, db_index=True,
|
||||
on_delete=models.PROTECT,
|
||||
verbose_name=_(u"attribute"))
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ def validate_text(value):
|
|||
'''
|
||||
Raises ``ValidationError`` unless *value* type is ``str`` or ``unicode``
|
||||
'''
|
||||
if not (type(value) == unicode or type(value) == str):
|
||||
if not type(value) == str:
|
||||
raise ValidationError(_(u"Must be str or unicode"))
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ from .models import Patient
|
|||
|
||||
class MiscModels(TestCase):
|
||||
|
||||
def test_enumgroup_unicode(self):
|
||||
def test_enumgroup_str(self):
|
||||
name = 'Yes / No'
|
||||
e = EnumGroup.objects.create(name=name)
|
||||
self.assertEqual(unicode(e), name)
|
||||
self.assertEqual(str(e), name)
|
||||
|
||||
def test_attribute_help_text(self):
|
||||
desc = 'Patient Age'
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class Patient(models.Model):
|
|||
|
||||
class Encounter(models.Model):
|
||||
num = models.PositiveSmallIntegerField()
|
||||
patient = models.ForeignKey(Patient)
|
||||
patient = models.ForeignKey(Patient, on_delete=models.PROTECT)
|
||||
|
||||
def __unicode__(self):
|
||||
return '%s: encounter num %d' % (self.patient, self.num)
|
||||
|
|
|
|||
Loading…
Reference in a new issue