diff --git a/.gitignore b/.gitignore index e1c8ad4..02bf72b 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ MANIFEST dist/ .venv example/media/ +.tox/ diff --git a/.travis.yml b/.travis.yml index 7eadf8f..8310e44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,23 @@ language: python -python: - - "2.7" -env: - - DJANGO_VERSION=1.6.11 - - DJANGO_VERSION=1.7.7 - - DJANGO_VERSION=1.8 -install: - - pip install Django==$DJANGO_VERSION - - pip install -e . - - pip install South -script: - - ./example/manage.py test categories --settings='settings-testing' + branches: only: - - master \ No newline at end of file + - master + +env: + - TOXENV=py27-django18 + - TOXENV=py27-django19 + - TOXENV=py34-django18 + - TOXENV=py34-django19 + - TOXENV=py35-django18 + - TOXENV=py35-django19 + +install: + - pip install tox + +script: + - tox -e $TOXENV + +after_success: + - pip install codecov + - codecov -e TOXENV diff --git a/categories/__init__.py b/categories/__init__.py index 035da6a..df598df 100644 --- a/categories/__init__.py +++ b/categories/__init__.py @@ -29,4 +29,4 @@ def register(): try: register() except Exception as e: - print e + print(e) diff --git a/categories/admin.py b/categories/admin.py index c61f26f..26b8949 100644 --- a/categories/admin.py +++ b/categories/admin.py @@ -11,7 +11,7 @@ from .settings import MODEL_REGISTRY class NullTreeNodeChoiceField(forms.ModelChoiceField): """A ModelChoiceField for tree nodes.""" - def __init__(self, level_indicator=u'---', *args, **kwargs): + def __init__(self, level_indicator='---', *args, **kwargs): self.level_indicator = level_indicator super(NullTreeNodeChoiceField, self).__init__(*args, **kwargs) @@ -20,7 +20,7 @@ class NullTreeNodeChoiceField(forms.ModelChoiceField): Creates labels which represent the tree level of each node when generating option labels. """ - return u'%s %s' % (self.level_indicator * getattr( + return '%s %s' % (self.level_indicator * getattr( obj, obj._mptt_meta.level_attr), obj) if RELATION_MODELS: from .models import CategoryRelation @@ -68,8 +68,8 @@ class CategoryAdmin(CategoryBaseAdmin): if REGISTER_ADMIN: admin.site.register(Category, CategoryAdmin) -for model, modeladmin in admin.site._registry.items(): - if model in MODEL_REGISTRY.values() and modeladmin.fieldsets: +for model, modeladmin in list(admin.site._registry.items()): + if model in list(MODEL_REGISTRY.values()) and modeladmin.fieldsets: fieldsets = getattr(modeladmin, 'fieldsets', ()) fields = [cat.split('.')[2] for cat in MODEL_REGISTRY if MODEL_REGISTRY[cat] == model] # check each field to see if already defined diff --git a/categories/apps.py b/categories/apps.py index daab55b..02e70e0 100644 --- a/categories/apps.py +++ b/categories/apps.py @@ -26,12 +26,12 @@ def handle_class_prepared(sender, **kwargs): sender_app = sender._meta.app_label sender_name = sender._meta.model_name - for key, val in FK_REGISTRY.items(): + for key, val in list(FK_REGISTRY.items()): app_name, model_name = key.split('.') if app_name == sender_app and sender_name == model_name: registry.register_model(app_name, sender, 'ForeignKey', val) - for key, val in M2M_REGISTRY.items(): + for key, val in list(M2M_REGISTRY.items()): app_name, model_name = key.split('.') if app_name == sender_app and sender_name == model_name: registry.register_model(app_name, sender, 'ManyToManyField', val) diff --git a/categories/base.py b/categories/base.py index 0c64b08..ff16f8e 100644 --- a/categories/base.py +++ b/categories/base.py @@ -6,7 +6,7 @@ with customizable metadata and its own name space. from django.contrib import admin from django.db import models from django import forms -from django.utils.encoding import force_unicode +from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ from mptt.models import MPTTModel @@ -29,6 +29,7 @@ class CategoryManager(models.Manager): return self.get_queryset().filter(active=True) +@python_2_unicode_compatible class CategoryBase(MPTTModel): """ This base model includes the absolute bare bones fields and methods. One @@ -63,9 +64,9 @@ class CategoryBase(MPTTModel): item.active = self.active item.save() - def __unicode__(self): + def __str__(self): ancestors = self.get_ancestors() - return ' > '.join([force_unicode(i.name) for i in ancestors] + [self.name, ]) + return ' > '.join([force_text(i.name) for i in ancestors] + [self.name, ]) class Meta: abstract = True diff --git a/categories/editor/templates/admin/editor/grappelli_tree_editor.html b/categories/editor/templates/admin/editor/grappelli_tree_editor.html index 9bc8ecb..99e64ec 100644 --- a/categories/editor/templates/admin/editor/grappelli_tree_editor.html +++ b/categories/editor/templates/admin/editor/grappelli_tree_editor.html @@ -1,5 +1,5 @@ {% extends "admin/change_list.html" %} -{% load admin_list i18n admin_tree_list %} +{% load admin_list i18n admin_tree_list_tags %} {% block extrahead %} {{ block.super }}