25
25
class AbstractApp (ModelWithInheritance ):
26
26
27
27
# 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
+ )
30
35
container = GenericForeignKey (ct_field = "container_type" , fk_field = "container_pk" )
31
36
32
37
# Apps used to have an oembed reference which was removed in migration to Python 3
33
38
# in favor of future implementations, for example LTI.
34
39
35
40
class Meta :
41
+ verbose_name = _ ('MODEL_NAME_ABSTRACT_APP' )
42
+ verbose_name_plural = _ ('MODEL_NAME_ABSTRACT_APP_PLURAL' )
36
43
abstract = True
37
44
38
45
39
46
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
+ )
45
61
46
62
# 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
+ )
48
68
49
69
def render (self ):
50
70
return _ ('TAB_NO_CONTENT' )
@@ -65,23 +85,42 @@ def __str__(self):
65
85
return self .label
66
86
67
87
class Meta :
88
+ verbose_name = _ ('MODEL_NAME_BASE_TAB' )
89
+ verbose_name_plural = _ ('MODEL_NAME_BASE_TAB_PLURAL' )
68
90
ordering = ['order' , 'id' ]
69
91
70
92
71
93
class HTMLTab (BaseTab ):
72
- content = models .TextField ()
94
+ content = models .TextField (
95
+ verbose_name = _ ('LABEL_CONTENT' ),
96
+ )
73
97
74
98
def render (self ):
75
99
return mark_safe (self .content )
76
100
101
+ class Meta :
102
+ verbose_name = _ ('MODEL_NAME_HTML_TAB' )
103
+ verbose_name_plural = _ ('MODEL_NAME_HTML_TAB_PLURAL' )
104
+
77
105
78
106
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
+ )
81
116
82
117
def get_renderer_class (self ):
83
118
return TabRenderer
84
119
120
+ class Meta :
121
+ verbose_name = _ ('MODEL_NAME_EXTERNAL_EMBEDDED_TAB' )
122
+ verbose_name_plural = _ ('MODEL_NAME_EXTERNAL_EMBEDDED_TAB_PLURAL' )
123
+
85
124
86
125
class ExternalIFrameTab (BaseTab ):
87
126
"""
@@ -97,19 +136,37 @@ class ExternalIFrameTab(BaseTab):
97
136
content html.
98
137
"""
99
138
100
- content_url = models .URLField (max_length = 255 )
139
+ content_url = models .URLField (
140
+ verbose_name = _ ('LABEL_CONTENT_URL' ),
141
+ max_length = 255 ,
142
+ )
101
143
102
144
# 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
+ )
105
151
106
152
def get_renderer_class (self ):
107
153
return ExternalIFrameTabRenderer
108
154
155
+ class Meta :
156
+ verbose_name = _ ('MODEL_NAME_EXTERNAL_IFRAME_TAB' )
157
+ verbose_name_plural = _ ('MODEL_NAME_EXTERNAL_IFRAME_TAB_PLURAL' )
158
+
109
159
110
160
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
+ )
113
170
114
171
def render (self ):
115
172
leaf = self .as_leaf_class ()
@@ -118,9 +175,17 @@ def render(self):
118
175
else :
119
176
return _ ('BASE_PLUGIN_MISSING_RENDER-METHOD' )
120
177
178
+ class Meta :
179
+ verbose_name = _ ('MODEL_NAME_BASE_PLUGIN' )
180
+ verbose_name_plural = _ ('MODEL_NAME_BASE_PLUGIN_PLURAL' )
181
+
121
182
122
183
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
+ )
124
189
125
190
def render (self ):
126
191
doc = feedparser .parse (self .feed_url )
@@ -142,12 +207,23 @@ def render(self):
142
207
})
143
208
return out
144
209
210
+ class Meta :
211
+ verbose_name = _ ('MODEL_NAME_RSS_PLUGIN' )
212
+ verbose_name_plural = _ ('MODEL_NAME_RSS_PLUGIN_PLURAL' )
213
+
145
214
146
215
class HTMLPlugin (BasePlugin ):
147
- content = models .TextField (blank = False )
216
+ content = models .TextField (
217
+ verbose_name = _ ('LABEL_CONTENT' ),
218
+ blank = False ,
219
+ )
148
220
149
221
def render (self ):
150
222
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' )
151
227
152
228
153
229
class ExternalIFramePlugin (BasePlugin ):
@@ -168,11 +244,22 @@ class ExternalIFramePlugin(BasePlugin):
168
244
available in the view.
169
245
"""
170
246
171
- service_url = models .URLField (max_length = 255 )
247
+ service_url = models .URLField (
248
+ verbose_name = _ ('LABEL_SERVICE_URL' ),
249
+ max_length = 255 ,
250
+ )
172
251
173
252
# 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
+ )
176
259
177
260
def get_renderer_class (self ):
178
261
return ExternalIFramePluginRenderer
262
+
263
+ class Meta :
264
+ verbose_name = _ ('MODEL_NAME_EXTERNAL_IFRAME_PLUGIN' )
265
+ verbose_name_plural = _ ('MODEL_NAME_EXTERNAL_IFRAME_PLUGIN_PLURAL' )
0 commit comments