chore: Update old syntax

pyupgrade --keep-percent-format --py38-plus modeltranslation/**/*.py
This commit is contained in:
Serhii Tereshchenko 2023-05-30 17:38:48 +03:00
parent ec69a82a36
commit 3c6cbd59a7
13 changed files with 90 additions and 110 deletions

View file

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from copy import deepcopy
from django.contrib import admin
@ -26,7 +25,7 @@ class TranslationBaseModelAdmin(BaseModelAdmin):
both_empty_values_fields = ()
def __init__(self, *args, **kwargs):
super(TranslationBaseModelAdmin, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.trans_opts = translator.get_options_for_model(self.model)
self._patch_prepopulated_fields()
@ -47,7 +46,7 @@ class TranslationBaseModelAdmin(BaseModelAdmin):
return None
def formfield_for_dbfield(self, db_field, request, **kwargs):
field = super(TranslationBaseModelAdmin, self).formfield_for_dbfield(
field = super().formfield_for_dbfield(
db_field, request, **kwargs
)
self.patch_translation_field(db_field, field, request, **kwargs)
@ -271,7 +270,7 @@ class TranslationAdmin(TranslationBaseModelAdmin, admin.ModelAdmin):
group_fieldsets = False
def __init__(self, *args, **kwargs):
super(TranslationAdmin, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self._patch_list_editable()
def _patch_list_editable(self):
@ -297,7 +296,7 @@ class TranslationAdmin(TranslationBaseModelAdmin, admin.ModelAdmin):
flattened_fieldsets = flatten_fieldsets(fieldsets)
# Create a fieldset to group each translated field's localized fields
fields = sorted((f for f in self.opts.get_fields() if f.concrete))
fields = sorted(f for f in self.opts.get_fields() if f.concrete)
untranslated_fields = [
f.name
for f in fields
@ -352,7 +351,7 @@ class TranslationAdmin(TranslationBaseModelAdmin, admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
kwargs = self._get_form_or_formset(request, obj, **kwargs)
return super(TranslationAdmin, self).get_form(request, obj, **kwargs)
return super().get_form(request, obj, **kwargs)
def get_fieldsets(self, request, obj=None):
return self._get_fieldsets_pre_form_or_formset(request, obj) or self._group_fieldsets(
@ -365,7 +364,7 @@ class TranslationAdmin(TranslationBaseModelAdmin, admin.ModelAdmin):
class TranslationInlineModelAdmin(TranslationBaseModelAdmin, InlineModelAdmin):
def get_formset(self, request, obj=None, **kwargs):
kwargs = self._get_form_or_formset(request, obj, **kwargs)
return super(TranslationInlineModelAdmin, self).get_formset(request, obj, **kwargs)
return super().get_formset(request, obj, **kwargs)
def get_fieldsets(self, request, obj=None):
# FIXME: If fieldsets are declared on an inline some kind of ghost

View file

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from django.apps import AppConfig

View file

@ -247,7 +247,7 @@ class TranslationField:
return self.creation_counter == other.creation_counter and self.language == getattr(
other, 'language', None
)
return super(TranslationField, self).__eq__(other)
return super().__eq__(other)
def __ne__(self, other):
return not self.__eq__(other)
@ -278,7 +278,7 @@ class TranslationField:
The ``forms.CharField`` somewhat surprising behaviour is documented as a
"won't fix": https://code.djangoproject.com/ticket/9590.
"""
formfield = super(TranslationField, self).formfield(*args, **kwargs)
formfield = super().formfield(*args, **kwargs)
if isinstance(formfield, forms.CharField):
if self.empty_value is None:
from modeltranslation.forms import NullCharField
@ -287,7 +287,7 @@ class TranslationField:
kwargs['form_class'] = type(
'Null%s' % form_class.__name__, (NullCharField, form_class), {}
)
formfield = super(TranslationField, self).formfield(*args, **kwargs)
formfield = super().formfield(*args, **kwargs)
elif self.empty_value == 'both':
from modeltranslation.forms import NullableField
@ -295,7 +295,7 @@ class TranslationField:
kwargs['form_class'] = type(
'Nullable%s' % form_class.__name__, (NullableField, form_class), {}
)
formfield = super(TranslationField, self).formfield(*args, **kwargs)
formfield = super().formfield(*args, **kwargs)
if isinstance(formfield.widget, (forms.TextInput, forms.Textarea)):
formfield.widget = ClearableWidgetWrapper(formfield.widget)
return formfield
@ -315,7 +315,7 @@ class TranslationField:
instance._mt_form_pending_clear = {}
instance._mt_form_pending_clear[self.name] = data
else:
super(TranslationField, self).save_form_data(instance, data)
super().save_form_data(instance, data)
def deconstruct(self):
name, path, args, kwargs = self.translated_field.deconstruct()

View file

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from django import forms
from django.core import validators
@ -7,7 +6,7 @@ from modeltranslation.fields import TranslationField
class TranslationModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(TranslationModelForm, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
for f in self._meta.model._meta.fields:
if f.name in self.fields and isinstance(f, TranslationField):
del self.fields[f.name]
@ -21,7 +20,7 @@ class NullCharField(forms.CharField):
def to_python(self, value):
if value in validators.EMPTY_VALUES:
return None
return super(NullCharField, self).to_python(value)
return super().to_python(value)
class NullableField(forms.Field):
@ -33,7 +32,7 @@ class NullableField(forms.Field):
def to_python(self, value):
if value is None:
return value
return super(NullableField, self).to_python(value)
return super().to_python(value)
# Django 1.6
def _has_changed(self, initial, data):
@ -42,7 +41,7 @@ class NullableField(forms.Field):
def has_changed(self, initial, data):
if (initial is None and data is not None) or (initial is not None and data is None):
return True
obj = super(NullableField, self)
obj = super()
if hasattr(obj, 'has_changed'):
return obj.has_changed(initial, data)
else: # Django < 1.9 compat

View file

@ -27,7 +27,7 @@ class Command(LoadDataCommand):
check_mode(self, option_string, value, parser, namespace)
def add_arguments(self, parser):
super(Command, self).add_arguments(parser)
super().add_arguments(parser)
parser.add_argument(
'--populate',
action=self.CheckAction,
@ -44,6 +44,6 @@ class Command(LoadDataCommand):
mode = options.get('populate')
if mode is not None:
with auto_populate(mode):
return super(Command, self).handle(*fixture_labels, **options)
return super().handle(*fixture_labels, **options)
else:
return super(Command, self).handle(*fixture_labels, **options)
return super().handle(*fixture_labels, **options)

View file

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from django.db.models import F, Q, ManyToManyField
from django.core.management.base import BaseCommand, CommandError

View file

@ -107,9 +107,9 @@ def append_lookup_key(model, lookup_key):
if pieces[0] in fields_to_trans_models:
transmodel = fields_to_trans_models[pieces[0]]
rest = append_lookup_key(transmodel, pieces[1])
fields = set('__'.join(pr) for pr in itertools.product(fields, rest))
fields = {'__'.join(pr) for pr in itertools.product(fields, rest)}
else:
fields = set('%s__%s' % (f, pieces[1]) for f in fields)
fields = {'%s__%s' % (f, pieces[1]) for f in fields}
return fields
@ -174,7 +174,7 @@ def get_field_by_colum_name(model, col):
class MultilingualQuerySet(QuerySet):
def __init__(self, *args, **kwargs):
super(MultilingualQuerySet, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self._post_init()
def _post_init(self):
@ -205,7 +205,7 @@ class MultilingualQuerySet(QuerySet):
kwargs.setdefault('translation_fields', self.translation_fields)
if hasattr(self, 'original_fields'):
kwargs.setdefault('original_fields', self.original_fields)
cloned = super(MultilingualQuerySet, self)._clone()
cloned = super()._clone()
cloned.__dict__.update(kwargs)
return cloned
@ -230,7 +230,7 @@ class MultilingualQuerySet(QuerySet):
# This method was not present in django-linguo
def select_related(self, *fields, **kwargs):
if not self._rewrite:
return super(MultilingualQuerySet, self).select_related(*fields, **kwargs)
return super().select_related(*fields, **kwargs)
# TO CONSIDER: whether this should rewrite only current language, or all languages?
# fk -> [fk, fk_en] (with en=active) VS fk -> [fk, fk_en, fk_de, fk_fr ...] (for all langs)
@ -241,7 +241,7 @@ class MultilingualQuerySet(QuerySet):
new_args.append(None)
else:
new_args.append(rewrite_lookup_key(self.model, key))
return super(MultilingualQuerySet, self).select_related(*new_args, **kwargs)
return super().select_related(*new_args, **kwargs)
def update_or_create(self, defaults=None, **kwargs):
"""
@ -335,13 +335,13 @@ class MultilingualQuerySet(QuerySet):
def _filter_or_exclude(self, negate, args, kwargs):
args, kwargs = self._rewrite_filter_or_exclude(args, kwargs)
return super(MultilingualQuerySet, self)._filter_or_exclude(negate, args, kwargs)
return super()._filter_or_exclude(negate, args, kwargs)
else:
def _filter_or_exclude(self, negate, *args, **kwargs):
args, kwargs = self._rewrite_filter_or_exclude(args, kwargs)
return super(MultilingualQuerySet, self)._filter_or_exclude(negate, *args, **kwargs)
return super()._filter_or_exclude(negate, *args, **kwargs)
def _get_original_fields(self):
source = (
@ -357,11 +357,11 @@ class MultilingualQuerySet(QuerySet):
to translation fields for the current language.
"""
if not self._rewrite:
return super(MultilingualQuerySet, self).order_by(*field_names)
return super().order_by(*field_names)
new_args = []
for key in field_names:
new_args.append(rewrite_order_lookup_key(self.model, key))
return super(MultilingualQuerySet, self).order_by(*new_args)
return super().order_by(*new_args)
def distinct(self, *field_names):
"""
@ -369,20 +369,20 @@ class MultilingualQuerySet(QuerySet):
to translation fields for the current language.
"""
if not self._rewrite:
return super(MultilingualQuerySet, self).distinct(*field_names)
return super().distinct(*field_names)
new_args = []
for key in field_names:
new_args.append(rewrite_order_lookup_key(self.model, key))
return super(MultilingualQuerySet, self).distinct(*new_args)
return super().distinct(*new_args)
def update(self, **kwargs):
if not self._rewrite:
return super(MultilingualQuerySet, self).update(**kwargs)
return super().update(**kwargs)
for key, val in list(kwargs.items()):
new_key = rewrite_lookup_key(self.model, key)
del kwargs[key]
kwargs[new_key] = self._rewrite_f(val)
return super(MultilingualQuerySet, self).update(**kwargs)
return super().update(**kwargs)
update.alters_data = True
@ -400,7 +400,7 @@ class MultilingualQuerySet(QuerySet):
Allows to override population mode with a ``populate`` method.
"""
with auto_populate(self._populate_mode):
return super(MultilingualQuerySet, self).create(**kwargs)
return super().create(**kwargs)
# This method was not present in django-linguo
def get_or_create(self, *args, **kwargs):
@ -408,30 +408,30 @@ class MultilingualQuerySet(QuerySet):
Allows to override population mode with a ``populate`` method.
"""
with auto_populate(self._populate_mode):
return super(MultilingualQuerySet, self).get_or_create(*args, **kwargs)
return super().get_or_create(*args, **kwargs)
# This method was not present in django-linguo
def defer(self, *fields):
fields = append_lookup_keys(self.model, fields)
return super(MultilingualQuerySet, self).defer(*fields)
return super().defer(*fields)
# This method was not present in django-linguo
def only(self, *fields):
fields = append_lookup_keys(self.model, fields)
return super(MultilingualQuerySet, self).only(*fields)
return super().only(*fields)
# This method was not present in django-linguo
def raw_values(self, *fields, **expressions):
return super(MultilingualQuerySet, self).values(*fields, **expressions)
return super().values(*fields, **expressions)
def _values(self, *original, **kwargs):
selects_all = kwargs.pop('selects_all', False)
if not kwargs.pop('prepare', False):
return super(MultilingualQuerySet, self)._values(*original, **kwargs)
return super()._values(*original, **kwargs)
new_fields, translation_fields = append_fallback(self.model, original)
annotation_keys = set(self.query.annotation_select.keys()) if selects_all else set()
new_fields.update(annotation_keys)
clone = super(MultilingualQuerySet, self)._values(*list(new_fields), **kwargs)
clone = super()._values(*list(new_fields), **kwargs)
clone.original_fields = tuple(original)
clone.translation_fields = translation_fields
return clone
@ -439,7 +439,7 @@ class MultilingualQuerySet(QuerySet):
# This method was not present in django-linguo
def values(self, *fields, **expressions):
if not self._rewrite:
return super(MultilingualQuerySet, self).values(*fields, **expressions)
return super().values(*fields, **expressions)
selects_all = not fields
if not fields:
# Emulate original queryset behaviour: get all fields that are not translation fields
@ -452,7 +452,7 @@ class MultilingualQuerySet(QuerySet):
# This method was not present in django-linguo
def values_list(self, *fields, flat=False, named=False):
if not self._rewrite:
return super(MultilingualQuerySet, self).values_list(*fields, flat=flat, named=named)
return super().values_list(*fields, flat=flat, named=named)
if flat and named:
raise TypeError("'flat' and 'named' can't be used together.")
if flat and len(fields) > 1:
@ -494,13 +494,13 @@ class MultilingualQuerySet(QuerySet):
# This method was not present in django-linguo
def dates(self, field_name, *args, **kwargs):
if not self._rewrite:
return super(MultilingualQuerySet, self).dates(field_name, *args, **kwargs)
return super().dates(field_name, *args, **kwargs)
new_key = rewrite_lookup_key(self.model, field_name)
return super(MultilingualQuerySet, self).dates(new_key, *args, **kwargs)
return super().dates(new_key, *args, **kwargs)
class FallbackValuesIterable(ValuesIterable):
class X(object):
class X:
# This stupid class is needed as object use __slots__ and has no __dict__.
pass
@ -535,7 +535,7 @@ class FallbackNamedValuesListIterable(FallbackValuesIterable):
class FallbackFlatValuesListIterable(FallbackValuesListIterable):
def __iter__(self):
for row in super(FallbackFlatValuesListIterable, self).__iter__():
for row in super().__iter__():
yield row[0]
@ -558,7 +558,7 @@ class MultilingualQuerysetManager(models.Manager):
"""
def get_queryset(self):
qs = super(MultilingualQuerysetManager, self).get_queryset()
qs = super().get_queryset()
return self._patch_queryset(qs)
def _patch_queryset(self, qs):
@ -583,7 +583,7 @@ class MultilingualManager(MultilingualQuerysetManager):
This method is repeated because some managers that don't use super() or alter queryset class
may return queryset that is not subclass of MultilingualQuerySet.
"""
qs = super(MultilingualManager, self).get_queryset()
qs = super().get_queryset()
if isinstance(qs, MultilingualQuerySet):
# Is already patched by MultilingualQuerysetManager - in most of the cases
# when custom managers use super() properly in get_queryset.

View file

@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
def autodiscover():
"""
Auto-discover INSTALLED_APPS translation.py modules and fail silently when

View file

@ -171,7 +171,7 @@ class OtherFieldsModel(models.Model):
genericip = models.GenericIPAddressField(blank=True, null=True)
class FancyDescriptor(object):
class FancyDescriptor:
"""
Stupid demo descriptor, that store int in database and return string of that length on get.
"""
@ -197,14 +197,14 @@ class FancyDescriptor(object):
class FancyField(models.PositiveIntegerField):
def __init__(self, *args, **kwargs):
kwargs.setdefault('default', '')
super(FancyField, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
def contribute_to_class(self, cls, name):
super(FancyField, self).contribute_to_class(cls, name)
super().contribute_to_class(cls, name)
setattr(cls, self.name, FancyDescriptor(self))
def pre_save(self, model_instance, add):
value = super(FancyField, self).pre_save(model_instance, add)
value = super().pre_save(model_instance, add)
# In this part value should be retrieved using descriptor and be a string
assert isinstance(value, str)
# We put an int to database
@ -242,7 +242,7 @@ class AbstractModelA(models.Model):
titlea = models.CharField(gettext_lazy('title a'), max_length=255)
def __init__(self, *args, **kwargs):
super(AbstractModelA, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.titlea = 'title_a'
class Meta:
@ -253,7 +253,7 @@ class AbstractModelB(AbstractModelA):
titleb = models.CharField(gettext_lazy('title b'), max_length=255)
def __init__(self, *args, **kwargs):
super(AbstractModelB, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.titleb = 'title_b'
@ -335,7 +335,7 @@ class ThirdPartyRegisteredModel(models.Model):
class FilteredManager(MultilingualManager):
def get_queryset(self):
# always return empty queryset
return super(FilteredManager, self).get_queryset().filter(pk=None)
return super().get_queryset().filter(pk=None)
class FilteredTestModel(models.Model):
@ -365,14 +365,14 @@ class ManagerTestModel(models.Model):
class CustomManager(models.Manager):
def get_queryset(self):
return (
super(CustomManager, self)
super()
.get_queryset()
.filter(title__contains='a')
.exclude(description__contains='x')
)
def custom_qs(self):
return super(CustomManager, self).get_queryset()
return super().get_queryset()
def foo(self):
return 'bar'

View file

@ -49,11 +49,11 @@ class reload_override_settings(override_settings):
"""Context manager that not only override settings, but also reload modeltranslation conf."""
def __enter__(self):
super(reload_override_settings, self).__enter__()
super().__enter__()
importlib.reload(mt_settings)
def __exit__(self, exc_type, exc_value, traceback):
super(reload_override_settings, self).__exit__(exc_type, exc_value, traceback)
super().__exit__(exc_type, exc_value, traceback)
importlib.reload(mt_settings)
@ -120,7 +120,7 @@ class TestAutodiscover(ModeltranslationTestBase):
# class B settings would be overwritten by class A settings (if some keys clash).
# To solve this, override some settings after parents ``_pre_setup`` is called.
def _pre_setup(self):
super(TestAutodiscover, self)._pre_setup()
super()._pre_setup()
# Add test_app to INSTALLED_APPS
new_installed_apps = django_settings.INSTALLED_APPS + ('modeltranslation.tests.test_app',)
self.__override = override_settings(INSTALLED_APPS=new_installed_apps)
@ -129,7 +129,7 @@ class TestAutodiscover(ModeltranslationTestBase):
def _post_teardown(self):
self.__override.disable()
importlib.reload(mt_settings) # restore mt_settings.FALLBACK_LANGUAGES
super(TestAutodiscover, self)._post_teardown()
super()._post_teardown()
def tearDown(self):
# Rollback model classes
@ -140,7 +140,7 @@ class TestAutodiscover(ModeltranslationTestBase):
# Delete translation modules from import cache
sys.modules.pop('modeltranslation.tests.test_app.translation', None)
sys.modules.pop('modeltranslation.tests.project_translation', None)
super(TestAutodiscover, self).tearDown()
super().tearDown()
def check_news(self):
from .test_app.models import News
@ -286,13 +286,13 @@ class ModeltranslationTest(ModeltranslationTestBase):
assert hash(orig) != hash(en)
assert hash(orig) != hash(de)
assert hash(en) != hash(de)
assert 3 == len(set([orig, en, de]))
assert 3 == len({orig, en, de})
# TranslationFields can compare equal if they have the same language
de.language = 'en'
assert orig != de
assert en == de
assert hash(en) == hash(de)
assert 2 == len(set([orig, en, de]))
assert 2 == len({orig, en, de})
de.language = 'de'
def test_set_translation(self):
@ -653,7 +653,7 @@ class FileFieldsTest(ModeltranslationTestBase):
tests_dir = default_storage.path('modeltranslation_tests')
if os.path.isdir(tests_dir):
shutil.rmtree(tests_dir)
super(FileFieldsTest, self).tearDown()
super().tearDown()
def test_translated_models(self):
field_names = dir(models.FileFieldsModel())
@ -756,7 +756,7 @@ class ForeignKeyFieldsTest(ModeltranslationTestBase):
def setUpClass(cls):
# 'model' attribute cannot be assigned to class in its definition,
# because ``models`` module will be reloaded and hence class would use old model classes.
super(ForeignKeyFieldsTest, cls).setUpClass()
super().setUpClass()
cls.model = models.ForeignKeyModel
def test_translated_models(self):
@ -1036,7 +1036,7 @@ class ManyToManyFieldsTest(ModeltranslationTestBase):
def setUpClass(cls):
# 'model' attribute cannot be assigned to class in its definition,
# because ``models`` module will be reloaded and hence class would use old model classes.
super(ManyToManyFieldsTest, cls).setUpClass()
super().setUpClass()
cls.model = models.ManyToManyFieldModel
def test_translated_models(self):
@ -1082,19 +1082,15 @@ class ManyToManyFieldsTest(ModeltranslationTestBase):
def test_translated_models_instance(self):
models.TestModel.objects.bulk_create(
(
models.TestModel(title_en='m2m_test_%s_en' % i, title_de='m2m_test_%s_de' % i)
for i in range(10)
)
)
self.model.objects.bulk_create(
(
self.model(title_en='m2m_test_%s_en' % i, title_de='m2m_test_%s_de' % i)
for i in range(10)
)
)
models.NonTranslated.objects.bulk_create(
(models.NonTranslated(title='m2m_test_%s' % i) for i in range(10))
models.NonTranslated(title='m2m_test_%s' % i) for i in range(10)
)
testmodel_qs = models.TestModel.objects.all()
@ -1210,19 +1206,15 @@ class ManyToManyFieldsTest(ModeltranslationTestBase):
def test_reverse_relations(self):
models.TestModel.objects.bulk_create(
(
models.TestModel(title_en='m2m_test_%s_en' % i, title_de='m2m_test_%s_de' % i)
for i in range(10)
)
)
self.model.objects.bulk_create(
(
self.model(title_en='m2m_test_%s_en' % i, title_de='m2m_test_%s_de' % i)
for i in range(10)
)
)
models.NonTranslated.objects.bulk_create(
(models.NonTranslated(title='m2m_test_%s' % i) for i in range(10))
models.NonTranslated(title='m2m_test_%s' % i) for i in range(10)
)
inst_both = self.model(title_en="inst_both_en", title_de="inst_both_de")
inst_both.save()
@ -1314,7 +1306,7 @@ class OneToOneFieldsTest(ForeignKeyFieldsTest):
def setUpClass(cls):
# 'model' attribute cannot be assigned to class in its definition,
# because ``models`` module will be reloaded and hence class would use old model classes.
super(OneToOneFieldsTest, cls).setUpClass()
super().setUpClass()
cls.model = models.OneToOneFieldModel
def test_uniqueness(self):
@ -2237,13 +2229,13 @@ class UpdateCommandTest(ModeltranslationTestBase):
class TranslationAdminTest(ModeltranslationTestBase):
def setUp(self):
super(TranslationAdminTest, self).setUp()
super().setUp()
self.test_obj = models.TestModel.objects.create(title='Testtitle', text='Testtext')
self.site = AdminSite()
def tearDown(self):
self.test_obj.delete()
super(TranslationAdminTest, self).tearDown()
super().tearDown()
def test_default_fields(self):
class TestModelAdmin(admin.TranslationAdmin):
@ -2471,7 +2463,7 @@ class TranslationAdminTest(ModeltranslationTestBase):
if isinstance(db_field, TextField):
kwargs["widget"] = forms.Textarea(attrs={'myprop': 'myval'})
return db_field.formfield(**kwargs)
return super(TestModelAdmin, self).formfield_for_dbfield(
return super().formfield_for_dbfield(
db_field, request, **kwargs
)
@ -2744,7 +2736,7 @@ class ThirdPartyAppIntegrationTest(ModeltranslationTestBase):
def setUpClass(cls):
# 'model' attribute cannot be assigned to class in its definition,
# because ``models`` module will be reloaded and hence class would use old model classes.
super(ThirdPartyAppIntegrationTest, cls).setUpClass()
super().setUpClass()
cls.model = models.ThirdPartyModel
def test_form(self):
@ -2765,14 +2757,14 @@ class ThirdPartyAppIntegrationRegisteredTest(ThirdPartyAppIntegrationTest):
@classmethod
def setUpClass(cls):
super(ThirdPartyAppIntegrationRegisteredTest, cls).setUpClass()
super().setUpClass()
cls.model = models.ThirdPartyRegisteredModel
class TestManager(ModeltranslationTestBase):
def setUp(self):
# In this test case the default language is en, not de.
super(TestManager, self).setUp()
super().setUp()
trans_real.activate('en')
def test_filter_update(self):
@ -3396,21 +3388,20 @@ class TestManager(ModeltranslationTestBase):
def test_translation_fields_appending(self):
from modeltranslation.manager import append_lookup_key, append_lookup_keys
assert set(['untrans']) == append_lookup_key(models.ForeignKeyModel, 'untrans')
assert set(['title', 'title_en', 'title_de']) == append_lookup_key(
assert {'untrans'} == append_lookup_key(models.ForeignKeyModel, 'untrans')
assert {'title', 'title_en', 'title_de'} == append_lookup_key(
models.ForeignKeyModel, 'title'
)
assert set(['test', 'test_en', 'test_de']) == append_lookup_key(
assert {'test', 'test_en', 'test_de'} == append_lookup_key(
models.ForeignKeyModel, 'test'
)
assert set(['title__eq', 'title_en__eq', 'title_de__eq']) == append_lookup_key(
assert {'title__eq', 'title_en__eq', 'title_de__eq'} == append_lookup_key(
models.ForeignKeyModel, 'title__eq'
)
assert set(['test__smt', 'test_en__smt', 'test_de__smt']) == append_lookup_key(
assert {'test__smt', 'test_en__smt', 'test_de__smt'} == append_lookup_key(
models.ForeignKeyModel, 'test__smt'
)
big_set = set(
[
big_set = {
'test__url',
'test__url_en',
'test__url_de',
@ -3420,10 +3411,9 @@ class TestManager(ModeltranslationTestBase):
'test_de__url',
'test_de__url_en',
'test_de__url_de',
]
)
}
assert big_set == append_lookup_key(models.ForeignKeyModel, 'test__url')
assert set(['untrans__url', 'untrans__url_en', 'untrans__url_de']) == append_lookup_key(
assert {'untrans__url', 'untrans__url_en', 'untrans__url_de'} == append_lookup_key(
models.ForeignKeyModel, 'untrans__url'
)
@ -3585,7 +3575,7 @@ class TestRequired(ModeltranslationTestBase):
inst.full_clean()
except ValidationError as e:
error_fields = set(e.message_dict.keys())
assert set(('req_reg_en', 'req_en_reg', 'req_en_reg_en')) == error_fields
assert {'req_reg_en', 'req_en_reg', 'req_en_reg_en'} == error_fields
else:
self.fail('ValidationError not raised!')

View file

@ -1,6 +1,6 @@
import threading
from typing import Union
from typing_extensions import Literal
from typing import Literal
from modeltranslation import settings

View file

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from functools import partial
from typing import Callable, Iterable
@ -51,7 +50,7 @@ class FieldsAggregationMetaClass(type):
if isinstance(base, FieldsAggregationMetaClass):
attrs['fields'].update(base.fields)
attrs['fields'] = tuple(attrs['fields'])
return super(FieldsAggregationMetaClass, cls).__new__(cls, name, bases, attrs)
return super().__new__(cls, name, bases, attrs)
class TranslationOptions(metaclass=FieldsAggregationMetaClass):
@ -84,8 +83,8 @@ class TranslationOptions(metaclass=FieldsAggregationMetaClass):
self.model = model
self.registered = False
self.related = False
self.local_fields = dict((f, set()) for f in self.fields)
self.fields = dict((f, set()) for f in self.fields)
self.local_fields = {f: set() for f in self.fields}
self.fields = {f: set() for f in self.fields}
self.related_fields = []
def validate(self):
@ -142,7 +141,7 @@ class TranslationOptions(metaclass=FieldsAggregationMetaClass):
class MultilingualOptions(options.Options):
@cached_property
def base_manager(self):
manager = super(MultilingualOptions, self).base_manager
manager = super().base_manager
patch_manager_class(manager)
return manager
@ -436,7 +435,7 @@ def patch_related_object_descriptor_caching(ro_descriptor):
ro_descriptor.__class__ = NewSingleObjectDescriptor
class Translator(object):
class Translator:
"""
A Translator object encapsulates an instance of a translator. Models are
registered with the Translator using the register() method.

View file

@ -1,5 +1,3 @@
from __future__ import unicode_literals
from django.forms.widgets import Media, Widget, CheckboxInput
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe