Skip to content

Commit

Permalink
Added support to Django 3+ (tested with Django 4.0) & Python3+ (teste…
Browse files Browse the repository at this point in the history
…d with Python 3.10.0)
  • Loading branch information
EDario333 committed Dec 28, 2021
1 parent 3c91483 commit 87a068f
Show file tree
Hide file tree
Showing 10 changed files with 80 additions and 17 deletions.
5 changes: 4 additions & 1 deletion jet/dashboard/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
from django.template.loader import render_to_string
from jet.dashboard import modules
from jet.dashboard.models import UserDashboardModule
from django.utils.translation import ugettext_lazy as _
try:
from django.utils.translation import ugettext_lazy as _
except ImportError: # Django 4 (tested with Django 4.0)
from django.utils.translation import gettext_lazy as _
from jet.ordered_set import OrderedSet
from jet.utils import get_admin_site_name, context_to_dict

Expand Down
5 changes: 4 additions & 1 deletion jet/dashboard/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from importlib import import_module
import json
from django.db import models
from django.utils.translation import ugettext_lazy as _
try:
from django.utils.translation import ugettext_lazy as _
except ImportError: # Django 4 (tested with Django 4.0)
from django.utils.translation import gettext_lazy as _
from jet.utils import LazyDateTimeEncoder

try:
Expand Down
5 changes: 4 additions & 1 deletion jet/dashboard/modules.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
from django.contrib.admin.models import LogEntry
from django.db.models import Q
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
try:
from django.utils.translation import ugettext_lazy as _
except ImportError: # Django 4 (tested with Django 4.0)
from django.utils.translation import gettext_lazy as _
from jet.utils import get_app_list, LazyDateTimeEncoder, context_to_dict
import datetime

Expand Down
5 changes: 4 additions & 1 deletion jet/dashboard/urls.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import django
from django.conf.urls import url
try:
from django.conf.urls import url
except ImportError: # Django 3+ (tested with Django 4.0)
from django.urls import re_path as url

try:
from django.views.i18n import JavaScriptCatalog
Expand Down
6 changes: 4 additions & 2 deletions jet/dashboard/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@
from jet.dashboard.models import UserDashboardModule
from jet.utils import JsonResponse, get_app_list, SuccessMessageMixin, user_is_authenticated
from django.views.generic import UpdateView
from django.utils.translation import ugettext_lazy as _

try:
from django.utils.translation import ugettext_lazy as _
except ImportError: # Django 4 (tested with Django 4.0)
from django.utils.translation import gettext_lazy as _

class UpdateDashboardModuleView(SuccessMessageMixin, UpdateView):
model = UserDashboardModule
Expand Down
5 changes: 4 additions & 1 deletion jet/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
try:
from django.utils.translation import ugettext_lazy as _
except ImportError: # Django 4 (tested with Django 4.0)
from django.utils.translation import gettext_lazy as _

try:
from django.utils.encoding import python_2_unicode_compatible
Expand Down
17 changes: 15 additions & 2 deletions jet/ordered_set.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
import collections
try:
from collections import MutableSet
except ImportError: # Python 3.3+
'''
MutableSet is now in collections.abc. Starting with Python 3.3,
importing ABCs from collections was deprecated, and importing
should be done from collections.abc. Being able to import from
collections was marked for removal in 3.8, but has been delayed
to 3.9.
Taken from:
https://github.com/OCA/oca-addons-repo-template/issues/80#issuecomment-948531410
'''
from collections.abc import MutableSet

class OrderedSet(collections.MutableSet):
#class OrderedSet(collections.MutableSet):
class OrderedSet(MutableSet):
def __init__(self, iterable=None):
self.end = end = []
end += [None, end, end] # sentinel node for doubly linked list
Expand Down
16 changes: 14 additions & 2 deletions jet/templatetags/jet_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,18 @@
from django.contrib.admin.widgets import RelatedFieldWidgetWrapper
from django.utils.formats import get_format
from django.utils.safestring import mark_safe
from django.utils.encoding import smart_text
try:
from django.utils.encoding import smart_text as smart_txt
except ImportError: # Django 3+
'''
"The smart_text() and force_text() aliases (since Django 2.0) of
smart_str() and force_str() are deprecated...".
Taken from:
https://docs.djangoproject.com/en/4.0/releases/3.0/#deprecated-features-3-0
'''
from django.utils.encoding import smart_str as smart_txt

from jet import settings, VERSION
from jet.models import Bookmark
from jet.utils import get_model_instance_label, get_model_queryset, get_possible_language_codes, \
Expand Down Expand Up @@ -217,7 +228,8 @@ def jet_popup_response_data(context):
return json.dumps({
'action': context.get('action'),
'value': context.get('value') or context.get('pk_value'),
'obj': smart_text(context.get('obj')),
#'obj': smart_text(context.get('obj')),
'obj': smart_txt(context.get('obj')), # Django 2&3+
'new_value': context.get('new_value')
})

Expand Down
5 changes: 4 additions & 1 deletion jet/urls.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import django
from django.conf.urls import url
try:
from django.conf.urls import url
except ImportError: # Django 3+ (tested with Django 4.0)
from django.urls import re_path as url

try:
from django.views.i18n import JavaScriptCatalog
Expand Down
28 changes: 23 additions & 5 deletions jet/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,30 @@
from django.urls import reverse, resolve, NoReverseMatch

from django.contrib.admin import AdminSite
from django.utils.encoding import smart_text
try:
from django.utils.encoding import smart_text as smart_txt
except ImportError: # Django 2&3+
'''
"The smart_text() and force_text() aliases (since Django 2.0) of
smart_str() and force_str() are deprecated...".
Taken from:
https://docs.djangoproject.com/en/4.0/releases/3.0/#deprecated-features-3-0
'''
from django.utils.encoding import smart_str as smart_txt
from django.utils.text import capfirst
from django.contrib import messages
from django.utils.encoding import force_text
try:
from django.utils.encoding import force_text as force_txt
except ImportError: # Django 2&3+ Same as above
from django.utils.encoding import force_str as force_txt
from django.utils.functional import Promise
from django.contrib.admin.options import IncorrectLookupParameters
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
try:
from django.utils.translation import ugettext_lazy as _
except ImportError: # Django 4 (tested with Django 4.0)
from django.utils.translation import gettext_lazy as _
from django.utils.text import slugify

try:
Expand Down Expand Up @@ -150,14 +166,16 @@ def default(self, obj):
if isinstance(obj, datetime.datetime) or isinstance(obj, datetime.date):
return obj.isoformat()
elif isinstance(obj, Promise):
return force_text(obj)
#return force_text(obj)
return force_txt(obj) # Django 2&3+
return self.encode(obj)


def get_model_instance_label(instance):
if getattr(instance, "related_label", None):
return instance.related_label()
return smart_text(instance)
#return smart_text(instance) # Django 3+
return smart_txt(instance)


class SuccessMessageMixin(object):
Expand Down

0 comments on commit 87a068f

Please sign in to comment.