Skip to content

Commit 4dbbc13

Browse files
committed
Add translations to models and fields
Add verbose names and labels to models and fields, as well as their translations. These are displayed on forms and in the admin view. Also add some help texts to some fields. Line changes and trailing commas are also added to many fields to help with version control and be more in line with the style guide. Some lines are also swapped around so there is more consistency in the order of parameters.
1 parent 158c993 commit 4dbbc13

27 files changed

+3595
-325
lines changed
+152
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# Generated by Django 3.2.4 on 2021-08-12 12:36
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('contenttypes', '0002_remove_content_type_name'),
11+
('apps', '0003_auto_20210701_1730'),
12+
]
13+
14+
operations = [
15+
migrations.AlterModelOptions(
16+
name='baseplugin',
17+
options={'verbose_name': 'MODEL_NAME_BASE_PLUGIN', 'verbose_name_plural': 'MODEL_NAME_BASE_PLUGIN_PLURAL'},
18+
),
19+
migrations.AlterModelOptions(
20+
name='basetab',
21+
options={'ordering': ['order', 'id'], 'verbose_name': 'MODEL_NAME_BASE_TAB', 'verbose_name_plural': 'MODEL_NAME_BASE_TAB_PLURAL'},
22+
),
23+
migrations.AlterModelOptions(
24+
name='externalembeddedtab',
25+
options={'verbose_name': 'MODEL_NAME_EXTERNAL_EMBEDDED_TAB', 'verbose_name_plural': 'MODEL_NAME_EXTERNAL_EMBEDDED_TAB_PLURAL'},
26+
),
27+
migrations.AlterModelOptions(
28+
name='externaliframeplugin',
29+
options={'verbose_name': 'MODEL_NAME_EXTERNAL_IFRAME_PLUGIN', 'verbose_name_plural': 'MODEL_NAME_EXTERNAL_IFRAME_PLUGIN_PLURAL'},
30+
),
31+
migrations.AlterModelOptions(
32+
name='externaliframetab',
33+
options={'verbose_name': 'MODEL_NAME_EXTERNAL_IFRAME_TAB', 'verbose_name_plural': 'MODEL_NAME_EXTERNAL_IFRAME_TAB_PLURAL'},
34+
),
35+
migrations.AlterModelOptions(
36+
name='htmlplugin',
37+
options={'verbose_name': 'MODEL_NAME_HTML_PLUGIN', 'verbose_name_plural': 'MODEL_NAME_HTML_PLUGIN_PLURAL'},
38+
),
39+
migrations.AlterModelOptions(
40+
name='htmltab',
41+
options={'verbose_name': 'MODEL_NAME_HTML_TAB', 'verbose_name_plural': 'MODEL_NAME_HTML_TAB_PLURAL'},
42+
),
43+
migrations.AlterModelOptions(
44+
name='rssplugin',
45+
options={'verbose_name': 'MODEL_NAME_RSS_PLUGIN', 'verbose_name_plural': 'MODEL_NAME_RSS_PLUGIN_PLURAL'},
46+
),
47+
migrations.AlterField(
48+
model_name='baseplugin',
49+
name='container_pk',
50+
field=models.TextField(verbose_name='LABEL_CONTAINER_PK'),
51+
),
52+
migrations.AlterField(
53+
model_name='baseplugin',
54+
name='container_type',
55+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype', verbose_name='LABEL_CONTAINER_TYPE'),
56+
),
57+
migrations.AlterField(
58+
model_name='baseplugin',
59+
name='title',
60+
field=models.CharField(max_length=64, verbose_name='LABEL_TITLE'),
61+
),
62+
migrations.AlterField(
63+
model_name='baseplugin',
64+
name='views',
65+
field=models.CharField(blank=True, max_length=255, verbose_name='LABEL_VIEWS'),
66+
),
67+
migrations.AlterField(
68+
model_name='basetab',
69+
name='container_pk',
70+
field=models.TextField(verbose_name='LABEL_CONTAINER_PK'),
71+
),
72+
migrations.AlterField(
73+
model_name='basetab',
74+
name='container_type',
75+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype', verbose_name='LABEL_CONTAINER_TYPE'),
76+
),
77+
migrations.AlterField(
78+
model_name='basetab',
79+
name='label',
80+
field=models.CharField(help_text='TAB_LABEL_HELPTEXT', max_length=12, verbose_name='LABEL_LABEL'),
81+
),
82+
migrations.AlterField(
83+
model_name='basetab',
84+
name='opening_method',
85+
field=models.CharField(blank=True, max_length=32, verbose_name='LABEL_OPENING_METHOD'),
86+
),
87+
migrations.AlterField(
88+
model_name='basetab',
89+
name='order',
90+
field=models.IntegerField(default=100, verbose_name='LABEL_ORDER'),
91+
),
92+
migrations.AlterField(
93+
model_name='basetab',
94+
name='title',
95+
field=models.CharField(help_text='TAB_TITLE_HELPTEXT', max_length=64, verbose_name='LABEL_TITLE'),
96+
),
97+
migrations.AlterField(
98+
model_name='externalembeddedtab',
99+
name='content_url',
100+
field=models.URLField(max_length=128, verbose_name='LABEL_CONTENT_URL'),
101+
),
102+
migrations.AlterField(
103+
model_name='externalembeddedtab',
104+
name='element_id',
105+
field=models.CharField(blank=True, max_length=32, verbose_name='LABEL_ELEMENT_ID'),
106+
),
107+
migrations.AlterField(
108+
model_name='externaliframeplugin',
109+
name='height',
110+
field=models.IntegerField(verbose_name='LABEL_HEIGHT'),
111+
),
112+
migrations.AlterField(
113+
model_name='externaliframeplugin',
114+
name='service_url',
115+
field=models.URLField(max_length=255, verbose_name='LABEL_SERVICE_URL'),
116+
),
117+
migrations.AlterField(
118+
model_name='externaliframeplugin',
119+
name='width',
120+
field=models.IntegerField(verbose_name='LABEL_WIDTH'),
121+
),
122+
migrations.AlterField(
123+
model_name='externaliframetab',
124+
name='content_url',
125+
field=models.URLField(max_length=255, verbose_name='LABEL_CONTENT_URL'),
126+
),
127+
migrations.AlterField(
128+
model_name='externaliframetab',
129+
name='height',
130+
field=models.IntegerField(verbose_name='LABEL_HEIGHT'),
131+
),
132+
migrations.AlterField(
133+
model_name='externaliframetab',
134+
name='width',
135+
field=models.IntegerField(verbose_name='LABEL_WIDTH'),
136+
),
137+
migrations.AlterField(
138+
model_name='htmlplugin',
139+
name='content',
140+
field=models.TextField(verbose_name='LABEL_CONTENT'),
141+
),
142+
migrations.AlterField(
143+
model_name='htmltab',
144+
name='content',
145+
field=models.TextField(verbose_name='LABEL_CONTENT'),
146+
),
147+
migrations.AlterField(
148+
model_name='rssplugin',
149+
name='feed_url',
150+
field=models.URLField(max_length=256, verbose_name='LABEL_FEED_URL'),
151+
),
152+
]

apps/models.py

+108-21
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,46 @@
2525
class AbstractApp(ModelWithInheritance):
2626

2727
# Generic foreign key implementation from Django contenttypes framework.
28-
container_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
29-
container_pk = models.TextField(_('OBJECT_ID'))
28+
container_type = models.ForeignKey(ContentType,
29+
verbose_name=_('LABEL_CONTAINER_TYPE'),
30+
on_delete=models.CASCADE,
31+
)
32+
container_pk = models.TextField(
33+
verbose_name=_('LABEL_CONTAINER_PK'),
34+
)
3035
container = GenericForeignKey(ct_field="container_type", fk_field="container_pk")
3136

3237
# Apps used to have an oembed reference which was removed in migration to Python 3
3338
# in favor of future implementations, for example LTI.
3439

3540
class Meta:
41+
verbose_name = _('MODEL_NAME_ABSTRACT_APP')
42+
verbose_name_plural = _('MODEL_NAME_ABSTRACT_APP_PLURAL')
3643
abstract = True
3744

3845

3946
class BaseTab(AbstractApp):
40-
label = models.CharField(max_length=12,
41-
help_text=_('TAB_LABEL_HELPTEXT'))
42-
title = models.CharField(max_length=64,
43-
help_text=_('TAB_TITLE_HELPTEXT'))
44-
order = models.IntegerField(default=100)
47+
label = models.CharField(
48+
verbose_name=_('LABEL_LABEL'),
49+
max_length=12,
50+
help_text=_('TAB_LABEL_HELPTEXT'),
51+
)
52+
title = models.CharField(
53+
verbose_name=_('LABEL_TITLE'),
54+
max_length=64,
55+
help_text=_('TAB_TITLE_HELPTEXT'),
56+
)
57+
order = models.IntegerField(
58+
verbose_name=_('LABEL_ORDER'),
59+
default=100,
60+
)
4561

4662
# A Tab can be opened in a new window, in the same window?
47-
opening_method = models.CharField(max_length=32, blank=True)
63+
opening_method = models.CharField(
64+
verbose_name=_('LABEL_OPENING_METHOD'),
65+
max_length=32,
66+
blank=True,
67+
)
4868

4969
def render(self):
5070
return _('TAB_NO_CONTENT')
@@ -65,23 +85,42 @@ def __str__(self):
6585
return self.label
6686

6787
class Meta:
88+
verbose_name = _('MODEL_NAME_BASE_TAB')
89+
verbose_name_plural = _('MODEL_NAME_BASE_TAB_PLURAL')
6890
ordering = ['order', 'id']
6991

7092

7193
class HTMLTab(BaseTab):
72-
content = models.TextField()
94+
content = models.TextField(
95+
verbose_name=_('LABEL_CONTENT'),
96+
)
7397

7498
def render(self):
7599
return mark_safe(self.content)
76100

101+
class Meta:
102+
verbose_name = _('MODEL_NAME_HTML_TAB')
103+
verbose_name_plural = _('MODEL_NAME_HTML_TAB_PLURAL')
104+
77105

78106
class ExternalEmbeddedTab(BaseTab):
79-
content_url = models.URLField(max_length=128)
80-
element_id = models.CharField(max_length=32, blank=True)
107+
content_url = models.URLField(
108+
verbose_name=_('LABEL_CONTENT_URL'),
109+
max_length=128,
110+
)
111+
element_id = models.CharField(
112+
verbose_name=_('LABEL_ELEMENT_ID'),
113+
max_length=32,
114+
blank=True,
115+
)
81116

82117
def get_renderer_class(self):
83118
return TabRenderer
84119

120+
class Meta:
121+
verbose_name = _('MODEL_NAME_EXTERNAL_EMBEDDED_TAB')
122+
verbose_name_plural = _('MODEL_NAME_EXTERNAL_EMBEDDED_TAB_PLURAL')
123+
85124

86125
class ExternalIFrameTab(BaseTab):
87126
"""
@@ -97,19 +136,37 @@ class ExternalIFrameTab(BaseTab):
97136
content html.
98137
"""
99138

100-
content_url = models.URLField(max_length=255)
139+
content_url = models.URLField(
140+
verbose_name=_('LABEL_CONTENT_URL'),
141+
max_length=255,
142+
)
101143

102144
# Desired width and height
103-
width = models.IntegerField()
104-
height = models.IntegerField()
145+
width = models.IntegerField(
146+
verbose_name=_('LABEL_WIDTH'),
147+
)
148+
height = models.IntegerField(
149+
verbose_name=_('LABEL_HEIGHT'),
150+
)
105151

106152
def get_renderer_class(self):
107153
return ExternalIFrameTabRenderer
108154

155+
class Meta:
156+
verbose_name = _('MODEL_NAME_EXTERNAL_IFRAME_TAB')
157+
verbose_name_plural = _('MODEL_NAME_EXTERNAL_IFRAME_TAB_PLURAL')
158+
109159

110160
class BasePlugin(AbstractApp):
111-
title = models.CharField(max_length=64)
112-
views = models.CharField(max_length=255, blank=True)
161+
title = models.CharField(
162+
verbose_name=_('LABEL_TITLE'),
163+
max_length=64
164+
)
165+
views = models.CharField(
166+
verbose_name=_('LABEL_VIEWS'),
167+
max_length=255,
168+
blank=True,
169+
)
113170

114171
def render(self):
115172
leaf = self.as_leaf_class()
@@ -118,9 +175,17 @@ def render(self):
118175
else:
119176
return _('BASE_PLUGIN_MISSING_RENDER-METHOD')
120177

178+
class Meta:
179+
verbose_name = _('MODEL_NAME_BASE_PLUGIN')
180+
verbose_name_plural = _('MODEL_NAME_BASE_PLUGIN_PLURAL')
181+
121182

122183
class RSSPlugin(BasePlugin):
123-
feed_url = models.URLField(max_length=256, blank=False)
184+
feed_url = models.URLField(
185+
verbose_name=_('LABEL_FEED_URL'),
186+
max_length=256,
187+
blank=False,
188+
)
124189

125190
def render(self):
126191
doc = feedparser.parse(self.feed_url)
@@ -142,12 +207,23 @@ def render(self):
142207
})
143208
return out
144209

210+
class Meta:
211+
verbose_name = _('MODEL_NAME_RSS_PLUGIN')
212+
verbose_name_plural = _('MODEL_NAME_RSS_PLUGIN_PLURAL')
213+
145214

146215
class HTMLPlugin(BasePlugin):
147-
content = models.TextField(blank=False)
216+
content = models.TextField(
217+
verbose_name=_('LABEL_CONTENT'),
218+
blank=False,
219+
)
148220

149221
def render(self):
150222
return mark_safe(self.content)
223+
224+
class Meta:
225+
verbose_name = _('MODEL_NAME_HTML_PLUGIN')
226+
verbose_name_plural = _('MODEL_NAME_HTML_PLUGIN_PLURAL')
151227

152228

153229
class ExternalIFramePlugin(BasePlugin):
@@ -168,11 +244,22 @@ class ExternalIFramePlugin(BasePlugin):
168244
available in the view.
169245
"""
170246

171-
service_url = models.URLField(max_length=255)
247+
service_url = models.URLField(
248+
verbose_name=_('LABEL_SERVICE_URL'),
249+
max_length=255,
250+
)
172251

173252
# Desired width and height
174-
width = models.IntegerField()
175-
height = models.IntegerField()
253+
width = models.IntegerField(
254+
verbose_name=_('LABEL_WIDTH'),
255+
)
256+
height = models.IntegerField(
257+
verbose_name=_('LABEL_HEIGHT'),
258+
)
176259

177260
def get_renderer_class(self):
178261
return ExternalIFramePluginRenderer
262+
263+
class Meta:
264+
verbose_name = _('MODEL_NAME_EXTERNAL_IFRAME_PLUGIN')
265+
verbose_name_plural = _('MODEL_NAME_EXTERNAL_IFRAME_PLUGIN_PLURAL')

course/forms.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,9 @@ def save(self):
8888
class GroupEditForm(forms.ModelForm):
8989

9090
members = UsersSearchSelectField(queryset=UserProfile.objects.none(),
91-
initial_queryset=UserProfile.objects.none())
91+
initial_queryset=UserProfile.objects.none(),
92+
label=_('LABEL_MEMBERS'),
93+
)
9294

9395
def __init__(self, *args, **kwargs):
9496
course_instance = kwargs.get('instance').course_instance
@@ -111,7 +113,8 @@ class EnrollStudentsForm(forms.Form):
111113

112114
user_profiles = UsersSearchSelectField(queryset=UserProfile.objects.all(),
113115
initial_queryset=UserProfile.objects.none(),
114-
label=_('USERS'))
116+
label=_('LABEL_USERS'),
117+
)
115118

116119
def __init__(self, *args, **kwargs):
117120
super().__init__(*args, **kwargs)

0 commit comments

Comments
 (0)