Make tests runnable with Python 3

This commit is contained in:
Iwo Herka 2018-04-06 13:59:51 +02:00
parent 2f4d121b4d
commit 17c8d84295
6 changed files with 25 additions and 17 deletions

View file

@ -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)

View file

@ -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

View file

@ -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):

View file

@ -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"))

View file

@ -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'

View file

@ -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)