From dcde4b1968a3fbb885aeed4edfd37f048cc85583 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 27 Apr 2019 03:48:02 -0400 Subject: [PATCH] Monkeypatch Django models to allow translation Signed-off-by: Roberto Rosario --- HISTORY.rst | 2 ++ docs/releases/3.2.rst | 2 ++ mayan/apps/user_management/apps.py | 52 +++++++++++++++++++----------- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 0d1a272f7f..a74634addf 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -174,6 +174,8 @@ get_for_object. * Load the converter class on demand. * Remove app top level star imports. +* Monkeypatch group and user models to make their fields + translatable. 3.1.11 (2019-04-XX) =================== diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index ebf1470883..3e72b1550e 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -206,6 +206,8 @@ Other changes get_for_object. * Load the converter class on demand. * Remove app top level star imports. +* Monkeypatch group and user models to make their fields + translatable. Removals -------- diff --git a/mayan/apps/user_management/apps.py b/mayan/apps/user_management/apps.py index 4ded7395a1..094f1c49b8 100644 --- a/mayan/apps/user_management/apps.py +++ b/mayan/apps/user_management/apps.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals from django.apps import apps from django.contrib.auth import get_user_model from django.db.models.signals import post_save +from django.utils import six from django.utils.translation import ugettext_lazy as _ from mayan.apps.acls.classes import ModelPermission @@ -91,6 +92,29 @@ class UserManagementApp(MayanAppConfig): Group._meta.ordering = ('name',) Group._meta.verbose_name = _('Group') Group._meta.verbose_name_plural = _('Groups') + Group._meta.get_field('name').verbose_name = _('Name') + + # Silence UnorderedObjectListWarning + # "Pagination may yield inconsistent result" + # TODO: Remove on Django 2.x + User._meta.ordering = ('pk',) + User._meta.verbose_name = _('User') + User._meta.verbose_name_plural = _('Users') + User._meta.ordering = ('last_name', 'first_name') + + User._meta.get_field('username').verbose_name = _('Username') + User._meta.get_field('first_name').verbose_name = _('First name') + User._meta.get_field('last_name').verbose_name = _('Last name') + User._meta.get_field('email').verbose_name = _('Email') + User._meta.get_field('is_active').verbose_name = _('Is active?') + if six.PY3: + User.has_usable_password.short_description = _( + 'Has usable password?' + ) + else: + User.has_usable_password.__func__.short_description = _( + 'Has usable password?' + ) Group.add_to_class( name='get_users', value=method_group_get_users @@ -137,7 +161,7 @@ class UserManagementApp(MayanAppConfig): SourceColumn( attribute='name', is_identifier=True, is_sortable=True, - label=_('Name'), source=Group + source=Group ) SourceColumn( attribute='user_set.count', label=_('Users'), source=Group @@ -145,35 +169,25 @@ class UserManagementApp(MayanAppConfig): SourceColumn( attribute='username', is_object_absolute_url=True, - is_identifier=True, is_sortable=True, label=_('Username'), - source=User + is_identifier=True, is_sortable=True, source=User ) SourceColumn( - attribute='first_name', is_sortable=True, label=_('First name'), - source=User + attribute='first_name', is_sortable=True, source=User ) SourceColumn( - attribute='last_name', is_sortable=True, label=_('Last name'), - source=User + attribute='last_name', is_sortable=True, source=User ) SourceColumn( - attribute='email', is_sortable=True, label=_('Email'), source=User + attribute='email', is_sortable=True, source=User ) SourceColumn( - attribute='is_active', is_sortable=True, label=_('Active'), - source=User, widget=TwoStateWidget + attribute='is_active', is_sortable=True, source=User, + widget=TwoStateWidget ) SourceColumn( - attribute='has_usable_password', label=_('Has usable password?'), - source=User, widget=TwoStateWidget + attribute='has_usable_password', source=User, + widget=TwoStateWidget ) - # Silence UnorderedObjectListWarning - # "Pagination may yield inconsistent result" - # TODO: Remove on Django 2.x - User._meta.ordering = ('pk',) - User._meta.verbose_name = _('User') - User._meta.verbose_name_plural = _('Users') - User._meta.ordering = ('last_name', 'first_name') User.add_to_class( name='get_absolute_url', value=method_user_get_absolute_url