Skip to content

Commit 2f055a9

Browse files
MrSaintsHamdi Sahloul
authored andcommitted
Improve Py3 support (#48)
Improve support for Python 3
1 parent ac6dcc8 commit 2f055a9

9 files changed

Lines changed: 20 additions & 14 deletions

File tree

eav/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ def get_version():
2727
__version__ = get_version()
2828

2929
def register(model_cls, config_cls=None):
30-
from registry import Registry
30+
from .registry import Registry
3131
Registry.register(model_cls, config_cls)
3232

3333
def unregister(model_cls):
34-
from registry import Registry
34+
from .registry import Registry
3535
Registry.unregister(model_cls)

eav/admin.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def render_change_form(self, request, context, add=False, change=False, form_url
4141
form = context['adminform'].form
4242

4343
# infer correct data from the form
44-
fieldsets = self.fieldsets or [(None, {'fields': form.fields.keys()})]
44+
fieldsets = self.fieldsets or [(None, {'fields': list(form.fields.keys())})]
4545
adminform = admin.helpers.AdminForm(form, fieldsets,
4646
self.prepopulated_fields)
4747
media = mark_safe(self.media + adminform.media)
@@ -91,7 +91,7 @@ def get_fieldsets(self, request, obj=None):
9191
instance = self.model(**kw)
9292
form = formset.form(request.POST, instance=instance)
9393

94-
return [(None, {'fields': form.fields.keys()})]
94+
return [(None, {'fields': list(form.fields.keys())})]
9595

9696
class AttributeAdmin(ModelAdmin):
9797
list_display = ('name', 'content_type', 'slug', 'datatype', 'description', 'site')

eav/managers.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
Functions and Classes
2626
---------------------
2727
'''
28+
import six
29+
2830
from functools import wraps
2931

3032
from django.db import models
@@ -49,7 +51,7 @@ def wrapper(self, *args, **kwargs):
4951
new_args.append(arg)
5052

5153
new_kwargs = {}
52-
for key, value in kwargs.items():
54+
for key, value in list(kwargs.items()):
5355
# modify kwargs (warning: recursion ahead)
5456
new_key, new_value = expand_eav_filter(self.model, key, value)
5557
new_kwargs.update({new_key: new_value})
@@ -166,15 +168,15 @@ def create(self, **kwargs):
166168

167169
new_kwargs = {}
168170
eav_kwargs = {}
169-
for key, value in kwargs.iteritems():
171+
for key, value in six.iteritems(kwargs):
170172
if key.startswith(prefix):
171173
eav_kwargs.update({key[len(prefix):]: value})
172174
else:
173175
new_kwargs.update({key: value})
174176

175177
obj = self.model(**new_kwargs)
176178
obj_eav = getattr(obj, config_cls.eav_attr)
177-
for key, value in eav_kwargs.iteritems():
179+
for key, value in six.iteritems(eav_kwargs):
178180
setattr(obj_eav, key, value)
179181
obj.save()
180182
return obj

eav/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
Classes
3333
-------
3434
'''
35+
from builtins import object
3536

3637

3738
from django.utils import timezone
@@ -151,7 +152,7 @@ class Attribute(models.Model):
151152
change it's datatype.
152153
'''
153154

154-
class Meta:
155+
class Meta(object):
155156
ordering = ['content_type', 'name']
156157
unique_together = ('site', 'content_type', 'slug')
157158

eav/registry.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
Classes
2727
-------
2828
'''
29+
from builtins import object
2930

3031
from django.db.utils import DatabaseError
3132
from django.db.models.signals import pre_init, post_init, pre_save, post_save

eav/tests/misc_models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from builtins import str
12
from django.test import TestCase
23

34
from ..models import EnumGroup, Attribute, Value
@@ -11,7 +12,7 @@ class MiscModels(TestCase):
1112
def test_enumgroup_unicode(self):
1213
name = 'Yes / No'
1314
e = EnumGroup.objects.create(name=name)
14-
self.assertEqual(unicode(e), name)
15+
self.assertEqual(str(e), name)
1516

1617
def test_attribute_help_text(self):
1718
desc = 'Patient Age'

eav/tests/models.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
from builtins import object
12
from django.db import models
23
from ..decorators import register_eav
34

45
class Patient(models.Model):
5-
class Meta:
6+
class Meta(object):
67
app_label = 'eav'
78

89
name = models.CharField(max_length=12)
@@ -11,7 +12,7 @@ def __unicode__(self):
1112
return self.name
1213

1314
class Encounter(models.Model):
14-
class Meta:
15+
class Meta(object):
1516
app_label = 'eav'
1617

1718
num = models.PositiveSmallIntegerField()
@@ -22,7 +23,7 @@ def __unicode__(self):
2223

2324
@register_eav()
2425
class ExampleModel(models.Model):
25-
class Meta:
26+
class Meta(object):
2627
app_label = 'eav'
2728

2829
name = models.CharField(max_length=12)

eav/validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def validate_text(value):
4444
'''
4545
Raises ``ValidationError`` unless *value* type is ``str`` or ``unicode``
4646
'''
47-
if not (type(value) == unicode or type(value) == str):
47+
if not (type(value) == str or type(value) == str):
4848
raise ValidationError(_(u"Must be str or unicode"))
4949

5050

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
version=__import__('eav').__version__,
2424
license = 'GNU Lesser General Public License (LGPL), Version 3',
2525

26-
requires = ['python (>= 2.5)', 'django (>= 1.2)'],
26+
requires = ['python (>= 2.5)', 'django (>= 1.2)', 'six'],
2727
provides = ['eav'],
2828

2929
description='Entity-attribute-value model implementation as a reusable'

0 commit comments

Comments
 (0)