Compatibilité python 3

Rend GestioCOF compatible avec python 3. En particulier, il s'agit de :

  - Utiliser la version "fonction" de `print` dans `sync_clipper` et
    `tirage_bda`, avec le `from __future__ import print_function` pour
    garder la compatibilité avec python 2

  - Utiliser de l'unicode par défaut, même en python 2, avec
    `from __future__ import unicode_literals` et le décorateur de
    compatibilité `python_2_unicode_compatible` de Django pour les
    modèles, comme décrit à
    https://docs.djangoproject.com/en/1.9/topics/python3/#str-and-unicode-methods

  - Utiliser `six.text_type` à la place de `unicode`

Fixes #2.
This commit is contained in:
Basile Clement 2016-05-26 22:44:10 +02:00
parent 7f61870236
commit 21b8b6042f
18 changed files with 174 additions and 81 deletions

View file

@ -1,5 +1,7 @@
# coding: utf-8
from __future__ import unicode_literals
from django.contrib import admin
from gestioncof.models import *
from gestioncof.petits_cours_models import *
@ -8,6 +10,7 @@ from django.contrib.auth.admin import UserAdmin
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
import django.utils.six as six
import autocomplete_light
@ -168,17 +171,21 @@ class UserProfileAdmin(UserAdmin):
]
# FIXME: This is absolutely horrible.
def user_unicode(self):
if self.first_name and self.last_name:
return u"%s %s (%s)" % (self.first_name, self.last_name, self.username)
return "%s %s (%s)" % (self.first_name, self.last_name, self.username)
else:
return self.username
User.__unicode__ = user_unicode
if six.PY2:
User.__unicode__ = user_unicode
else:
User.__str__ = user_unicode
class EventRegistrationAdmin(admin.ModelAdmin):
form = autocomplete_light.modelform_factory(EventRegistration, exclude=[])
list_display = ('__unicode__', 'event', 'user', 'paid')
list_display = ('__unicode__' if six.PY2 else '__str__', 'event', 'user', 'paid')
list_filter = ('paid',)
search_fields = ('user__username', 'user__first_name', 'user__last_name',
'user__email', 'event__title')