Opened 11 years ago
Closed 11 years ago
#22070 closed Bug (fixed)
Admin index shows mixed lowercase and capitalized app names when using contrib apps and old-style apps
Reported by: | Ben Davis | Owned by: | jenkinsbr2 |
---|---|---|---|
Component: | Core (Other) | Version: | dev |
Severity: | Release blocker | Keywords: | admin app-loading |
Cc: | Ben Davis, jenkinsbr2 | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description (last modified by )
The base AppConfig
class uses self.label.title()
for verbose_name if verbose_name is not supplied. The new AppConfigs in django.contrib
use lowercase verbose names. This causes the admin index to look a bit sloppy when old-style apps are capitalized while new-style apps are all lowercase.
In my opinion, one of the following changes should be made:
- All contrib apps should follow the convention for verbose_names used by the default
AppConfig
- The default
AppConfig
should follow the same convention for verbose name as the contrib apps - The admin template should force all app names to use the same title convention (e.g.,
{% verbose_name|title %}
)
I'm in favor of any of these options -- the main goal here is consistency.
Change History (11)
comment:1 by , 11 years ago
Cc: | added |
---|
comment:2 by , 11 years ago
Keywords: | app-loading added |
---|
comment:3 by , 11 years ago
Description: | modified (diff) |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:4 by , 11 years ago
Cc: | added |
---|---|
Owner: | changed from | to
Status: | new → assigned |
comment:5 by , 11 years ago
comment:6 by , 11 years ago
I think we should change the strings to be title case. Calling title()
is a dead end - you might want the string to start with a lower case letter, eg "mYk's Gallery"
.
comment:8 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:9 by , 11 years ago
I disagree with that commit and I think it must be reverted.
Application names must be lower case for the same reason model names are lower case.
If templates need an title-cased version, they can title-ize or capitalize the value.
I've been working on a patch since last week-end and I hope to complete it this week-end.
comment:10 by , 11 years ago
Component: | contrib.admin → Core (Other) |
---|---|
Resolution: | fixed |
Severity: | Normal → Release blocker |
Status: | closed → new |
Type: | Cleanup/optimization → Bug |
comment:11 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
I changed my mind: https://groups.google.com/d/msg/django-developers/t3hnHQAhEg8/kdLfb2m1BE8J.
I'll reopen the ticket again if the discussion brings up new ideas.
This seems like a good ticket for me to get my feet wet with a contribution. I'd just like to clarify a couple of things and see if my thinking is correct. Going through listed options, I'd tend to immediately discard option 2 - seems to me that title case is what we would want here. At first I thought option 3 would be the most elegant solution, however I realized that that will not take care of other instances in the page title, header, and breadcrumbs - do we care about title casing in those spots? I think the title case is generally nicer looking and of course the title filter could be added in several locations in the template, but unnecessary filters cluttering the template seems undesirable. All considered option 1 seems to be the easiest and most comprehensive change. My question is: do I simply change each instance of apps.py in
django.contrib.*
to reflect the correct title cased verbose name? Would it be more desirable to change the string or to call.title()
on it?I appreciate any feedback (and patience with dumb questions!)